핵심 개념
SelfCodeAlign이라는 새로운 자체 정렬 기술을 사용하면 광범위한 사람의 개입이나 더 큰 모델의 지식 증류 없이도 대규모 언어 모델(LLM)이 코드 생성 작업에서 탁월한 성능을 달성하도록 효과적으로 학습시킬 수 있습니다.
초록
SelfCodeAlign: 코드 생성을 위한 자체 정렬
본 연구 논문에서는 대규모 언어 모델(LLM)을 위한 완전 투명하고 허가된 자체 정렬 파이프라인인 SelfCodeAlign을 소개합니다. 이 방법은 광범위한 사람의 주석이나 더 큰 모델의 지식 증류에 의존하지 않습니다. SelfCodeAlign은 자체 생성된 명령 데이터만 사용하여 기본 코드 LLM을 성공적으로 자체 정렬하는 최초의 완전 투명 파이프라인입니다.
다양한 명령어 생성: SelfCodeAlign은 고품질 시드 코드 조각에서 다양한 코딩 개념을 추출하여 다양한 명령어를 생성합니다. 이 프로세스는 무작위 조각을 명령어로 변환하기 위해 GPT-3.5-Turbo를 사용하는 OSS-Instruct와 유사하지만, SelfCodeAlign은 기본 모델만 독점적으로 사용하고 §4.3에서 유용함이 입증된 별도의 개념 생성 단계를 통합합니다.
응답 생성 및 자체 검증: SelfCodeAlign은 각 작업에 대해 여러 응답을 생성하고 각 응답을 테스트 사례와 쌍을 이루어 샌드박스 환경에서 자체 검증합니다. 그런 다음 테스트 사례를 통과하는 명령어-응답 쌍만 선택합니다. 이 방법을 통해 모델은 다양한 코딩 개념을 실습하고 명령어와 응답 간의 일관성을 검증할 수 있습니다.
다양한 코딩 작업에서의 평가: 연구진은 다양한 코딩 작업(함수 및 클래스 수준 코드 생성, 데이터 과학 프로그래밍, 파일 수준 코드 편
집)에서 SelfCodeAlign을 평가했습니다. SelfCodeAlign-CQ-7B는 모든 작업에서 기본 모델과 OctoPack에서 학습된 모델보다 성능이 크게 향상되었습니다. 예를 들어 HumanEval+에서 이 모델은 67.1의 pass@1 점수를 달성했는데, 이는 CodeQwen1.5-7B보다 21.4점, CodeQwen1.5-7B-OctoPack보다 16.5점 높은 수치입니다. 이는 코드 LLM의 기능을 향상하는 데 있어 합성 데이터 생성 방법이 자연 데이터보다 효과적임을 보여줍니다.
구성 요소 분석: 연구진은 SelfCodeAlign 파이프라인에서 다양한 구성 요소가 어떻게 작용하는지 광범위하게 연구했습니다. 그들은 SelfCodeAlign이 3B에서 33B까지 다양한 크기의 다양한 LLM에 일반화될 수 있음을 입증했습니다. 특히 기본 LLM은 성능 차이가 크지 않을 때 교사 LLM의 이동된 분포보다 자체 분포 내의 데이터에서 더 효과적으로 학습할 수 있음을 발견했습니다. 또한 시드 선택, 개념 생성 및 실행 필터링이 모두 파이프라인에 긍정적으로 기여한다는 것을 보여주었습니다.