
- 논문 제목: 워리어코더: 전문가 전투에서 학습하여 대규모 언어 모델 코딩 강화하기
- 논문 링크: https://arxiv.org/pdf/2412.17395
01 배경
최근 몇 년 동안 대규모 언어 모델(LLM)은 다양한 코드 매크로 모델이 등장하면서 코드 관련 작업에서 경이로운 성능을 보여 왔습니다. 이러한 성공 사례는 대규모 코드 데이터에 대한 사전 학습이 모델의 핵심 프로그래밍 기능을 크게 향상시킬 수 있음을 보여줍니다. 사전 학습 외에도 명령어 데이터에 대해 LLM을 사후 학습하는 일부 방법도 모델의 명령어 이해도와 답변 품질을 크게 향상시켰습니다. 그러나 사후 학습의 효과는 고품질 데이터의 가용성에 크게 의존하지만 데이터의 수집과 주석 달기는 상당한 어려움을 수반합니다.
위와 같은 문제를 해결하기 위해 일부 방법에서는 셀프 인스트럭트, 에볼 인스트럭트 등 다양한 데이터 플라이휠을 설계하여 명령어 데이터를 생성합니다. 이러한 방법은 다양한 데이터 향상 수단을 통해 명령어 데이터를 구축하도록 설계되어 있습니다. 이러한 방법은 다양한 데이터 강화 수단을 통해 명령어 데이터를 구축하며, 이러한 데이터에 대한 학습을 통해 모델의 코드 생성 능력을 효과적으로 향상시킬 수 있습니다. 그러나 그림 1에서 볼 수 있듯이 이러한 접근 방식은 여전히 기존 데이터 세트의 확장에 의존하고 사설 LLM(예: GPT-3.5, GPT-4 등)을 호출해야 하므로 데이터 수집 비용이 많이 듭니다. 또한 주석에 사용되는 데이터 소스와 LLM의 수가 제한되어 있어 데이터의 다양성이 제한되고 제한된 비공개 LLM에 내재된 시스템적 편향성을 그대로 물려받게 됩니다. 그림 1
이 백서에서는 다음을 소개합니다. 코드 매크로 모델을 위한 새로운 데이터 플라이휠 훈련 패러다임인 WarriorCoder는 전문가의 적대적 접근 방식에서 학습하여 개별 코드 전문가 매크로 모델의 강점을 통합하는 모델입니다.. 그림 1에서 볼 수 있듯이 코딩 전문가로 구성된 개별 대규모 모델이 서로 대결하며, 공격자는 자신의 전문 영역에서 상대방에게 도전하고 대상 모델은 이러한 쌍의 전투에서 승리한 모델로부터 학습합니다. 기존 오픈소스 데이터셋을 시드 데이터로 사용해 합성 및 증강하는 기존 방식과 달리 워리어코더는 시드 데이터 없이 0에서 1까지의 데이터를 생성하며, 개별 모델의 강점만을 추출하는 것이 아니라 여러 코드 전문가 매크로 모델의 강점을 융합할 수 있습니다. 또한 이 논문에서 제안한 방법은 데이터 수집 과정에서 사람의 개입과 사설 LLM에 대한 의존도를 낮추고 매우 저렴한 비용으로 고품질의 다양한 학습 데이터를 수집할 수 있습니다. 실험 결과, warriorCoder는 코드 생성 작업에서 현재의 SOTA를 달성할 뿐만 아니라 코드 추론, 라이브러리 사용 등의 벤치마크에서도 코드 육각형 전사라고 할 수 있는 우수한 결과를 달성했습니다.
02 방법론
이 백서는 코드 그랜드 모델을 위한 경기장을 구성합니다. 여기서 최첨단 코드 전문가 매크로 모델이 서로 대결하며, 각 모델은 이미 보유한 지식을 사용해 다른 모델에 도전하고 나머지 모델은 대결의 결과를 평가하는 심판 역할을 합니다. 그런 다음 목표 모델은 이러한 대결의 승자로부터 학습하여 모든 경쟁자의 강점을 점진적으로 통합합니다. 이 백서에서는 경쟁자(코드 전문가 매크로 모델)를 하나의 그룹으로 간주하고 그룹 내 답변의 상대적 우월성에 따라 모델을 최적화합니다. GRPO 유사점도 있고 차이점도 있습니다. 그림 2
2.1 경쟁사 설정
참가자의 실력에 따라 워리어코더의 최종 성능이 결정됩니다. 이론적으로 더 크고 강력한 참가자 풀에서 얻은 훈련 데이터의 다양성과 품질이 높을수록 최종 훈련된 모델의 성능이 더 좋아집니다. 각 라운드의 경기장에서는 한 쌍의 코더만 경쟁자로 선정되고 나머지는 심사위원 역할을 합니다. 이 백서에서는 75B 이내의 고급 빅 모델 5개를 BigCodeBench 순위에서 선정했습니다 - Athene-V2-Chat, DeepSeek-Coder-V2-Lite-Instruct, Llama-3.3-70B-Instruct. Qwen2.5-72B-Instruct, QwQ-32B-Preview입니다. 이 다섯 가지 빅 모델은 모두 오픈 소스 빅 모델이며 WarriorCoder는 이러한 오픈 소스 빅 모델과의 대결만으로도 우수한 성능을 달성한다는 점에 주목할 가치가 있습니다. 물론 워리어코더는 강력한 프라이빗 매크로 모델로부터도 학습할 수 있습니다.
2.2 처음부터 명령어 마이닝
한 쌍의 상대인 A와 B(A는 공격자, B는 방어자)의 경우, 대결의 첫 번째 단계는 A가 뛰어난 영역에서 B에게 도전하는 것이며, 이를 위해서는 A가 훈련 과정에서 무엇을 배웠는지에 대한 지식이 필요합니다. 하지만 현재 대부분의 오픈 소스 그랜드 모델은 핵심 훈련 데이터를 공개하지 않기 때문에 공격자가 무엇을 잘하는지 알기가 매우 어렵습니다. 이 논문에서는 Magpie에서 영감을 받아 그랜드 모델이 이미 숙달한 기능을 마이닝하기 위한 대화 완성 기반 접근 방식을 고안했습니다. Qwen2.5를 예로 들어 빠른 정렬 알고리즘을 생성하려면 전체 프롬프트 형식이 그림 3에 나와 있습니다. 프롬프트에는 시스템 콘텐츠, 사용자 콘텐츠, 형식과 관련된 특수 토큰(예: "", "") 등이 포함되어야 합니다. ", "" 등과 같은 특수 토큰을 포함해야 합니다. 그림 3
반면, 그림 4와 같이 접두사 부분(그 자체로는 특별한 의미가 없는)만을 모델에 입력하면 모델의 보완 기능을 사용하여 사용자 콘텐츠를 얻을 수 있습니다. 그림 4
이러한 방식으로 생성 파라미터의 다양한 구성(예: 다양한 온도 값 및 최고-p 값)을 통해 모델이 학습한 명령어 데이터를 수집할 수 있습니다. 기존의 데이터 합성과 달리 이 논문에서 수집한 명령어 데이터는 모델에 의해 합성되지 않고 모델의 분포에서 직접 샘플링하여 얻으므로 패턴 과적합 및 출력 분포 편향과 같은 문제를 피할 수 있습니다. 그러나 지침이 반복적이거나 모호하거나 불분명하거나 너무 단순할 수 있습니다. 이러한 문제를 해결하기 위해 데이터의 중복을 제거하고 심판 모델을 사용해 난이도를 평가합니다. 이 논문에서는 난이도를 우수, 좋음, 보통, 나쁨의 네 가지 등급으로 분류하고, 궁극적으로 우수와 좋음 등급의 지침만 사용하고, KcenterGreedy 알고리즘을 사용하여 지침 데이터를 더욱 압축합니다.
2.3 승패 결정
도전자와 방어자 모두 지시 데이터를 기반으로 답을 생성해야 하며, 심판(나머지 모델)이 승자를 투표로 결정합니다: 그러나 텍스트 {로컬 점수}에만 의존하여 우승자를 선정하면 우연의 문제가 발생할 수 있습니다. 투표는 무작위성이나 리뷰어의 편견과 같은 요인에 의해 영향을 받을 수 있으므로 특정 지침에 따라 더 약한 모델이 더 강한 모델보다 실제로 더 나은 답변이 아니더라도 더 약한 모델이 더 강한 모델보다 더 많은 표를 받을 수 있습니다.
이 문제를 해결하기 위해 이 백서에서는 의사 결정 과정에서 지역적 우발성과 글로벌 일관성을 모두 고려합니다. 이 백서에서는 글로벌 점수인 Elo 등급이라는 개념을 소개합니다. 이는 모델의 상대적 성능 변화를 보다 포괄적으로 반영할 수 있으며, 시간 경과에 따른 성능과 여러 평가에 걸친 성능을 포괄합니다. Elo 등급을 도입하면 단일 게임에서 모델의 로컬 성과와 여러 라운드에 걸친 글로벌 성과를 모두 평가 과정에서 고려할 수 있으므로 모델의 전반적인 능력을 보다 강력하고 정확하게 측정할 수 있어 우연과 대표성이 없는 투표로 인해 약한 모델이 승리할 위험을 줄이는 데 도움이 될 수 있습니다. 최종 응답 점수는 Elo 평점과 심사위원의 투표에 따라 가중치가 부여됩니다:
각 응답은 모든 상대방의 응답과 비교되므로 점수는 그룹 내에서 현재 응답의 상대적 강도를 나타냅니다.
2.4 최종 교육
이 논문에서 데이터 형식은 명령어, 각 참가자의 응답, 각 응답에 해당하는 점수입니다. 이 데이터 형식은 SFT, DPO, KTO 등 다양한 사후 학습 방법을 지원할 수 있습니다. 본 논문에서는 SFT를 채택하여 그룹에서 가장 높은 점수를 받은 응답을 골드 출력으로 사용함으로써 워리어코더가 훈련에 참여한 각 참가자의 강점을 통합하고, 모든 참가자의 강점을 결합할 수 있도록 하였습니다.
03 실험적
3.1 주요 결과
표 1은 코드 생성 벤치마크에서 WarriorCoder의 성능을 보여줍니다. 유사한 작업과 비교했을 때, WarriorCoder는 HumanEval, HumanEval+, MBPP 및 MBPP+에서 SOTA를 달성합니다. 개인용 대형 모델(예: GPT-4 등)이 전혀 없이도 놀라운 결과를 달성한다는 점에 주목할 필요가 있습니다. 표 1
워리어코더는 코드 추론 벤치마크와 벤치마크를 사용한 라이브러리에서도 우수한 결과를 얻었습니다. 표 2와 3에서 볼 수 있듯이 WarriorCoder는 대부분의 메트릭에서 최적의 성능을 보이며 심지어 15B 및 34B와 같은 대규모 모델보다 성능이 뛰어납니다. 이는 또한 이 논문에서 제안한 방법이 일반화가 잘 되어 있어 여러 대규모 코드 전문가 모델에서 다양한 기능을 얻을 수 있다는 것을 증명합니다. 표 2
표 3
3.2 데이터 분석
이 백서에서는 구축된 학습 데이터를 분석하여 의존성, 다양성, 난이도라는 세 가지 관점에서 살펴봅니다.
종속성
기존 작업은 일부 기존 코드 데이터셋을 기반으로 데이터를 확장하거나 개선하는 경향이 있는 반면, 이 논문은 완전히 새로운 데이터를 처음부터 구축합니다. 그림 5에서 볼 수 있듯이, 저자들은 학습 데이터와 일반적으로 사용되는 두 코드 데이터 세트 간의 중복 정도(ROUGE 메트릭)를 계산한 결과, 대부분의 명령어가 코드알파카 및 코드울트라피드백에서 0.3 미만의 ROUGE 점수를 얻어 기존 데이터 세트와 내용면에서 큰 차이가 있음을 시사합니다. 특히, 채굴된 명령어 중 ROUGE 지표가 0.6 이상인 명령어는 하나도 없으며, 이는 이러한 명령어가 기존 학습 데이터의 단순한 복사나 확장이 아니라 전문가 매크로 모델의 내부 분포에서 비롯된 것임을 입증합니다. 결과적으로 이러한 명령어는 더 새롭고 독립성이 높기 때문에 훈련에 특히 유용합니다. 그림 5
표 4는 7가지 코드 작업을 포함하는 학습 데이터의 구성을 보여 주며, 이것이 WarriorCoder가 여러 벤치마크에서 우수한 성능을 보이는 이유입니다. 코드 추론이 차지하는 비중이 2.9%에 불과하다는 점에 주목할 필요가 있는데, 이는 WarriorCoder가 관련 벤치마크에서 놀라울 정도로 우수한 성능을 보인다는 것을 의미하며, 본 논문에서 제안한 방법이 큰 잠재력을 가지고 있으며, 데이터를 마이닝하여 모델의 약점을 공략한다면 모델의 성능을 더욱 향상시킬 수 있다는 것을 입증합니다. 또한 그림 6의 히트 맵은 참가자들의 대결 결과를 보여주는데, 아무리 강한 모델이라도 때때로 성능이 좋지 않은 경우가 있으며 WarriorCoder는 현재 명령어에서 가장 높은 점수를 받은 승자 응답만을 학습합니다. 표 4
그림 6
그림 7은 다양한 모델에서 생성된 지침의 난이도 비율을 보여줍니다. 대부분의 지침은 6~8점 사이의 점수로 양호한 것으로 평가됩니다. 우수(9~10점)로 평가된 지침은 데이터 세트의 일부에 불과하며, 이는 매우 복잡하거나 고급 작업은 상대적으로 드물다는 것을 나타냅니다. 저자들은 6점 이하의 지침은 너무 단순하거나 너무 모호한 경향이 있어 훈련 단계에 해가 될 수 있고 모델의 성능과 일반화를 약화시킬 수 있기 때문에 훈련 세트에서 제외했습니다. 그림 7
04 관련 리소스
현재 작성자가 이 모델을 오픈소스로 공개하고 있지는 않지만, 이미 다음 주소에서 누군가가 작성자의 작업을 재현한 것을 발견했습니다:
프로젝트 링크: https://huggingface.co/HuggingMicah/warriorcoder_reproduce
© 저작권 정책
기사 저작권 AI 공유 서클 모두 무단 복제하지 마세요.
관련 문서
댓글 없음...