NVIDIA Open-SWE-Tracesからの教師ありファインチューニングデータ構築:軌跡解析、パッチ分析、トークンバジェット、ツール使用指標
このチュートリアルでは、NVIDIAのOpen-SWE-Tracesデータセットを使用して、エージェント型ソフトウェアエンジニアリングの軌跡を教師ありファインチューニングに備える方法を紹介します。Hugging Faceからのストリーミング、マルチターン対話の正規化、コードパッチの解析、分析DataFrameの構築、および成功ラベル、トークン制限、言語フィルタに基づく高品質軌跡の選択について説明します。
このチュートリアルでは、NVIDIAのOpen-SWE-Tracesデータセットを教師ありファインチューニング(SFT)のための実用的なリソースとして活用する方法を詳しく説明します。すべての処理はGoogle Colab上で行われ、Hugging Faceからデータセットをストリーミングすることで、ローカルにダウンロードすることなく大規模データを効率的に扱います。
最初に、datasets、huggingface_hub、tiktoken、pandas、matplotlibなどの必要なライブラリをインストールし、表示設定とプロットスタイルを構成します。データセット名、エージェント/モデルの組み合わせ、サンプリングパラメータを定義します。このチュートリアルでは、2つのエージェント(openhands、sweagent)と2つのモデル(minimax_m25、qwen35_122b)を使用し、各組み合わせから400件、合計3200件の軌跡を抽出します。
データの形式が統一されていない場合に備えて、軌跡を正規化し、メッセージテキストを抽出し、ロールをカウントし、ツール呼び出しを検出し、コードパッチを解析し、トークン数を推定するための補助関数を作成します。これらの関数は防御的に設計されており、データセット内のスキーマのバリエーションに対して堅牢です。
ストリーミングで取得した少量のサンプルを調べ、単一レコードの構造を確認します。instance_id、リポジトリ、言語、ライセンス、解決状態(resolved: 1=成功、0=失敗、-1=不明)、メタデータ、軌跡を表示します。軌跡はシステム、ユーザー、アシスタント、ツールのロールからなる複数メッセージで構成され、最後にモデルが生成したパッチ(model_patch)が含まれます。
次に、すべてのストリーミングレコードを構造化されたpandas DataFrameに変換します。各レコードから抽出する特徴量は、インスタンスID、リポジトリ、言語、ライセンス、解決状態、エージェント、モデル、メッセージ数、各ロールの数、パッチファイル数、追加行数、削除行数、軌跡トークン合計、ツール使用カウントなどです。解決フラグも作成します。数値要約を見ると、平均的な軌跡は約44メッセージ、パッチは約120行の変更、軌跡トークンは約8000であることがわかります。
可視化分析では、言語ごとの軌跡分布(Python、Java、TypeScriptなど)、解決率(最低25軌跡の言語のみ)、エージェント×モデルの解決率、メッセージ数のヒストグラム(20-60メッセージに集中)、パッチサイズのヒストグラム(97パーセンタイルでクリップ)、軌跡トークンとメッセージ数の散布図(解決状態で色分け)を表示します。
最後に、トークンバジェットの要件を分析します。SFTでは軌跡がコンテキストウィンドウに収まる必要があります。最大トークン数を32Kに設定し、解決済み(resolved=1)の軌跡のみを保持し、必要に応じて言語でフィルタリングします。これにより、コード生成モデルのファインチューニングに使用できる高品質なSFTサブセットが作成されます。
このチュートリアルは、大規模なストリーミングデータセットを処理し、意味のある特徴量を抽出し、下流タスク(エージェントのファインチューニングなど)のためにクリーンで関連性の高いトレーニングデータを準備する方法を示しています。すべてのコードはGoogle Colabで実行可能であり、再現と拡張が容易です。