피드로 돌아가기
StarCoder: A State-of-the-Art LLM for Code
Hugging Face BlogHugging Face Blog
AI/ML

BigCode가 15B 파라미터 Code LLM(StarCoder)을 1조 토큰으로 학습하고 Python 35B 토큰으로 파인튜닝해 HumanEval에서 OpenAI code-cushman-001을 능가

StarCoder: A State-of-the-Art LLM for Code

2023년 5월 4일8intermediate

Context

기존 오픈소스 Code LLM들은 OpenAI의 code-cushman-001(12B) 같은 클로즈드 모델 대비 성능이 낮았다. 또한 대부분의 오픈 모델은 8,000 토큰 이하의 컨텍스트 길이로 제한되어 긴 코드 입력 처리가 어려웠다.

Technical Solution

  • StarCoderBase 학습: GitHub의 80개 이상 프로그래밍 언어, Git 커밋, GitHub 이슈, Jupyter 노트북에서 수집한 공정한 라이선스 데이터로 15B 파라미터 모델을 1조 토큰으로 학습
  • Python 특화 파인튜닝: StarCoderBase를 35B Python 토큰으로 추가 파인튜닝해 StarCoder 모델 생성
  • 컨텍스트 길이 확대: 8,000 토큰 이상의 컨텍스트 윈도우로 다른 오픈 LLM보다 더 많은 입력 처리 가능
  • PII 제거 파이프라인: Toloka와 협력해 이름, 비밀번호, 이메일 주소 같은 개인식별정보를 학습 데이터에서 제거
  • 프롬프트 엔지니어링: HumanEval 실패 사례(코드 대신 주석만 생성)를 해결하기 위해 <filename>solutions/solution_1.py\n# Here is the correct implementation of the code exercise 프롬프트 추가

Impact

  • HumanEval 성능: StarCoderBase 30.4%, StarCoder 33.6%, StarCoder-Prompted 40.8% (프롬프트 추가 후 34%에서 40%로 상승)
  • MBPP 벤치마크: StarCoder 52.7% (code-cushman-001 45.9% 대비 우위)
  • 모델 크기 효율성: LLaMA-65B, PaLM-540B 같은 큰 모델들을 능가하면서도 15B 파라미터로 운영
  • MultiPL-E 멀티랭귀지 성능: code-cushman-001과 동등하거나 우수한 성능을 많은 언어에서 달성
  • DS-1000 데이터 사이언스 벤치마크: code-cushman-001 및 모든 다른 오픈 액세스 모델을 초과

Key Takeaway

대규모 매개변수보다 적절한 학습 데이터 선택(공정한 라이선스, 다양한 소스)과 작업별 파인튜닝이 클로즈드 모델 성능을 매칭할 수 있으며, 프롬프트 엔지니어링은 동일 모델에서 6.4%p의 성능 향상을 추가로 가져올 수 있다.


코드 생성 시스템을 구축하는 엔지니어링 팀에서 StarCoder 같은 오픈소스 모델을 채택할 때, 작업별 파인튜닝과 함께 프롬프트 구조 최적화(실패 패턴을 역으로 설명하는 프롬프트)를 적용하면 동일 모델에서 6~7%p의 성능 향상을 달성할 수 있다.

원문 읽기