[논문 리뷰] Magicoder: Empowering Code Generation with OSS-Instruct
Magicoder는 OSS-Instruct (75k 데이터)와 Evol-Instruct로 학습된 오픈 소스 코드 LLMs(7B) 계열로, Python, 다국어 및 데이터 과학 작업에서 코드 생성을 촉진하며, 벤치마크에서 더 큰 모델 및 ChatGPT에 필적하거나 때로는 이를 능가합니다.
We introduce Magicoder, a series of fully open-source (code, weights, and data) Large Language Models (LLMs) for code that significantly closes the gap with top code models while having no more than 7B parameters. Magicoder models are trained on 75K synthetic instruction data using OSS-Instruct, a novel approach to enlightening LLMs with open-source code snippets to generate diverse instruction data for code. Our main motivation is to mitigate the inherent bias of the synthetic data generated by LLMs through the wealth of open-source references for the production of more realistic and controllable data. The orthogonality of OSS-Instruct and other data generation methods like Evol-Instruct further enables us to build an enhanced MagicoderS. Both Magicoder and MagicoderS substantially outperform state-of-the-art code models with similar or even larger sizes on a wide range of coding benchmarks. Notably, MagicoderS-CL-7B based on CodeLlama even surpasses the prominent ChatGPT on HumanEval+ (66.5 vs. 65.9 in pass@1 ). Overall, OSS-Instruct opens a new direction for crafting diverse synthetic instruction data for code using abundant open-source references.
연구 동기 및 목표
- 오픈 소스 코드를 지시 소스로 활용하여 코드 생성을 위한 합성 지시 데이터의 편향을 완화한다.
- 실제 오픈 소스 코드 스니펫에서 고품질의 다양하고 제어 가능한 지시-튜닝 데이터를 생산한다.
- 비슷한 규모 또는 더 작은 규모에서 베이스라인보다 우수한 일련의 오픈 소스 Code LLM들(Magicoder 및 Magicoder-S)을 구축하고 평가한다.
- OSS-Instruct가 다양한 언어와 도메인에서 구문 파싱 개선에 효과적임을 입증하고 데이터와 가중치를 공개하여 개방형 연구를 가능하게 한다.
제안 방법
- 시드 오픈 소스 코드 스니펫으로부터 OSS-Instruct를 사용해 75K개의 합성 코딩 문제와 해답을 생성한다.
- OSS-Instruct 데이터를 표준 벤치마크와의 중복을 제거하도록 오염 제거한다.
- CodeLlama-Python-7B를 파인튜닝해 Magicoder-CL을 만들고, Evol-Instruct로 추가 파인튜닝해 Magicoder-S-CL을 만든다.
- HumanEval, MBPP, MultiPL-E 및 DS-1000에서 EvalPlus 확장(HumanEval+, MBPP+)을 사용해 평가한다.
- 언어 분포에 대한 차등 실험을 수행하고, OSS-Instruct를 주석-함수 쌍에 대한 직접 파인튜닝과 비교한다.
- 오픈 소스 모델 가중치, 학습 데이터 및 코드를 공개한다.

실험 결과
연구 질문
- RQ1OSS-Instruct가 데이터 편향을 줄이고 코드 생성을 위한 지시-튜닝 품질을 향상시키는가?
- RQ2다양한 벤치마크에서 Magicoder 및 Magicoder-S 변형이 최첨단 오픈 소스 모델과 ChatGPT에 비해 어떤 성능을 보이는가?
- RQ3Python 및 다국어 코드 생성을 위한 학습 데이터의 언어 분포가 성능에 어떤 영향을 미치는가?
- RQ4주석-함수 쌍과 같이 의미적으로 관련되지만 잡음이 더 많은 데이터에 직접 파인튜닝하는 것보다 OSS-Instruct가 더 효과적인가?
주요 결과
- Magicoder-CL은 기본 CodeLlama-Python-7B보다 향상되며 비슷한 규모 또는 더 작은 규모의 다른 오픈 소스 모델을 능가한다.
- Magicoder-S-CL이 결과를 더 개선하고 HumanEval+에서 ChatGPT를 능가하는 반면 HumanEval에서도 비슷하거나 더 높은 성능을 보인다.
- Magicoder-CL 및 Magicoder-S-CL은 7B 매개변수 모델 중 최첨단 성능을 달성하고 다국어 및 데이터 과학 과제(DS-1000)에서도 강력한 성능을 보인다.
- Magicoder-DS 및 Magicoder-S-DS(DeepSeek-Coder 기반)는 높은 pass@1 점수를 달성하며, Magicoder-S-DS는 HumanEval에서 76.8을 달성하고 더 적은 파인튜닝 토큰으로 더 큰 베이스라인을 능가한다.
- OSS-Instruct 데이터는 다양성을 보이고 Self-Instruct나 관련 방법들보다 HumanEval과의 유사성이 낮아 개선이 누출 때문이 아님을 시사한다.
- 주석-함수 쌍에 대한 직접 파인튜닝은 성능을 저하시킬 수 있는 반면, OSS-Instruct 데이터는 상당한 이득을 제공한다.

더 나은 연구,지금 바로 시작하세요
연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.