跳转到主要内容
Hugging Face TRL,catalog 版本 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 通常也是。
用受限的 Hub 仓库时,先在控制台绑定你的 Hugging Face 账号,这样提交前置检查才能确认权限。见 Hugging Face 集成。 适配器通过 Accelerate 启动。卡数仍然来自 --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。
导出和评测在 recipe 上声明过,所以提交时 --then export --then eval 可用。评测跑的是实验自己的 eval.py。

下一步

方法目录 · 评分标准 · 流水线