0
0

从 CP 到预训练系统:并行切分、状态账本与可恢复训练

整理日期:2026-10-07。范围来自本次实际可检索对话、可见提问摘录与已保存材料;原回答不完整处由本次教学推导补充,以下算例均非设备实测。技术来源核查于2026-10-07。

问题起点

9月29日问到CP与TorchTitan,近期又从vLLM rollout、sleep/wake、weight sync延伸到训练。这些名词要围绕“切什么、保存什么、如何恢复”连接,不能把所有并行参数简单相乘。

CP切分上下文,TP切分层内张量

训练CP通常让不同rank处理同一序列的不同位置;attention仍需取得正确的跨片段历史信息。具体实现可能通过环式或其他通信安排,不代表每个rank只看本地片段。TP则切线性层/head等张量;PP切层;DP/FSDP围绕不同数据及模型状态复制/分片。框架支持的设备网格和组合需核对配置。TorchTitan官方仓库

CP的目的常包含降低每rank activation/attention压力;训练CP与推理PCP/DCP共享序列切分思想,但前后向、缓存所有权和collective不同,不能把配置直接搬过去。

从单步训练建立状态账本

前向产生activation,反向产生梯度,optimizer更新参数。除了权重,还要核算梯度、optimizer状态、保存或重算的activation、通信缓冲。混合精度和分片实现决定各项dtype/份数,因此“每参数固定多少字节”只能作为限定假设下的估算。

教学例:梯度累积把若干microbatch形成一次optimizer step。若loss按有效token归一化,不同长度/packing/mask会改变权重;不能只将每个microbatch的平均loss无条件再平均。

Activation checkpointing用重算减少保存的activation,付出额外计算;FSDP等状态分片减少某类长期驻留状态,同时引入AllGather/ReduceScatter及瞬时峰值。先确认各自改的是哪个分母。

真正的验收是中断后恢复

最小实验:一个可承受的小模型,先连续跑若干step,再在同一step保存并重启,比较恢复后的轨迹。检查参数、optimizer、scheduler、step、RNG、数据游标与分片元数据;不是加载权重就算恢复训练。

若算子/并行过程不确定,预先声明容差并记录差异来源,不承诺逐bit一致。改变并行度时需由checkpoint系统重分片,文件能读不等于状态映射正确。本文没有执行你的训练实验。

训练怎样接到RL

RL新增的是状态协同:旧policy生成trajectory,reward/verifier打分,训练worker更新policy,新权重同步到生成worker。权重版本、采样参数、token mask、logprob口径与样本时间必须一起传递;异步化还要跟踪陈旧度与背压。

先完成同步闭环,再研究资源共置和sleep。只提升rollout tokens/s可能让训练/同步更拥堵,也可能因样本陈旧影响学习质量。优化目标应包含固定时间/成本下的质量或time-to-target-quality。

实践顺序:单卡loss正确 → 梯度累积/有效token归一化 → DDP/分片 → checkpoint恢复 → CP等组合 → rollout/update闭环。它是学习建议,不表示每一步已经完成。

知识连接与待确认

RL角色及sleep的细节增量在verl 入门:连接大模型强化学习后训练与推理系统;推理并行见DP2、TP8 与 MoE EP:两节点部署为何不一定是两份独立模型。

TorchTitan是实现参考,不是对你的昇腾环境支持承诺。尚未取得实际模型、训练配置、设备拓扑和checkpoint,因此未写入可运行部署命令或扩展效率结果。