618ZXW

DeepSeek の最新の取り組み: コードを思考チェーンに変換し、大規模モデル推論のさまざまな機能を総合的に強化します。

大規模モデルをコードを使用して考えるようにトレーニングすると、他の分野での推論能力も向上します。

DeepSeek チームの最新の研究では、300 万を超えるインスタンスを使用してコードを思考プロセスに変換し、データセットCODEI/Oを構築し、その後、Qwen や Llama などのモデルのトレーニングに使用しました。

その結果、非コード推論タスクにおける良好な転移性を示すなど、さまざまな種類の推論タスクにわたってモデルのパフォーマンスが総合的に向上しました。

研究チームは、コードにはさまざまなシナリオの思考プロセスが含まれていると考えており、これらの思考プロセスを「抽出」して推論モデルをトレーニングしたいと考えています。

彼らは大量のトレーニング データを生成し、コードを実行し、コード、入力/出力のペア、機能の説明を DeepSeek-V2.5 に入力して、自然言語形式で推論プロセスを合成しました

これを基に、チームは検証および改訂メカニズムも導入し、結果としてCODEI/O++ の品質が向上しました。

コードからマインドチェーンを構築する

まず、著者らは CodeMix や PyEdu-R などのデータセットから、複数のプログラミング言語 (主に Python)、多様なタスクタイプ、豊富な推論パターンを網羅する 80 万件以上のコード ファイルを収集しました。

しかし、元のコードファイルは構造化されていないことが多く、無関係な要素が含まれており、自己完結的に実行するのが困難なため、著者らはDeepSeek-V2.5モデルを使用してそれらを前処理し、統一された形式に変換しました

変換プロセスの主なタスクには、コアロジックを関数に抽出し、全体のロジックを要約するメインエントリ関数を追加し、メインエントリ関数の入出力を明確に定義し、独立したルールベースの入力ジェネレータ関数を作成し、メインエントリ関数に基づいて簡潔な質問文をクエリとして生成することなどがあります。

次に、変換された関数ごとに、入力ジェネレータを使用して複数の入力をサンプリングし、コードを実行して対応する出力を取得し、入力と出力のペアを収集します

このプロセスにおいて、一部のコードでタイムアウト、過度の複雑さ、実行不能、不確実な結果といった問題が発生しました。この部分のコードは作成者によって省略され、最終的に40万件以上のコードドキュメントと350万件以上のサンプルインスタンスが作成されました。

次に、著者らは DeepSeek-V2.5 を使用して、コード、入出力ペア、機能説明などの情報を自然言語の思考チェーン (CoT) に統合し、トレーニング サンプルを構築しました。

著者らは、それぞれの入力と出力のペアについて、まず入力の提案を作成します。この提案は、以下の複数の部分から構成されます。

  • 関数定義: これは、以前に構造化され標準化された Python 関数コードを指します。
  • テキストの説明: 関数の目的と機能を自然言語で要約します。
  • 参照コード: 関数定義に似ていますが、追加のコンテキスト情報やコメントが含まれる場合があります。
  • 入力または出力: 入力予測タスクであるか出力予測タスクであるかに応じて、プロンプトには特定の入力または予想される出力が含まれます。

作成されたプロンプトは DeepSeek-V2.5 モデルに入力され、プロンプトに基づいて自然言語のテキスト応答が生成されます。

このテキストは著者が求めていた推論プロセスです。つまり、与えられた入力から出力を導き出す方法、または出力が与えられた場合の条件を満たす入力を構築する方法を説明する必要があります。

このようにして収集されたデータセットは CODEI/O と呼ばれます。

著者らは、CODEI/O を基にして、コードの実行可能性をさらに活用して、より高いデータ品質を提供するCODEI/O++ を合成しました。

著者らはまず、CODEI/Oで生成されたすべての応答の正しさを、コードを再実行することで検証した。誤りと検証された応答については、実行フィードバックを2回目の入力として追加し、モデルに応答を再生成させた。

実行フィードバックには、出力予測の正確さ、入力予測エラーに基づく実行出力、およびコード実行の失敗を示すエラー メッセージが含まれます。

2 回目の生成後、新しい応答の正確性が再度確認されます。

第 2 ラウンドの結果に関係なく、最終回答は、第 1 ラウンドの回答、第 1 ラウンドのフィードバック、第 2 ラウンドの回答、第 2 ラウンドのフィードバックの 4 つの部分から順番に構成されます。

最初のラウンドで正解だった回答については、最初のラウンドのフィードバックは単に「成功」​​とマークされ、2 番目のラウンドのコンテンツはありません。

CODEI/Oと同様に、修正されたレスポンスはすべて保存されます。拡張データセットCODEI/O++は、実行フィードバックに基づく複数ラウンドの修正を導入することで構築されます。

データセットが構築された後、著者らは2 段階のトレーニング戦略を使用して関連モデルをトレーニングしました。

最初の段階では、CODEI/O または CODEI/O++ を使用して推論能力をトレーニングし、次に一般的な指示データセットを使用して微調整し、モデルに自然言語の指示に従ってさまざまなタスクを実行するように教えます。

モデル推論能力が総合的に向上しました。

CODEI/O または CODEI/O++ のパフォーマンスを評価するために、著者らは Qwen 2.5-7B-Coder、Deepseek v2-Lite-Coder、Llama 3.1-8B、および Gemma 2-27B の 4 つのモデルをテストしました。

テスト中、著者らは10以上のデータセットを選択し、常識、数学、コーディング、物理学、工学などの分野におけるモデルのパフォーマンスを検証しました。具体的なデータセットは以下の表に示されています。

CODEI/O によるトレーニング後、Qwen-Coder はコード理解タスクで飛躍的な進歩を遂げ、読解および推論タスク (DROP など) でも大幅な改善が見られ、コード トレーニングを通じて得られた推論能力が実際に他の領域に転移されたことが示されました。

DeepSeek-Coder は、CODEI/O トレーニングでもバランスの取れた進歩を示し、すべての側面で安定した改善を達成しました。

Qwen-Coder と DeepSeek-Coder のパフォーマンスは、コード領域で特別にトレーニングされたモデルであっても、この構造化推論トレーニングの恩恵を受けることができることを示しています。

Llama は LeetCode-O で約 150% のパフォーマンス向上を達成し、適切なトレーニング方法を使用することで、パラメータ数が少ないモデルでも特定のタスクで大幅な改善を実現できることを実証しました。

ジェマは、テストにおける最大のモデルとして、大規模モデルにおけるCODEI/O方式の適用可能性を実証し、いくつかの重要な分野で進歩を遂げました。

大量のデータを処理する WebInstruct (WI) と比較すると、CODEI/O は全体的なパフォーマンスが向上しています。また、特定のタスク専用に設計された OpenMathInstruct2 (OMI2) や PyEdu などの方法と比較すると、CODEI/O はより汎用性が高いことがわかります。

著者について

この記事の第一著者は、現在DeepSeekでインターンシップをしている上海交通大学の修士課程の学生、 Junlong Liです。

彼はまた、この論文の責任著者でもある香港科技大学の何俊銀助教授の指導の下で研究を行っています。

さらに、DeepSeekのコア研究者であり、DeepSeek V2、V3、R1の開発に参加した中山大学の卒業生であるGuo Daya氏もこのプロジェクトに参加しました。

論文リンク: https://arxiv.org/abs/2502.07316 GitHub: https://github.com/hkust-nlp/... データセット: https://huggingface.co/datase...