面灵AI→

百度后训练大模型算法岗一二三面面经

轮次
一面二面三面
时间
2026-10
来源
牛客网

《面试题目》

一面

  1. 详细解释困惑度 PPL 的物理意义;拓展说明模型预训练阶段常见的概率类评估指标与计算公式。
  2. 阐述 Mid-Train 中间训练阶段的核心作用,对比该阶段与预训练、微调阶段在参数配置、训练策略上的差异。
  3. 结合个人论文项目,说明冷启动模块与强化学习 RL 流程之间的过渡设计,拆解整体思路与解决的痛点。
  4. 对比解析 Tag-level 优化方案与 DAPO 算法的核心差异、适用场景优劣。
  5. 手撕代码:实现序列重要性采样、Token 层级重要性采样的算法逻辑。

二面

  1. 多模态长时序数据的采集与构建方案;ViT 视觉编码器与大语言模型 LM 的训练方式,是联合训练还是分步训练?
  2. 分别说明 ViT、LLM 的基础损失函数;多模态大模型训练过程中,视觉编码器是否存在独立损失函数,具体是什么?
  3. 拆解 ViT 完整图像特征计算流程,介绍当前主流的视觉-文本对齐训练策略。
  4. 讲解 MOE 混合专家模型的核心原理,说明项目中路由机制的配置方式,以及专属专家的设计逻辑。
  5. 项目 MOE 模块所使用的 RL 强化学习算法,详细阐述算法底层原理。
  6. 谈谈对 MOE 路由设计的理解;若路由分配未命中目标专家,如何设计惩罚约束策略?
  7. 辨析「单专家对应单一特征场景」的 MOE 架构,与流水线 Pipeline 结构的本质区别。
  8. 手撕代码:实现或推导 ViT 相关 Loss 计算逻辑。

三面

  1. 个人项目 PPT 深度复盘提问。
  2. 谈谈大模型 Mid-Train 训练范式的性能瓶颈与能力上限,以及对大模型后训练整体技术体系的理解。
  3. 职业倾向选择:偏向业务落地还是算法科研?
  4. 无算法手撕环节。

《参考解析》

  1. PPL 的物理意义与同类指标(第 1 题):困惑度定义为交叉熵的指数,PPL = exp(-(1/N) Σ log p(x_t)),直观含义是「模型在每一步平均在多少个等概率候选之间犹豫」——PPL 等于 k,等价于模型每步的不确定度相当于从 k 个词里盲选。它的好坏完全取决于分词粒度:同一个模型换成更大的词表,PPL 会明显下降但并不代表能力变强,所以跨分词器比 PPL 没有意义。同族的概率类指标还有交叉熵(PPL 的自然对数形式,优化时的实际目标)、每字节比特数 BPC 和每 token 比特数 BPT(对分词粒度做了归一,因此比 PPL 更适合跨词表比较)、以及 bits-per-character,文本压缩视角下它就是「无损压缩这段文本需要多少位」。补充一句:这些都是「预测下一个 token」的指标,和下游任务能力只有弱相关,所以现在评估更依赖 benchmark 加人工偏好,PPL 主要用于训练早期的稳定性和异常检测。

  2. Mid-Train 的定位(第 2 题):Mid-Train 是插在预训练与后训练之间的一段继续训练,通常用质量更高、更接近目标任务分布的数据(长文本、代码、数学、领域语料),有时会同步扩上下文窗口、调 RoPE 的基频或做退火式学习率衰减。和预训练比,它的数据量小一到两个数量级、数据质量高、学习率更小并持续衰减、通常不改变模型结构,目标是让模型在进入对齐之前先具备目标分布上的基础能力。和后训练比,它仍然是纯下一个 token 预测的自监督目标,不做偏好优化、没有奖励模型、也不引入对话格式——换句话说 Mid-Train 改的是「底座的知识与分布」,后训练改的是「行为与偏好」。面试里值得展开的取舍是:Mid-Train 数据配比影响很大,某一类占比过高会让模型能力偏斜,而且它很容易被当成「多做一轮预训练」,收益边界要靠在固定评测集上看曲线来判断。

  3. Tag-level 与 DAPO 的差异(第 4 题):把两者放在「优化粒度」这条轴上比就清楚了。Tag-level 类方案把序列里的特定标记(如工具调用标签、思考标签)单拎出来加权或单独优化,粒度更细、目标更聚焦,好处是信噪比高、容易定位到具体行为,代价是人为切分可能破坏整条轨迹的因果性,且需要额外的标注或解析来识别 tag,工程上更贴规则。DAPO 属于对 GRPO 一类策略梯度方法的工程改良,核心是放宽裁剪区间并解耦上下界(clip-higher,缓解熵崩塌让模型保留探索)、按 token 级算损失并过滤掉全对全错的样本组(动态采样,避免零梯度浪费)、以及用长度惩罚替代对总损失的归一,让长回答不再被系统性偏袒。所以差异在层级上:一个是「对哪些 token 下更重的功夫」,一个是「整条轨迹的梯度怎么算更稳」。适用场景上,行为可被显式标记、任务边界清晰时 Tag-level 更直接;通用的推理能力提升、样本对错差异大时,DAPO 这类稳定化改造更划算,实践中两者并不互斥。

  4. 重要性采样为什么要手撕(第 5 题):这道题考的是「你知不知道 off-policy 的梯度从哪来」。序列级重要性采样的比值是 π_θ(y|x) / π_old(y|x),也就是整条回复所有 token 概率的乘积,它给整条轨迹一个统一权重,方差大但实现简单;token 级则是每个 token 各算各的比值再逐个相乘或加权,粒度细、方差更小,但会引入偏差,而且长序列上比值连乘容易数值下溢,实现里要取对数再累加、并做裁剪或做长度归一。写代码时面试官真正看的是三点:有没有用对数域算避免下溢、有没有对比例做 clamp 防止梯度爆炸、以及 off-policy 数据与当前策略差多少算超出可用范围。

  5. 视觉编码器有没有独立损失(第 2 题):要区分阶段回答。纯对比预训练(CLIP 式)阶段,视觉塔和文本塔各自被 InfoNCE 对比损失训练,这是独立的;进入多模态大模型训练后,主流做法是视觉塔用预训练权重初始化,对齐阶段冻结或只训投影层,此时视觉塔没有自己的损失,梯度通过语言建模损失回传到投影层;如果做的是理解加生成的统一模型,会额外加扩散或重建类的生成损失(如 MSE 或扩散噪声预测损失),视觉侧才有独立的项。所以标准答案是「取决于训练阶段和是否带生成目标」,笼统说「有」或「没有」都会被追问。

  6. MOE 路由与未命中专家的惩罚(第 6 题):路由的核心是门控网络对每个 token 打分、取 top-k 专家,然后按门控权重加权求和。真正要讲的是负载均衡:如果放任模型自己选,会出现少数专家被过度使用、其余专家长期收不到梯度(路由崩塌),所以训练时会加辅助损失——最常见的是把「各专家被选中的频率」与「门控概率的均值」做点积再乘专家数,鼓励两者都趋于均匀;也有用 z-loss 稳住门控 logits 的做法。至于「未命中目标专家」的惩罚,思路是引入一个目标分布或先验(比如按特征类型指定的专家归属),对偏离的部分加 KL 或加负向奖励,让门控在均衡约束之外额外受语义约束。要补一句 capacity 的副作用:设了专家容量上限后,超出的 token 会被丢弃或走残差,这本身就是隐式惩罚,设计时要说明丢的是哪些 token、会不会伤长尾能力。