HKGAI LLM — 项目深挖防守稿
项目:香港本土大模型(sovereign LLM)全生命周期研发
时间:2023年12月 – 2024年09月
角色:核心成员(数据工程 / post-training 对齐 / 评测)
技术核心:数据过滤流水线 + Evolve-Instruction 增强 + SFT 分布匹配 + DPO 价值对齐 + HKMMLU 评测体系
面试权重:★★★
来源:CV;未做一手考证
相关知识点:01-fundamentals/02-post-training/data-engineering.md、catastrophic-forgetting.md、01-fundamentals/05-agent-evaluation/benchmarks.md
1. 三十秒叙事#
「香港本土大模型项目,我作为核心成员负责从数据工程 → post-training 对齐 → 评测的全链路。
三块具体工作:数据侧 —— 构建面向香港本地语境的数据处理流水线,低质量样本过滤率 76%,用 BERT 做有害内容过滤、GPT-4 做知识性质量校验;训练侧 —— 设计拟合预训练分布的 SFT 策略,通过在语料里混入 10% 通用数据缓解灾难性遗忘,然后用 DPO 做价值对齐;评测侧 —— 参与构建 HKMMLU,含 4 大类 66 个学科共 26,698 道多选题。」
为什么这么开场:覆盖了 post-training 的三个核心环节,而且每个都有可挖的细节。面试官最可能咬住的是 76% 过滤率(怎么算的?)和 10% 通用数据(为什么是 10%?)—— 这两个你都要有口径。
2. 架构与关键决策#
2.1 数据过滤为什么用两级(BERT + GPT-4)#
两种过滤器的成本结构和能力边界完全不同,组合使用是刻意的设计:
| 过滤级 | 用什么 | 擅长什么 | 为什么不用另一个 |
|---|---|---|---|
| 第一级:安全/有害内容 | BERT 分类器 | 涉黄涉暴这类模式明确的判定 | 这类判定不需要世界知识,用小模型做又快又便宜,可以扛住全量数据的量级 |
| 第二级:知识性质量 | GPT-4 校验 | 需要世界知识判断内容是否准确、是否有意义 | BERT 没有世界知识,判不了「这段文字内容是否正确」 |
核心工程思想:先便宜后贵。用轻量模型把明显不合格的廉价地筛掉,只把剩下的送给昂贵的模型。这直接把 GPT-4 的调用量压到可承受范围。
76% 过滤率的含义要说清:这是两级过滤合计的淘汰比例,不是单级。被问到时必须能区分。
2.2 Evolve-Instruction:为什么要做数据增强#
原始语料的指令多样性不足 —— 同一个知识点往往只有一种问法。模型见到的问法单一,泛化就差。
Evolve-Instruction 的做法是在保持语义答案不变的前提下,演化出多种问法(改措辞、加约束、转视角、加难度)。收益是指令多样性提升,让模型学到「同一个知识点的多种提问方式」都该产生正确回答。
要能说清的取舍:增强会引入噪声(演化过程可能改变语义)。所以增强后的数据需要质量回检,不能无脑扩。
2.3 偏好数据用三元组形式#
DPO 的训练输入是 (prompt, chosen, rejected) 三元组。这里的关键设计点是 rejected 的选择:
- 不能用随机负例(模型学不到有用的偏好方向)
- 要用有信息量的负例 —— 即"在目标维度上与正例有差异"的回答
对价值对齐场景,「过于空泛」「回避问题」「格式不合规」这类都是有效的 rejected 来源。三元组的质量决定 DPO 的方向,这一点比数据量重要得多。
2.4 SFT 为什么要「拟合预训练分布」#
这是本项目最值得讲的技术判断之一。
问题:SFT 数据量远小于预训练数据。如果 SFT 数据的分布(语言、领域、长度、风格)与预训练数据偏离过大,模型在适配这个新分布时,会改写已有的知识表示 —— 表现为通用能力退化,也就是灾难性遗忘的一种机制。
对策:让 SFT 数据的分布尽量贴近预训练分布,只在必要维度上做偏移。这样模型是在「微调」而不是「覆盖」。
为什么混入 10% 通用数据:把这 10% 通用数据当作锚点 —— 它在训练中持续提醒模型「原来的能力也要保留」,防止所有参数都朝 SFT 数据的方向漂移。这是 replay(回放)思路在 SFT 阶段的应用。
⚠️ 「为什么是 10% 而不是 5% 或 20%」这个问题一定要准备。 诚实的答法:这是一个经验性超参,通过小规模消融实验选定 —— 比例太低锚不住(遗忘仍然明显),太高则 SFT 效果被稀释(目标任务学不好)。能说「这是调出来的,不是推导出来的」,比假装有理论依据更可信。
2.5 DPO 做价值对齐#
在 SFT 之后用 DPO(Direct Preference Optimization) 做价值对齐。选 DPO 而不是 PPO 的理由要说清:
| 维度 | DPO | PPO/RLHF |
|---|---|---|
| 需要奖励模型 | 不需要 | 需要单独训练 |
| 训练稳定性 | 高(离线、目标函数简单) | 低(在线 RL,超参敏感) |
| 显存占用 | 低(策略 + 参考模型) | 高(策略 + 参考 + 奖励 + 价值网络) |
| 能力边界 | 只能朝偏好数据覆盖的方向走 | 能探索偏好数据外的区域 |
对这个场景(偏好明确、数据可控、算力有限),DPO 是更务实的选择。
2.6 HKMMLU:评测体系怎么建#
构建了 4 大类、66 个学科、26,698 道多选题的区域化评测集。
为什么需要区域化 benchmark:通用 benchmark(如 MMLU)测的是通用知识,测不出模型对本地语境、本地制度、本地常识的掌握。一个模型在 MMLU 上很高,不代表它能正确回答本地相关的问题。
面试要能答的细节:
- 学科和类别是怎么划分的(按什么维度覆盖)
- 题目从哪来、怎么保证质量(人工审核?双人标注?)
- 怎么防止数据污染(模型预训练时见过这些题)
最后一点尤其尖锐 —— 如果被问「你怎么知道模型没见过这些题」,要能讲出去重和留出策略。即使当时做得不完美,能意识到这个问题本身就是加分。
3. 面试官会怎么往下挖#
第一层:澄清#
Q:76% 过滤率是怎么算的?
要点:两级过滤合计淘汰比例(被淘汰样本数 / 总样本数)。要能区分单级贡献,并说明「低质量」的定义标准是什么 —— 这个定义本身决定了这个数字的含义。
Q:你具体负责哪部分?
⚠️ CV 写的是「核心成员」。如实划边界。如果你主导了数据工程和 SFT 策略,就说清;评测部分如果是参与,就说「参与构建」。主动划边界是加分,含糊其辞是减分。
第二层:技术细节#
Q:为什么第一级用 BERT 而不是也用 GPT-4?
要点:成本与能力的匹配。有害内容判定是模式识别任务,不需要世界知识,小模型足够且能扛全量数据的吞吐和成本。全用 GPT-4 在经济上不可行。这是典型的「级联分类器」设计。
Q:SFT 混入 10% 通用数据,这个比例怎么定的?
⚠️ 必问。 答:经验性超参,通过小规模消融实验选定。太低锚不住(遗忘仍明显),太高稀释 SFT 效果。不要编理论依据。
Q:怎么衡量灾难性遗忘?换句话说,你怎么知道模型「变笨了」?
⚠️ 这题非常关键,答不好前功尽弃。 要点:需要留出的通用能力评测集,在 SFT 前后各跑一次,看通用能力的下降幅度。同时用 HKMMLU 看目标能力的上升。两个指标一起看 —— 只看目标能力上升而不看通用能力下降,是典型的「以为自己训好了」。
更高阶的答法:除了评测集,还可以看输出分布的变化(如困惑度在某些通用语料上的漂移)。
Q:Evolve-Instruction 增强后的数据怎么保证语义没被改坏?
要点:增强会引入语义漂移,所以需要质量回检(人工抽检 + 自动一致性校验)。要承认增强是有损操作,不能无脑扩。
Q:DPO 和 SFT 的关系?为什么先 SFT 再 DPO?
要点:SFT 负责能力与格式(让模型能产出合格式的回答),DPO 负责偏好与价值(在两个都合格式的回答里选更符合要求的)。没有 SFT 建立的合理起点,偏好数据里的 chosen/rejected 差异就无从体现。
第三层:评测与严谨性#
Q:HKMMLU 怎么防止数据污染?
⚠️ 最尖锐的一问。 要点:题目去重(与预训练语料比对)、时间切分、以及用改写方式生成不易检索的变体。如果当时没有严格的污染检查 —— 承认它,并说清「如果重做会怎么做」。
Q:26,698 道题的标注质量怎么保证?
要点:学科分类标准、多人标注与仲裁机制、以及抽样复核。要说明错误的标注会直接污染评测结论。
Q:一个模型在 HKMMLU 上分数很高,能说明什么?不能说明什么?
考察评测素养。能说明:在多选题、知识回忆层面对本地内容的覆盖好。不能说明:生成质量、指令遵循、推理能力、安全性、以及在真实对话场景中的表现。多选题 benchmark 的局限必须能主动指出。
第四层:反思#
Q:如果重做这个项目,你会改什么?
建议方向:① 数据污染的检查做得更严格;② 10% 这个比例用更系统的搜索而不是粗调;③ 过滤器的评估本身需要 benchmark(怎么知道 BERT 过滤器判对了?);④ 遗忘的度量应该更细粒度(分能力维度而不是整体)。
Q:合成数据(GPT-4 校验/生成)会不会让模型带上 GPT-4 的偏置?
这是个很深的问题。要点:会 —— 用强模型做数据会引入其分布特征和偏置。缓解方式:人工抽检、用多个来源交叉、以及最终用人工偏好数据校准。能主动提出这个问题非常加分。
4. 线上故障复盘#
米哈游面经:「所有技术点必须绑定业务场景 + 线上问题 + 量化结果」。这一节按
README.md《故障题的四段结构》准备。⚠️ 下面三类是这套流水线必然会长出来的故障(由设计推导),不是替你编的经历。你要做的是把每一类对应到自己真实遇到的那一次;确实没遇到的,就如实说没遇到,再讲你为它加了什么预防。
这个项目没有「线上服务」意义上的故障 —— 它的故障形态是训练侧与评测侧的静默错误:不报错、指标还好看、但结论是错的。这本身就是一句值得主动说的话。
| # | 故障类型 | 现象(先给可观测的表象) | 该往哪查 | 修法与复盘要点 |
|---|---|---|---|---|
| 1 | 过滤器误杀(76% 那一步吃掉了有用的数据) | SFT 之后模型在某些学科或语域上明显变弱,但整体指标没掉 | 按类别统计被淘汰样本的淘汰率;人工抽检被丢弃的样本,看是否成片误杀 | 分级阈值按类别调整;给过滤器本身建评测集(人工标注的「该留/该丢」样本)。复盘:我们当时只评了过滤后的模型,没有评过滤器 —— 一个不可评测的环节等于不可控 |
| 2 | DPO 把安全能力以外的能力一起压掉 | 拒答减少(预期内),但通用问答的流畅度 / 长度也退化 | 检查 chosen / rejected 的差异维度是否过宽 —— 负例里混进了「质量差」而不只是「该答不答」 | 收紧负例构造,只保留目标维度差异;SFT 前后 + DPO 前后都跑留出的通用能力集做对照。复盘:偏好数据的负例决定了优化方向,负例选错就是在训另一件事 |
| 3 | 评测集污染导致结论虚高 | HKMMLU 涨幅异常大,且与人工抽检的体感不符 | 与预训练语料比对去重、按时间切分、检查题目是否可被检索到 | 去重 + 严格留出 + 生成不易检索的改写变体。复盘:「涨幅异常」本身就是信号 —— 正常的能力提升不会那么陡 |
面试官还会接着问#
Q:你怎么知道数据流水线今天没出问题?
这是「数据侧可观测性」的问题,很多人答不上。可讲的:入库/出库量比、按类别的淘汰率曲线(分布突变比总量下降更早暴露问题)、随机抽样的人工复核队列。要点是承认:数据流水线通常是最缺监控的一环,因为它的产物是文件而不是服务。
Q:这一轮训练完了,你凭什么说比上一版好?
组合证据,不能只看一个数:① 目标能力(HKMMLU)上升;② 通用能力(留出集)不降;③ 人工抽检的体感一致;④ 输出分布没有塌(长度、重复率、拒答率的分布)。只看 ① 就是典型的「以为自己训好了」。
5. 数字口径速查#
| 数字 | 口径必须说清 |
|---|---|
| 76% 过滤率 | 两级合计淘汰比例;「低质量」的判定标准;分母是什么(总样本?按 token 还是按条?) |
| 10% 通用数据 | 经验性超参,消融实验选定;分母是训练语料的总量 |
| 26,698 道题 / 66 学科 / 4 大类 | 注意 CV 用词是「参与构建」—— 如实描述你的角色 |
| DPO | 与 SFT 组成两阶段;选 DPO 而非 PPO 的理由是稳定性与成本 |
⚠️ 76% 和 10% 是最容易被追问的两个数字,务必先想清楚口径再开口。
6. 红线#
不要 claim:
- ❌ 不要把「核心成员」说成「我一个人做了全部」。这个项目规模大,被问细节时明确说边界是加分。
- ❌ 不要给「10% 是有理论依据的」这种假解释。
- ❌ 不要声称 HKMMLU 是公开 benchmark 且只由你构建 —— 如实说参与程度。
- ❌ 不要声称解决了灾难性遗忘(这是开放问题,只能说「显著缓解」)。
要主动说:
- ✅ 主动讲「两个指标一起看」(目标能力上升 + 通用能力不降)—— 这体现评测素养。
- ✅ 主动承认数据污染是这类评测的固有风险。
- ✅ 主动讲两级过滤的成本思想(先便宜后贵)。
- ✅ 主动提一个具体的失败复盘(见 §4)。这个项目的故障形态是静默的(不报错、指标还好看、但结论错),能说清这一点本身就是深度。
7. 自测#
1. 你如何证明「混入 10% 通用数据缓解了灾难性遗忘」?需要什么对照组?
答案要点
需要留出的通用能力评测集,在相同 SFT 配置下对比「混入 vs 不混入通用数据」两组:通用能力下降幅度显著更小,同时目标能力(如 HKMMLU)不明显下降,才能支撑结论。只有目标能力上升而没有通用能力的对照,说明不了遗忘被缓解。
2. 为什么数据过滤用 BERT + GPT-4 两级,而不是全用 GPT-4?
答案要点
成本与能力匹配。有害内容判定是模式识别任务,不需要世界知识,轻量分类器即可且能扛全量吞吐;知识性质量校验需要世界知识,必须用强模型。先便宜后贵的级联设计把昂贵模型的调用量压到可承受范围。
3. 面试官问「HKMMLU 的题模型是不是见过」,你怎么答?
答案要点
诚实说明风险并讲缓解措施:与预训练语料做去重比对、时间切分(题目晚于预训练截止)、生成检索不易命中的改写变体。若当时检查不严格,坦承局限并说明重做会如何改进。主动承认是加分,硬说「绝对没有污染」不可信。
4. 模型在 HKMMLU 上分数很高,能推出什么结论?不能推出什么?
答案要点
能推出:对本地知识的覆盖较好(多选题、知识回忆层面)。不能推出:生成质量、指令遵循、多轮对话能力、推理能力、安全性。多选题 benchmark 只覆盖知识回忆这一窄维度,不能代表综合能力。
5. 用 GPT-4 生成/校验数据会带来什么风险?怎么缓解?
答案要点
会把 GPT-4 的分布特征与偏置引入训练数据(风格、价值倾向、错误模式),造成模型行为向教师模型收敛。缓解:人工抽检、多来源交叉、最终用人工偏好数据校准,并对教师模型的输出做独立质量评估而不是默认可信。