minimind/docs/agentic_data_analysis_proje...

184 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Agentic DataAnalysis:面向运营数据分析的 Agentic RL 系统
## 项目定位
面向运营数据分析场景,构建一个 300M 级 Agentic LLM:模型需要先理解指标口径,再调用 `retriever`、`python_executor`、`calculator` 等工具完成多步分析,最终输出可验证的业务结论。
这条线不重新预训练,直接使用已有 `SearchLM-300M` 预训练权重:
```text
out/pretrain_searchlm_1024_mla.pth
```
后续主流程:
```text
Agent 轨迹 SFT -> Agentic GRPO/CISPO -> 离线评测 -> Demo 展示
```
## 数据构造
生成运营数据表、指标文档、任务、标准答案和专家工具轨迹:
```bash
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`
训练前校验:
```bash
python scripts/validate_agentic_data.py \
--data dataset/agentic_data/train.jsonl
```
## SFT 冷启动
把专家轨迹转换成现有 `SFTDataset` 支持的 conversations 格式:
```bash
python scripts/build_agentic_sft.py \
--input dataset/agentic_data/train.jsonl \
--output dataset/agentic_data/sft.jsonl
```
使用已有 300M 预训练模型进行 Agent SFT:
```bash
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
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/`。
常用覆盖参数:
```bash
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 优化多步工具调用行为:
```bash
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
```
断点续训:
```bash
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 是否闭合合法。
## 离线评测
直接跑模型生成:
```bash
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
```
也可以评测已有预测文件:
```bash
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
```
建议固定对比:
```text
pretrain_searchlm -> agent_sft -> agent_grpo
```
核心简历指标使用固定 test split,不使用训练集结果。
## Demo
```bash
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 执行成功率和平均交互轮数。