强化学习基础设施学习教程:三大认知跃迁与实践路线

作者:沙与沫2026.11.04 11:37浏览量:0

简介:本教程面向从事大模型训练的算法工程师与基础设施工程师,系统讲解强化学习基础设施(RL Infra)的学习路线。教程以 SFT 三大默认假设在 Agentic RL 中失效为切入点,沿数据、计算、权重三条主线,梳理异步流水线、跨框优势计算协议、双权重真相同步等核心机制,并提供动手实验、自测清单与常见问题排查思路,帮助读者快速建立可落地的 RL Infra 认知框架。

一、教程目标与适用读者

1. 本教程帮助你完成什么

本教程的目标,是帮助你建立一套系统的强化学习基础设施认知框架与学习路径。完成学习后,你应当能够:

  • 说清楚 Agentic RL 训练系统与 SFT 训练系统在数据、计算、权重三个维度上的本质差异;
  • 按图索骥地学习异步流水线、跨框优势计算协议、权重同步机制这三大核心模块;
  • 在实际系统或复现实验中,定位并排查“训练不收敛、吞吐骤降、权重不同步”等典型问题。

一个必须先建立的总体判断是:如果只把 Agentic RL 当成“带奖励信号的多轮 SFT”,大概率会在三个地方同时翻车。SFT 时代默认成立的三个假设,在 Agentic RL 里全部失效,而每一次失效恰好对应一次基础设施复杂度的跃迁。SFT 的难度在“框内”——同一张计算图里的极致压榨,崩了也是一个整齐的 NaN;Agentic RL 的难度在“框间”——三个框之间隔着长尾、异步和状态错位,日常不是优化,是抢救。本教程的全部内容,就围绕这三条“失效—跃迁”主线展开。

2. 适用读者

  • 从大模型 SFT 后训练方向转入 RL 训练方向的算法工程师;
  • 负责搭建或维护 RL 训练平台的训练/推理基础设施工程师;
  • 需要评估 RL Infra 技术方案、人力与算力投入的技术负责人;
  • 希望系统性理解 RL 训练系统内部机制的企业用户与运维人员。

3. 前置准备

学习之前,建议具备以下基础:

  • SFT 训练经验:理解数据加载、Token 级交叉熵损失、optimizer.step() 的原地更新、检查点保存与断点续训的基本流程;
  • 分布式训练基础:了解数据并行(DP)、流水线并行(PP)、上下文并行(CP)的分工方式,知道全局 batch 与梯度同步大致发生在哪里;
  • 推理侧基础:了解推理引擎的批处理、KV 缓存等通用概念(不依赖任何特定产品);
  • RL 基础概念:策略、轨迹、奖励、优势的基本含义。

环境方面,你只需要一台可以跑小模型实验的机器或通用计算资源、任意主流开源训练与推理方案的通用能力、以及基本的日志与指标观测手段。实践环境可以自建,也可以使用任意主流云服务商提供的通用产品类别(例如百度智能云的通用 GPU 算力、容器平台与对象存储即可满足实验需求),无需绑定任何特定厂商的专有能力。

二、学习路线总览:三个“假设失效”就是三张地图

SFT 默认假设 在 Agentic RL 中如何失效 对应的基础设施跃迁 学习主线
数据是静态的 轨迹由策略自己探索产生,分布随训练漂移,还要等沙箱/工具的长尾响应 同步孤岛 → 异步流水线 数据流
损失当场可算 只有轨迹级奖励,要折算成 Token 级优势,归一化分母横跨 PP/DP/CP 框内自算 → 三框计算协议 计算协议
权重一份真相 训练侧参数 buffer 与推理引擎显存两份真相,中间隔着昂贵的跨边界迁移 一份真相 → 双真相同步 权重管理

下面按“理解差异 → 动手实验 → 观测验证 → 问题排查”的闭环逐条展开。

三、第一步:建立 SFT 基线认知

学习 RL Infra 的第一个动作,不是直接扑向 RL 系统,而是把 SFT 的心智模型显式写下来。原因很简单:RL Infra 的难点不是凭空多出来的,而是“从 SFT 地板上塌下去的部分”;不知道地板在哪,就看不懂塌在哪里。建议用一页纸回答四个问题:

  1. 数据从哪来:磁盘上固定的数据集,训练前切好分片,分布全程不变。
  2. 损失在哪算:同一张计算图内,Token 级交叉熵,batch 内归一化即完成。
  3. 权重如何生效:optimizer.step() 原地回填,下一步立即可见,全系统只有一份真相。
  4. 失败长什么样:数值出问题时通常是一个“整齐的 NaN”,崩溃可感知、可定位。

这四个答案就是后续三条主线的对照基线。

四、第二条主线:数据——从同步孤岛到异步流水线

1. 差异在哪

SFT 从磁盘读取固定分布的数据;RL 的训练数据(轨迹)则是策略在环境里“现场生产”的,带来两个后果:

  • 分布漂移:数据分布随策略更新不断变化,无法提前离线备好;
  • 长尾等待:轨迹生产依赖沙箱环境与外部工具调用,响应时长呈长尾分布,最慢的一个请求会拖住整批数据。

若沿用同步思维——“等这批轨迹全部产出再训练,训练完再产出下一批”——系统会退化为三个互相等待的同步孤岛,算力大量空转。

2. 要学什么

  • 画出完整数据回路:策略产出请求 → 环境交互 → 轨迹与奖励 → 训练消费 → 权重更新 → 新策略再产出。
  • 异步流水线三要素:生产端持续产出、缓冲队列解耦(数据带新鲜度/版本标记)、消费端按新鲜度策略取数。
  • 长尾治理通用手段:并发预热、超时重试、请求级并行、沙箱资源池化。

3. 动手实验

  1. # 同步版(故意保留用于对照)
  2. for step in range(N):
  3. trajs = rollout(env, policy) # 等全部环境返回,长尾拖全局
  4. train_step(trajs) # 训练期间 rollout 闲置
  5. # 异步版(学习目标)
  6. # rollout 进程:持续与环境交互,轨迹附带 policy_version 写入队列
  7. # trainer 进程:只取版本差值在阈值内的数据
  8. # 观测指标:队列水位、各框空闲占比、数据新鲜度分布

验证方式:对比两版墙钟时间与各阶段空闲占比。若异步版仍有某框长时间空转,优先排查队列水位与新鲜度阈值。

五、第三条主线:计算——从框内自算到三框协议

1. 差异在哪

  • SFT 的损失是 Token 级、batch 内归一化即完成;RL 只有轨迹级稀疏奖励,必须折算成 Token 级优势才能参与损失计算。
  • 为保证统计稳定,优势的均值/方差往往要跨越 DP、PP、CP 的全局边界统计,形成一套跨框计算协议——分母在哪个框算、以什么粒度归约,必须全局约定。
  • “算奖励”本身已不是附属步骤:环境反馈、规则校验、模型评分等 grader 计算可能非常昂贵。有公开实践观测显示,奖励与评分计算可消耗 RL 总算力的两位数百分比(一成以上),奖励框由此升格为与 Rollout、Training 并列的第三根算力支柱。

2. 动手实验

  1. # 轨迹级奖励 → Token 级优势(业界常见的组内相对估计思路,示意)
  2. for group in batch: # 同一提示下的一组轨迹
  3. r = [reward(t) for t in group]
  4. base = mean(r); scale = std(r) + eps
  5. adv = [(x - base) / scale for x in r] # 组内相对优势
  6. for t, a in zip(group, adv):
  7. token_adv[t] = a # 轨迹级标量摊派到每个 Token
  8. mask[t] = response_mask(t) # 只在响应段计损
  9. # 注意:mean/std 若跨 PP/DP/CP 统计,需明确全局协议,否则各副本优势尺度不一致

验证方式:给两个不同数据并行副本喂同一提示组,核对优势逐元素一致;再故意打乱归一化粒度,观察训练曲线与熵的变化,体会“分母协议”为何必须全局约定。

六、第四条主线:权重——从一份真相到两份真相

1. 差异在哪

SFT 中参数原地回填、立即生效;Agentic RL 存在两份权重真相:训练侧参数 buffer(优化器视角)与推理引擎显存中的权重(采样视角)。二者之间隔着一次昂贵的跨物理边界迁移:格式与精度转换、显存布局重组、跨卡/跨机传输。同步过频,训练时间被迁移吃掉;同步过疏,推理端持续用旧权重采样,数据陈旧度上升。“频率—陈旧度”权衡是核心设计题。

2. 动手实验

  1. while training:
  2. optimizer.step() # 真相 A:训练侧 buffer 更新
  3. if step % sync_interval == 0:
  4. w = convert(train_params) # 精度/布局/切分转换
  5. push_to_inference(w) # 真相 B:迁移进推理引擎
  6. publish_version(step) # 发布版本号,供新鲜度校验

学习要点:sync_interval 的权衡逻辑;给每条轨迹打 policy_version,统计“轨迹版本与当前训练版本的差值分布”;训练指标劣化但奖励曲线正常时,先查陈旧度分布是否异常拉宽。验证方式:小规模实验中测量单次同步耗时占比,并核对版本号单调递增、无跳变。

七、结果验证:自测清单

  1. 能否独立画出 Rollout、Reward/Grader、Training 三个框及之间的全部数据流与控制流?
  2. 能否指出优势归一化分母的统计范围,并解释为何必须跨 PP/DP/CP 全局约定?
  3. 能否量化一次权重同步的耗时占比,并解释 sync_interval 的权衡?
  4. 面对“吞吐骤降”,能否按“队列水位 → 沙箱长尾 → 奖励框耗时 → 权重同步占比”的顺序给出排查路径?
  5. 能否解释为什么 SFT 的崩溃是“整齐的 NaN”,而 RL 的失败常是“静悄悄的劣化”?

五题答对四题,说明框架已建立;否则回到对应主线补做实验。

八、常见问题与排查思路

  • 吞吐骤降、各框互相等待:多为同步思维残留。检查队列水位、沙箱长尾响应、奖励框耗时,确认三框是否解耦、是否按新鲜度取数。
  • 训练不收敛但无 NaN:RL 的失败常是隐式的。建立奖励均值/分布、响应长度、熵、与参考策略偏离度等曲线观测,劣化往往先在这些曲线中显现。
  • 异步化后复现不了同步版效果:优先怀疑数据陈旧度与归一化口径变化,统一协议后做同种子对照实验。
  • 奖励计算被低估、grader 成为瓶颈:对奖励框单独性能分析,规则类与模型类评分分开处理,能缓存的缓存、能并行。
  • 权重版本错乱:检查同步日志与版本号是否单调、迁移失败是否有重试、推理端是否仍在旧版本上采样。

九、优化建议

  • 从小到大:先最小同步闭环验证正确性,再异步化,最后分布式扩展;每一步保留可对照基线。
  • 分框压测:对三个框分别做容量测试,定位各自长尾与瓶颈,而非只看端到端吞吐。
  • 监控先行:队列水位、数据新鲜度、奖励耗时占比、同步耗时与版本差值应为一上线即观测的核心指标。
  • 沉淀抢救手册:RL Infra 的日常是抢救而非优化,把每次事故根因与修复方式沉淀为内部排查手册。

十、总结

本教程以“SFT 三假设失效”为纲,带你完成了 RL Infra 的三条学习主线:数据上从静态数据集走向异步流水线,计算上从框内自算走向跨框优势协议且正视奖励框的算力支柱地位,权重上从一份真相走向双真相同步。掌握这三条主线后,下一步可深入研究各框的极致性能优化、一致性保障与规模化运维,并在实验与生产中持续迭代自己的排查手册。