Apollo: Asynchronous Rollout with Guidance for Agent Optimization
核心思想
训练 LLM 做长程、领域专业的任务(如 AI 研究实验、代码工程)面临两大挑战:
- 轨迹极长(30+ 小时交互、100K+ token)→ 传统标注方式不可行
- 错误会传播:一个错误动作导致后续所有动作无效
Apollo 提出:
- 异步人类引导:标注员不需要全程盯着,只在智能体偏离时提供建议
- 动作级监督控制:过滤轨迹中不可靠的动作,防止错误传播到训练中
结果:在 InnovatorBench 上比未训练基线提升 50%+,比无交互版本提升 28%。
背景知识
长程任务 vs 短程任务
| 特征 | 短程任务 | 长程任务 |
|---|---|---|
| 时长 | 秒到分钟 | 小时到天 |
| Token 数 | 千级 | 十万到百万级 |
| 错误代价 | 影响单步 | 级联放大 |
| 标注方式 | 全程标注可行 | 全程标注不可行 |
| 示例 | 回答问题、写函数 | AI 研究实验、软件开发 |
现有训练方法的局限
| 方法 | 问题 |
|---|---|
| 行为克隆 | 需要完整的专家演示 → 30 小时任务的演示成本极高 |
| 拒绝采样微调 | 仅保留成功轨迹 → 长程任务的成功率太低 |
| RLHF | 需要奖励模型 → 领域专业任务难以定义通用奖励 |
| Apollo | 异步人类介入 + 动作过滤 → 高效利用不完美轨迹 |
ReAct 范式
智能体的轨迹是推理和动作的交替序列:
\[\tau = \{(o_0), (a_1, o_1), (a_2, o_2), \ldots, (a_T, o_T)\}\]- $o_t$:观察(环境反馈、文件内容等)
- $a_t$:动作(执行命令、编辑代码等)
方法详解
1. 异步引导算法
核心思想:标注员不需要全程在线,而是异步地在智能体偏离时提供指导。
MDP 形式化:$\mathcal{M} = (\mathcal{S}, \mathcal{A}, P, r)$
| 长上下文管理:当轨迹长度 $ | \tau | > \eta_L$($\eta_L = 100K$ token)时,早期段压缩为摘要: |
其中 $\mathcal{S}{1:k} = \Sigma(\tau{1:k})$ 是 LLM 生成的摘要。
人类输入标记:用 <real_user></real_user> 标签标记人类输入,与系统信息区分。
2. 人机交互界面
前端组件:
- 任务选择和进度监控
- 轨迹显示(支持关键词搜索和上下文检查)
- 终端输出实时显示
- 文件修改历史和搜索日志
- 用户输入区
后端架构:
- 智能体、用户、后端之间的异步通信通道
- 缓存存储:用户输入不会中断智能体的推理过程
- 数据库持久化 + 实时前端更新
3. 动作级监督控制机制
问题:人类引导后,轨迹中可能包含”引导前的错误动作”和”引导后的正确动作”。如果不过滤,错误动作会污染训练数据。
两种过滤方式:
符号化掩码:基于规则检测观察中的错误信息
- 编译错误
- 运行时错误
- 明确的失败消息
LLM 掩码:检测与用户反馈矛盾的动作
具体过滤规则(8 类不可靠动作):
| 类型 | 描述 |
|---|---|
| 忽略脚本 | 有可用脚本但不使用 |
| 低效推理 | 用原始 Transformer 而非 vLLM |
| 空/错误动作 | 无效操作 |
| 性能退化 | 高分时做出降低分数的改动 |
| 盲目修改 | 未检查状态就修改文件 |
| 资源浪费 | 未充分利用计算资源 |
| 违反指令 | 与人类输入矛盾的动作 |
| 不当评估 | 在不恰当时机调用评估 |
训练时:仅对未被掩码的动作计算损失。
4. 训练配置
| 参数 | 值 |
|---|---|
| 基座模型 | GLM-4.5 |
| 最大上下文 | 128K token |
| Epoch | 1 |
| Batch size | 64 |
| 学习率 | 5e-6 → 1e-6(余弦退火) |
| ReAct 轨迹上采样 | 7× |
| 摘要轨迹上采样 | 10× |
实验结果
训练任务
18 个任务覆盖 6 个 AI 研究领域:
| 领域 | 任务数 |
|---|---|
| 数据收集 | 4 |
| 数据过滤 | 3 |
| 数据增强 | 3 |
| 损失设计 | 2 |
| 脚手架构建 | 3 |
| 奖励设计 | 3 |
主要结果(InnovatorBench 20 个测试任务)
| 领域 | Apollo 最终 | Apollo 最佳 | GLM-4.5 最终 | GLM-4.5 最佳 |
|---|---|---|---|---|
| 数据收集 | 27.33 | 27.50 | 15.29 | 22.64 |
| 数据过滤 | 40.32 | 40.47 | 5.16 | 5.36 |
| 损失设计 | 21.48 | 25.23 | 7.63 | 7.63 |
| 奖励设计 | 3.09 | 3.09 | 0.00 | 0.00 |
| 加权平均 | 21.86 | 24.01 | 11.85 | 13.35 |
Apollo 比未训练基线提升 50%+(11.85 → 21.86)。
消融实验
| 变体 | 最终分 | 最佳分 |
|---|---|---|
| Apollo(完整) | 21.86 | 24.01 |
| 无动作掩码 | 18.46 | 18.61 |
| 无人类交互 | 12.66 | 12.97 |
| 未训练 GLM-4.5 | 11.85 | 13.35 |
关键发现:
- 无人类交互(12.66)甚至不如未训练基线(13.35)→ 纯拒绝采样在长程任务中失效
- 动作掩码提供 +3.4 分 → 过滤错误动作显著改善训练质量
测试时扩展
| 时间 | Apollo | GLM-4.5 |
|---|---|---|
| 前 4 小时 | 与基线相似 | — |
| 4-16 小时 | 持续提升 | 饱和 |
| 16+ 小时 | 最大优势 | 不再改善 |
Apollo 展现出更好的测试时扩展性:随着给予更多计算时间,性能持续提升。
对比闭源模型
| 模型 | 加权平均分 |
|---|---|
| GPT-5 | — |
| Claude Sonnet 4 | — |
| Apollo(GLM-4.5) | 21.86 |
| GLM-4.5(未训练) | 11.85 |
行为分析
Apollo 训练后的模型展现出:
- 耐心:长时间运行的进程会选择等待而非中断
- 资源管理:将任务分配到多台机器,合理利用计算资源
- 迭代改进:根据评估反馈动态调整策略
个人思考
- “异步引导”是人机协作的正确模式:30 小时任务不可能全程标注,但偶尔的关键性指导就能极大改善轨迹质量。
- “无人类交互反而不如基线” 是最重要的发现:说明在长程任务中,纯自动数据收集(拒绝采样)会收集到大量低质量轨迹 → 反而污染模型。
- 动作级过滤的精细度值得学习:不是接受/拒绝整条轨迹,而是逐动作决定是否纳入训练 → 充分利用部分正确的轨迹。
- 知识迁移成功(Task 15: 22.90 → 75.69)说明 Apollo 学到的不仅是特定任务的技巧,还有通用的研究实验策略。
- 界面设计的重要性:降低标注员认知负担是使异步引导实际可行的关键——好的工具是好方法的前提。