Arganzheng's Blog

stay hungry, stay foolish

后训练(06):Agent 与工具调用的 RL:多轮环境、轨迹数据与延后的奖励

Agentic RL: Multi-Turn Environments, Trajectory Data and Delayed Rewards

第五篇的模型一次生成到底:读 prompt,想几千 token,给答案,验证器打分。真实的任务不长这样。修一个 GitHub issue 要读文件、改代码、跑测试、看报错、再改;回答一个需要查资料的问题要搜索、读结果、再搜索;操作一个系统要发命令、看输出、决定下一步。模型的一段输出之后是环境的输出,模型再基于它继续——几轮到几十轮之后,任务才有结果,奖励才能算。 这一篇把第五篇的可验证奖励从单轮推到多轮。从三件套看,奖励与参考没有变(还是验证器、还是弱 KL),变的是策略与环境交互的形态:一条轨迹里有模型生成的 token,也有环境返回的 token,前者要算梯度、后者绝不能算;奖励延后到轨迹末尾,几十轮的动作要共享一个分;rollout 不再是一个推理引擎的批量...

后训练(05):推理模型与可验证奖励:R1 的配方、PRM 与 test-time compute

Reasoning Models and Verifiable Rewards: The R1 Recipe, Process Reward Models and Test-Time Compute

前三篇的奖励都是学出来的:人标偏好,训一个 RM,或把 RM 折进 DPO 的 loss。学出来的奖励是人类判断的代理,代理就有 Goodhart——第二篇算过它的过优化曲线,第三篇用 KL 项管理它,第四篇发现 DPO 也逃不掉。2025 年推理模型的突破,从三件套的角度看只改了一格:奖励不再学,直接验。数学题比答案,代码跑测试,格式查标签。验证器是确定的,策略骗不了它(只要验证器本身没漏洞),于是 KL 项可以拿掉、RM 可以不训、策略可以被推到学出来的奖励永远不敢推的地方——回答从几百 token 长到几万 token,中间出现反思、回溯、验算。 这一篇讲这条路:可验证奖励是什么、能用在哪;DeepSeek-R1-Zero 为什么只靠规则奖励就训出了长思维链...

后训练(04):离线 RL:从 RLHF 目标推出 DPO 及其变体

Offline Preference Optimization: Deriving DPO from the RLHF Objective, and Its Family

第三篇的方法都在做一件贵的事:每一步从当前策略采样、打分、再更新。采样要一个推理引擎,打分要一个奖励模型,更新要四个(或三个)模型在显存里。DPO(Direct Preference Optimization,Rafailov 等 2023)问的问题是:同一个目标,能不能不采样、不打分,直接从一份现成的偏好数据推出一个 loss?1 答案是能,而且推导只有几行——RLHF 的目标在 KL 约束下有闭式最优解,把它反解成奖励、代入 Bradley-Terry,奖励模型就消失了,剩下策略与参考的对数比。这一篇先把这几行推清楚,再看它付出了什么代价(隐式奖励只在数据分布上有定义),再把 2024 年冒出来的十几个变体——IPO、KTO、ORPO、SimPO、cDPO——...

后训练(03):在线 RL:PPO、GRPO 与 RLHF 三件套

Online RL for LLMs: PPO, GRPO and the Policy–Reward–Reference Trio

前两篇准备好了两样东西:一个会按格式回答的策略(SFT),一个能给回答打分的奖励(RM)。这一篇把它们接起来:让策略生成回答、让 RM 打分、用分数更新策略,循环。因为每一轮都从当前策略采样,这叫在线(on-policy)RL;因为奖励来自人类偏好的代理,整条流水线叫 RLHF。 这是本系列推导最重的一篇。它要从”如何对一个不可微的采样过程求梯度”讲起,走到 PPO——四个模型、GAE、clip——再看 GRPO 怎么去掉其中一个模型、2025 年的一族修正各改了目标函数的哪一项。它也是”三件套”这张表第一次完整出现的地方:策略、奖励、参考,加上 PPO 特有的第四个——价值。 本篇要回答的核心问题是: PPO 为什么要四个模型?1 GRPO 去掉价值模...

后训练(02):偏好数据与奖励模型:Bradley-Terry、pairwise loss 与 reward hacking

Preference Data and Reward Models: Bradley-Terry, Pairwise Loss and Reward Hacking

SFT 之后的模型会按格式回答,但它只见过”好的回答长什么样”,没见过”两个回答哪个更好”。要让它继续变好,需要一个能对任意回答打分的东西——不是人(太慢、太贵,且 RL 每步要打几千个分),而是一个模型:输入 prompt 与回答,输出一个标量,越大越好。这个模型叫奖励模型(Reward Model,RM),它是 RLHF 三件套里的”奖励”,后面的 PPO、GRPO 直接用它,DPO 把它折进 loss 里,拒绝采样用它选数据,Arena 用它的数学给模型排名。 RM 的原理简单到一句话能说完:它是一个逻辑回归,特征是回答、标签是”A 好于 B”。难的全在数据与它的失效方式上——人对”哪个更好”只有七成一致,训出来的 RM 准确率也就七成;而 RL 的策略会像...

后训练(01):SFT:指令数据、chat template、loss mask 与参数高效微调

Supervised Fine-Tuning: Instruction Data, Chat Templates, Loss Masking and Parameter-Efficient Fine-Tuning

预训练结束时的模型是一个续写器:给它一段文字,它给出最可能的下一段文字。问它”法国的首都是哪里”,它可能回答”巴黎”,也可能续写成一道选择题的另外三个选项,或者一篇关于欧洲首都的文章。它有知识,没有格式——不知道什么时候该停、谁在说话、什么算”回答”。 监督微调(Supervised Fine-Tuning,SFT)解决的就是格式问题:用几千到几百万条”对话 → 回答”的示范继续训练,交叉熵 loss 不变,只是数据变成了对话。它是后训练流水线的第一步,也是三件套(策略、奖励、参考)里最简单的一步——只有策略,奖励就是标注好的目标序列。但它的每个工程细节都会传给后面每一步:模板一旦定下,奖励模型、DPO、RL 的数据都要用它;loss mask 的做法在多轮 Ag...

后训练:从 SFT 到可验证奖励(总纲)

Post-Training: From Supervised Fine-Tuning to Verifiable Rewards

内容简介 《后训练:从 SFT 到可验证奖励》是一组共八篇的系列文章,对应《AI 算法工程师学习地图》的第 L5 层。它面向已经理解 Transformer 与预训练(L4,《Transformer 原理与实现》四篇 + 《现代 LLM 结构》十篇)、准备把一个基座模型变成能对话、会推理、符合偏好的模型的读者,讲的是后训练的每一种方法在优化什么目标、改了哪个组件、花多少钱、怎么证明它变好了。 它回答的问题是: 一个只会续写的基座模型,经过哪几步变成能回答问题、能拒绝、能一步步推导数学题的模型?每一步的目标函数是什么,为什么这样写?训完之后,怎么知道它真的变好了而不是学会了讨好评委?1 后训练的方法很多——SFT、RM、PPO、GRPO、DPO、KTO...

预训练(06):系列总结与通关自测

Pretraining: Series Recap and Final Self-Test

五篇正文回答了一个问题:一个基座模型是怎么训出来的,每个训练决定花多少。第一篇在一台笔记本上把一次预训练从原始网页到模型完整跑一遍,第二篇算 tokenizer 与词表,第三篇算算力怎么分给参数与数据,第四篇算 15T token 从哪来、丢掉的是什么,第五篇算超参表里每个数字的来历与训练为什么会崩。五篇合起来,是《现代 LLM 结构》那张成本表的训练侧。 第二到第五篇每篇的第一章都是「先讲明白」——不算账、只用图和小实验把这一篇的对象讲给没接触过的读者(三种切法与 BPE 逐步图、幂律与 iso-FLOP、一篇网页清洗前后与配比曲线、学习率调坏了长什么样与一次真实的 spike);账本从第二章起。本文不讲新内容,做三件事:把五篇压成一张表与五段回顾,把贯穿全系列...

预训练(05):训练配方与稳定性:学习率、batch、调度与 loss spike

Pretraining Recipes and Training Stability: Learning Rate, Batch Size, Schedules and Loss Spikes

前三篇定了 tokenizer、模型多大、数据多少与怎么配。剩下的是怎么训:一张十几行的超参表——峰值学习率、warmup 步数、batch 大小与它的增长计划、调度曲线的形状、AdamW 的两个 β、weight decay、梯度裁剪阈值、初始化标准差——外加几个防止训练崩掉的开关。这张表决定了几千万 GPU 小时是训出一个模型还是训出一条发散的 loss 曲线。 这些数字大多来自 L3 层的深度学习基础(方差传播、Adam 的二阶矩、warmup 的必要性),本篇不重推它们,只做两件事:把公开配方里的每个数字放到同一张表上比较,算出它们隐含的步数、每步时间、checkpoint 大小、一次 spike 的代价;再把”训练不稳定”拆成三个可以单独度量、单独修的机...

预训练(04):预训练数据工程:从 Common Crawl 到 15T token,去重、过滤与配比的账

Pretraining Data Engineering: From Common Crawl to 15T Tokens, the Arithmetic of Deduplication, Filtering and Mixing

第三篇的结论是:算力固定时模型应该更小、数据应该更多,而且唯一 token 至少要有目标数据量的四分之一。Llama 3 的 15T、Qwen3 的 36T 不是从哪里”下载”来的——公开网页抽出正文后约有 240T token,其中能进训练集的只有百分之几,再经过模型打分留下的”高质量”部分不到 1%。从 240T 到 15T 之间是一条几十个步骤的管线:URL 过滤、正文抽取、语言识别、启发式规则、模型打分、三个粒度的去重、配比、多阶段课程、污染检测。 这一篇讲这条管线。它是预训练里唯一不在 GPU 上跑的大工程,成本以 CPU 核·小时与工程师月计;它的每个决定——去重的阈值、过滤的严格程度、各来源的配比——都直接改变 loss,且改变的幅度常常大于结构上的...

×