Code Llama 릴리스 노트

Code Llama은 코딩 작업에 특화된 최첨단 오픈 액세스 대형 언어 모델 가족으로, Llama 2 아키텍처를 기반으로 구축되었습니다. 이러한 모델은 코드 완성 자동화, 단위 테스트 생성, 문서 작성 등을 통해 개발자 생산성을 향상시키도록 설계되었습니다.

모델 변형 및 훈련

Code Llama은 70억, 130억, 340억 매개변수 크기의 세 가지 크기로 제공됩니다. 이러한 모델은 다단계 훈련 과정을 통해 개발되었습니다.

  • 기본 모델: Llama 2에서 초기화되어 공개적으로 이용 가능한 거의 중복 제거되지 않은 코드 5000억 토큰 및 관련 자연어 토론에서 훈련되었습니다.
  • Python 전문가: 기본 모델의 버전으로, 추가로 1000억 토큰의 Python 코드에 대해 추가 훈련되었습니다.
  • Instruction Fine-tuned: 자연어 지시를 이해하고 따르도록 최적화된 버전입니다. 이 변형은 Llama 2 Chat instruction tuning 데이터셋과 Llama 2가 생성한(self-instruct) 데이터셋(인터뷰 질문 생성)과 Code Llama가 생성한(data셋)(솔루션 및 단위 테스트 생성)의 조합으로 훈련되었습니다.

기술적 기능

긴 컨텍스트 윈도우

Code Llama은 네이티브 컨텍스트 윈도우가 16,000 토큰입니다. 장기 컨텍스트 미세 조정 및 주파수 도메인 RoPE 스케일링을 통해 모델은 최대 100,000 토큰까지의 컨텍스트 윈도우를 관리하도록 외삽할 수 있습니다.

코드 인필링

7B 및 13B 기본 및 instruction 변형은 코드 인필링을 지원합니다.これにより 모델은 기존 접두사와 접미사 사이에 맞는 코드를 생성할 수 있으며, 이는 IDE에서 커서 기반 코드 어시스턴트에 매우 중요합니다. 이 기능은 34B 모델이나 Python 전문화 버전에서는 사용할 수 없습니다.

언어 지원

이 모델들은 Python, C++, Java, PHP, C#, TypeScript, Bash를 포함한 여러 주요 프로그래밍 언어에서 최첨단 성능을 보여줍니다.

배포 및 통합

Hugging Face 생태계

Code Llama은 transformers 라이브러리(버전 4.33 이상)에 통합되어 있으며, 다음과 같은 지원을 제공합니다:

  • 4-bit 로딩: bitsandbytes와의 통합으로 34B 모델은 NVIDIA RTX 3090과 같은 소비자 GPU에서 실행할 수 있습니다.
  • 정밀도 옵션: bfloat16로 훈련됨(파인튜닝에 권장)이지만, 모델은 평가 지표에서 눈에 띄는 저하 없이 더 빠른 추론을 위해 float16로 실행할 수 있습니다.

프로덕션 추론

프로덕션 준비가 된 배포를 위해, 모델은 Text Generation Inference(TGI)와 Hugging Face Inference Endpoints와 호환됩니다. Inference Endpoints에 권장되는 하드웨어는 다음과 같습니다:

  • 7B 모델: 1x Nvidia A10G (GPU medium).
  • 13B 모델: 1x Nvidia A100 (GPU xlarge).
  • 34B 모델: bitsandbytes 양자화를 적용한 1x Nvidia A100 (GPU 1xlarge) 또는 2x Nvidia A100 (GPU 2xlarge).

성능 평가

Code Llama 모델은 HumanEval과 MultiPL-E(여러 언어로 HumanEval을 번역하는)를 사용하여 벤치마크됩니다. 출판 시점의 다언어 코드 리더보드에 따르면, Code Llama 가족은 다양한 크기와 변형에서 경쟁력 있는 성능을 보여줍니다. 예를 들어, CodeLlama-34B-Instruct 모델은 Python 점수 50.79, JavaScript 점수 45.85를 달성했으며, 리더보드 평균 점수는 35.09입니다.

Sources