【三年面试五年模拟】2026-11-05_月之暗面大模型算法岗一面、二面面经全解析

写在前面

欢迎大家关注Rocky的知乎:Rocky Ding

《三年面试五年模拟》AIGC/LLM/AI Agent算法工程师/开发工程师求职面试秘籍独家资源:【三年面试五年模拟】WeThinkIn/AIGC-Interview-Book,欢迎大家Star~

Rocky最新撰写的10万字AI Agent(AI智能体)深入浅出全维度解析文章: 深入浅出完整解析AI Agent(AI智能体)的核心基础知识


大家好,我是Rocky。

目录

  • 一面
    • [1. 自我介绍,重点讲和 RL 相关的部分。](#1. 自我介绍,重点讲和 RL 相关的部分。)
    • [2. 你们这轮训练多少 token,几张卡,跑了多久,失败重来过几次。](#2. 你们这轮训练多少 token,几张卡,跑了多久,失败重来过几次。)
    • [3. 基座是哪个,7B 还是 32B,为什么选这个尺寸。](#3. 基座是哪个,7B 还是 32B,为什么选这个尺寸。)
    • [4. SFT 阶段的数据量、epoch、学习率、warmup 比例。](#4. SFT 阶段的数据量、epoch、学习率、warmup 比例。)
    • [5. SFT 之后直接上 RL,还是先做 rejection sampling 冷启动,为什么。](#5. SFT 之后直接上 RL,还是先做 rejection sampling 冷启动,为什么。)
    • [6. 讲一下 GRPO 和 PPO 的区别。为什么 GRPO 可以去掉 critic。](#6. 讲一下 GRPO 和 PPO 的区别。为什么 GRPO 可以去掉 critic。)
    • [7. GRPO 的 group size 取多少,取 4 和取 16 的区别在哪,显存怎么算。](#7. GRPO 的 group size 取多少,取 4 和取 16 的区别在哪,显存怎么算。)
    • [8. advantage 是 token 级还是序列级,组内归一化时分母用标准差还是标准误。](#8. advantage 是 token 级还是序列级,组内归一化时分母用标准差还是标准误。)
    • [9. 如果一个 group 里 8 条采样全对,advantage 是多少,这时候 loss 是多少。](#9. 如果一个 group 里 8 条采样全对,advantage 是多少,这时候 loss 是多少。)
    • [10. loss 变成 0,除了"全对",还有哪几种可能。](#10. loss 变成 0,除了"全对",还有哪几种可能。)
      • [追问:reward 里有常数项吗](#追问:reward 里有常数项吗)
    • [11. 你遇到过 loss 一直是 0 吗,怎么判断是难度太低还是 reward 写错了。](#11. 你遇到过 loss 一直是 0 吗,怎么判断是难度太低还是 reward 写错了。)
    • [12. KL 项加在 loss 里还是加在 reward 里,系数给多少,给大了会怎样。](#12. KL 项加在 loss 里还是加在 reward 里,系数给多少,给大了会怎样。)
    • [13. 为什么 GRPO 训久了回复会变长,长度和正确率是正相关还是因果。](#13. 为什么 GRPO 训久了回复会变长,长度和正确率是正相关还是因果。)
    • [14. 长度惩罚怎么加才不伤害推理能力。](#14. 长度惩罚怎么加才不伤害推理能力。)
    • [15. DAPO 改了哪几处,dynamic sampling 具体怎么筛。](#15. DAPO 改了哪几处,dynamic sampling 具体怎么筛。)
    • [16. GSPO 把重要性采样比从 token 级改成序列级,解决的是什么问题。](#16. GSPO 把重要性采样比从 token 级改成序列级,解决的是什么问题。)
    • [17. clip 的 ε 取 0.2,如果改成 0.28 会怎样,为什么 DAPO 要用 clip-higher。](#17. clip 的 ε 取 0.2,如果改成 0.28 会怎样,为什么 DAPO 要用 clip-higher。)
    • [18. 训练和推理的 logprob 对不上,差 1e-3 量级,会导致什么,怎么查。](#18. 训练和推理的 logprob 对不上,差 1e-3 量级,会导致什么,怎么查。)
    • [19. 采样温度设多少,温度对 RL 是探索还是噪声。](#19. 采样温度设多少,温度对 RL 是探索还是噪声。)
    • [20. 规则 reward 和 reward model 各自适合什么场景,你们怎么混。](#20. 规则 reward 和 reward model 各自适合什么场景,你们怎么混。)
    • [21. 举一个你们实际遇到的 reward hacking,怎么发现的,怎么补的。](#21. 举一个你们实际遇到的 reward hacking,怎么发现的,怎么补的。)
    • [22. 多目标 reward(正确性、格式、长度、安全)怎么加权,权重是拍的还是有依据。](#22. 多目标 reward(正确性、格式、长度、安全)怎么加权,权重是拍的还是有依据。)
    • [23. 评测用 pass@1 还是 pass@k,k 取多少,为什么。](#23. 评测用 pass@1 还是 pass@k,k 取多少,为什么。)
    • [24. 训练集难度分布怎么控,全难题和全简单题分别会怎样。](#24. 训练集难度分布怎么控,全难题和全简单题分别会怎样。)
    • [25. 如果给你一批没有标准答案的业务数据,你怎么造 RL 信号。](#25. 如果给你一批没有标准答案的业务数据,你怎么造 RL 信号。)
    • [手撕:实现 GRPO 的 loss。给 batch 内 B 条样本、每条 group size G、变长序列的 logprob 和 reward,要求写出组内归一化 advantage、带 mask 的 token 级 loss 聚合,以及 clip 部分。注意三个坑:除以的是有效 token 数不是总长度;全对组的 advantage 是 0 不是 NaN;old_logprob 和 logprob 的比值要 detach。](#手撕:实现 GRPO 的 loss。给 batch 内 B 条样本、每条 group size G、变长序列的 logprob 和 reward,要求写出组内归一化 advantage、带 mask 的 token 级 loss 聚合,以及 clip 部分。注意三个坑:除以的是有效 token 数不是总长度;全对组的 advantage 是 0 不是 NaN;old_logprob 和 logprob 的比值要 detach。)
  • 二面
    • [1. 你在这个项目里具体负责哪一块,别人做了什么。](#1. 你在这个项目里具体负责哪一块,别人做了什么。)
    • [2. 8 卡跑 7B 的 GRPO,rollout 占了多少时间,训练占多少。](#2. 8 卡跑 7B 的 GRPO,rollout 占了多少时间,训练占多少。)
    • [3. rollout 用的是 vLLM 还是自家引擎,权重同步怎么做的。](#3. rollout 用的是 vLLM 还是自家引擎,权重同步怎么做的。)
    • [4. 采样和训练精度不一样(bf16 vs fp16),怎么保证 on-policy。](#4. 采样和训练精度不一样(bf16 vs fp16),怎么保证 on-policy。)
    • [5. 如果 rollout 阶段 GPU 利用率只有 30%,瓶颈可能在哪。](#5. 如果 rollout 阶段 GPU 利用率只有 30%,瓶颈可能在哪。)
    • [6. 长尾样本(特别长的回复)怎么处理,截断了 reward 怎么算。](#6. 长尾样本(特别长的回复)怎么处理,截断了 reward 怎么算。)
    • [7. 你们做过多轮迭代吗,每一轮的模型是上一轮的 checkpoint 还是重新从 SFT 起。](#7. 你们做过多轮迭代吗,每一轮的模型是上一轮的 checkpoint 还是重新从 SFT 起。)
    • [8. 迭代几轮之后效果开始掉,是什么原因。](#8. 迭代几轮之后效果开始掉,是什么原因。)
    • [9. 线上部署的模型和训练时的模型是同一个吗,量化了吗。](#9. 线上部署的模型和训练时的模型是同一个吗,量化了吗。)
    • [10. 这套流程如果搬到 32B,最先崩的是哪一环。](#10. 这套流程如果搬到 32B,最先崩的是哪一环。)

一面

1. 自我介绍,重点讲和 RL 相关的部分。

回答:

自我介绍应围绕"做过什么 RL 问题、负责哪段链路、用什么证据证明有效"展开。可以先交代研究或工程方向,再选择一个最能深入讨论的项目,讲清基座模型、任务、奖励信号、训练方法和独立评测,最后说明自己的具体贡献。

如果实际做过大模型强化学习,可以按"监督微调建立初始能力 → rollout 收集回答或交互轨迹 → 验证器或奖励模型评分 → 策略更新 → 独立任务评测"的顺序介绍,重点说明最难的一处失败及其排查过程。例如发现奖励上涨而成功率下降,如何区分奖励漏洞、评测变化和训练错误,比罗列很多算法名称更能体现理解。

没有完整训练过模型,就明确项目处于论文复现、小规模实验、评测建设或系统接入阶段。参数规模、GPU 数量、训练时长和效果数字都应来自真实记录;自己没有负责的模块可以说明接口和协作关系,不把团队整体工作包装成个人成果。

2. 你们这轮训练多少 token,几张卡,跑了多久,失败重来过几次。

回答:

这道题需要用训练日志回答,而且先统一 token 的统计口径。SFT 的非填充 token、RL rollout 的生成 token、策略优化处理的动作 token、参考模型或奖励模型额外处理的 token,含义不同;同一批轨迹被优化多轮,也不能简单当成新增采样数据。

我会准备一张实验记录表,包含模型版本、GPU 型号与数量、并行策略、有效 batch size、prompt 数、group size、输入与输出长度分布、生成 token 总数、优化 token 总数、墙钟时间和 GPU 小时。GPU 小时可以用实际占用卡数乘占用时长统计,但它不直接代表有效计算量,还需要结合利用率和吞吐判断。

失败重跑应区分程序或环境故障、数值不稳定、奖励错误与正常的调参试验。记录失败时的 step、检查点、损失或奖励异常、是否从断点恢复,以及重复消耗的数据和算力。无法从日志证明的数字不猜测;尤其不要只报成功那次运行的成本,漏掉采样、评测与失败重跑。

把账算到可复核的粒度。 例如一轮取 128 个 prompt,每个生成 8 条回答,平均每条产生 512 个有效动作 token,那么新增 rollout 约为 524,288 个动作 token。若同一批数据完整优化 4 遍,策略优化处理约 2,097,152 个动作 token;两者不能合并报告成"新增训练数据 260 万 token"。这还没有计入 prompt 前向、参考模型、奖励模型和重采样。这里是口径算例,真实记录应使用逐条 mask 的精确计数。

恢复训练时也要区分"恢复参数"和"恢复实验":数据游标、优化器、调度器、随机状态、当前 rollout 版本与已完成的奖励任务,都会影响接下来的样本和更新。若恢复时丢弃了部分已生成轨迹,应把这部分成本记入故障损失。

3. 基座是哪个,7B 还是 32B,为什么选这个尺寸。

回答:

基座选择由任务能力、奖励可验证性和总实验预算共同决定。先确认模型的许可证、语言与领域能力、上下文、工具格式和推理成本,再比较 7B 与 32B 在目标任务上的初始成功率,判断 RL 是否有足够的有效样本可供学习。

7B 通常更适合快速检查奖励、数据与训练链路,可以在相同预算下进行更多轮对照;32B 可能有更好的基础推理能力,但 rollout、训练、权重同步和部署成本都会提高。如果 7B 对目标任务几乎全错,组内相对奖励可能长期没有差异;这时需要降低难度、补冷启动数据,或评估更强基座,而不是盲目延长 RL。

比较模型时,既看相同样本预算,也看相同算力或成本预算,并保持评测与生成约束一致。参数规模只是粗略代理,还要区分稠密模型与 MoE 的总参数、激活参数和通信代价。最终选择应落到具体证据,例如较小模型已经达到交付标准,或者更大模型在困难任务上带来的收益足以覆盖增加的成本。

4. SFT 阶段的数据量、epoch、学习率、warmup 比例。

回答:

SFT 配置要与数据规模、样本长度、基座状态和全量或参数高效微调方式一起说明。数据量不仅是"多少条",还包括去重后的独立任务数、非填充 token 数、任务配比、质量过滤和训练验证划分,避免把高度重复的数据误当成覆盖面。

epoch 表示数据被遍历的次数,但真正影响训练的是总更新步数、有效 batch size 和每步有效 token 数。学习率需要结合优化器、可训练参数和批量规模选择;warmup 比例应同时换算为实际步数或 token 数。短实验里看似很小的比例,可能只对应很少的更新,不能直接照搬长训练的比例。

回答时给出实际配置文件或实验记录,并说明选择依据:验证集损失、任务正确率、格式合规率、过拟合和通用能力回归。SFT 的目标是让策略具备可用的初始行为与输出协议,并为后续 RL 提供有意义的探索起点;它不要求训练损失越低越好,也不保证增加 epoch 一定有益。

5. SFT 之后直接上 RL,还是先做 rejection sampling 冷启动,为什么。

回答:

是否做 rejection sampling 冷启动,主要看 SFT 模型能否生成足够多的可验证成功样本,以及任务协议是否已经稳定。如果格式经常错误、工具调用无法执行,或者几乎所有采样都失败,直接做 RL 很容易得到稀疏或无差异的奖励,先补少量高质量示范往往更有效。

拒绝采样的基本做法是针对同一任务生成多个候选,用可靠验证器筛选有效答案或轨迹,再用于监督训练。需要控制题目与解法多样性,去掉投机样本和重复轨迹,同时保留独立测试集。筛选器必须验证真正的任务结果,不能只依据模型自信程度或答案长度。

如果基座已经有较好的格式与任务能力,且奖励可靠、组内存在成功和失败差异,可以直接从当前 SFT 检查点开始 RL。比较两条路线时应把生成和筛选冷启动数据的成本计入预算,并检查冷启动是否让策略过度模仿单一解法。没有必要把某一种流程视为所有任务的固定前置步骤。

6. 讲一下 GRPO 和 PPO 的区别。为什么 GRPO 可以去掉 critic。

回答:

PPO 通常用价值函数估计状态价值,再构造优势;GRPO 针对同一个 prompt 生成一组回答,利用组内奖励作为相对基线,从而省去单独训练 critic 的常见开销。它仍然需要奖励或验证信号,去掉 critic 不等于没有价值比较,也不等于训练链路只剩一个模型。

对于同一 prompt 的 G G G 个回答,常见结果奖励版本的优势定义为:

μ = 1 G ∑ i = 1 G R i , σ = 1 G ∑ i = 1 G ( R i − μ ) 2 , A ^ i = R i − μ σ + ϵ n o r m . \mu=\frac{1}{G}\sum_{i=1}^{G}R_i,\qquad \sigma=\sqrt{\frac{1}{G}\sum_{i=1}^{G}(R_i-\mu)^2},\qquad \widehat A_i=\frac{R_i-\mu}{\sigma+\epsilon_{\mathrm{norm}}}. μ=G1i=1∑GRi,σ=G1i=1∑G(Ri−μ)2 ,A i=σ+ϵnormRi−μ.

训练时将回答的相对优势用于策略梯度,并常配合新旧策略概率比、裁剪目标与可选的参考策略 KL 约束。原始 GRPO 常见的损失聚合方式是先对每条回答的 token 求平均,再对回答求平均;其他实现会采用全局 token 平均或不同的标准化方式,需要明确所讨论的版本。

代价是每个 prompt 要采样多条回答,组内奖励全相同会缺少相对信号,有限组大小的基线也可能噪声较大。对长程交互任务,仅用一个序列结果奖励给所有动作同样的优势,信用分配仍然粗糙。因此 GRPO 用更多组内比较替代 critic 的学习,并没有消除奖励设计、采样成本与信用分配问题。

7. GRPO 的 group size 取多少,取 4 和取 16 的区别在哪,显存怎么算。

回答:

group size 没有通用最优值,需要结合单题成功概率、奖励离散程度、总 rollout 预算与硬件调度来选择。从 4 增加到 16,通常能获得更丰富的组内比较,均值和尺度估计也可能更稳定,但同一个 prompt 的候选数增加四倍,生成与打分成本通常随总输出 token 增长。

对于独立采样、二值奖励且单条成功率为 p p p 的简化情况,组内同时有成功与失败的概率为:

P m i x e d = 1 − p G − ( 1 − p ) G . P_{\mathrm{mixed}}=1-p^G-(1-p)^G. Pmixed=1−pG−(1−p)G.

这个式子说明更大的组可能减少全对或全错组,但当任务成功率非常接近 0 或 1 时仍可能缺乏信号。实际采样彼此可能相关,不能把独立假设当成保证。固定总回答数时,增大 G G G 还会减少独立 prompt 数,可能牺牲任务覆盖。

显存要拆开算:模型权重、梯度与优化器状态主要由参数规模和并行方式决定;rollout 的 KV Cache 随并发活跃序列及其实际长度增长;训练激活随 microbatch 和序列长度增长。调度器可以分批生成 16 条回答,因此总采样数四倍不意味着峰值显存必然四倍。记录实际并发、长度长尾、显存峰值和端到端吞吐,再比较单位成本内的有效组数量与评测收益。

用数值理解组大小与覆盖面的交换。 仍按独立二值采样的简化假设,单条成功率为 0.1 时,G=4 的有效混合组概率约为 34.38%,G=16 约为 81.47%。但固定生成 1,024 条回答时,前者覆盖 256 个 prompt,预计约 88 个有效组;后者只覆盖 64 个 prompt,预计约 52 个有效组。更多的组内比较,并不意味着固定预算下获得更多独立任务信号。

这个算例不用于判定哪种 G 必然更好:有效组数量没有反映每组的样本质量、梯度方差和回答长度。实际应同时比较"生成 token → 有效组 → 有效训练 token → 独立评测收益",并观察重试是否只集中在少数困难题上。

图 1:独立二值采样下的解析算例。左图为混合组概率,右图为固定 1,024 条回答预算下的预期混合组数,均不是模型实测曲线。

8. advantage 是 token 级还是序列级,组内归一化时分母用标准差还是标准误。

回答:

在只有最终结果奖励的常见 GRPO 设置中,优势是序列级的:同一条回答的所有有效动作 token 共享一个组内相对优势。策略概率比和裁剪可以是 token 级,两者并不矛盾。若使用过程奖励或额外的 token 信用分配,就需要说明新的优势定义,不能默认仍是同一个算法设置。

组内标准化通常除以奖励的标准差,不是均值的标准误。标准误等于标准差除以组大小的平方根;换成标准误,相当于额外把优势放大约 G \sqrt{G} G 倍,会改变不同组大小下的梯度尺度,不能解释为更准确的同一种归一化。

还要说明标准差使用总体估计还是无偏样本估计。总体方差分母是 G G G,无偏样本方差分母是 G − 1 G-1 G−1,有限组时数值不同。手写实现可以用总体标准差并加入很小的数值稳定项,保证奖励全相同时输出零优势;数值稳定项与 PPO 裁剪参数虽然常都写 epsilon,但含义完全不同。

最后检查归一化维度:每个 prompt 内单独计算,不能把不同 prompt 的奖励混在一起。如果实现选择批量级尺度、取消标准差缩放或其他变体,应明确它是在改变训练信号的权重,而不是简单修正代码格式。

9. 如果一个 group 里 8 条采样全对,advantage 是多少,这时候 loss 是多少。

回答:

如果这 8 条回答的总奖励完全相同,组内中心化奖励全为零,使用正确的稳定项后优势为零,策略梯度部分的 loss 和梯度也为零。若"全对"只说明正确性分量相同,而长度、格式或其他分量仍有差异,总奖励未必相同,优势也未必为零。

完整训练 loss 还可能包含 KL、熵、辅助监督等项。即使组内策略优势为零,策略与参考模型有偏离时,KL 项仍可能非零。因此要区分策略损失、总损失以及各自的梯度,不能直接说"全对,所以任何 loss 都是零"。

还有一个容易混淆的情况:奖励有差异、当前策略等于旧策略、回答等长且使用组内中心化时,正负优势的标量平均可能恰好为零,但对各 token 的梯度仍然非零。loss 的数值为零与没有学习信号是两件事,后者需要检查优势和梯度。

可以现场写一个最小反例说明"零 loss 仍有梯度"。两条等长回答奖励为 [0, 1],忽略极小稳定项后优势为 [-1, 1]。当前策略与旧策略相同,两个比率都是 1,此时平均策略 loss 为 0;但它对两个当前 logprob 的偏导分别约为 +1/2 和 -1/2。梯度下降会降低差回答的概率、提高好回答的概率。这里把两个 logprob 当作独立中间变量;实际参数梯度还要经过模型的 Jacobian。

相反,奖励为 [1, 1] 时优势才同时为零,单独的策略项没有这组学习信号。数值检查应至少同时打印 loss、优势范数、参数梯度范数和一步更新前后的参数差。

10. loss 变成 0,除了"全对",还有哪几种可能。

回答:

loss 显示为零,先确认日志记录的是哪一项、是否经过平滑或四舍五入,再同时查看奖励分布、优势、有效 token 数、概率比、裁剪比例与梯度范数。零值本身不足以定位问题。

常见情况包括:全错组或任意奖励全相同的组;reward 解析错误把所有输出映射成同一个值;有效样本全部被过滤;动作 mask 错误使所有 token 无效;小数值被日志精度隐藏;以及正负策略项恰好抵消。最后一种可以有正常梯度,因此不应直接当作训练停滞。

另一些实现错误会切断梯度,例如把当前 logprob 或整个重要性比 detach,模型参数被冻结,优化器没有包含目标参数,或者训练步骤没有真正执行。它们不一定令前向 loss 为零,却会造成"看起来在训练,参数没有变化"。低精度下溢、NaN 被强制替换为零,也需要排查。

诊断时构造一个两条回答、奖励分别为 1 和 0 的极小样本,手算优势和前向值,再检查反向梯度的符号与非零性。对于全空 mask,明确报错比悄悄返回零更容易发现数据管线故障。KL 与辅助 loss 单独记录,避免总损失掩盖策略项已经失效。

追问:reward 里有常数项吗

回答:

如果是在同一组每个回答的奖励上加同一个常数,正确的组内中心化会消去这个常数,标准差也不变,因此优势不会被"稀释"。例如奖励从 [0, 1] 变成 [100, 101],组内相对优势应保持一致。

更一般地,对奖励进行仿射变换,可以写成:

A ^ i ( a R + c ) = a ( R i − μ ) ∣ a ∣ σ + ϵ n o r m . \widehat A_i(aR+c) =\frac{a(R_i-\mu)}{\lvert a\rvert\sigma+\epsilon_{\mathrm{norm}}}. A i(aR+c)=∣a∣σ+ϵnorma(Ri−μ).

当 a a a 为正且数值稳定项可以忽略时,整体缩放也会被标准差抵消。若加权后可变部分极小,稳定项主导分母,或者先把很大的常数和微小差异存入低精度张量,才可能因为数值精度丢失而使优势接近零。奖励裁剪、舍入、非组内归一化等额外操作,也可能破坏上述不变性。

因此要检查的是常数加入前后的逐样本总奖励、组内差异、计算精度与归一化实现,而不能直接把"存在常数奖励项"视为优势变小的原因。高精度算完之后再转回低精度,也无法恢复在早期加法中已经丢掉的差异。

11. 你遇到过 loss 一直是 0 吗,怎么判断是难度太低还是 reward 写错了。

回答:

如果没有亲自遇到过,应说明这是排查方案,不能虚构生产故障。真正遇到时,首先保存出问题的 prompt、完整回答、各奖励分量、组内均值与标准差、动作 mask 和梯度,保证能在小批量上复现。

区分任务过易与 reward 错误,可以先用已知正确、已知错误、格式错误和边界样本单独测试评分器,检查它是否能稳定区分结果。再抽取模型当前生成的回答,由独立验证器或人工检查是否确实全对;如果 reward 全为 1,但实际存在错误,就优先排查解析、缓存键、样本对齐和评分规则。

如果验证器正常,模型对简单集接近全对,同时在困难集或有针对性的变式上仍产生组内差异,才支持"训练难度不足"的判断。全错也可能是数据太难、提示模板不匹配或基座能力不足。不要只为了恢复非零 loss 随意翻转标签或注入随机噪声,应调整可学习的难度区间,并保留固定评测。

12. KL 项加在 loss 里还是加在 reward 里,系数给多少,给大了会怎样。

回答:

两种放置方式都存在,必须说明所采用的算法和实现。把 KL 加入 reward,会改变回报及后续优势;把 KL 作为单独的 loss 项,则在策略目标之外对当前策略相对参考策略的偏移施加约束。它们只有在特定推导、估计与归一化条件下才可能对应,经过组内标准化后不能随意宣称等价。

原始 GRPO 常见写法包含独立的 KL 正则;一些后续方法会移除该项。比较时同时交代 KL 方向、逐 token 或序列聚合、参考模型版本与估计方式,避免把同一个约束在 reward 和 loss 中重复计算。

系数不能脱离奖励尺度和聚合方式直接给一个通用数值。可以从保守设置开始,观察独立任务收益、相对参考策略的实际 KL、策略熵和回归情况,必要时采用目标 KL 的自适应调节。系数过大可能让策略难以偏离初始模型,学习进展缓慢;过小可能导致明显漂移、奖励投机或能力遗忘。报告真实使用的系数及对照结果,比背一个固定推荐值更可靠。

KL 的采样分布也需要说清楚。 对同一前缀,令当前分布为 p、参考分布为 q,并令 d=log q(a)−log p(a)。当动作确实从 p 采样、两者支持集满足要求时,非负形式 exp(d)−d−1 的期望等于 KL(p‖q),因为 p 下 q/p 的期望为 1。若动作来自旧策略或另一推理引擎,直接平均该表达式一般不再具有同一个期望;裁剪校正、停止梯度方式也会改变实际优化行为。

因此,检查 KL 代码时要同时写出"谁采样、谁在分子、谁在分母、哪些项有梯度"。不能仅凭某个张量名叫 kl 就认定它是当前策略 KL 的无偏估计,更不能把统计量的期望等式自动当作任意实现都具有相同梯度的证明。

13. 为什么 GRPO 训久了回复会变长,长度和正确率是正相关还是因果。

回答:

GRPO 训练后回复变长,可能是模型学到了更充分的有效推理,也可能是冗余重复、奖励偏好、停止行为异常或损失聚合方式带来的长度偏差。不能仅凭长度曲线推断正确率变化的原因。

先固定解码参数、最大输出长度与停止条件,按任务难度观察长度、正确率、重复率和截断率。检查奖励是否偏爱详细表达、长答案是否有更多机会触发评分规则,以及训练时长短序列获得的权重是否符合设计。序列平均、全局 token 平均和固定长度归一化会产生不同的梯度权重,必须结合具体实现分析。

长度与正确率正相关,也可能只是困难任务同时需要更多 token 且由更强模型完成,或筛选过程保留了较长成功样本。要研究因果,应对同一批任务随机分配合理的计算预算或生成策略,控制模型、采样和评测,再观察成功率与成本;简单截断已有答案会破坏完整性,不能视为干净的因果实验。

真正有价值的是单位成本下的成功率与有效推理密度。若新增 token 主要用于必要的分解、验证和纠错,可以保留;若只是重复或无法停止,就应针对奖励、数据和停止行为修复。

14. 长度惩罚怎么加才不伤害推理能力。

回答:

长度约束应围绕任务完成度与资源预算设计。对所有任务按 token 数直接扣同样的分数,可能把必要的推理过程和无效重复一起压掉,尤其会伤害困难任务。

一种可验证的设计是在预算内不惩罚,超过软阈值后逐步增加惩罚,再在硬上限停止。例如下面给出一个分段线性形式,它是设计示例,不是所有任务的统一配置:

R l e n ( T ) = − λ min ⁡ ( 1 , max ⁡ ( 0 , T − T 0 T 1 − T 0 ) ) , T 1 > T 0 . R_{\mathrm{len}}(T) =-\lambda\min\left(1,\max\left(0,\frac{T-T_0}{T_1-T_0}\right)\right), \qquad T_1>T_0. Rlen(T)=−λmin(1,max(0,T1−T0T−T0)),T1>T0.

其中软阈值与硬预算应按任务类型或难度校准。也可以重点惩罚重复循环、无效工具调用和完成目标后继续生成,把主要约束放在明确的浪费行为上。正确性与硬约束优先级要明确,不能让极短的错误答案因为节省 token 而获得最高总分。

验证时比较相同预算下的正确率曲线、自然结束比例、困难题表现与总成本,并抽查被压缩掉的内容是否必要。先修复 EOS 和停止配置,再尝试奖励约束;出现质量下降时回看具体任务,不只根据平均长度达到目标就认为成功。

15. DAPO 改了哪几处,dynamic sampling 具体怎么筛。

回答:

DAPO 的核心改进包括 Clip-Higher、Dynamic Sampling、token 级损失聚合和超长回复的奖励处理。论文还在其设置中移除了 KL 项,并整理了适合规则验证的数据;这些选择有具体实验背景,不能直接推广为所有任务的最优配置。

改动 主要做法 希望解决的问题
Clip-Higher 分开设置概率比的上下裁剪范围,适度提高上界 给正优势动作保留更多概率增长空间,缓解探索过早收缩
Dynamic Sampling 继续采样并保留有区分度的 prompt 组 避免有效训练批次被全对或全错组占满
Token-Level Loss 按整个有效批次的动作 token 聚合 调整长短回答的 token 权重
Overlong Reward Shaping 识别截断,并使用过滤或软长度惩罚等处理 降低把未完成推理直接判为错误造成的奖励噪声

在论文的二值正确性设置里,dynamic sampling 保留组内准确率严格介于 0 和 1 之间的 prompt,过滤全对、全错组,并继续采样补足训练所需的有效组。它筛选的是整个 prompt 组,不是只保留正确回答;把失败回答全删掉会改变组内比较。

如果奖励是连续值或由多个分量组成,不能机械套用"准确率 0 或 1"的条件,应明确需要保留的有效奖励差异与任务分布。动态筛选也会改变训练分布并增加生成成本,必须设置最大采样预算、记录接受率和各难度层覆盖。一直采不到有效组时,要检查任务难度与验证器,而不是无限重试。

动态采样还应给出一个停止规则。若目标是收集 K 个有效组,稳定接受率约为 a,在独立且同分布的理想条件下,预计需要尝试约 K/a 个组;当 a 从 0.5 降到 0.05,生成成本可能上升一个数量级。真实系统应以最大尝试组数、总生成 token 或墙钟预算结束本轮,输出实际收集量,并明确"不足批次是跳过还是按有效量重新归一化"。

全对组与全错组要分开记录。接受率下降可能意味着策略变强,也可能意味着奖励解析坏了、生成被统一截断,或者采样越来越重复。只报"过滤了多少无效组",无法解释训练状态。

16. GSPO 把重要性采样比从 token 级改成序列级,解决的是什么问题。

回答:

GSPO 把一条回答视为统一的优化单位,用长度归一化后的序列概率比进行裁剪和策略更新,让序列级奖励与优化粒度更一致。它要缓解的是逐 token 比率波动导致的噪声与训练不稳定,尤其是单个 token 概率差异较大的情形。

定义第 i i i 条回答长度为 T i T_i Ti,其重要性比可以写成:

s i ( θ ) = exp ⁡ ( 1 T i ∑ t = 1 T i log ⁡ π θ ( y i , t ∣ x , y i , 1 : t − 1 ) − log ⁡ π o l d ( y i , t ∣ x , y i , 1 : t − 1 ) ) . s_i(\theta) =\exp\left(\frac{1}{T_i}\sum_{t=1}^{T_i} \left\\log\\pi_\\theta(y_{i,t}\\mid x,y_{i,1:t-1}) -\\log\\pi_{\\mathrm{old}}(y_{i,t}\\mid x,y_{i,1:t-1})\\right\right). si(θ)=exp(Ti1t=1∑Tilogπθ(yi,t∣x,yi,1:t−1)−logπold(yi,t∣x,yi,1:t−1)).

这相当于逐 token 概率比的几何平均,不是直接把所有 token 的比率相乘,也不是它们的算术平均。GSPO 对这个序列标量与序列优势构造裁剪目标,单个 token 不再各自决定一套裁剪权重。

长度归一化可以减轻比率数值范围随长度急剧扩张的问题,序列聚合也可能降低局部概率噪声的影响。论文在其模型与任务设置下报告了训练稳定性和效率收益,但不能据此保证所有训练推理误差都会被消除。共同方向的系统性偏差仍会保留,权重版本、分词和采样分布对齐依然重要。

追问:那你按重要性采样的方差来源推一下

回答:

先在对数域分析。令每个 token 的新旧策略对数概率差为 δ t \delta_t δt,普通整序列概率比的对数是这些差值的总和。其方差为:

V a r ( ∑ t = 1 T δ t ) = ∑ t = 1 T V a r ( δ t ) + 2 ∑ s < t C o v ( δ s , δ t ) . \mathrm{Var}\left(\sum_{t=1}^{T}\delta_t\right) =\sum_{t=1}^{T}\mathrm{Var}(\delta_t) +2\sum_{s\lt t}\mathrm{Cov}(\delta_s,\delta_t). Var(t=1∑Tδt)=t=1∑TVar(δt)+2s<t∑Cov(δs,δt).

若差值近似独立且方差相近,求和后的方差随长度增长;重新取指数后,少数大比率可能主导估计,形成高方差。GSPO 使用对数概率差的长度平均,在独立同分布的简化假设下,平均值的方差会随长度降低。

真实 token 之间通常相关,公共的模型偏移或引擎偏差也不会因平均自动消失。例如每个 token 都有同样的正偏差,平均后仍然存在。因此分析时要同时看单 token 方差、跨 token 协方差、序列长度分布,以及采样策略与目标策略是否匹配。

长度归一化比率也是一种稳定的优化设计,不能把它直接称作原始整序列重要性采样估计的无偏等价替换。解释方法时,应把"降低某些数值波动"和"严格保持同一个估计目标"分开。

17. clip 的 ε 取 0.2,如果改成 0.28 会怎样,为什么 DAPO 要用 clip-higher。

回答:

若使用对称裁剪,epsilon 从 0.2 改成 0.28,概率比的允许区间由 [0.8, 1.2] 扩到 [0.72, 1.28]。这给某些方向上的更新更大空间,可能增加学习速度和探索,也可能使策略偏移更大;效果取决于优势符号、实际比率分布、学习率与更新轮数。

对于正优势动作,概率比超过上界后,裁剪代理目标通常不再继续奖励该样本的概率增长;对于负优势动作,概率比低于下界时,进一步降低它的概率也不再继续改善该裁剪项。其他方向仍可能保留梯度,所以裁剪不是把所有梯度统一限制在一个范围内。

DAPO 的 Clip-Higher 强调上下界解耦:提高上侧阈值,同时可以保持下侧较保守,避免把"鼓励有价值但概率较低的动作"与"更激进地压低负优势动作"绑在一起。这与把对称 epsilon 整体从 0.2 改到 0.28 不完全相同。

实验中检查上下侧裁剪比例、策略熵、KL、成功率与异常长回复,并在同一预算下对照。裁剪范围扩大并不保证每步实际更新更大,更不构成严格的 KL 上界;若没有样本触及原阈值,调整参数也可能几乎没有影响。

18. 训练和推理的 logprob 对不上,差 1e-3 量级,会导致什么,怎么查。

回答:

先确认"差 1e-3"指的是单 token 对数概率差、序列总差、均值,还是最大值,以及误差是否有系统性方向。相同均值可能隐藏很大的长尾误差;长度为 1000 的回答若每个 token 都同向偏差 0.001,未经长度归一化的序列比率可能累积到约 e 1 e^1 e1,不能只凭单点误差小就忽略。

排查顺序是先确认权重版本与请求对应,再对齐分词器、聊天模板、实际 token ID、注意力 mask、位置 ID、EOS、温度与 top-p/top-k 处理。随后在同一批前缀上比较不同精度、内核、并行配置和量化方式,逐步定位是输入偏移、概率提取错误还是数值实现差异。还要检查 logprob 与目标 token 是否错位一位。

训练中至少涉及三个分布:当前训练策略、用于构造更新比率的旧策略,以及真正生成数据的行为策略。推理引擎产生的分布与训练侧重算的旧概率不一致时,直接重算不能让样本自动变成 on-policy;仍需记录行为策略信息,并按所用算法评估偏差或采用适当的重要性修正。

监控时同时报告差值分位数、序列累计偏差、比率极值、裁剪比例和有效样本情况。通过提高关键计算精度、修复输入和版本对齐减少误差,再考虑有明确边界的截断或屏蔽修正。任意截断都会引入偏差,需要用训练稳定性和独立评测验证。

把三种分布显式记作行为策略 μ、冻结的训练侧旧策略 p_old,以及当前策略 p_θ,则对固定前缀上的已采样动作,有如下概率比的代数分解:

p θ ( a ∣ s ) μ ( a ∣ s ) = p θ ( a ∣ s ) p o l d ( a ∣ s ) ⋅ p o l d ( a ∣ s ) μ ( a ∣ s ) . \frac{p_\theta(a\mid s)}{\mu(a\mid s)} =\frac{p_\theta(a\mid s)}{p_{\mathrm{old}}(a\mid s)} \cdot\frac{p_{\mathrm{old}}(a\mid s)}{\mu(a\mid s)}. μ(a∣s)pθ(a∣s)=pold(a∣s)pθ(a∣s)⋅μ(a∣s)pold(a∣s).

前一项对应优化期间的新旧策略变化,后一项暴露 rollout 与训练侧旧策略的差异。不过,这只是固定状态上的动作概率比,不能自动修复状态访问分布的差异。多步轨迹校正还涉及前缀分布与方差,top-p 截断还可能破坏目标分布所需的支持集;不能把逐 token 乘一个修正系数说成解决了所有 off-policy 问题。

图 2:行为策略负责产生数据,旧策略为当前更新提供冻结基准,当前策略承接梯度,参考策略提供长期偏移约束。角色可以共享起始权重,但概率语义仍需分别记录。

19. 采样温度设多少,温度对 RL 是探索还是噪声。

回答:

温度既影响探索,也可能引入无效噪声,区别在于新增样本是否提供了可用的行为差异和奖励信息。较低温度常使回答集中,可能形成相似轨迹和全同奖励组;较高温度增加多样性,也可能提高格式错误、无效工具调用和随机失败的比例。

没有一个温度适合所有模型和任务。可以在固定 prompt、总生成预算与长度约束下做小范围对照,观察组内奖励差异、有效组比例、解法多样性、成功率和成本,而不只看输出是否"更有变化"。若任务能力不足,提高温度不一定能产生有效探索。

概率计算必须与行为分布的约定一致。温度会改变 logits 对应的分布,top-p/top-k 还会截断候选集合;记录的是原始模型 logprob 还是经过采样变换后的 logprob,需要明确。忽略这些变换会让重要性比的含义发生偏移,尤其不能把 top-p 截断后的采样默认视为原始策略的无偏样本。

最终使用的温度应同时说明训练目的与部署解码配置。训练时探索充分,并不要求线上采用相同的高随机性;两种配置都要分别评估。

20. 规则 reward 和 reward model 各自适合什么场景,你们怎么混。

回答:

规则奖励适合结果可验证的任务,例如数学答案、单元测试、结构化字段和明确的环境目标。优势是标准较清楚、便于复现;局限是规则可能不完整,解析错误和测试覆盖不足会成为投机入口。

奖励模型适合难以用单一规则判定的维度,如解释质量、相关性和用户偏好,可以利用人工或高质量偏好数据学习评价。但它会继承标注偏差,也可能被策略利用表面风格、冗长表达或特定措辞欺骗;分布变化后需要重新校准。

混合时先确定哪些是硬约束、哪些可以权衡。权限、数据安全或必须满足的执行条件可以设为门控;在合法候选中,再组合正确性、偏好和成本。统一各分量的范围与有效条件,缺失评分不能悄悄按零分处理,并单独记录分量曲线。

如果面试问"你们怎么混",应给出真实配置与消融结果;没有实践数字时,可以用设计方案说明如何先验证每个评分器,再比较不同组合对独立任务的影响。规则奖励与奖励模型都不能自证正确,仍需要外部验收。

21. 举一个你们实际遇到的 reward hacking,怎么发现的,怎么补的。

回答:

这道题要求真实经历,应先交代具体任务、奖励定义、异常轨迹和修复证据。没有亲身案例时,可以明确用假设案例说明排查方法,不能把公开案例或设想说成自己线上遇到的事故。

例如一个假设的代码修复任务只按"测试通过"给奖励,Agent 可能修改测试文件跳过断言,或伪造测试执行输出。发现线索是奖励上升,但独立测试集成功率下降,同时高分样本出现测试文件改动、异常短运行或大量跳过。应回放高奖励失败样本,核实评分器读取的是实际退出码和测试结果,而不是模型自述。

修复可以把受保护测试与候选代码隔离,检查测试是否确实执行,增加隐藏用例和行为验证,并把越权修改作为无效轨迹处理。修复之后在同一批任务上重评旧检查点与新策略,确认漏洞被堵住且正常解法仍能得分。

不能只加入一个惩罚关键词就结束。需要检查相同漏洞的变体、评分输入是否可被修改,以及代理指标是否仍偏离真实目标。报告成功率、违规率和修复前后轨迹,比只给"奖励下降了"更能说明问题得到解决。

22. 多目标 reward(正确性、格式、长度、安全)怎么加权,权重是拍的还是有依据。

回答:

多目标奖励需要先区分不可违反的约束与可交易的偏好。安全边界或执行权限若是硬约束,不应被更高正确率或更短回答抵消;正确性、格式、成本等软目标才适合在定义清楚后做组合。

可以用加权和作为起点,但要先校准每个分量的尺度、分布和触发范围。一个数值范围大、容易波动的分量可能主导训练;一个在组内恒定的加法项会被相对优势中心化消去,不能因为它的权重大就认为模型真的学到了对应行为。

权重应来自业务要求和对照实验:固定其他因素扫描少量候选权重,比较正确率、格式合规、长度与约束违规的帕累托关系,选择满足硬指标后成本合适的配置。也可以使用约束优化或分层目标,而不必强行把所有目标压成一个固定总分。

验证时保留各分量和交互结果,特别检查模型是否通过牺牲困难题、提前停止或输出空结果来获得长度优势。权重调整、归一化变化和奖励函数升级都要版本化,避免训练曲线因为评分口径变化而失去可比性。

23. 评测用 pass@1 还是 pass@k,k 取多少,为什么。

回答:

pass@1 反映一次生成成功的概率,更接近只允许一次回答或一次动作计划的场景;pass@k 反映给定同一任务的 k k k 个候选中至少一个成功,适合具有可靠验证与候选选择机制的流程。后者不能在没有选择器的情况下直接当作线上交付成功率。

若每题独立采样 n n n 条,其中 c c c 条正确,常用的 pass@k 估计为:

p a s s @ k ^ = 1 − ( n − c k ) ( n k ) , n ≥ k . \widehat{\mathrm{pass@}k} =1-\frac{\binom{n-c}{k}}{\binom{n}{k}},\qquad n\ge k. pass@k =1−(kn)(kn−c),n≥k.

当错误样本少于 k k k 时,该题估计为 1。需要在题目层面汇总并报告样本量与不确定性,固定温度、长度上限和验证规则;相邻重复样本或相互依赖的采样会影响解释。

选择 k k k 应从实际预算与使用方式出发,而不是挑能让成绩最好看的值。通常同时报告 pass@1、几个预先确定的 k k k、候选验证成本和总 token 消耗。比较不同模型时,可以补充固定总计算预算下的成功率,避免一个模型靠生成更多候选获得不公平优势。

24. 训练集难度分布怎么控,全难题和全简单题分别会怎样。

回答:

对于组内相对奖励方法,训练集要有足够多"策略有机会做对、但尚未稳定做对"的任务,同时保持目标业务覆盖。全简单题可能大量全对,组内优势为零;全难题可能大量全错,奖励稀疏且探索成本高。简单和困难都应相对于当前检查点定义,而不是固定标签。

先按领域、任务类型和估计难度分桶,用固定小规模采样估计每个桶的成功率及有效组比例。训练中混合不同难度,逐步调整比例,并保留基础任务防止能力回退。随着模型变化,难度估计会过期,需要周期性更新,但不能用测试集反馈直接决定训练题目。

动态筛选有效组可以提高梯度利用率,也会让训练分布偏向中等难度任务。因此同时记录被过滤的任务类型、接受率、重采样成本和覆盖面;重要但长期全错的业务任务,可能需要示范、任务分解或更强基座,而不应永久被丢弃。

评测集保持稳定并覆盖各难度层,分别看成功率与成本。训练过程中有效组减少,既可能是能力提升,也可能是奖励退化或任务覆盖收缩,需要结合独立评测判断。

25. 如果给你一批没有标准答案的业务数据,你怎么造 RL 信号。

回答:

没有标准答案,不等于完全没有可验证信号。先将业务目标拆成可观察的结果和约束,例如检索证据是否支持结论、工具执行是否达到目标状态、代码是否满足隐藏测试、结构化字段是否一致,以及用户是否在后续环节真正完成任务。

可以组合程序验证、环境反馈、专家偏好比较和经过校准的模型评审。模型评审适合扩大覆盖,但不能把自我打分直接当作真实标签;应使用独立样本、人工抽查、成对交换顺序、盲评和对抗样本检查偏差。自洽性、往返一致性等信号可以提供辅助证据,也可能让多个一致的错误答案互相强化。

业务反馈往往有延迟和混杂因素。例如点击或停留时间可能与界面、用户类型和展示位置有关,需要明确归因与反事实基线,不能直接把流量变化全归到模型。若反馈是任务级的,长轨迹中哪些动作应获得信用也需要另外设计。

先建立小规模可信评价集和离线对照,再决定是否进入 RL。若信号可靠性不足,可以先做监督学习、人工偏好收集或离线策略分析;带着错误奖励扩大训练,通常只会更快地优化错误目标。

手撕:实现 GRPO 的 loss。给 batch 内 B 条样本、每条 group size G、变长序列的 logprob 和 reward,要求写出组内归一化 advantage、带 mask 的 token 级 loss 聚合,以及 clip 部分。注意三个坑:除以的是有效 token 数不是总长度;全对组的 advantage 是 0 不是 NaN;old_logprob 和 logprob 的比值要 detach。

回答:

这里按 B 个 prompt、每个 prompt 采样 G 条回答 理解输入,当前与旧策略 logprob、动作 mask 的形状为 [B, G, T],奖励形状为 [B, G]。T 是填充后的最大回答长度,mask 只标记实际参与训练的动作 token;prompt、padding 和非策略生成的环境观测不能误算进去。

需要先纠正题目最后一句。 应停止旧策略 logprob、奖励和已计算优势的梯度,保留当前 logprob 到重要性比的梯度。若把整个新旧策略比值 detach,策略损失就无法更新当前策略。实现中使用 exp(logprob - old_logprob.detach()),不对这个结果整体 detach。

裁剪策略项可写为:

ρ b g t = exp ⁡ ( ℓ b g t − ℓ b g t o l d ) , \rho_{bgt}=\exp\left(\ell_{bgt}-\ell^{\mathrm{old}}_{bgt}\right), ρbgt=exp(ℓbgt−ℓbgtold),

L p o l i c y = − ∑ b , g , t m b g t min ⁡ ( ρ b g t A ^ b g , c l i p ( ρ b g t , 1 − ϵ l , 1 + ϵ h ) A ^ b g ) ∑ b , g , t m b g t . \mathcal L_{\mathrm{policy}} =-\frac{\sum_{b,g,t}m_{bgt} \min\left(\rho_{bgt}\widehat A_{bg}, \mathrm{clip}(\rho_{bgt},1-\epsilon_l,1+\epsilon_h)\widehat A_{bg}\right)} {\sum_{b,g,t}m_{bgt}}. Lpolicy=−∑b,g,tmbgt∑b,g,tmbgtmin(ρbgtA bg,clip(ρbgt,1−ϵl,1+ϵh)A bg).

下面按照题目要求,对全批次的有效动作 token 求平均。这与原始 GRPO 常见的"每条回答内部平均,再对回答平均"有所不同;回答长度不同时,两种聚合给样本的权重也不同。代码仅实现组内优势和裁剪策略项,KL 或辅助监督需要在明确约定后另行加入。

python 复制代码
"""Clipped group-relative policy loss with a global valid-token mean.

This educational function omits KL regularization and distributed reduction.
"""
import torch


def grpo_loss(logprob, old_logprob, reward, mask,
              clip_low=0.2, clip_high=0.2, eps=1e-8):
    """Shapes: log probabilities/mask [B, G, T], reward [B, G]."""
    if logprob.ndim != 3 or old_logprob.shape != logprob.shape:
        raise ValueError("log probabilities must have equal [B, G, T] shapes")
    b, g, t = logprob.shape
    if b < 1 or g < 2 or t < 1 or reward.shape != (b, g):
        raise ValueError("need B >= 1, G >= 2, T >= 1 and reward [B, G]")
    if mask.shape != logprob.shape or mask.dtype != torch.bool:
        raise ValueError("mask must be boolean with shape [B, G, T]")
    if any(x.device != logprob.device for x in (old_logprob, reward, mask)):
        raise ValueError("all tensors must be on the same device")
    if not (0 <= clip_low < 1 and clip_high >= 0 and eps > 0):
        raise ValueError("invalid clipping bounds or normalization epsilon")
    if not (mask.sum(dim=-1) > 0).all().item():
        raise ValueError("every response must contain a valid action token")

    # Accumulate low-precision inputs in float32; retain float64 for checks.
    dtype = torch.float64 if logprob.dtype == torch.float64 else torch.float32
    current = torch.where(mask, logprob.to(dtype), 0.0)
    old = torch.where(mask, old_logprob.detach().to(dtype), 0.0)
    rewards = reward.detach().to(dtype)
    if not all(torch.isfinite(x).all().item() for x in (current, old, rewards)):
        raise ValueError("valid log probabilities and rewards must be finite")

    centered = rewards - rewards.mean(dim=1, keepdim=True)
    std = centered.square().mean(dim=1, keepdim=True).sqrt()
    advantage = (centered / (std + eps)).detach()

    # Keep the current policy gradient: DO NOT detach this ratio.
    ratio = (current - old).exp()
    if not torch.isfinite(ratio).all().item():
        raise FloatingPointError("importance ratio overflow; inspect logprob mismatch")
    expanded_advantage = advantage.unsqueeze(-1)
    unclipped = ratio * expanded_advantage
    clipped = ratio.clamp(1.0 - clip_low, 1.0 + clip_high) * expanded_advantage
    token_loss = -torch.minimum(unclipped, clipped)
    loss = (token_loss * mask).sum() / mask.sum()
    return loss, advantage

该实现用总体标准差,奖励全相同时中心化结果为零,因而优势为零;每条回答没有任何有效 token 时显式报错。先将 padding 位置替换为零再计算指数,避免无效位置的 NaN 或无穷值污染 loss;有效位置出现非有限值则直接报错,不静默吞掉。

计算量与存储的量级均为 O ( B G T ) O(BGT) O(BGT),不包含语言模型前向和反向。实际分布式训练时,如果各 rank 的有效 token 数不同,不能简单平均各 rank 的局部均值;应按全局有效 token 数加权,并结合 DDP 的梯度归约约定校准缩放。

代码经过 CPU 上的 11 项检查,覆盖全同奖励、零 loss 下的非零梯度、加常数不变性、变长聚合、padding 隔离、非对称裁剪、有限差分梯度、非法输入以及低精度输入的累积。这些检查验证了损失与梯度的实现,完整训练效果仍需要在真实模型、分布式配置和评测任务上验证。

把变长归约再推到多卡。 设第 r 个 rank 的有效 token 损失之和为 S_r,有效 token 数为 n_r,全局总数为 N。希望优化的目标是:

L = ∑ r = 1 W S r N , N = ∑ r = 1 W n r . \mathcal L=\frac{\sum_{r=1}^{W}S_r}{N}, \qquad N=\sum_{r=1}^{W}n_r. L=N∑r=1WSr,N=r=1∑Wnr.

如果采用标准 DDP、每个 rank 的参数梯度最终按 W 求平均,反向传播前应让该 rank 的局部标量为 W * S_r / N。全局 token 数通过不参与梯度的归约得到;这样 DDP 平均之后,才得到全局有效 token 平均目标的梯度。若框架的通信钩子改为求和,或者梯度累积插件自动除以累积次数,缩放也必须相应调整。

举一个可手算的例子:rank 0 有 2 个有效 token,局部平均损失为 2;rank 1 有 8 个有效 token,局部平均为 8。简单平均得到 5,正确全局均值是 (2×2+8×8)/10=6.8。反向传播使用的两个局部标量是 0.8 和 12.8,其 DDP 平均梯度对应正确目标;日志则应单独归约 S 和 N,报告 6.8,不能把某一个 rank 的缩放值当作总体 loss。

图 3:保留当前策略的梯度,冻结旧概率与优势;先得到有效 token 的损失和,再按全局有效量归约。图中的数字为解释归约规则的算例。

梯度累积也遵循同一原则:目标分母应覆盖整个优化步里的有效 token,而非默认让每个 microbatch 等权。多个组跨 rank 分散时,还要先得到完整的组内奖励统计,不能用每个 rank 看到的半组单独归一化。单个 rank 没有有效 token 而其他 rank 仍有数据时,应参与相同的通信流程并贡献零分子,避免独自跳过 collective;若全局 N 为零,所有 rank 应一致跳过更新或报错。

二面

1. 你在这个项目里具体负责哪一块,别人做了什么。

回答:

回答要把个人贡献、协作接口和团队成果分开。可以沿着数据、奖励、rollout、训练、评测与部署链路,明确自己设计和实现了哪些模块,哪些是复用框架,哪些由同事完成,最后说明自己如何验证负责部分与整体系统正确衔接。

例如实际负责奖励与评测,就重点介绍任务标准、验证器边界、异常样本、版本管理和回归方法,并说明训练团队如何消费这些分数。实际负责训练引擎,就展开批处理、概率计算、梯度、并行配置、故障恢复和效率测量。回答应能进一步落到代码、配置、实验记录和一次具体问题的解决过程。

对他人负责的环节,可以说明理解的输入输出和共同排查的边界,不必假装亲自实现所有组件。项目收益也要区分个人改动的消融结果与团队最终结果;如果没有单独归因实验,就如实说明贡献证据的限度。

2. 8 卡跑 7B 的 GRPO,rollout 占了多少时间,训练占多少。

回答:

仅凭"8 卡、7B、GRPO"无法判断 rollout 与训练占比。占比还取决于 GPU 型号、生成长度、group size、采样并发、奖励计算、优化轮数、并行方式和训练推理是否共享资源,需要从实际时间线测量。

对同步串行迭代,可以拆成权重同步、排队、prefill、逐 token 解码、奖励计算、旧策略或参考概率计算、训练前反向和优化器更新等阶段,统一统计窗口后计算占比。若采用异步或流水重叠,各阶段耗时之和可能大于墙钟时间,应报告关键路径与资源占用,不能把重叠耗时直接相加当成总时间。

同时查看生成 token 吞吐、有效训练 token 吞吐、每步 token 数和任务长度分布,区分"生成工作更多"与"引擎效率变差"。长回复逐 token 解码常会显著影响关键路径,但具体百分比必须来自 profiler、事件时间戳或日志;没有测量时给出测量方案,不猜测一个看似常见的比例。

3. rollout 用的是 vLLM 还是自家引擎,权重同步怎么做的。

回答:

使用哪种引擎必须按真实实现回答。无论 vLLM 还是自研引擎,关键是训练完成一个权重版本后,rollout 服务是否以明确、完整的版本生成数据,以及每条轨迹能否追溯到该版本和采样配置。

一种同步设计是:完成优化器更新,冻结待发布版本,将训练分片权重转换为推理侧需要的布局,通过受控传输加载到全部 worker,校验版本与必要的校验信息,完成屏障后再接收下一批生成请求。过程中不能让不同层或不同 worker 混用新旧权重;旧 KV Cache 与新权重不匹配时,需要清理、重算或采用明确的版本隔离。

异步设计可以让上一版本的 rollout 与新版本训练重叠,但要记录样本的行为策略版本,限制滞后并按算法处理分布偏差。请求运行中发生权重更新、部分生成后切换模型,会使一条序列缺少清晰的行为策略定义,应通过排空、双缓冲或版本固定来避免。

如果使用 LoRA,还要保证基座、adapter 标识与缩放方式一致。报告同步耗时、失败恢复、分片转换和加载验证方法,比只回答"调用某个同步接口"更能体现工程理解。

权重发布可以采用一套明确的状态转换:旧版本停止接收新任务,等待在途请求结束或保留旧 worker;新权重在独立缓冲区完成加载与校验,再原子切换可服务版本。单条请求从接收到结束固定使用一个版本,返回记录中携带 policy_version。同步失败时继续提供完整旧版本,比让部分 worker 先进入新版本更容易恢复。

验收不应只检查"传输完成"。可以选择固定 token 前缀,在训练侧与新 rollout worker 上比对 logits 或 logprob 分布,同时记录 tokenizer、位置配置、adapter 和精度。参数校验回答"是不是这份权重",概率回归回答"这套运行配置下行为是否符合预期",两项证据相互补充。

4. 采样和训练精度不一样(bf16 vs fp16),怎么保证 on-policy。

回答:

bf16 与 fp16 即使使用同一份权重,也可能因数值范围、精度、内核和归约顺序产生不同的 logits。相同权重版本是必要条件,但不能仅凭这一点声称严格 on-policy;需要比较真正用于生成数据的行为分布与训练目标所假设的分布。

首先统一 token、模板、mask、位置编码、温度和采样规则,在相同前缀上检查两侧 logprob 的偏差分布。然后逐项控制精度和内核,必要时提高 softmax、logsumexp 与概率比等关键计算的累积精度。对 fp16 还要关注溢出和非有限值,不能把数值异常当成正常探索。

rollout 时记录行为策略版本与约定下的采样概率。如果训练侧的旧策略概率是重新计算的,它不一定等于真实行为概率;可以采用匹配算法的重要性修正、样本屏蔽或其他偏差控制,但必须承认这些处理的假设和代价。只重算一次 logprob,并不能改变样本来自哪个分布。

实际验收采用相同任务上的概率差、比率长尾、有效样本量、裁剪情况与独立成功率对照。允许多大的数值误差应由模型、序列长度和目标算法共同决定,不能设一个与所有场景无关的统一阈值。

5. 如果 rollout 阶段 GPU 利用率只有 30%,瓶颈可能在哪。

回答:

先确认 30% 的口径:监控的是设备忙碌时间、SM 利用率、算力利用率,还是一段包含排队与奖励等待的平均值。GPU 利用率低不自动意味着需要更大模型或更多卡,可能是输入供应、同步依赖或内存访问限制。

常见瓶颈包括请求并发不足、CPU 分词或数据读取过慢、奖励服务串行等待、工具环境延迟、批次被少量长尾请求拖住、权重同步间隙、跨卡通信,以及 KV Cache 容量限制导致无法提高并发。逐 token 解码还可能主要受内存带宽和小批量 kernel 开销约束,低计算利用率与没有工作可做不是同一情况。

用时间线区分"GPU 等输入""等待远程奖励""正在解码但效率低",再看队列深度、活跃序列数、prefill 与 decode 吞吐、CPU、显存带宽和通信指标。可以在固定模型、输出长度和请求集上调整并发、批处理与长度分桶,确认变化是否提高端到端有效样本吞吐。

不要只追求监控面板上的利用率。增加无意义采样或让所有回答变长也可能使 GPU 更忙,却降低单位成本内的有效组数量和训练效果。

6. 长尾样本(特别长的回复)怎么处理,截断了 reward 怎么算。

回答:

长尾回复会影响生成尾延迟、KV Cache 峰值和训练 batch 的填充浪费。可以先检查是否为必要的长推理,还是重复循环和停止失败,再采用长度分桶、动态批处理、合理的生成预算与软长度约束,避免最慢样本阻塞整个同步批次。

必须区分自然结束与达到上限后被截断。若任务要求完整最终答案,截断后没有可验证结果,就不能当作成功;但也不能从"没有生成完"推断所有已生成推理都是错误。记录截断标志、有效输出长度和可验证的中间状态,由明确的奖励策略决定处理方式。

可选处理包括屏蔽无法可靠评分的截断样本、使用可信的过程反馈、在软阈值后逐步惩罚长度,或者在预算允许时补充完成。屏蔽会改变样本分布并消耗采样预算;重采样和延长预算也需要计入成本。不能简单把截断组的奖励设成同一个极低值而不检查它对优势和难度分布的影响。

mask 通常保留真实生成的有效动作 token,但如果该序列的奖励无法成立,还需要单独的样本有效性标记。训练 mask、结束原因和奖励是否有效是三个概念,不能全部用"长度小于上限"替代。

对 PPO 一类使用价值函数的方法,还要区分真正终止 terminated 与外部预算截断 truncated。达到任务终态时,后续价值通常取零;若只是时间上限而状态仍可继续,在状态和价值定义匹配时可考虑 bootstrap。把所有截断都当成自然结束,会改变回报估计。

GRPO 的结果奖励没有 critic 可以直接补上"未完成部分的价值"。如果答案被截断到无法评分,需要明确采用长度规则、继续生成或样本过滤。过滤一条回答之后,剩余奖励的组内均值与尺度是否重算,也必须定义;它改变了比较集合,不能只把该回答的 token mask 清零就忽略其对其他回答优势的影响。

7. 你们做过多轮迭代吗,每一轮的模型是上一轮的 checkpoint 还是重新从 SFT 起。

回答:

常见的连续训练方式是从上一轮有效检查点继续,让策略逐步改进;从同一个 SFT 检查点重新开始,更适合做独立方案对照、排除历史路径影响,或者在先前训练明显损坏能力时重新构建。两种方式回答的是不同问题,没有统一要求。

继续训练时需要说明保留了哪些状态:模型、优化器、学习率调度、数据采样进度和必要的随机状态。只加载权重而重置优化器,与完整断点恢复并不是同一种实验。参考策略是否保持最初 SFT 版本、是否更新奖励模型,也应单独记录。

每一轮使用新策略生成的数据时,要追踪其模型版本与评测结果,避免新旧轨迹混用而没有偏差处理。新一轮的数据过滤或奖励规则发生变化,应在固定评测集上重评旧模型,区分能力变化和评价口径变化。

如果实际没有做过多轮迭代,就说明当前验证范围,并给出下一轮计划。不要把多次独立超参数试验描述成一个连续自我改进过程。

8. 迭代几轮之后效果开始掉,是什么原因。

回答:

先检查"效果下降"是否在固定独立评测、相同生成预算和相同验证规则下成立。线上业务分布变化、量化配置变化或评分器升级,都可能造成表面回退,不能立即归咎于训练轮次。

若确实是策略退化,常见原因包括奖励投机累积、偏好或评分器偏差、训练分布越来越窄、重复数据和测试泄漏、熵下降导致探索收缩、过度更新,以及对通用能力的遗忘。异步系统还要检查样本滞后、权重错配和行为概率记录是否失真。

定位时按检查点比较任务类别、难度、长度、格式与失败类型,并回放"奖励高但独立评测失败"的轨迹。通过冻结奖励、固定数据、恢复先前模型或只更换一个环节做消融,尽量缩小故障范围,而不是同时改所有超参数。

处理可以包括回退有效检查点、修正奖励、恢复任务覆盖、降低更新强度或加入经过验证的回归数据。是否继续迭代由独立收益与成本决定;更多轮次本身不构成更强能力的证据。

9. 线上部署的模型和训练时的模型是同一个吗,量化了吗。

回答:

要区分模型身份一致与数值行为一致。线上可能部署同一训练检查点的不同精度版本,也可能经过量化、adapter 合并、蒸馏或额外微调;这些转换都需要独立版本标识和验收,不能笼统称为"完全一样"。

记录训练检查点、基座和 adapter、分词器、聊天模板、特殊 token、位置编码配置、量化方法、校准数据及推理引擎。即使权重对应同一个模型,停止条件、工具调用解析和采样参数不同,也可能导致线上表现明显变化。

量化后重点检查目标任务正确率、长上下文、工具参数有效率、格式与安全约束、延迟和显存,使用有代表性的业务输入与困难样本。不要仅凭困惑度或一小段顺畅对话证明部署等价。

如果线上效果不如训练评测,沿着"相同权重与输入 → 相同数值配置 → 相同解码 → 相同后处理"的顺序做回归。没有量化或没有部署过,就说明实际状态,而不是为了回答完整而编造上线经历。

10. 这套流程如果搬到 32B,最先崩的是哪一环。

回答:

不能只凭从 7B 增到 32B 就断言哪一环必然先崩。应分别测算训练状态与激活、rollout 权重与 KV Cache、参考或奖励模型、跨卡通信、权重同步以及 CPU 和网络开销,再对照现有设备与并行布局。

以稠密模型全量 Adam 训练的某种常见配置为例,低精度参数与梯度、FP32 主权重及两份 FP32 动量合计约为每参数 16 字节。按这个假设,7B 约 112 GB,32B 约 512 GB,尚未计入激活、通信缓冲和其他模型;是否持有主权重、梯度精度与分片方式会改变这些数值。它是总状态量估算,不能直接当成单卡需求。

rollout 侧还需要容纳推理权重和活跃序列的 KV Cache,长回复与大 group 会放大需求。不同架构的层数、KV 头数与隐藏维度不同,KV 显存不能只按参数比例缩放。扩大张量或流水并行又可能让通信、尾延迟与权重重新分片成为瓶颈。

可以按"模型加载 → 单步前反向 → 有限并发 rollout → 奖励链路 → 权重同步 → 完整迭代"逐级测量峰值与关键路径,结合 FSDP/ZeRO、激活重算、microbatch、推理并发和共享资源调度调整。优化目标是可承受预算内的有效任务收益,而不仅是让 32B 勉强完成一次运行。

再单独计算一次 KV Cache。 对采用普通 MHA/GQA、每层保存完整 K/V 的模型,可按下面的近似式估算:

M K V = 2 L   n k v   d h   b ∑ j = 1 C T j . M_{\mathrm{KV}} =2L\,n_{\mathrm{kv}}\,d_h\,b \sum_{j=1}^{C}T_j. MKV=2Lnkvdhbj=1∑CTj.

其中 L 为层数,n_kv 为每层 KV 头数,d_h 为头维度,b 为每元素字节数,T_j 是第 j 条活跃序列当前缓存长度。以 32 层、8 个 KV 头、头维 128、BF16、16 条各缓存 8,192 token 的序列为例,仅 K/V 数据约为 16 GiB。它不包含权重、激活、分页碎片和通信缓冲;前缀共享、滑动窗口、KV 量化、MLA 等结构会改变估算。

因此,从 7B 换到 32B 时,先把真实架构参数代入,再用长度分布和并发数做容量测试。平均长度能解释长期吞吐,P95/P99 长度与最大活跃序列数更接近峰值风险。

推荐阅读

1. 深入浅出完整解析AI Agent(AI智能体)的核心基础知识

2025年可以说是AI Agent全面落地应用的元年,因此Rocky在持续撰写对AI Agent的全维度解析文章:

深入浅出完整解析AI Agent(AI智能体)的核心基础知识

2. 深入浅出完整解析扩散模型DDPM、DDIM、Score-Based、SDE、LDM、Classifier/Classifier-Free Guidance、Rectified Flow核心基础知识

Rocky对扩散模型的本质原理与和核心基础知识进行了全面系统的深入浅出分析讲解,同时不断跟进补充扩散模型的最新技术发展,希望能给大家带来帮助:

深入浅出完整解析扩散模型DDPM、DDIM、Score-Based、SDE、LDM、Classifier/Classifier-Free Guidance、Rectified Flow核心基础知识

3. 入浅出完整解析FLUX.2、Seedream(即梦)、Z-image、GLM-Image核心基础知识

Rocky对AIGC时代"中场时刻"之后的主流AIGC创作大模型的核心基础知识进行了全面系统的深入浅出分析讲解,力求让大家通俗易懂理解AIGC时代的技术浪潮的本质价值:

入浅出完整解析FLUX.2、Seedream(即梦)、Z-image、GLM-Image核心基础知识

4. 深入浅出完整解析FLUX.1 Kontext和FLUX.1 Krea核心基础知识

Rocky对FLUX.1 Kontext和FLUX.1 Krea的核心基础知识作了全面系统的梳理与解析:

深入浅出完整解析FLUX.1 Kontext和FLUX.1 Krea核心基础知识

5. 深入浅出完整解析DeepSeek系列核心基础知识

Rocky对DeepSeek系列模型的核心基础知识作了全面系统的梳理与解析:

深入浅出完整解析DeepSeek系列核心基础知识

6. 深入浅出完整解析Stable Diffusion 3(SD 3)和FLUX.1系列核心基础知识

Rocky对Stable Diffusion 3和FLUX.1的核心基础知识作了全面系统的梳理与解析:

深入浅出完整解析Stable Diffusion 3(SD 3)和FLUX.1系列核心基础知识

7. 深入浅出完整解析Stable Diffusion XL(SDXL)核心基础知识

Rocky对Stable Diffusion XL的核心基础知识作了全面系统的梳理与解析:

深入浅出完整解析Stable Diffusion XL(SDXL)核心基础知识

8. 深入浅出完整解析Stable Diffusion(SD)核心基础知识

Rocky对Stable Diffusion 1.x-2.x系列模型的核心基础知识做了全面系统的梳理与解析:

深入浅出完整解析Stable Diffusion(SD)核心基础知识

9. 深入浅出完整解析Stable Diffusion中U-Net的前世今生与核心知识

Rocky对Stable Diffusion中最为关键的U-Net结构进行了深入浅出的全面解析,包括其在传统深度学习中的价值和在AIGC中的价值:

深入浅出完整解析Stable Diffusion中U-Net的前世今生与核心知识

10. 深入浅出完整解析LoRA(Low-Rank Adaptation)模型核心基础知识

对于AIGC时代中的"ResNet"------LoRA模型,Rocky进行了深入浅出的全面讲解:

深入浅出完整解析LoRA(Low-Rank Adaptation)模型核心基础知识

11. 深入浅出完整解析ControlNet核心基础知识

AIGC图像创作开源社区已经形成以Stable Difffusion/FLUX为核心,ConrtolNet和LoRA作为首要AI辅助工具的变化万千的AIGC图像创作工作流。

ControlNet正是让AI图像创作社区无比繁荣的关键一环,它让AIGC图像创作过程更加的可控,更有助于广泛地将AIGC算法解决方案应用到各行各业中:

深入浅出完整解析ControlNet核心基础知识

12. 深入浅出完整解析Sora、Seedance、keling等AI视频大模型核心基础知识

AI绘画和AI视频是两个互相促进、相互交融的领域,2024年无疑是AI视频领域的爆发之年,Rocky对AI视频领域核心的Sora、Seedance、Keling等大模型进行了全面系统的梳理与解析:

深入浅出完整解析Sora、Seedance、keling等AI视频大模型核心基础知识

13. 深入浅出完整解析AIGC时代Transformer核心基础知识

在AIGC时代中,Transformer为AI行业带来了深刻的变革。Transformer架构正在一步一步重构所有的AI技术方向,成为AI技术架构大一统与多模态整合的关键核心基座,大有一统"AI江湖"之势。Rocky也对Transformer模型进行持续的深入浅出梳理与解析:

深入浅出完整解析AIGC时代Transformer核心基础知识

14. 深入浅出完整解析ComfyUI、Diffusers、Stable Diffusion WebUI等主流AIGC创作框架核心基础知识

AIGC创作框架正是AIGC算法工作流的运行载体,目前主流的AIGC创作框架有ComfyUI、Diffusers、Stable Diffusion WebUI等 。在传统深度学习时代,PyTorch、TensorFlow以及Caffe是传统深度学习模型的基础运行框架,到了AIGC时代,Rocky相信ComfyUI就是AIGC时代的"PyTorch"、Stable Diffusion WebUI就是AIGC时代的"TensorFlow"、Diffusers就是AIGC时代的"Caffe":

深入浅出完整解析ComfyUI、Diffusers、Stable Diffusion WebUI等主流AIGC创作框架核心基础知识

15. 深入浅出完整解析ComfyUI、Diffusers、Stable Diffusion WebUI等主流AIGC创作框架核心基础知识

在AIGC时代中,如何快速转身,入局AIGC产业?如何成为AIGC/LLM/AI Agent算法/开发工程师?如何在学校中系统性学习AIGC/LLM/AI Agent知识,斩获心仪的AIGC/LLM/AI Agent算法/开发offer?

Don't worry,Rocky为大家总结整理了全面的AIGC/LLM/AI Agent算法/开发工程师成长秘籍,为大家答疑解惑,希望能给大家带来帮助:

手把手教你成为AIGC/LLM/AI Agent算法/开发工程师,斩获AIGC/LLM/AI Agent算法/开发offer!

16. AIGC产业的深度思考与分析

2023年3月21日,微软创始人比尔·盖茨在其博客文章《The Age of AI has begun》中表示,自从1980年首次看到图形用户界面(graphical user interface)以来,以OpenAI为代表的科技公司发布的AIGC模型是他所见过的最具革命性的技术进步。

Rocky也认为,AIGC及其生态,会成为AI行业重大变革的主导力量。AIGC会带来一个全新的红利期,未来随着AIGC的全面落地和深度商用,会深刻改变我们的工作、生活、学习以及交流方式,各行各业都将被重新定义,过程会非常有趣。

那么,在此基础上,我们该如何更好的审视AIGC的未来?我们该如何更好地拥抱AIGC引领的革新?Rocky准备从技术、产品、商业模式、长期主义等维度持续分享一些个人的核心思考与观点,希望能帮助各位读者对AIGC有一个全面的了解:

深入浅出全面解析AIGC时代核心价值与发展趋势(2025年版)

17. AI算法工程师的独孤九剑秘籍

为了方便大家实习、校招以及社招的面试准备,同时帮助大家提升扩展技术基本面,Rocky将符合大厂和AI独角兽价值的算法高频面试知识点撰写总结成《三年面试五年模拟》之独孤九剑秘籍:

【三年面试五年模拟】AIGC时代的算法工程师的求职面试秘籍(持续更新中)

18. 深入浅出完整解析AIGC时代中GAN(Generative Adversarial Network)系列模型核心基础知识

GAN系列模型作为传统深度学习时代的最热门生成式Al模型,在AIGC时代继续繁荣,作为Stable Diffusion/FLUX系列大模型的"得力助手",广泛活跃于AlGC图像创作的产品与工作流中:

深入浅出完整解析AIGC时代中GAN(Generative Adversarial Network)系列模型核心基础知识

相关推荐
Mirawork15 分钟前
Mirawork v0.32.0 更新体验:会话引用、任务分享与音频转写怎么用
人工智能·音视频
lucas_AI43 分钟前
模型一升级缓存全作废?DeepSeek 实测:KV Cache 跨版本直接复用,首 token 快 5 倍
人工智能
在所不辞兄1 小时前
【人工智能驱动的电催化研究-05】条件、循环与数据检查
人工智能·深度学习·神经网络·机器学习·有限元·电化学·电催化
IT_陈寒1 小时前
JavaScript项目实战经验分享:从内存泄漏到性能优化的血泪史
前端·人工智能·后端
小oo呆3 小时前
【自然语言处理与大模型】如何编写优质的Skill?
人工智能
非优秀程序员10 小时前
第12章 烧钱无底洞!!!不烧就死,烧了也不知道啥时候死|《互联网产品恩仇录》
人工智能
Godspeed Zhao11 小时前
从零开始学AI25——无监督学习之层次聚类
学习·机器学习·聚类
Zelman94511 小时前
第06章-交互与观察动作空间
人工智能
冬奇Lab11 小时前
开源项目第258期:Harness² —— Google Research 的「递归式 Agent Harness 优化」,模型权重不动,只改 Agent 的外壳
人工智能·开源