從NVIDIA Open-SWE-Traces構建監督微調數據:軌跡解析、補丁分析、Token預算與工具使用指標
本教程介紹如何使用NVIDIA的Open-SWE-Traces數據集為智能體軟件工程軌跡準備監督微調數據。包括從Hugging Face流式加載數據、標準化多輪對話、解析代碼補丁、構建分析DataFrame,以及根據成功標籤、Token限制、語言過濾和補丁可用性篩選高質量軌跡。
本教程深入探討了NVIDIA的Open-SWE-Traces數據集,這是一個用於研究智能體軟件工程軌跡的實用資源。我們將演示如何高效地處理和準備這些數據,以用於監督微調(SFT)。整個過程完全在Google Colab中完成,通過直接從Hugging Face流式加載數據集,避免了本地下載大量數據。
首先,我們安裝必要的依賴庫,包括datasets、huggingface_hub、tiktoken、pandas和matplotlib,並配置顯示選項和繪圖風格。然後定義數據集名稱、智能體/模型組合以及採樣參數。本教程使用兩個智能體(openhands和sweagent)和兩個模型(minimax_m25和qwen35_122b),每個組合抽取400條軌跡,總計3200條。
為了處理格式不一致的數據,我們編寫了一系列輔助函數來標準化軌跡、提取消息文本、統計角色、檢測工具調用、解析代碼補丁以及估算Token數量。這些函數具有防禦性設計,能夠應對數據集中可能存在的結構變化。
我們通過流式加載少量樣本,檢查單個記錄的結構:包括instance_id、倉庫、語言、許可證、解決狀態(resolved字段:1表示成功,0表示失敗,-1表示未知)、元數據和軌跡。軌跡由多輪消息組成,包含系統、用户、助手和工具角色。最後還展示了模型生成的補丁(model_patch)。
接下來,將所有流式記錄轉換為結構化的pandas DataFrame。每條記錄提取的特徵包括:實例ID、倉庫、語言、許可證、解決狀態、智能體、模型、消息數量、各角色數量、補丁文件數、增刪行數、軌跡Token總量以及工具使用計數。同時創建是否解決的標誌。數值摘要顯示平均軌跡包含約44條消息,補丁修改約120行,軌跡Token約8000。
然後進行可視化分析:按語言統計軌跡分佈(Python、Java、TypeScript等);根據解決率排序(語言需至少25條軌跡);展示智能體×模型的解決率;繪製消息數量直方圖(集中在20-60條);補丁大小直方圖(截斷至97分位數);以及軌跡Token與消息數的散點圖,按解決狀態着色。
最後,我們分析Token預算需求。對於監督微調,需要確保軌跡在上下文窗口內。設定最大Token數為32K,僅保留已解決(resolved=1)的軌跡,並根據需要按語言過濾。這創建了一個高質量的SFT子集,可用於微調代碼生成模型。
本教程展示瞭如何處理大規模流式數據集、提取有意義的特徵以及為下游任務(如微調智能體)準備乾淨、相關的訓練數據。所有代碼均可在Google Colab中運行,便於復現和擴展。