1.10.0,作为独立运行时而不是绕 custom 走。方法有 trl/sft、
dpo、grpo、grpo-judge、rm、kto、rloo、opsd。
observability 是 platform。TRL 自己的指标名 —— loss、eval_loss、learning_rate —— 被别名
映射到控制台的曲线上,所以你不用重命名任何东西曲线就会填上。
创建
train.py。超参属于 config.yaml 或 --set;只有你确实需要 fork 这个循环时
才去改 train.py。
集成往 report_to 添加 tensorboard 并设置授权的日志目录。独立采集器读取原生指标,
显式配置的 wandb 等 tracker 会保留。验证样本来自模板 train.py 中挂载的回调:
fork 循环时留着它,否则曲线照常有,样本页是空的。DPO 和 GRPO 使用
TunePlaneValidationCallback;SFT 和 KTO 使用 recipe 中的 CompletionSamplesCallback,基于 TRL 官方
分布式生成回调,在评估时最多生成 8 个提示词、每个最多 128 个新 token。生成策略在 recipe 中修改。
设置 TUNEPLANE_JOB_VAL_UPLOAD_SAMPLES=0 可关闭样本采集及这部分额外生成。
公开回调将记录写入有容量限制的本地队列,由独立采集器负责网络传输。生成和提取样本仍会占用
评估时间。本地队列和磁盘都有预算,丢失会被报告;退出时只排空到设定的截止时间。
带模型和数据提交
--model 和 --train-data 是必填的,除非配置里已经填了对应字段。--validation-data 通常也是。
--profile,经 TUNEPLANE_CLUSTER_GPUS_PER_NODE 传入。
蒸馏需要同词表的教师
teacher_model 必填,模板的 train.py 会校验它。教师必须与学生共享词表。
这里的 beta 是广义 JSD 插值系数,不是 GRPO 的 KL 惩罚系数:0.0 是 forward KL,也是 on-policy
蒸馏论文的口径;1.0 是 reverse KL;0.5 是标准 JSD。
use_liger_kernel 用融合核算 JSD,省显存提吞吐。带 logit_scale 或 final_logit_softcapping
的模型(比如 Gemma)不支持。
用 rubric 而不是规则来打分
trl/grpo-judge 的奖励来自平台裁判按一份版本化 rubric 给每条回答
打分。用它处理没有规则能判定对错的任务 —— 写作质量、语气、领域规范、解释是否真的解释清楚了。
同一份 rubric 也能给评测打分,所以训练与评测不会偏离。
确认成功
tp job logs 会显示 Accelerate 启动进程,然后是第一个优化器 step。Charts 标签页会填入
train/loss、validation/loss、train/token_accuracy、train/grad_norm 和 train/lr。
训练之后
checkpoint 遵循 HuggingFace 的布局 ——checkpoint-* 和 final_model。
--then export --then eval 可用。评测跑的是实验自己的
eval.py。