Mind Lab Toolkit (MinT)

RL 最佳实践(实用 Checklist)

这一页是一份面向 MinT 强化学习(RL)训练的经验清单,刻意保持通用:数学、代码、工具调用型 Agent 都能套用。

1)先判断:RL 是不是合适的“杠杆”

RL 更适合这些情况:

  • 你能写出可编程 reward:计算成本低、稳定、且不容易被“钻空子”。
  • 任务有明确可验证的成功标准:可判定对错、可运行测试、可执行校验。
  • 你关心端到端行为:约束、风格、安全、成本等,而不仅是模仿示例。

更适合先用其他方法的情况:

  • 你能提供高质量示例:优先从 SFT 开始。
  • 你能做输出对比但很难稳定打分:可考虑 偏好学习(如 DPO/RLHF)。

2)选训练形态:Model RL vs Agentic RL

Model RL(单步)

  • 输入:prompt
  • 输出:completion
  • Reward:主要看输出本身
  • 典型任务:分类、数学、代码生成、单轮问答

Agentic RL(多步)

  • 模型在多步交互里调用工具/环境,过程更像“执行任务”而不是“回答问题”。
  • Reward 可以同时包含最终结果与过程指标(工具成本、步数、合规性等)。
  • 典型任务:工具调用、搜索、工作流、多轮助手

一个便于落地的抽象(伪代码,不是 MinT 的固定 API):

def sample_with_trace(prompt: str) -> tuple[str, dict]:
    # 产出最终答案 + 可回放的 trace(便于排查与评估)。
    answer = run_agent(prompt)
    trace = {"tool_calls": [], "messages": []}
    return answer, trace

def compute_reward(prompt: str, answer: str, trace: dict) -> float:
    return score(prompt, answer, trace)

对应到 MinT:这里的 sample_with_trace(...) 本质就是采样/执行你的 agent(例如 sampling_client.sample(...)),而 compute_reward(...) 就是你自己写的评分器。最后把 tokens、旧 logprobs、advantages 填进 types.Datum 里喂给训练。

3)Reward 设计:既要"可学",也要"难被投机"

  • 先从最小可用 reward 做通,再逐步丰富。
  • Reward 尺度尽量有界且一致(比如 [0, 1]),混合任务时更重要。
  • Loop 跑通后,尽量用部分得分替代纯 0/1(也能减少 datums=0)。
  • 把“永远不希望出现”的行为明确惩罚掉(不安全内容、滥用工具、过度冗长等)。
  • 保留一小份固定评估集,不要只盯训练 reward 调参。

4)采样策略:要多样性,也要控制成本

  • group_size 越大,相对比较信号越强,但推理成本也会线性上升。
  • 前期可提高温度探索,后期再降低温度稳定收敛。
  • max_tokens 要够用;截断会导致 reward 误判、训练方向偏掉。
  • 设置 stop token / 终止规则,避免无穷输出和跑偏轨迹。

5)数据策略:先小规模验证,再把有效的部分放大

  • 先用几十到几百条高质量样本验证闭环。
  • 关注“饱和”:模型已经稳定做对的样本,继续训练几乎不给信号。
  • 更推荐构造“刚好有挑战”的样本,而不是堆大量简单数据。

6)稳定性开关(训练变吵/变崩时用)

  • importance_sampling 适合作为最简单的 baseline。
  • 若出现不稳定(reward 暴涨暴跌、模式坍塌),可考虑换用带裁剪的目标(PPO/CISPO)和/或降低学习率。
  • 频繁保存 checkpoint,方便回溯定位回归点。

7)可观测性与排查 Checklist

每一步至少抽样看几条并记录:

  • Prompt、completion、reward、长度
  • 有工具/环境时:tool 调用与 trace
  • 两个核心指标:成功率 + 平均 reward

常见坑:

  • 没有学习信号:组内样本 reward 全相同(见 Mini RL Trip 的 datums=0 说明)。
  • Reward 被投机:模型学会“骗过评分器”而不是解决任务。
  • mask 出错:把 prompt token 也训练进去了(确保 weights 正确 mask prompt)。

本页目录