大数跨境

基于PAI的Agent数据构造与模型蒸馏解决方案

基于PAI的Agent数据构造与模型蒸馏解决方案 阿里云大数据AI平台
2026-04-10
6
导读:随着大语言模型的能力提升,智能体(Agent)已成为自动化任务和复杂流程管理的核心工具。

随着大语言模型的能力提升,智能体(Agent)已成为自动化任务和复杂流程管理的核心工具。传统推理方式已难满足多轮决策、工具调用和高效自我修复等需求。在人工智能平台 PAI 中,本文介绍以 ReAct 轨迹为基础的数据构造与模型蒸馏方案,通过结构化任务和持续挖掘高难度样本,显著提升小模型的 Agent 能力和实际落地效能。该方案已在 Qwen3 系列小模型上验证,助力 PAI 用户以更低成本快速训练和部署高性能 Agent 模型。

基于 Qwen3 系列底座,PAI 团队推出一套面向 Agent 训练的开源成果,通过数据飞轮,将真实任务与合成任务结合,并从失败样本中持续挖掘并不断合成新的难样本,推动模型能力持续迭代。更多技术细节请点击:智能体时代的数据飞轮:Agentic小模型的迭代进化


01

核心步骤

Agent 数据构造与模型蒸馏解决方案主要涉及如下步骤:

1. 部署教师模型  

在 PAI-Model Gallery 选择能力更强的教师大模型并完成部署,获取可调用的推理服务地址(Endpoint/API)。后续数据合成会批量调用该服务生成高质量回复。  

2. 安装 EasyDistill 算法库  

在用于运行链路的开发/训练环境中安装 EasyDistill 及依赖,确保具备数据合成与蒸馏训练的统一工具集。  

3. 执行数据合成链路  

将准备好的种子数据作为输入,调用教师模型构建 Agent 训练数据。  

4. 执行模型蒸馏链路  

使用合成后的蒸馏数据对学生模型进行训练,让学生模型学习教师模型的 Agent 能力,产出模型并部署到实际应用场景。  

5. 模型在线部署  

使用 PAI-EAS 将训练后的模型部署至 PAI-EAS,从而支持线上业务。


02

前提条件

在开始执行操作前,请确认您已完成以下准备工作:

  • 已开通 PAI(DSW、DLC、EAS)后付费,并创建默认工作空间,详情请参见开通PAI并创建默认工作空间 [1]
  • 已创建 OSS 存储空间(Bucket),用于存储训练数据和训练获得的模型文件。关于如何创建存储空间,详情请参见控制台创建存储空间 [2]

03

部署教师模型
首先需选定一个能力足够强大的“大模型”作为教师(Teacher)。在 PAI-Model Gallery 平台上,已有如 DeepSeek-V3.2、GLM-5 等多款旗舰大模型可供选择部署。这类模型具备良好的 Agent 能力,能够高质量完成推理、拆分、工具调用等任务。一般建议参数量 100B 以上,这样生成的数据才具备足够的复杂性和泛化性。成功部署后,平台会为模型分配可调用的 API/Endpoint,后续所有数据合成均依赖该服务。详见:PAI-Model Gallery 一键部署 DeepSeek-V3.2 [3]

04

安装EasyDistill算法库

EasyDistill(GitHub地址 [4])是阿里云 PAI 团队针对大模型蒸馏任务开源的算法套件。其核心优势是支持端到端的多范式蒸馏链路,极大简化了数据合成、链路搭建、实验复现的复杂度。在你的开发环境(如 PAI-DSW Notebook)中,克隆 EasyDistill 代码库,并且安装其依赖:

git clone https://github.com/modelscope/easydistill

05

执行数据合成链路
在 Agent 能力训练中,高质量、多样化的任务轨迹数据是蒸馏小模型的关键抓手。EasyDistill 提供了完善的虚拟 Agent 任务数据合成链路,可根据个性化 persona 设定,自动生成覆盖工具调用、多条决策轨迹、工具策略细化等多维训练样例。

阶段一:Agent任务合成

1. 准备 Persona 种子文件

首先,需要以 JSONL(每行一个 JSON)格式准备 persona 种子。例如:

{"id": "uuid1", "persona": "A passionate fan of Afrikaans music and die-hard supporter of Spoegwolf"}{"id": "uuid2", "persona": "An AI research scientist focused on natural language understanding."}

每一行包含唯一 id 及 persona 描述。您可以根据业务需要,大量编写或采集不同风格/角色/场景的人设。在 EasyDistill 框架中,我们也提供了示例 Persona 种子文件(如configs/persona_5K.jsonl)。

2. 配置数据生成流程

EasyDistill 的数据合成链路以配置文件(如configs/agentkd_data_gen.json)驱动。该配置决定了数据来源、目标输出路径、任务生成 Agent 所采用的大模型、API 接口等信息。主要参数如下:

  • paths.data_file: 指向刚才准备的 persona 输入 JSONL 路径。
  • logging.task_file_path: 指定生成的虚拟 agent 任务输出地址(如data/virtual_tool_use_tasks.jsonl)。
  • step_models: 设定三步任务生成流程所需的模型(如 ToolSetGenAgentPolicyTaskAgentFinalTaskAgent),分别负责工具集生成、策略轨迹生成及最终任务合成。
  • api_configs: 配置各环节调用的教师模型 API 和密钥,比如将 DeepSeek、GLM 等大模型的API填入。
  • processing: 数据合成的参数,例如max_workers为任务并发数,max_tasks为最大生成的 Agent 任务数。

一个典型的配置片段示例如下:

{  "job_type": "agentkd_data_gen",  "inference": {    "step_models": {      "ToolSetGenAgent": {        "model_name": "deepseek-v3.2",        "max_tokens": 40960,        "temperature": 0.9      },      "PolicyTaskAgent": {        "model_name": "deepseek-v3.2",        "max_tokens": 40960,        "temperature": 0.9      },      "FinalTaskAgent": {        "model_name": "deepseek-v3.2",        "max_tokens": 40960,        "temperature": 0.9      }    },    "processing": {      "max_workers": 8,      "max_tasks": 100    },    "logging": {      "task_file_path": "data/virtual_tool_use_tasks.jsonl"    },    "paths": {      "data_file": "configs/persona_5K.jsonl"    },    "api_configs": {      "deepseek-v3.2": {        "api_base": "YOUR_DEEPSEEK_API_BASE",        "api_key_env": "YOUR_DEEPSEEK_API_KEY"      },      "default": {        "api_base": "http://localhost:8000/v1",        "api_key_env": "EMPTY"      }    }  }}
3. 启动数据合成流程

配置完成后,只需一行命令即可自动并行化生成大批高质量轨迹训练数据:

# 使用python拉起任务python easydistill/agentkd/data_gen.py --config configs/agentkd_data_gen.json
# 使用easydistill拉起任务easydistill --config configs/agentkd_data_gen.json

EasyDistill 会自动读取 persona 种子,借助部署的 LLM 教师模型,产出经过 persona 增广的训练样本。输出的data/virtual_tool_use_tasks.jsonl即为后续链路的直接输入。其中,输出的data/virtual_tool_use_tasks.jsonl每条样本都描述合成的候选 Agent 任务集,以及对应的工具,示例如下:

{  "id""62a623c3-55cc-48c0-a03b-250711d486e7",  "checked_tools": [    {      "name""get_deployment_status",      "description""Queries the current status of a service deployment by service name.",      "parameters": {        "type""object",        "properties": {          "service_name": {            "type""string",            "description""Name of the deployed service (e.g., 'api-gateway')"          }        },        "required": [          "service_name"        ]      },      "outputs": {        "type""object",        "properties": {          "status": {            "type""string",            "description""Current status: 'active', 'failed', 'rolled_back', 'not_found'"          },          "deployed_version": {            "type""string",            "description""Version tag currently deployed"          },          "last_updated": {            "type""string",            "description""Timestamp of last deployment (ISO format)"          }        }      }    },    ...  ],  "policy""...",  "tasks_and_backgrounds": [    {      "task""We need to respond to the recent outage in the API gateway by rolling back the deployment, fixing the issue, and notifying the leads.",      "tool_return_expected": {        "normal_path": [          {            "tool_name""get_deployment_status",            "input": {              "service_name""api-gateway"            },            "expected_output": {              "status""active",              "deployed_version""v2.5.1",              "last_updated""2024-04-05T08:32:10Z"            }          },          ...        ],        "hack_path": []      },      "user_background""I'm a project manager overseeing incident response for a critical production system...",      "hack_success_user_background""",      "additional_parameters""",      "test_policy""This test case does not violate any policy",      "user_escape_strategy""This test case does not violate any policy",      "evaluation""The task is completed only if: ..."    },    ...  ]}

阶段二:Agent任务求解

在完成虚拟 Agent 任务数据合成后,下一步需要让强大的教师大模型对这些任务进行求解,模拟完整的 Agent 问题求解过程。这一阶段不仅能进一步丰富训练样本的决策轨迹与工具交互信息,同时为后续的模型蒸馏提供更真实、更贴近应用场景的参考数据。

任务求解同样通过 EasyDistill 配置(如configs/agentkd_solve_task.json)实现,示例如下:

{    "job_type": "agentkd_solve_task",    "inference": {        "step_models": {            "SolveAgent": {                "model_name": "deepseek-v3.2",                "max_tokens": 10240,                "temperature": 0.9            },            "MockToolAgent": {                "model_name": "deepseek-v3.2",                "max_tokens": 10240,                "temperature": 0.9            }        },        "processing": {            "max_workers": 8,            "max_tasks": 100        },        "logging": {            "repeat_times": 1,            "already_processed_path": "logs/solved_tasks.jsonl",            "solve_path": "logs/solve_output/"        },        "paths": {            "data_file": "data/virtual_tool_use_tasks.jsonl"        },        "api_configs": {            "deepseek-v3.2": {              "api_base": "YOUR_DEEPSEEK_API_BASE",              "api_key_env": "YOUR_DEEPSEEK_API_KEY"            },            "default": {                "api_base": "http://localhost:8000/v1",                "api_key_env": "EMPTY"            }        }    }}

配置就绪后,在命令行中执行:

# 使用python拉起任务python easydistill/agentkd/solve_task.py --config configs/agentkd_solve_task.json
# 使用easydistill拉起任务easydistill --config configs/agentkd_solve_task.json

EasyDistill 会自动读取虚拟任务文件,依次分配至部署的大语言模型进行求解。每个任务处理完毕后,会在制定目录下输出包含完整推理过程和工具交互明细的结构化 JSON 文件(如logging.solve_path)。

阶段三:Rubrics评价与样本过滤

在合成的 Agent 任务被教师大模型求解后,实际用于学生模型训练的数据还需进一步质控。这一阶段利用 Rubrics 评价器,对生成的每条解决轨迹进行自动化打分和挑选,确保流入训练集的都是高质量、合规、可解释的 Agent 轨迹。这样可以有效剔除因模型误判、异常流程生成的不合理“噪声解”,保证教学数据干净、精准。

Rubrics 筛选功能由 EasyDistill 的agentkd_rubrics_filter实现,相应配置文件(如configs/agentkd_rubrics_filter.json)主要参数:

  • inference.paths.solution_path:需指定任务求解输出根目录(步骤二的输出),如data/solve_output/
  • dataset.labeled_path:筛选后符合训练入集标准数据的输出路径,例如data/filtered_train.jsonl
  • inference.step_models.RubricsAgent:执行评分与过滤的评价大模型Agent配置

配置示例:

{    "job_type": "agentkd_rubrics_filter",    "dataset": {        "labeled_path": "data/tool_use_training_data.json"    },    "inference": {        "step_models": {            "RubricsAgent": {                "model_name": "deepseek-v3.2",                "max_tokens": 10240,                "temperature": 0.3,                "solution_top_k": 3            }        },        "processing": {            "max_workers": 8,            "max_tasks": null        },        "logging": {            "already_processed_path": "logs/rubrics_processed.jsonl"        },        "paths": {            "solution_path": "logs/solve_output/"        },        "api_configs": {            "deepseek-v3.2": {              "api_base": "YOUR_DEEPSEEK_API_BASE",              "api_key_env": "YOUR_DEEPSEEK_API_KEY"            },            "default": {                "api_base": "http://localhost:8000/v1",                "api_key_env": "EMPTY"            }        }    }}

Rubrics 评价流程同样支持一键启动:

# 使用python拉起任务python easydistill/agentkd/rubrics.py --config configs/agentkd_rubrics_filter.json
# 使用easydistill拉起任务easydistill --config configs/agentkd_rubrics_filter.json

系统会自动对每个任务的所有大模型求解逐一用 Rubrics 评价(如根据预设的成功标准、行动链路完整性、工具调用有效性等),得出 PASS/FAIL 判定,自动筛选表现最佳的 PASS 方案,并转换成训练数据格式。

经过该环节后,便形成了高度可靠、严格把控的 Agent 任务对话训练集,有力支撑后续的高质量蒸馏与小模型能力进化。其数据格式为:

[  {    "conversations": [      { "from""system""value""..." },      { "from""human""value""..." },      { "from""gpt""value""..." },      ...    ]  }]

06

执行模型蒸馏链路

在经过严密的 Rubrics 评价与过滤后,高质量的 Agent 任务轨迹数据已准备就绪。最后一步是利用这些数据,对目标学生小模型进行监督微调(SFT, Supervised Fine-Tuning)式的蒸馏训练,让小模型充分学习到教师大模型在思考-行动-工具使用全流程上的能力,从而大幅提升实际 Agent 行为效能。

蒸馏训练同样通过配置文件(如 configs/agentkd_distill.json)控制,主要参数有:

  • dataset.labeled_path:由 Rubrics 阶段输出的合格训练集路径。
  • models.student:设定待蒸馏的学生模型(如某小型LLM权重)。
  • training:详细的训练超参数,包括输出目录(output_dir)、训练轮次(num_train_epochs)、学习率(learning_rate)、批次大小等。

配置片段典型示例:

{    "job_type": "agentkd_distill",    "dataset": {        "labeled_path": "data/tool_use_training_data.json"    },    "models": {        "student": "Qwen/Qwen2.5-7B-Instruct",        "trust_remote_code": true    },    "training": {        "output": {            "output_dir": "output/tool_use_sft",            "logging_steps": 10,            "save_steps": 500,            "overwrite_output_dir": true        },        "dataset": {            "cutoff_len": 8192,            "dataloader_num_workers": 4        },        "num_train_epochs": 3,        "per_device_train_batch_size": 1,        "gradient_accumulation_steps": 8,        "gradient_checkpointing": true,        "bf16": true,        "learning_rate": 1e-5,        "warmup_ratio": 0.1    }}

准备好配置文件后,只需一条命令即可启动端到端学生模型蒸馏:

# 使用python拉起任务python easydistill/agentkd/train.py --config configs/agentkd_distill.json
# 使用easydistill拉起任务easydistill --config configs/agentkd_distill.json

此时,EasyDistill 将自动读取过滤后的数据,按照 SFT 蒸馏范式进行模型训练。过程中,学生模型会最大程度拟合同类型大模型的 ReAct 推理链路、工具交互行为及策略分解等能力。值得说明的是,以上 EasyDistill 配置提供了标准的 trl 算法库训练脚本,您也可以自行选用其他框架进行模型训练,例如 ms-swift、LlamaFactory 等。

至此,一套完整的基于高质量 Agent 任务轨迹的训练方案就全部跑通。你可以将新模型直接在 PAI-EAS 等环境上线应用,持续赋能真实业务流程;或进一步拓展到更大规模的任务挖掘、高难度场景覆盖,为企业级 Agent 产品提供坚实模型基础。


07

模型在线部署

PAI-EAS 提供了一站式大模型部署解决方案,可一键部署训练后的大模型模型,免去手动部署时复杂的环境配置、性能调优和成本管理。

您可以参考PAI-EAS部署开源模型的解决方案完成部署(https://help.aliyun.com/zh/pai/user-guide/deploy-an-llm/)。


[1] https://help.aliyun.com/zh/pai/user-guide/activate-pai-and-create-the-default-workspace

[2] https://help.aliyun.com/zh/oss/getting-started/create-buckets-6

[3] https://help.aliyun.com/zh/pai/use-cases/one-click-deploy-deepseek-v3-2

[4] https://github.com/modelscope/easydistill

/ END /

更多推荐

图片图片

【声明】内容源于网络
0
0
阿里云大数据AI平台
阿里云大数据AI平台依托阿里领先的云基础设施、大数据和AI工程能力、场景算法技术和多年行业实践,一站式地为企业和开发者提供云原生的大数据和AI能力体系。帮助提升AI应用开发效率,促进AI在产业中规模化落地,激发业务价值。
内容 675
粉丝 0
阿里云大数据AI平台 阿里云大数据AI平台依托阿里领先的云基础设施、大数据和AI工程能力、场景算法技术和多年行业实践,一站式地为企业和开发者提供云原生的大数据和AI能力体系。帮助提升AI应用开发效率,促进AI在产业中规模化落地,激发业务价值。
总阅读1.7k
粉丝0
内容675