minimind/docs/agentic_data_analysis_proje...

5.1 KiB
Raw Blame History

Agentic DataAnalysis:面向运营数据分析的 Agentic RL 系统

项目定位

面向运营数据分析场景,构建一个 300M 级 Agentic LLM:模型需要先理解指标口径,再调用 retriever、python_executor、calculator 等工具完成多步分析,最终输出可验证的业务结论。

这条线不重新预训练,直接使用已有 SearchLM-300M 预训练权重:

out/pretrain_searchlm_1024_mla.pth

后续主流程:

Agent 轨迹 SFT -> Agentic GRPO/CISPO -> 离线评测 -> Demo 展示

数据构造

生成运营数据表、指标文档、任务、标准答案和专家工具轨迹:

python scripts/build_agentic_data_tasks.py \
  --output_dir dataset/agentic_data \
  --train_size 30000 \
  --dev_size 1000 \
  --test_size 1000

输出:

  • dataset/agentic_data/tables/orders.csv
  • dataset/agentic_data/tables/marketing.csv
  • dataset/agentic_data/tables/users.csv
  • dataset/agentic_data/train.jsonl
  • dataset/agentic_data/dev.jsonl
  • dataset/agentic_data/test.jsonl
  • dataset/agentic_data/manifest.json

训练前校验:

python scripts/validate_agentic_data.py \
  --data dataset/agentic_data/train.jsonl

SFT 冷启动

把专家轨迹转换成现有 SFTDataset 支持的 conversations 格式:

python scripts/build_agentic_sft.py \
  --input dataset/agentic_data/train.jsonl \
  --output dataset/agentic_data/sft.jsonl

使用已有 300M 预训练模型进行 Agent SFT:

cd trainer

deepspeed --num_gpus=7 train_full_sft_deepspeed.py \
  --model_profile SearchLM-300M \
  --from_weight pretrain_searchlm \
  --save_weight agent_sft \
  --data_path ../dataset/agentic_data/sft.jsonl \
  --dtype float16 \
  --save_interval 200

完整 14GB 通用 SFT 数据建议先训练一轮,再进入 Agent SFT。服务器可直接使用一键脚本:

bash scripts/run_general_sft_300m.sh

脚本默认使用 7 张 GPU、每卡 batch 1、梯度累积 8,有效 batch 为 56;如果检测到 checkpoints/general_sft_14g_1024_mla_latest,会自动加 --from_resume 1。日志写入 logs/。

常用覆盖参数:

USE_WANDB=1 SAVE_INTERVAL=200 bash scripts/run_general_sft_300m.sh

通用 SFT 完成后,将下面 Agent SFT 命令中的 --from_weight 改为 general_sft_14g。

Agentic RL

使用 trajectory-level reward 优化多步工具调用行为:

cd trainer

deepspeed --num_gpus=7 train_agent_deepspeed.py \
  --model_profile SearchLM-300M \
  --from_weight agent_sft \
  --save_weight agent_grpo \
  --data_path ../dataset/agentic_data/train.jsonl \
  --num_generations 6 \
  --batch_size 1 \
  --accumulation_steps 4 \
  --dtype float16 \
  --save_interval 25

断点续训:

deepspeed --num_gpus=7 train_agent_deepspeed.py \
  --model_profile SearchLM-300M \
  --from_weight agent_sft \
  --save_weight agent_grpo \
  --data_path ../dataset/agentic_data/train.jsonl \
  --num_generations 6 \
  --batch_size 1 \
  --accumulation_steps 4 \
  --dtype float16 \
  --save_interval 25 \
  --from_resume 1

../checkpoints/ 保存完整 DeepSpeed 训练状态;../out/agent_grpo_1024_mla.pth 是轻量推理权重。

Reward 指标

奖励函数位于 agentic/data_analysis_env.py,按整条轨迹评分:

  • task_success:最终答案是否命中标准答案中的文本和数值校验。
  • answer_score:文本 contains 与数值 tolerance 的平均得分。
  • tool_selection_f1:调用工具集合与期望工具集合的 F1。
  • schema_valid_rate:工具名、JSON 和必填参数是否合法。
  • exec_success_rate:工具能否成功执行。
  • invalid_action_rate:非法 action 占比。
  • avg_turns:平均交互轮数。
  • format_score:<tool_call> 标签和 JSON 是否闭合合法。

离线评测

直接跑模型生成:

python scripts/eval_agentic_data.py \
  --data dataset/agentic_data/test.jsonl \
  --weight agent_grpo \
  --save_dir out \
  --output reports/agentic_grpo_pred.jsonl \
  --json_output reports/agentic_grpo_metrics.json \
  --bad_cases_output reports/agentic_grpo_bad_cases.jsonl

也可以评测已有预测文件:

python scripts/eval_agentic_data.py \
  --data dataset/agentic_data/test.jsonl \
  --pred reports/agentic_grpo_pred.jsonl \
  --json_output reports/agentic_grpo_metrics.json

建议固定对比:

pretrain_searchlm -> agent_sft -> agent_grpo

核心简历指标使用固定 test split,不使用训练集结果。

Demo

streamlit run scripts/agentic_data_demo.py -- \
  --data dataset/agentic_data/dev.jsonl

Demo 展示问题、数据表、指标文档、工具轨迹、最终答案和 reward 分解,适合面试时说明 Agent 行为如何被训练和评估。

简历表达

可以写成:

构建面向运营数据分析的 Agentic RL 系统,基于 300M Decoder-only 预训练模型完成工具轨迹 SFT 与 GRPO/CISPO 后训练;设计 retriever、python executor、calculator 交互环境和 trajectory-level reward,在固定测试集上评估任务成功率、工具选择准确率、无效 action 率、Python 执行成功率和平均交互轮数。