[논문] OCTOPACK: INSTRUCTION TUNING CODE LARGE LANGUAGE MODELS
큰 언어 모델(LLM)의 사용성 및 전체 성능은 지시어를 통해 제공된 다양한 언어 작업을 미세 조정함으로써 향상될 수 있다는 것이 증명되었습니다 (instruction tuning). 시각, 청각, 다국어 데이터로 훈련된 모델 모두 지시어 튜닝 패러다임에서 잘 작동하였습니다.
Code-learning machines는 연구자들에게 코드 작성 방법을 배우게 됩니다. 코드 주석을 사용하여 원하는 코드를 생성하도록 Code LLMs에 간접적으로 지시하는 것이 가능하지만, 원하는 결과가 자연어일 경우에는 이 과정이 취약하며 실패합니다. 명확한 지시어 튜닝을 통해 Code LLMs의 조종성을 향상시킬 수 있으며, 그들의 적용 범위도 확대될 수 있습니다.
연구자들은 합성 데이터를 생성할 때 오픈 소스 모델을 선호하며, 제한적인 라이선스가 있는 데이터의 사용을 피하려 합니다. 그들은 코드 지시어에 대한 네 가지 주요 데이터베이스를 비교합니다:
- xP3x는 널리 사용되는 코드 벤치마크의 결과를 모아둔 것입니다.
- 유연한 Code LLM은 학자들에게 독립적인 데이터 생성을 가능하게 합니다.
- OASST는 주로 언어적 정보를 저장하는 곳으로, 코딩 예제는 극히 제한적입니다.
- “COMMITPACK”이라 불리는 새로운 4TB 규모의 Git 커밋 자료집.
연구자들의 기여
- 사전 훈련을 위해, 허용적인 라이선스 하에 350개의 다양한 프로그래밍 언어로 작성된 코드 커밋 4테라바이트(TB)에 접근할 수 있습니다. 튜닝을 통해 COMMITPACK의 고품질 코드 지시어를 포함한 필터링된 버전에 접근할 수 있습니다.
- 여섯 가지 프로그래밍 언어(Python, JavaScript, Java, Go, C++, Rust) 및 세 가지 시나리오(Code Repair, Code Explanation, Code Synthesis)에 대한 코드 LLM 일반화 벤치마크(HUMANEVALPACK)를 제공합니다.
- 가장 관대한 Code LLMs는 OCTOCODER와 OCTOGEEX입니다.
- 연구자들은 데이터셋의 기초로 Google BigQuery의 GitHub 커밋 액션 덤프를 사용합니다. 커밋 메시지가 매우 구체적이라는 것을 보장하고, 여러 파일을 다루는 추가적인 복잡성을 피하기 위해, 그들은 여러 품질 필터를 사용하고 상업적으로 친화적인 라이선싱을 위한 필터를 적용하며, 하나 이상의 파일에 영향을 주는 모든 커밋을 삭제합니다. 필터링된 정보를 사용하여 커밋 전후의 영향을 받는 GitHub 소스 코드 파일이 추출됩니다.
자연어(NL) 응답이 필요한 작업에서는 선택적인 NL 문맥과 함께 NL 지시어를 지시어 튜닝 LLMs의 입력으로 사용합니다. 코드 데이터로 지시어를 조정할 때, 코드는 입력에만 포함될 수 있거나, 출력에만 포함될 수 있으며, NL 지시어와 함께 입력과 출력 양쪽에 모두 포함될 수 있습니다. 대부분의 현존하는 벤치마크는 코드 합성 버전에 중점을 둘 지라도, 고객들은 세 가지 경우 모두에서 모델을 사용하고 싶어할 수 있습니다. 그 결과, HumanEval 코드 합성 벤치마크에는 현재 여섯 언어에 대한 세 가지 입력-출력 조합이 포함되어 있습니다.
세 가지 평가 조건에서, OCTOCODER는 상당한 마진으로 모든 다른 허용 가능한 모델들을 능가합니다. OCTOGEEX는 60억(6B)의 파라미터를 갖는 모델 중에서는 파라미터가 가장 적지만, 다른 허용 가능한 Code LLMs에 비해 여전히 최상의 결과를 보여줍니다. 다른 모델들과 비교할 때, GPT-4는 최고의 성능을 보입니다. GPT-4는 다른 모델보다 아마 큰 모델일 것으로 추정되지만, 오픈 소스가 아닙니다.
필요한 모든 것, 코드와 모델, 데이터를 포함하여,는 https://github.com/bigcode-project/octopack 에서 찾아볼 수 있습니다.
간단히 말하면, 대형 언어 모델(LLMs)은 지시어를 기반으로 미세 조정 받을 때 큰 이익을 보이며, 다양한 자연어 처리 작업에 있어 향상된 성능을 보입니다. 연구자들은 Git 커밋의 특별한 구조를 활용하여 코드 변경과 인간의 지침을 연결하여 지시어로 코드를 미세 조정합니다. 350개의 다른 프로그래밍 언어에서 얻은 Git 커밋 4테라바이트가 COMMITPACK로 정리되었습니다. 연구자들은 16B 파라미터를 가진 StarCoder 모델을 다른 자연 및 합성 코드 지시어와 COMMITPACK과 비교했습니다. 그 결과, 그들은 OpenAI의 결과에 기반하지 않은 모델 중에서 HumanEval 파이썬 테스트에서 최고의 성능을 보였습니다. 추가로, 그들은 여섯 가지 프로그래밍 언어(Python, JavaScript, Java, Go, C++, Rust) 및 세 가지 코딩 작업(Code Repair, Code Explanation, Code Synthesis) 지원을 포함한 HUMANEVALPACK 벤치마크를 소개했습니다. OCTOCODER와 OCTOGEEX 두 모델은 허용된 모델 중에서 HUMANEVALPACK에서 가장 우수한 성능을 보여, COMMITPACK의 장점을 강조하였습니다.
[논문] OCTOPACK: INSTRUCTION TUNING CODE LARGE LANGUAGE MODELS
대형 언어 모델(LLMs)을 지시사항에 따라 미세조정하면 자연어 처리 작업의 성능이 크게 개선됩니다. 우리는 코드 변경 사항과 인간의 지시사항을 연결하는 Git 커밋의 자연스러운 구조를 활용하여 지시사항 조정을 적용합니다. 우리는 350개의 프로그래밍 언어에서 얻은 Git 커밋 4테라바이트로 COMMITPACK을 구성했습니다. 16B 파라미터 StarCoder 모델에서, 우리는 자연스럽고 합성된 코드 지시사항(xP3x, Self-Instruct, OASST)과 COMMITPACK을 비교 분석했으며, OpenAI 결과를 기반으로 훈련되지 않은 모델 중 HumanEval 파이썬 벤치마크에서 최첨단 성능(46.2% pass@1)을 달성했습니다. 또한, 6개의 언어(Python, JavaScript, Java, Go, C++, Rust)에서 3개의 코딩 작업(Code Repair, Code Explanation, Code Synthesis)을 포함한 HumanEval 벤치마크를 확장한 HUMANEVALPACK을 소개합니다. OCTOCODER와 OCTOGEEX 모델은 모든 허용 모델 중 HUMANEVALPACK에서 최고의 성능을 보여주며, COMMITPACK이 다양한 언어와 자연스러운 코딩 작업에 대해 잘 일반화됨을 보여줍니다. 코드, 모델, 데이터는 https://github.com/bigcode-project/octopack 에서 자유롭게 사용할 수 있습니다.
1) CommitPack
그림 1: OCTOPACK 개요. 1) 우리의 4TB 데이터셋인 COMMITPACK에서 샘플링. 2) 3개의 코딩 작업과 6개의 프로그래밍 언어를 포함하는 HUMANEVALPACK에서 OCTOCODER, OCTOGEEX 및 다른 코드 모델의 성능 비교, 비허용 모델(WizardCoder, GPT-4)도 포함.