指令跟随近期工作梳理(2025年上半年)

Table of Contents generated with DocToc

由于工作需要和个人兴趣,最近看了一些指令跟随(Instruction Following)相关的文章,特整理如下。其实自从LLM表现出强大的能力后,指令跟随自然而然就是一个非常重要的方向了。

关于指令跟随,最重要(也最简单)的策略就是调整提示词了,由此甚至诞生了Prompt Engineer这个行当。不过这个笔者早就提过了(比如这里:ChatGPT 影响冲击:职业、行业与产业 | Yam[1]),一定会过时,倒不是说提示词工程会过时,而是说它应该会变成一种通用技能,就像Office办公软件一样,现在没有人会把Office作为自己的技能写到简历上了吧。

关于提示词工程,笔者应该是国内比较早写过文章的(23年1月发表的:ChatGPT Prompt工程:设计、实践与思考 | Yam[2]),后面就再没写过了,实在是觉得这东西没多少好说的,就是trial-and-error,或者trial-and-improve。提示词其实本质上是沟通能力,你描述得清楚效果就好。而且,随着模型不断变强,提示词的作用相对弱化(但你还是要把话说清楚,这是基本)。以上观点至今未变。

但是指令跟随却很重要,因为我们最终是要用LLM去完成某项任务的,虽说指令大部分情况下都需要写的比较清楚(比如”按Json格式输出“),但也有一些隐藏的指令(比如”应特别注意用户提到XX产品信息“),或者比较复杂的指令(比如实际生产环境,三五千字的系统提示词太常见了)。本文就来简单梳理一下近期相关研究(只记录了笔者觉得比较有新意的地方)。

More

GRPO优化在继续——CISPO和熵

来自MiniMax-M1: Scaling Test-Time Compute Efficiently with Lightning Attention[1]中的一个发现。其实R1-Zero后,关于GRPO的优化和研究已经有相当不少的文章了,光笔者自己都梳理过不少,如下。

没想到还能继续出新。

More

Reward Model建模

本文介绍几篇关于Reward的文章,Reward经历了RLHF的scalar,到LLM-as-Judge,以及DeepSeek-R1的Rule,很自然地逐渐转移到通用领域——如何针对非推理(无标准答案)Query,给出模型响应的Reward。只要解决好这个问题,R1-Zero的方法就可以很自然地扩展到通用领域。而这也可以和之前在DeepSeek R1深度技术解析及其影响 | Yam[1]中提到的强化学习执念很好地融合在一起。

More

从Voila看语音端到端发展

本文借着Voila[1]顺便聊一下音频端到端(OMNI)的进展,以及个人的一些理解。这玩意儿就是从2024年5月份GPT4o发布后开始逐渐火热起来,尤其是2024年下半年,看看[2]短短的几个月出了多少codec的文章。当时我们也做了一些尝试,没取得什么大的成果,不过倒是验证了蛮多想法。

More

Yarz-Logic:R1-Zero相关实验报告

过完年上班后开始关注R1,然后就开始尝试做一些实验,2月底到3月中旬陆陆续续做了不少实验,一直没时间整理,终于抽出点空来简单整理一下,做个记录。

首先,项目是基于Logic-RL[1],之所以选择这个项目有几个主要原因:

  • 当时这个复现感觉相对比较规范,飞书文档上记录了一些过程和评测结果(当时其实已经有不少复现了,但很多都没有评测,这种一概略过了)。
  • 实在不想看数学的英文,一个是数学本来也不太好,另一个是很多公式在代码里就没法看,不好看Case。这个是逻辑题目,以自然语言文本为主。
  • 这个项目基于verl[2]TinyZero[3],仅做了很少的改动,而verl和TinyZero我之前都了解过,相对比较熟悉。这样上手就比较方便。

所以,R1-Zero相关的实验就都基于这个项目了。因为我的关注点和原项目不同,我更加想验证一些自己的想法(原项目未涉及),所以就另外起了个名字:Yarz-Logic,Yarz就是Yet Another R1-Zero。

More

VAPO:基于价值方法的新突破

刚出了 DAPO:为GRPO的锦上加四点花 | Yam[1],字节Seed团队马上就送来新的 VAPO[2],同样的清晰、高质量。

VAPO,全称 Value-based Augmented Proximal Policy Optimization,没错了,这是基于价值的方法。本文指出了困扰基于价值方法的三个关键挑战:价值模型偏差、序列长度异质性以及奖励信号的稀疏性,并分别对其进行优化,最终在 AIME 2024 上比 DAPO 提升10个点,并且更加稳定,需要的训练步数更少。

More

R1相关:R1-Zero的进一步理解和探索

TL;DR

本文通过对近期几篇R1-Zero相关工作进行梳理,同时结合部分已有的工作,从整体上对R1-Zero及其范式进行更深层次的理解和探索。主要观点整理如下:

  • Base模型是核心,RL在激活能力
    • 强模型需高难度数据充分激活能力,弱模型需渐进引导。
    • 强模型对格式限制不敏感,弱模型需适配模板以避免探索抑制。
    • 自我反思频率与准确率无必然关联,需结合数据质量分析。模型层数增加时,简单问题易被“过度思考”,复杂问题感知简化。
  • LLM学习模式的关键发现
    • 反思能力在预训练早期即显现,随训练逐步提升。
    • LLM依赖模式记忆而非数学规则。
    • 预训练知识获取分三阶段:统计学习→平台期(记忆回路形成)→个体知识获取。数据调度策略(如“热身训练”)可加速知识获取,微调易导致幻觉与知识损坏。
  • RL算法
    • 算法改进:DAPO、Dr GRPO。
    • 强化已有正确推理行为(非注入新知识),领域预训练可显著提升上限。
    • 分阶段扩展上下文窗口(短→长任务),按难度课程式学习匹配模型能力。
  • 工程实践关键
    • Base模型优先同系列大模型,小模型需更多探索,慎用SFT冷启动(可能限制RL潜力)。
    • 数据应覆盖多领域、多难度、多样化回答,避免固定格式限制(弱模型尤其敏感)。
    • 弱Base没做过LongCoT的可以先LongCoT。遵循课程式数据设计和训练策略:从短任务逐步过渡到长难题。

总之,Base模型是核心,Base不行先继续训练或LongCoT。RL是激活手段,需结合数据难度与模型能力动态适配。工程上分阶段、重数据质量与课程设计,避免过度依赖微调。

More

DAPO:为GRPO的锦上加四点花

GitHub:BytedTsinghua-SIA/DAPO: An Open-source RL System from ByteDance Seed and Tsinghua AIR

Paper:DAPO: An Open-Source LLM Reinforcement Learning System at Scale

DAPO

DAPO,一个对GRPO全方位优化的Policy优化算法,有必要单独记录一下。损失如下:

JDAPO(θ)=E(q,a)D,{oi}i=1Gπθold (q)[1i=1Goii=1Gt=1oimin(ri,t(θ)A^i,t,clip(ri,t(θ),1εlow ,1+εhigh )A^i,t)] s.t. 0<{oi equivalent (a,oi)}<G\begin{aligned} & \mathcal{J}_{\mathrm{DAPO}}(\theta) = \mathbb{E}_{(q, a) \sim \mathcal{D},\left\{o_i\right\}_{i=1}^G \sim \pi_{\theta_{\text {old }}}(\cdot \mid q)} \\ & {\left[\frac{1}{\sum_{i=1}^G \left|o_i\right|} \sum_{i=1}^G \sum_{t=1}^{\left|o_i\right|} \min \left(r_{i, t}(\theta) \hat{A}_{i, t}, \operatorname{clip}\left(r_{i, t}(\theta), 1-\varepsilon_{\text {low }}, 1+\varepsilon_{\text {high }}\right) \hat{A}_{i, t}\right)\right] } \\ & \text { s.t. } \quad 0 \lt \mid\left\{o_i \mid \text { equivalent }\left(a, o_i\right)\right\} \mid \lt G \end{aligned}

其中:

ri,t(θ)=πθ(oi,tq,oi<t)πθold (oi,tq,oi<t),A^i,t=Rimean({Ri}i=1G)std({Ri}i=1G)\begin{aligned} & r_{i, t}(\theta)=\frac{\pi_\theta (o_{i, t} \mid q, o_{i \lt t})} {\pi_{\theta_{\text {old }}} (o_{i, t} \mid q, o_{i \lt t})}, \\ & \hat{A}_{i,t}=\frac{R_i-\text{mean}\left(\left\{R_i\right\}_{i=1}^G\right)}{\text{std}\left(\left\{R_i\right\}_{i=1}^G\right)} \end{aligned}

看着和GRPO有点像。为了便于对比,把GRPO损失一并贴出来:

JGRPO(θ)=E(q,a)D,{oi}i=1Gπθold (q)[1Gi=1G1oit=1oimin(ri,t(θ)A^i,t,clip(ri,t(θ),1ε,1+ε)A^i,t)βDKL(πθπref)]\begin{aligned} & \mathcal{J}_{\mathrm{GRPO}}(\theta) = \mathbb{E}_{(q, a) \sim \mathcal{D},\left\{o_i\right\}_{i=1}^G \sim \pi_{\theta_{\text {old }}}(\cdot \mid q)} \\ & {\left[\frac{1}{G} \sum_{i=1}^G \frac{1}{|o_i|} \sum_{t=1}^{\left|o_i\right|} \min \left(r_{i, t}(\theta) \hat{A}_{i, t}, \operatorname{clip}\left(r_{i, t}(\theta), 1-\varepsilon, 1+\varepsilon \right) \hat{A}_{i, t}\right) - \beta \mathbb{D}_{KL}(\pi_{\theta} | \pi_{ref}) \right] } \end{aligned}

其中:

DKL(πθπref)=πref(oiq)πθ(oiq)logπref(oiq)πθ(oiq)1\mathbb{D}_{K L}\left(\pi_\theta \| \pi_{r e f}\right)=\frac{\pi_{r e f}\left(o_i \mid q\right)}{\pi_\theta\left(o_i \mid q\right)}-\log \frac{\pi_{r e f}\left(o_i \mid q\right)}{\pi_\theta\left(o_i \mid q\right)}-1

r和A同上。oi表示输出的第i个Token。

DAPO去掉了KL,观点是,模型分布可能与初始模型有很大差异,因此不需要这种限制。这点和我本人之前的认知不太一样,我认为Base是相对稳定的,分布差异应该不大。所以自然就有个疑惑:去掉KL到底是因为RL后续训练偏离Base较大导致限制没作用,还是偏离Base较小所以没作用?后来X哥提醒了一句:“这个应该不是偏离过大,而是针对Base到LongCoT本来变化大”,从这个角度看KL确实没太多意义。

奖励函数还是简单的规则:正确1分,否则-1分。

More