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生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
ビッグアイデア:ロボットに本物のプログラマーになってもらう方法
想像してみてください。あなたはロボットに、壊れた車の直し方を教えようとしています。
従来の方法(ポストトレーニング):
現在のほとんどのAIモデルは、図書館にあるすべての自動車整備マニュアルを読み終えた(事前学習)ものの、一度もレンチに触れたことがない学生のようなものです。彼らに車の直し方を教えるために、研究者は専門家が車を修理している動画をいくつか見せ(教師あり微調整)、その後、間違いがあった時だけ修正を行うようにしてガレージで練習させます(強化学習)。
- 問題点: この「ガレージ」を作るにはコストがかかり、規模も小さくなります。練習できる車も限られています。また、学生が見ているのは「修理が終わった後の完成した車」だけであり、試行錯誤し、失敗し、エンジンを確認し、再びやり直すという「泥臭いプロセス」までは見ることができません。
新しい方法(daVinci-Dev / エージェント・ネイティブ・ミッドトレーニング):
この論文の著者たちは、「ロボットをガレージに送る前に、教え方を変えよう」と提案しています。彼らは**「ミッドトレーニング(中間学習)」**と呼ばれる新しい段階を導入しました。
単に完成した車を見せるのではなく、何百万もの実際のメカニックによる**「現実世界の修理ログ」**という膨大なライブラリをロボットに読み込ませるのです。彼らは単に最終結果を見せるのではありません。以下の「物語全体」を見せるのです:
- メカニックが壊れた車を観察する。
- メカニックがボンネットを開け、マニュアルを読む。
- メカニックが修理を試みるが、変な音が聞こえたため、うまくいかなかったことを悟る。
- メカニックがうまくいくまで、別の修理方法を試していく。
彼らはこれを**「エージェント・ネイティブ」**なデータと呼んでいます。なぜなら、これは静的な事実を暗記するのではなく、現実の世界で働くエージェント(作業者)としての実際の「経験」を模倣しているからです。
2つの特別な材料
このトレーニング・ライブラリを構築するために、チームはGitHub(プログラマーがコードを共有する巨大なサイト)から2種類の「物語(データ)」を作成しました。
1. 「コンテキスト・ネイティブ」な物語(広範なライブラリ)
- 内容: 彼らは何百万もの「プルリクエスト(コード変更の要求)」を取り上げ、その物語全体を再構成しました。
- 例え: 探偵の捜査ファイルのようなものです。それは解決された犯罪の様子だけでなく、探偵が容疑者の日記を読み、正しいファイルを見つけ、推測を立て、そして新しい手がかりに基づいて考えを変えていく過程までも示しています。
- 効果: これにより、AIは仕事の「流れ」を学びます。ファイルを編集する前に、まずそのファイルを見つけて読む必要があるということを学ぶのです。これは、非常に多様な言語と状況をカバーしています(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に「コードがどのようなものか」を教えたのではありません。現実のソフトウェア開発における試行錯誤のプロセスをシミュレートすることで、プログラマーのように「考える方法」を教えたのです。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。