StarCoder2-15B-Instruct-v0.1 릴리스 노트 / 새로운 내용
Hugging Face는 완전 투명하고 관용적인 파이프라인을 사용하여 완전히 자체 정렬된 최초의 코드 대형 언어 모델(LLM)인 StarCoder2-15B-Instruct-v0.1을 출시했습니다. 이 모델은 인간이 주석을 달은 데이터나 GPT-4와 같은 독점적인 교사 모델로부터의 증류에 의존하지 않고도 고성능 코드 생성을 달성할 수 있음을 보여줍니다.
성능 벤치마크
StarCoder2-15B-Instruct-v0.1은 72.6의 HumanEval 점수를 달성하여 CodeLlama-70B-Instruct의 72.0 점수를 능가했습니다. EvalPlus 벤치마크 평가에 따르면, 이 모델은 동일 규모의 관용적인 LLM 중 최고 성능을 보이며 Grok-1, Command-R+, DBRX를 앞서고 Snowflake Arctic 480B 및 Mixtral-8x22B-Instruct와 근접한 성능을 보입니다.
2023년 9월 1일 이후에 생성된 코딩 문제를 사용하는 LiveCodeBench에 대한 추가 평가에서는 StarCoder2-15B-Instruct-v0.1이 GPT-4에서 증류된 데이터를 사용해 학습된 모델인 OpenCodeInterpreter-SC2-15B보다 일관되게 우수한 성능을 보였습니다. 이는 LLM이 교사 모델이 제공하는 변형된 분포보다 자체 분포 내의 데이터에서 더 효과적으로 학습할 수 있음을 시사합니다.
자체 정렬 파이프라인
StarCoder2-15B-Instruct-v0.1의 학습 파이프라인은 시드 수집, 명령 생성, 응답 검증의 세 가지 주요 단계로 구성됩니다.
1. 시드 코드 스니펫 수집
다양한 프로그래밍 원칙을 확보하기 위해 팀은 The Stack v1에서 docstring이 포함된 Python 함수를 추출했습니다. 250k개의 Python 함수로 구성된 데이터셋은 초기 5M 함수에서 다음 필터를 사용해 생성되었습니다:
- Type Checking: 정적 오류가 있는 함수를 제거하기 위해 Pyright 휴리스틱 타입 체커를 사용했습니다.
- Decontamination: 정확한 문자열 매칭을 사용해 벤치마크 항목을 학습 세트에서 제거했습니다.
- Docstring Quality: StarCoder2-15B를 판사로 활용해 문서화가 부실한 함수를 필터링했습니다.
- Near-Deduplication: MinHash와 지역 민감 해싱(자카드 유사도 임계값 0.5)을 사용해 중복을 제거했습니다.
2. Self-OSS-Instruct
16개의 few-shot 예시를 활용한 인컨텍스트 학습을 통해, 기본 StarCoder2-15B 모델은 두 단계 프로세스로 자체 명령을 생성했습니다:
- Concepts Extraction: 모델은 시드 함수 내에서 기본적인 프로그래밍 원칙(예: 패턴 매칭, 데이터 타입 변환)을 식별했습니다.
- Instruction Generation: 모델은 식별된 개념을 기반으로 코딩 과제를 생성했습니다.
이 프로세스를 통해 238k개의 명령이 생성되었습니다.
3. 응답 자체 검증
교사 모델로부터 응답을 증류하는 대신, StarCoder2-15B에게 응답과 해당 테스트를 동시에 생성하도록 지시해 자체 검증을 수행했습니다.
각 명령마다 모델은 10개의 샘플을 생성했습니다. 이 샘플들은 샌드박스 환경에서 실행되었으며, 실행 테스트를 통과한 샘플만 유지되었습니다. 240만 개의 생성된 응답 중 50만 개가 실행 테스트를 통과했습니다. 중복 제거 후, 최종 SFT(감독형 미세조정) 데이터셋으로 5만 개의 명령과 각각 무작위로 선택된 통과 응답이 짝지어졌습니다.
투명성 및 오픈 소스 리소스
학습 데이터와 파이프라인에 대한 투명성이 부족한 관용 모델과 달리, StarCoder2-15B-Instruct-v0.1은 완전 투명합니다. Hugging Face는 다음 리소스를 오픈소스로 공개했습니다: