[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80078":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":35,"readmeContent":36,"aiSummary":37,"trendingCount":16,"starSnapshotCount":16,"syncStatus":17,"lastSyncTime":38,"discoverSource":39},80078,"agentic-grpo-longhorizon","qiqihezh\u002Fagentic-grpo-longhorizon","qiqihezh","Fixing GRPO training collapse in long-horizon multi-tool agents. A lightweight PRM-Lite + LATA joint approach achieves +37% over vanilla GRPO on τ-bench airline (50-task, multi-turn).","",null,"Python",74,5,60,1,0,2,10,12,6,2.33,false,"main",true,[26,27,28,29,30,31,32,33,34],"agentic-ai","grpo","long-horizon","multi-turn-agents","process-reward-model","qwen","reinforcement-learning","tau-bench","tool-calling","2026-06-12 02:03:57","# Agentic-GRPO-LongHorizon\n\n[![Python 3.10+](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.10+-blue.svg)](https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F)\n[![PyTorch 2.7](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPyTorch-2.7-red.svg)](https:\u002F\u002Fpytorch.org\u002F)\n[![CUDA 12.6](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCUDA-12.6-green.svg)](https:\u002F\u002Fdeveloper.nvidia.com\u002Fcuda-downloads)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg)](LICENSE)\n\n> **解决长链路多工具智能体中的 GRPO 训练崩溃问题**  \n> 在 τ-bench airline（50 任务、多轮对话、多工具调用场景）上的系统性消融实验，通过创新的 **PRM-Lite + LATA 联合方案**，相较 Vanilla GRPO 基线实现 **+37% 的整体 pass^1 提升**。\n> \n>Swanlab训练曲线链接：https:\u002F\u002Fswanlab.cn\u002F@godstear\u002Fagentic-grpo-longhorizon?utm_source=website_qr&utm_medium=qr_scan\n---\n\n## 🔥 核心结果\n\n**最优检查点（step 250）：联合方案（PRM-Lite + LATA）达到 0.240 的整体 pass^1 —— 相较 Vanilla GRPO 基线（0.175）提升 +37%。**\n\n| 指标 | Vanilla | Turn-Discount | PRM-Lite | LATA | **联合方案** | 相较 Vanilla |\n|------|---------|---------------|----------|------|------------|-------------|\n| **整体 pass^1** | 0.175 | 0.125 | 0.140 | 0.185 | **0.240** | **+37%** |\n| **泛化能力** | 0.071 | 0.052 | 0.059 | 0.088 | **0.110** | **+55%** |\n| **错误率** | 0.200 | 0.345 | 0.365 | 0.290 | **0.140** | **−30%** |\n| **推理深度** (p50 tokens) | 72 | 245 | 169 | 183 | **313** | **+334%** |\n\n> *泛化 pass^1 = (uncovered_seen × 24 + unseen × 10) \u002F 34，排除训练集泄漏影响的核心指标。*\n\n### 多维度对比\n\n![消融实验对比](ablation_comparison.png)\n\n### 训练轨迹\n\n![训练轨迹](ablation_progression.png)\n\n> **观察**：Turn-Discount 停滞（被动保护）；LATA 通过 √L 归一化持续增长；联合方案在 step 250 达到峰值（0.240），step 300 温和回落至 0.225。\n\n---\n\n## 🎯 问题与动机\n\n标准的 **GRPO（Group Relative Policy Optimization）** 应用于长链路、多工具对话智能体（τ-bench airline，50 任务，40 训练 \u002F 10 测试）时会发生灾难性的**训练崩溃**。我们识别出**三个根本原因**：\n\n### 1. 群组奖励饱和（双向死锁）\n结果奖励是二元的（0\u002F1）。当 `group_size=8` 时，群组容易达到全 0 或全 1 状态 → `优势方差 → 0` → 梯度消失。\n\n### 2. 训练集泄漏偏差\n40 个训练任务中有 16 个是 *covered_seen*（有 72B 教师轨迹覆盖）。策略记住教师模式，covered 性能虚高，而 uncovered\u002Funseen 几乎为零。\n\n### 3. 每轮推理退化\n线性长度归一化 `advantage \u002F L` 惩罚长回复。策略学会\"以量补质\" —— 短推理 + 频繁工具试错 —— 导致 step 150 后崩溃。\n\n> **关键发现**：训练验证奖励**不是**可靠代理。Turn-Discount 报告验证奖励 0.80，但真实评测仅 0.125 —— **6.4 倍差距**。\n\n---\n\n## 💡 方法\n\n我们设计并验证了**四个消融实验**，每个针对特定的失效模式：\n\n### 实验 1：Turn-Discounted Advantage\n**思路**：通过指数衰减的 token 权重保护早期轮次推理。  \n**机制**：`weight[t] = α^(L-1-t)`，其中 `α=1.05`，归一化至 `mean(weight)=1`。早期 token 获得更高优势，抑制晚期猜测。  \n**结果**：成功阻止崩溃形状（回复长度 −23% vs Vanilla −63%），但评测仍然较低（0.125），因为缺乏质量引导。\n\n### 实验 2：LATA — 长度感知轮次优势\n**思路**：用 `1\u002F√L` 替换线性 `1\u002FL` 归一化，保留长推理的边际激励。  \n**机制**：`advantage_token = A \u002F sqrt(L)` 替代 `A \u002F L`。当回复长度增长 4 倍时，每 token 梯度仅减半（Vanilla 中降至四分之一）。  \n**结果**：持续提升（0.155 → 0.185 → 0.190），错误率从 0.345 降至 0.290，但无质量信号时可见天花板。\n\n### 实验 3：PRM-Lite — 轻量级过程奖励\n**思路**：用密集的基于规则的过程奖励打破群组饱和。  \n**机制**：15 条手工规则（P1–P8 惩罚，B1–B7 奖励）提供连续的 `[-0.5, +0.5]` 信号。最终奖励 = `outcome + 0.3 × process_score`。  \n**结果**：成功消除 score\u002Fmin = 0\u002F1 死锁，但信号被轨迹级线性归一化稀释 —— 错误率反而恶化至 0.365。\n\n### 实验 4：联合方案 — PRM-Lite + LATA ⭐\n**思路**：**PRM-Lite 提供局部质量信号；LATA 的 √L 归一化确保这些信号不被回复长度淹没。**  \n**机制**：每轮过程分数的惩罚\u002F奖励通过 `A\u002F√L` 传播到单个 token，使策略能够学习*哪一轮错了*，而不仅仅是*整个轨迹是否成功*。  \n**结果**：**0.240 整体表现** —— 超越所有单组件基线。错误率唯一持续下降（0.170 → 0.140 → 0.120）。Unseen 任务表现转正并稳定。\n\n> **核心洞察**：价值不在于单独拥有过程奖励*或*更好的归一化 —— 而在于**信号传播**。PRM-Lite 生成局部信号；LATA 的 √L 提供传输通道。两者单独使用效果均不佳。\n\n---\n\n## 🌟 技术亮点\n\n### 1. 信号传输理论（算法贡献）\n消融报告实证证明了长链路智能体 GRPO 的**分解原理**：\n- **信号源**（PRM-Lite）：15 条手工规则提供密集的每轮质量信号 `[-0.5, +0.5]`。\n- **信号通路**（LATA）：`advantage \u002F √L` 替代 `advantage \u002F L`，防止回复长度稀释。\n- **单独失效**：PRM-Lite 单独（0.140 整体，0.365 错误）— 信号被淹没。LATA 单独（0.185 整体）— 无信号源。**只有联合方案解锁 0.240**。\n\n> 此分解是**模型无关的**，适用于 τ-bench 之外的任何长形式 RL 任务。\n\n### 2. PRM-Lite v4-最优（可解释的过程奖励）\n完全可解释、零可训练参数的过程奖励模型：\n- **P1–P8 惩罚**：占位符（−0.05）、冗余（−0.03）、错误重复（−0.04）、无推理（−0.05）\n- **B1–B7 奖励**：恢复（+0.05）、数据链（+0.08）、读取多样性（+0.01）、思考奖励（条件触发）\n- **反黑客防御**：条件思考评分、基于 schema 的实体提取、n_tools > 8 时的长度惩罚\n\n### 3. 内存高效的训练系统（工程）\n- **Bypass 模式 + 融合内核 + TP=2** 将每步内存峰值从 **OOM 降至 73.2 GB**，在 **2×A800** 上实现 7B 策略 + 72B-AWQ 模拟器。\n- **离线优先**：所有脚本注入 `HF_HUB_OFFLINE=1`，适用于隔离的 HPC 集群。\n- **Render-Twice-Diff SFT**：一种模板无关的多轮工具调用损失掩码方法，避免 off-by-one token 错误。\n\n---\n\n## 📊 详细结果\n\n### 逐步评测（N=4 样本\u002F任务，max_tokens=4096）\n\n| 实验 | Step | 整体 | 泛化 pass^1 | 错误率 | per_turn p50 | 备注 |\n|-----------|------|---------|-------------|------------|--------------|-------|\n| Vanilla | 200 | 0.175 | 0.071 | 0.200 | 72 | 崩溃基线 |\n| Turn-Discount | 250 | 0.125 | 0.052 | 0.345 | 245 | 被动保护 |\n| PRM-Lite | 250 | 0.140 | 0.059 | 0.365 | 169 | 信号阻塞 |\n| LATA | 250 | 0.185 | 0.088 | 0.290 | 183 | √L 增益 |\n| **联合方案** | **250** | **0.240** | **0.110** | **0.140** | **313** | **最优检查点** |\n\n### 假设验证\n\n| 假设 | 状态 | 证据 |\n|-----------|--------|----------|\n| H1: Turn-Discount 阻止推理崩溃 | ✅ 已验证 | 回复长度 −23%，无断崖 |\n| H2: 联合方案打破群组饱和 | ✅ 已验证 | 300 步内 score\u002Fmin 从未 0\u002F1 |\n| H3: 联合方案改善 OOD 泛化 | ✅ 已验证 | unseen 为正（0.15–0.175） |\n| H4: LATA 优于 Turn-Discount | ✅ 已验证 | +0.060 整体，−0.055 错误 |\n| H5: 联合方案 > max(单组件) | ✅ 已验证 | 0.240 > 0.185 > 0.140 > 0.125 |\n\n---\n\n## 🏗️ 项目结构\n\n```raw\n📦 agentic-grpo-longhorizon\u002F\n├── ⚙️ configs\u002F                 # 所有实验的 Hydra YAML 配置\n│   ├── turn_discount.yaml\n│   ├── prm_lite.yaml\n│   ├── lata.yaml\n│   ├── prm_lite_lata.yaml\n│   └── eval\u002F                   # 各实验评测配置\n├── 💻 src\u002F                     # 核心源码\n│   ├── 🌍 envs\u002F                # τ-bench 包装器与工具配置\n│   │   ├── 🐍 tau_bench_wrapper.py\n│   │   ├── 🐍 tau_bench_interaction.py   # PRM-Lite 规则引擎\n│   │   └── 🐍 tau_bench_tools.py\n│   ├── 📊 evaluation\u002F\n│   │   └── 🐍 pass_k_eval.py   # 独立 pass@k 评测器\n│   ├── 🧠 models\u002F\n│   │   └── 🐍 vllm_policy.py   # vLLM 策略包装器\n│   └── 🎓 training\u002F\n│       └── 🐍 sft_dataset.py   # SFT 数据收集\n├── 📜 scripts\u002F\n│   ├── 🚀 train\u002Fgrpo\u002F          # GRPO 训练启动脚本\n│   │   ├── 📜 run_exp1_turn_discount.sh\n│   │   ├── 📜 run_exp2_lata.sh\n│   │   ├── 📜 run_exp3_prm_lite.sh\n│   │   ├── 📜 run_exp4_prm_lite_lata.sh\n│   │   └── 📜 run_vanilla.sh\n│   ├── 📈 eval\u002F                # 独立评测启动脚本\n│   │   ├── 📜 eval_exp1_turn_discount.sh\n│   │   ├── 📜 eval_exp2_lata.sh\n│   │   ├── 📜 eval_exp3_prm_lite.sh\n│   │   └── 📜 eval_exp4_prm_lite_lata.sh\n│   ├── 🔧 train\u002Fsft\u002F           # SFT 预热脚本\n│   └── 🖥️ vllm_server\u002F         # vLLM 服务启动脚本\n├── 📚 docs\u002F\n│   └── 🔬 ablation\u002F\n│       ├── 📝 ablation_diagnosis_report.md   # 完整诊断报告（≈800 行）\n│       ├── 📝 ablation_plan.md               # 实验设计手册\n│       ├── 🖼️ ablation_comparison.png\n│       └── 🖼️ ablation_progression.png\n├── 🧪 experiments\u002F             # 检查点、HF 导出、评测输出\n├── 📄 requirements.txt\n└── 🔨 setup.sh                 # 一键环境搭建\n```\n\n---\n\n## 🚀 快速开始\n\n### 1. 环境搭建\n（实验过程中改了不少源码，以本仓库的verl框架和benchmark为标准）\n\n```bash\n# 一键搭建（conda + PyTorch 2.7 + CUDA 12.6 + 依赖）\nbash setup.sh\nconda activate agentrl\ncd agentic-grpo-longhorizon\n\n# 或手动安装：\npip install torch==2.7.0 --index-url https:\u002F\u002Fdownload.pytorch.org\u002Fwhl\u002Fcu126\npip install -r requirements.txt\ncd ..\u002Ftau-bench && pip install -e .\ncd ..\u002Fverl && pip install -e .\ncd agentic-grpo-longhorizon\n```\n\n### 2. 训练模型\n\n```bash\n# 示例：联合方案（PRM-Lite + LATA）\ncd scripts\u002Ftrain\u002Fgrpo\nbash run_exp4_prm_lite_lata.sh\n\n# 或：Vanilla GRPO 基线\nbash run_vanilla.sh\n```\n\n### 3. 独立评测\n\n```bash\n# 自动评测 step 200\u002F250\u002F300 检查点\ncd scripts\u002Feval\nbash eval_exp4_prm_lite_lata.sh\n```\n\n> **硬件**：2×A800（80GB）。GPU 0 运行 7B 策略 vLLM；GPU 1 运行 72B-AWQ 用户模拟器 vLLM。  \n> **离线模式**：所有脚本注入 `HF_HUB_OFFLINE=1` 和 `TRANSFORMERS_OFFLINE=1`，适用于隔离环境。\n\n---\n\n## 📚 文档\n\n| 📄 文档 | 📝 内容 |\n|----------|---------|\n| [`docs\u002Fablation\u002Fablation_diagnosis_report.md`](docs\u002Fablation\u002Fablation_diagnosis_report.md) | **主报告**：训练曲线、评测数据、机制分析、假设验证 |\n| [`docs\u002Fablation\u002Fablation_plan.md`](docs\u002Fablation\u002Fablation_plan.md) | 实验设计手册：代码实现、PRM-Lite 规则集、黑客风险分析 |\n| [`docs\u002Fvanilla_grpo\u002Fvanilla_grpo_diagnosis.md`](docs\u002Fvanilla_grpo\u002Fvanilla_grpo_diagnosis.md) | Vanilla GRPO 崩溃诊断：三个根本原因、五个检查点分析 |\n| [`..\u002Fagentic-grpo-longhorizon-blog.md`](..\u002Fagentic-grpo-longhorizon-blog.md) | 🆕 技术博客：从训练崩溃到稳定收敛的完整复盘（PRM-Lite + LATA） |\n\n---\n\n## 🛠️ 技术栈\n\n- **训练框架**: [veRL](https:\u002F\u002Fgithub.com\u002Fvolcengine\u002Fverl) 0.6.1 (FSDP + vLLM V1)\n- **策略模型**: Qwen2.5-7B-Instruct\n- **用户模拟器**: Qwen2.5-72B-Instruct-AWQ\n- **评测基准**: [τ-bench](https:\u002F\u002Fgithub.com\u002Fsierra-research\u002Ftau-bench) airline (50 任务)\n- **推理引擎**: vLLM V1 with tool-call parsing (Hermes)\n- **注意力机制**: FlashAttention-2\n\n---\n\n## 🙏 致谢\n\n- [veRL](https:\u002F\u002Fgithub.com\u002Fvolcengine\u002Fverl) 开源 RL 训练框架\n- [τ-bench](https:\u002F\u002Fgithub.com\u002Fsierra-research\u002Ftau-bench) 挑战性长链路智能体评测基准\n- [Qwen](https:\u002F\u002Fgithub.com\u002FQwenLM\u002FQwen) 系列模型提供的强大基座策略\n\n---\n\n> **为什么重要**：大多数 RLHF\u002FRLAIF 工作聚焦单轮问答或代码生成。本项目 tackle 更难的问题 —— **多轮、多工具、部分可观测的对话智能体** —— 在这里 vanilla GRPO 会灾难性失败。PRM-Lite + LATA 联合设计提供了一条有原理支撑、轻量且可解释的通往稳定训练的路径，无需昂贵的学习式奖励模型。\n","该项目旨在解决长链路多工具智能体中的 GRPO 训练崩溃问题。通过创新的 PRM-Lite + LATA 联合方案，在 τ-bench airline（50 任务、多轮对话）场景下，相比 Vanilla GRPO 基线实现了 37% 的整体 pass^1 提升。项目采用 Python 编写，并基于 PyTorch 和 CUDA 技术栈。该联合方案不仅提高了整体性能，还增强了泛化能力和推理深度，同时显著降低了错误率。适用于需要处理复杂多轮对话和多工具调用的任务，特别是在长链路、多工具环境下对智能体进行训练和优化时表现出色。","2026-06-11 03:59:09","CREATED_QUERY"]