← 最新の論文
🤖 AI

Beyond Code Pairs: Dialogue-Based Data Generation for LLM Code Translation

本論文は、コンパイラおよびランタイムのフィードバックを伴うデュアルLLMによるQuestioner-Solver設計を活用することで、検証済みのコード翻訳と推論ダイアログを生成し、FortranやCUDAといった低リソース領域におけるLLMの機能的正確性を大幅に向上させる、自動化された対話ベースのデータセット生成パイプラインを導入するものである。

原著者: Le Chen, Nuo Xu, Winson Chen, Bin Lei, Pei-Hung Lin, Dunzhi Zhou, Rajeev Thakur, Caiwen Ding, Ali Jannesari, Chunhua Liao

公開日 2026-06-05
📖 1 分で読めます☕ さくっと読める

原著者: Le Chen, Nuo Xu, Winson Chen, Bin Lei, Pei-Hung Lin, Dunzhi Zhou, Rajeev Thakur, Caiwen Ding, Ali Jannesari, Chunhua Liao

原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む

想像してみてください。あなたは、古くて難解な言語(Fortranのような)から現代的な言語(C++やCUDAのような)へと、複雑なレシピを翻訳しようとしている、優秀だが経験の浅い弟子に教えているところだとします。

問題:「ブラックボックス」的な翻訳
伝統的に、AIにコードの翻訳を教える際、私たちは「ソースコード」と「ターゲットコード」を並べて見せます。これは、まるで弟子に材料のリストと完成した料理を見せるだけで、調理のプロセスを一度も見せないようなものです。彼らは正しい料理を推測することはできるかもしれませんが、もし間違いを犯した場合、なぜ、どのように修正すべきかを知りません。彼らは見た目には正しそうな結果を生み出しますが、実際に食べてみる(コードを実行する)と失敗する可能性があります。

解決策:「質問者」と「解決者」
この論文は、Beyond Code Pairsと呼ばれる、新しいAIの訓練方法を紹介しています。単に始まりと終わりを見せるのではなく、翻訳プロセスの会話全体と、その試行錯誤の記録を作成しました。

これは、次のように役割が分かれたキッチンを想像すると分かりやすいでしょう:

  1. 質問者(シェフの批評家): このAIはコードを書きません。代わりに、厳格なヘッドシェフとして振る舞います。現在の状態を確認し、エラー(コンパイラエラーや実行時のクラッシュなど)をチェックして、具体的な質問を投げかけます。「なぜこれがクラッシュしたのか?」「メモリ制限を確認したか?」といった具合です。彼らは、プロセスを導くためにコンピュータからの現実世界のフィードバックを使用します。
  2. 解決者(弟子): このAIが実際にコードを書きます。コードを翻訳しようとし、ユニットテスト(味見のようなもの)を書き、質問者が指摘したエラーを修正しようと試みます。

プロセス:独白ではなく、対話である
論文では、これら2つのAIがマルチターンの対話を通じてやり取りを行うパイプラインについて説明しています:

  • ステップ1: 質問者が、元のコードに対するテストを書くよう解決者に依頼します。
  • ステップ2: 解決者がテストを書きます。質問者はそれがパスするかどうかをチェックします。パスしない場合は、テストが機能するまで彼らは議論し、洗練させます。
  • ステップ3: 質問者が翻訳を求めます。解決者は新しいコードを書きます。
  • ステップ4: 質問者が新しいコードを実行します。もしクラッシュした場合、質問者は「この特定のエラーの処理を忘れているぞ!」と言います。すると、解決者はそれを修正します。
  • ステップ5: コードがコンパイルされ、実行され、すべてのテストに合格するまで、これを繰り返します。

魔法は、研究者たちがこの会話のあらゆるターンを保存したことにあります。彼らは単に最終的なコードを保存したのではなく、間違い、質問、コンパイラのエラーメッセージ、そして修正のプロセスまでも保存したのです。

結果:小さなモデルによる大きな勝利
研究者たちは、この手法を用いて、FortranからC++へ、およびC++からCUDA(グラフィックスカード用の言語)への翻訳に関する数千の「会話」を生成しました。

これらの会話を用いて、より小さなオープンソースのAIモデル(例えば70億パラメータのモデル)を訓練したところ、結果は驚くべきものでした。

  • 機能的な正確性: モデルは単に正しく見えるコードを書くだけでなく、実際に「動作する」コードを書きました。C++からCUDAへの翻訳という困難なタスクにおいて、テストに合格する成功率は12.5%から68.8%へと跳ね上がりました
  • 巨人を打ち負かす: この「対話」データで訓練された小さなオープンソースモデルは、コードをコンパイルし、クラッシュせずに実行させるという主要な指標において、GoogleのGeminiやMetaのLlama 4のような、巨大で高価なプロプライエタリ・システムよりも優れた性能を発揮しました。

まとめ
この論文は、AIに複雑なタスクを行う方法を教えるには、単に答えを見せるだけでは不十分であると主張しています。彼らに試行錯誤質問、そして修正を見せる必要があるのです。静的なコードのペアではなく、これらの「会話」を用いて訓練することで、より小さく、より安価なAIモデルであっても、エラーを論理的に考え、自ら修正し、高品質で機能的なソフトウェアを生み出すことができるのです。

要するに、AIに答えを教えるのではなく、エラーを考え、議論し、自らの間違いを修正する方法を教えるのです。

自分の分野の論文に埋もれていませんか?

研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。

Digest を試す →