百度大模型算法岗一面面经:从 GRPO 训练细节到 CoT 数据集
- 轮次
- 一面
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- 自我介绍。
- 详细介绍简历中的核心项目,梳理整体技术链路与个人负责内容。
- 讲解 Agentic-GRPO 的适用业务场景、解决的核心问题。
- 项目中 GRPO 训练的数据规模、整体训练时长、训练配置概况。
- 红蓝对抗的具体实现逻辑、对抗主体设计,是否采用同一智能体实现。
- Agent 底层依托的基础模型架构。
- GRPO 奖励函数的整体设计思路、维度划分、调优考量。
- Qwen 微调任务的数据量级、数据筛选与配比策略。
- CoT 推理数据集的构建流程与自动化/人工构造方式。
- 自建数据集如何做质量校验、降噪、筛选,保证训练数据可靠性。
- 日常开发主力编程语言,是否掌握其他编程语言。
- 考察 SQL 相关基础知识与实操认知。
- 梳理本科/研究生阶段主修的计算机核心课程。
- 简述熟悉的主流机器学习算法体系。
- 详细讲解交叉熵损失函数的原理、作用、适用场景。
- 数组找最大值。
- 最长公共前缀。
《参考解析》
1. 为什么 Agent 场景需要 GRPO 而不是纯 SFT。 SFT 的监督信号是「这条轨迹是对的」,但 Agent 任务里一条轨迹往往有几十步,最终失败可能只错在某一次工具调用;SFT 无法告诉模型「同样的问题,A 方案 3 步成功、B 方案 8 步绕路,A 更好」。GRPO 让同一个问题采样多条轨迹,用可程序化的奖励(任务是否完成、工具调用是否合法、步数与耗时)在组内比较,把「相对更好」的信号回传给模型,且不需要额外训练 critic,工程上比 PPO 轻。适用边界是「奖励能自动判定」且「有探索空间」:开放式写作、主观评价类任务就不适合直接上。
2. 训练配置要答得出的关键量。 至少覆盖:prompt 数量与采样数(group size)、每条轨迹的最大步数与最大 token、基座模型规模、训练框架与并行策略、rollout 引擎(vLLM/SGLang)与训练的配比、学习率与 KL 系数、总 step 与 GPU 小时。还要能解释瓶颈在哪:rollout 通常比训练更吃资源,长轨迹会让显存和时延飙升,所以要做动态采样、截断和异步 rollout;group 内全对/全错时优势为 0,需要过滤或重采样。
3. 红蓝对抗的实现。 把任务拆成攻击侧和防守侧:攻击侧负责生成诱导性输入(提示注入、越权请求、伪造工具返回),防守侧要在不泄露、不越权的前提下完成合法部分。两侧可以是同一模型的不同角色提示词(成本低,但攻击多样性受限),也可以是不同模型或不同版本(更能暴露真实弱点)。奖励要成对设计:防守成功给正分,但「一律拒绝」要被合法请求的完成度扣分;攻击成功给攻击侧正分,同时把该样本回流进防守侧的训练集。这样系统才会朝「既安全又能干活」而不是「学会拒答」演化。
4. 奖励函数的维度与调优。 维度一般四类:结果正确(答案/工具执行结果与预期一致)、格式合规(结构化输出可解析)、过程高效(步数、重复调用、无效工具、超时)、安全合规(越权、泄露、注入)。调优时注意:① 各维度先归一化再加权,避免量纲差异;② 给「走捷径」设反例惩罚,比如不调用工具直接猜答案、把结果硬编码;③ 奖励判定器要可复现,规则优先,模型判分只做抽样复核;④ 线上指标(任务成功率、人工采纳率、平均步数)要和训练奖励一起看,防止 reward hacking。
5. CoT 数据的构建与降噪。 流程是:收集种子题(真实业务 + 公开题库)→ 用强模型生成多条带推理过程的解 → 用执行器/单测/参考答案校验结果 → 保留正确且过程自洽的轨迹 → 去重去污染 → 按难度和领域分层配比。降噪的重点是「结果校验优先于文本质量」:很多看起来通顺的 CoT 结论是错的;其次做步骤级检查(每一步是否有依据、是否引用了不存在的工具),再做人审抽样估计噪声率。去重不能只用精确匹配,要用 embedding 近邻 + n-gram,否则同一道题换个说法会重复几十遍,模型会过拟合到题目表面。
6. Qwen 微调的数据配比。 常见做法是「通用能力保底 + 领域数据增强」:通用指令数据占一部分防止灾难性遗忘,领域数据(业务问答、工具调用、格式化输出)占大头,再掺少量 CoT 和负样本(错误示范 + 纠正)。筛选上按长度、语言、难度、来源做分层,控制单类不超过某个比例;配比不是拍脑袋,要用小规模消融实验看验证集和线上指标,再逐步放大数据量,观察是否出现「数据翻倍、效果不涨」的饱和点。
7. 基础题。 交叉熵 H(p,q)=-Σp log q,one-hot 时等于 -log q(y),本质是最大似然;它配合 softmax 的梯度形式简洁、收敛稳定,是分类与语言建模的默认损失。SQL 要能写清 join 的区别、group by 与 having 的顺序、窗口函数的使用场景、以及索引为什么能加速。两道手撕都是基础:数组最大值一次遍历、维护当前最大;最长公共前缀以首个字符串为基准逐字符比较,遇到不匹配或越界就截断,复杂度与总字符数同阶。