[논문 리뷰] Code Llama: Open Foundation Models for Code
Code Llama는 Llama 2에서 파생된 코드 생성 및 채움, 긴 컨텍스트 지원, 그리고 명령 따르기(Instruct) 변형을 특징으로 하는 7B, 13B, 34B, 70B 크기의 코드 오픈 파운데이션 모델 가족입니다. 여러 코드 벤치마크에서 오픈 모델 중 최첨단 성능을 달성합니다.
We release Code Llama, a family of large language models for code based on Llama 2 providing state-of-the-art performance among open models, infilling capabilities, support for large input contexts, and zero-shot instruction following ability for programming tasks. We provide multiple flavors to cover a wide range of applications: foundation models (Code Llama), Python specializations (Code Llama - Python), and instruction-following models (Code Llama - Instruct) with 7B, 13B, 34B and 70B parameters each. All models are trained on sequences of 16k tokens and show improvements on inputs with up to 100k tokens. 7B, 13B and 70B Code Llama and Code Llama - Instruct variants support infilling based on surrounding content. Code Llama reaches state-of-the-art performance among open models on several code benchmarks, with scores of up to 67% and 65% on HumanEval and MBPP, respectively. Notably, Code Llama - Python 7B outperforms Llama 2 70B on HumanEval and MBPP, and all our models outperform every other publicly available model on MultiPL-E. We release Code Llama under a permissive license that allows for both research and commercial use.
연구 동기 및 목표
- Llama 2에서 시작하고 코드 중심 데이터로 미세조정하는 것이 우수한 오픈-코드 모델을 산출함을 입증한다.
- 코드 채움(infilling) 기능과 긴 컨텍스트 미세조정을 도입하여 편집기 내 코딩과 저장소 규모의 추론을 가능하게 한다.
- 언어 전문화(Python) 및 지시 따르기(Instruct) 변형을 안전성과 유용성 향상과 함께 선보인다.
- 표준 코드 벤치마크(HumanEval, MBPP, APPS) 및 다국어 벤치마크(MultiPL-E)에서 평가한다.
- 연구 및 상업적 사용에 적합한 관대한 라이선스 하에 모델을 제공한다.
제안 방법
- Llama 2 가중치에서 시작하고 코드 중심 데이터셋(~500B 토큰; 70B는 약 1T 사용)으로 학습한다.
- 7B, 13B 및 70B 변형에 대해 자기회귀 예측과 infilling 예측을 결합한 다중 작업 목표를 적용한다.
- LCFT로 컨텍스트 길이를 확장하고 RoPE 회전 주파수를 조정하여 최대 100,000 토큰 입력을 지원한다.
- Code Llama - Python 전문 모델들을 Python 중심 데이터로 학습시켜 개발한다.
- Code Llama - Instruct를 비공개 지시 데이터와 자체 지시 생성 파이프라인(단위 테스트 및 솔루션)으로 추가 미세조정하여 만든다.
- HumanEval, MBPP, APPS, 그리고 다국어 MultiPL-E 벤치마크에서 제로샷 및 파샷 프롬프트를 사용해 평가한다.
실험 결과
연구 질문
- RQ1Code Llama가 표준 코드 벤치마크에서 다른 오픈 코드 모델을 능가할 수 있는가?
- RQ2Infilling 학습이 자동완성 품질의 합리적 트레이드오프를 가지며 실질적 이점을 제공하는가?
- RQ3긴 컨텍스트 미세조정이 성능에 어떤 영향을 미치고 100k 토큰 입력으로 외삽하는가?
- RQ4Python 전문화 및 지시 따르기 미세조정으로 코드 생성 품질, 안전성, 다국어에서의 유용성 측면에서 어떤 이득이 생기는가?
- RQ5다국어 코딩 시나리오에서 모델들의 성능은 다른 오픈 모델과 비교해 어떤가?
주요 결과
- Code Llama 변형은 여러 벤치마크(HumanEval, MBPP, MultiPL-E)에서 오픈 모델 중 최첨단 성능을 달성한다.
- Code Llama - Python 7B는 Python 작업에서 HumanEval 및 MBPP에서 Llama 2 70B를 능가할 수 있다.
- Infilling 기능이 활성화된 모델은 강력한 infilling 벤치마크에 도달하며 자기회귀 생성 지표에서만 완만한 감소를 보일 수 있다.
- 긴 컨텍스트 미세조정은 최대 100,000 토큰까지의 안정적인 생성과 외삽을 가능하게 하며 표준 벤치마크에선 중간 정도의 영향이다.
- Code Llama - Instruct는 안전성 및 유용성 벤치마크를 개선하며 코드 생성 비용은 소폭 증가이다.
- 다국어에 걸쳐 Code Llama는 같은 크기의 Llama 2 모델을 능가하고, Code Llama 7B는 다국어 작업에서 더 큰 공개 모델과 경쟁한다.
더 나은 연구,지금 바로 시작하세요
연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.