daVinci-Dev: Agent-native Mid-training for Software Engineering
이 논문은 분포 불일치를 극복하기 위해 문맥적 및 환경적 네이티브 궤적을 결합한 새로운 "에이전트 네이티브" 데이터 전략을 활용하여, 32B 및 72B 모델이 이전 방법들보다 훨씬 적은 학습 토큰으로도 SWE-Bench Verified에서 최첨단 성능을 달할 수 있도록 하는 에이전트 기반 중간 학습 프레임워크인 daVinci-Dev를 소개한다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
핵심 아이디어: 로봇에게 진짜 프로그래머가 되는 법을 가르치기
당신이 로봇에게 고장 난 자동차를 수리하는 법을 가르치고 싶다고 상상해 보세요.
기존 방식 (사후 학습 - Post-Training):
현재 대부분의 AI 모델은 도서관에 있는 모든 자동차 정비 매뉴얼을 읽었지만(사전 학습), 정작 렌치를 한 번도 잡아본 적 없는 학생과 같습니다. 이들에게 자동차를 고치는 법을 가르치기 위해, 연구자들은 전문가가 자동차를 고치는 몇 개의 영상을 보여주고(지도 미세 조정), 그 후 차고에서 연습하게 하며 실수를 할 때만 바로잡아 줍니다(강화 학습).
- 문제점: 이 "차고"는 구축하기에 너무 작고 비용이 많이 듭니다. 오직 몇 대의 자동차로만 연습할 수 있습니다. 또한, 학생은 완성된 결과물인 '수리된 자동차'만 볼 뿐, 시도하고, 실패하고, 엔진을 점검하고, 다시 시도하는 그 지저난한 '과정'은 보지 못합니다.
새로운 방식 (daVinci-Dev / 에이전트 네이티브 중간 학습 - Agent-Native Mid-Training):
이 논문의 저자들은 이렇게 말합니다. "로봇을 차고로 보내기 전에 미리 가르칩시다." 그들은 **중간 학습(Mid-Training)**이라는 중간 단계를 도입했습니다.
단순히 로로봇에게 완성된 자동차를 보여주는 대신, 수백만 명의 실제 정비사들이 남긴 방대한 양의 **실제 수리 기록(repair logs)**을 입력합니다. 그들은 단순히 최종 결과만을 보여주는 것이 아니라, 다음과 같은 전체 이야기를 보여줍니다:
- 정비사가 고장 난 차를 살펴보는 모습.
- 정비사가 보닛을 열고 매뉴얼을 읽는 모습.
- 정비사가 수리를 시도했다가 이상한 소리를 듣고, 이것이 작동하지 않는다는 것을 깨닫는 과정.
- 정비사가 작동할 때까지 다른 수리 방법을 계속 시도하는 과정.
그들은 이를 "에이전트 네이티브(Agent-Native)" 데이터라고 부릅니다. 이는 단순히 정적인 사실을 암기하는 것이 아니라, 실제 세상에서 일꾼(에이전트)으로서 겪는 실제적인 '경험'을 모방하기 때문입니다.
두 가지 특별한 재료
이 학습 라이브러리를 만들기 위해, 팀은 GitHub(프로그래머들이 코드를 공유하는 거대한 웹사이트)에서 두 가지 유형의 "이야기"(데이터)를 만들어냈습니다.
1. "컨텍스트 네이티브" 이야기 (광범한 라이브러리)
- 정체: 이들은 수백만 개의 풀 리퀘스트(Pull Requests, 코드 변경 요청)를 가져와 전체 이야기를 재구성했습니다.
- 비유: 탐정의 사건 파일을 상상해 보세요. 이 파일은 해결된 범죄 장면만 보여주는 것이 아니라, 탐정이 용의자의 일기를 읽고, 적절한 파일을 찾고, 추측을 했다가, 새로운 단서에 따라 생각을 바꾸는 과정까지 보여줍니다.
- 도움이 되는 이유: 이는 AI에게 업무의 **흐름(flow)**을 가르칩니다. 코드를 수정하기 전에 먼저 파일을 찾아 읽어야 한다는 것을 배우게 됩니다. 이는 매우 다양한 언어와 상황을 포괄합니다 (686억 개의 단어 데이터).
2. "환경 네이티브" 이야기 (라이브 시뮬레이션)
- 정체: 이들은 단순히 로그를 읽기만 한 것이 아니라, 실제로 코드를 실행했습니다. AI 에이전트를 실제 작동하는 컴퓨터 환경(Docker 컨테이너) 안에 넣고 버그를 고치도록 했습니다.
- 비유: 이것은 학생을 실제 엔진이 있는 진짜 차고에 넣는 것과 같습니다. 학생이 볼트를 돌리려고 하면, 엔진에서 "쾅" 하는 소리(에러)가 납니다. 학생은 그 소리를 듣고 멈춘 뒤, 다른 도구를 사용해 봅니다.
- 도움이 되는 이유: 이는 AI가 실제 피드백에 어떻게 반응해야 하는지를 가르칩니다. "내가 이 명령어를 입력하면, 컴퓨터가 에러 메시지를 내뱉으며 비명을 지를 것이다"라는 것을 배웁니다. 이는 정적인 책으로는 가르칠 수 없는 부분입니다. 이 부분은 규모는 더 작지만(31억 개의 단어), "실제"이기 때문에 품질이 매우 높습니다.
결과: 얼마나 효과적이었나?
팀은 자신들의 새로운 "학생"(daVinci-Dev 모델)을 소프트웨어 엔지니어의 최종 운전 면허 시험과 같은 SWE-Bench Verified라는 유명한 시험으로 테스트했습니다.
- 점수: 720억 개의 파라미터를 가진 이 모델은 **58.5%**의 성공률을 기록했습니다.
- 비교: 이는 이전의 최고 오픈 소스 방식인 Kimi-Dev(약 48.6% 기록)를 앞질렀습니다.
- 효율성: 이들은 이전 기록 보유자가 사용했던 양보다 절반도 안 되는 양의 학습 데이터(토큰)를 사용하여 이 성과를 냈습니다. 이는 마치 공부할 내용이 훨씬 더 좋았기 때문에, 100시간 대신 50시간만 공부하고도 시험에서 A+를 받은 것과 같습니다.
- 놀라운 점: 이들은 처음부터 코딩 전문 모델이 아닌 "일반" 베이스 모델(Qwen2.5-Base)에서 시작했음에도 불구하고, 새로운 학습법을 통해 코딩 전문 모델들보다 더 뛰어난 성능을 보여주었습니다.
왜 이것이 중요한가 (논문에 따르면)
이 논문은 AI에게 코딩을 가르칠 때 가장 큰 실수는 AI를 단순히 교과서만 읽는 학생처럼 취급해 온 것이라고 주장합니다. 실제 소프트웨어 엔지니어링은 하나의 루프입니다: 문제 발견 → 코드 읽기 → 수정 시도 → 작동 여부 확인 → 다시 수정.
AI에게 이 루프(업무의 과정과 컴퓨터의 실시간 피드백 모두)를 보존하는 데이터를 제공함으로써, 훨씬 더 강력한 기초를 구축했습니다.
요약하자면: 그들은 단순히 AI에게 코드가 어떻게 생겼는지를 가르친 것이 아니라, 실제 소프트웨어 개발의 지저분한 시행착오 과정을 시뮬레이션함으로써, 프로그래머처럼 생각하는 법을 가르쳤습니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.