AI News HubLIVE
站内改写2 分钟阅读

从NVIDIA Open-SWE-Traces构建监督微调数据:轨迹解析、补丁分析、Token预算与工具使用指标

本教程介绍如何使用NVIDIA的Open-SWE-Traces数据集为智能体软件工程轨迹准备监督微调数据。包括从Hugging Face流式加载数据、标准化多轮对话、解析代码补丁、构建分析DataFrame,以及根据成功标签、Token限制、语言过滤和补丁可用性筛选高质量轨迹。

来源MarkTechPost作者: Sana Hassan

本教程深入探讨了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中运行,便于复现和扩展。