微调数据从哪来?怎么保证质量?多少条够?
谁在问:二面必问;有落地经验的面试官用它筛"真攒过数据集的人"
口语化问法
- 你们微调用的数据是怎么来的?标了多久、几个人标的?
- 多少条数据才够?你怎么判断数据量到位了?
- 怎么保证数据质量?验证集是怎么切的?
考察意图
这题看着像常识题,实际是本章性价比最高的筛子:
- 有没有真攒过数据集。真攒过的人会主动讲判准、讲一致率、讲去重,而不只是讲"从业务库里导的"。
- 评测集怎么切。绝大多数候选人会说"随机切 10%"——这是本题最有效的一刀,因为同源随机切的评测集只能自证,证明不了泛化,更抓不到遗忘。
- 成本重心放在哪。把微调成本讲在 GPU 上的人,八成没自己组织过标注。
参考答案
60 分答案(及格线)
数据来源主要有几种:业务历史数据(工单、客服对话、审核记录)、人工标注、用大模型合成,以及公开数据集。
质量保证上:去重、清洗掉明显有问题的样本、人工抽检、保证类别分布均衡。
数量上要看任务:简单的分类任务几百条可能就够,复杂的领域任务通常要几千条。业界的共识是质量比数量重要,几百条精挑的数据可能比几千条粗糙数据效果更好。
会切出一部分做验证集,一般 10% 到 20%。
该说的都碰到了,及格。但没有可执行的动作(怎么去重、怎么定判准、怎么切),最后一句"随机切 10%"还会在追问里翻车。
90 分答案(有生产经验的回答)
我按一条流水线做,四步:来源 → 判准 → 体检去重 → 切分。
① 来源,优先级从高到低:线上真实 query + 人工修正 > 历史业务数据 > 大模型合成 > 公开数据集。核心判据是分布贴不贴近线上。 公开数据集训出来的模型在自己的线上分布上通常水土不服。合成数据可以用,但只用来补覆盖度不足的长尾,不用来凑总量。
② 判准先于标注——这是最容易跳过、代价最大的一步。 判准没定清楚,标注员会退化到用表面特征做判断:长度、有没有小标题、语气客不客气。我们踩过一次:做偏好数据时判准写的是"选更好的那个",结果 chosen 比 rejected 平均短 40%,训完模型学到的是"更短"不是"更好",复杂问题开始敷衍。
所以现在的流程是:判准写完 → 让两个人各标 50 条 → 算一致率 → 一致率上不去先改判准,而不是加标注量。
③ 体检去重,至少三件事:
- 近重复剔除(embedding 或 MinHash)。重复样本会让模型在那个模式上过拟合,还会让评测虚高。
- 分布体检:把长度、类别占比、来源渠道、时间跨度打出来。任何和预期不符的系统性倾向都会被原样学进权重。 这现在是我们开训前的固定脚本。
- 边界覆盖检查:每个主类别至少 20–30 条,且必须含"差点就是另一类"的边界样例。模型学不会边界,是因为你没给边界。
④ 切分:评测集必须与训练集异源。 这是我最想强调的一条。从同一批数据随机切 10%,切出来的是同一批标注员、同一时间段、同一采样口径的数据,它只能证明模型拟合了这批分布。正确做法是三条至少满足两条:
- 时间上晚于训练集(防信息泄漏,也检验对新分布的适应)
- 由不同的人标注(检验判准可复现,而不是某个标注员的个人习惯)
- 另加一份"任务外"的通用能力评测集(专门抓灾难性遗忘)
第三条经常被忽略,但它救过我们一次:一个工单分类微调,任务准确率 82% → 94% 很漂亮,上线后模型把所有输入都当工单分类,问它"帮我润色这段话"它回一个类别名,MMLU 掉了 11 个点。同源切的评测集永远看不到这个。
多少条够(截至 2026-08 的经验区间):
| 任务类型 | 建议条数 |
|---|---|
| 分类 / 路由 | 每类 100–300(有实测:8B 模型 5 类共 150 条 LoRA 到 92%) |
| 结构化抽取 | 200–500,schema 复杂取上限 |
| 内容生成(文案 / 摘要) | 500–2000 |
| 复杂领域适配(医疗 / 法律 / 技术支持) | 1000–5000,通常还要配复演数据 |
| 厂商侧下限 | OpenAI SFT 最低 10 条、建议 50 条起看效果 |
共识是质量压倒数量:200 条精挑通常打得过 2000 条粗收。 数据不够时的正确动作是提高每条的质量和覆盖度,不是合成一批凑数。
最后一句关于成本:7B 的 LoRA 微调几小时、几百块钱,真正贵的是"谁来标这 1500 条、标多久、判准谁定"。把微调成本讲在 GPU 上,是把账算错了。
追问链
数据不够怎么办?用大模型合成行不行?
期望可以,但有边界:合成适合补覆盖度(长尾类别、边界样例、格式变体),不适合凑总量 —— 合成分布来自教师模型而不是你的线上,凑得越多偏得越远。必须配拒绝采样过滤(采样 N 次后用规则或判分器筛,只留通过验证的),否则教师的错误率原样烧进学生;合规上还要看训的是不是同类通用模型信号能区分「补覆盖度」和「凑总量」→ 真用过合成数据;答「让 GPT 生成一万条」→ 没做过,或做过但没测过效果怎么定判准?两个标注员标得不一样怎么办?
期望判准要写成可操作的规则 + 正反例,不是形容词。不一致时先算一致率(Cohen's kappa/Krippendorff's alpha),再看不一致集中还是分散:集中 → 改判准(那类样本没写清);分散 → 培训或换人。绝不用多数投票直接盖过去,那会掩盖判准的模糊信号说得出「先看不一致是集中还是分散」→ 组织过标注;答「取多数意见」→ 没意识到不一致本身是信号评测集你怎么切?
期望不能从训练集随机切。三条标准 —— 时间靠后、标注员不同、另加一份通用能力集 —— 至少满足两条。评测集还要冻结:不能因为某次分数难看就去改它,那等于没有基线信号答「随机切 10%」且没有补充说明 → 基本可判定没做过严肃评测;主动提「另加通用能力集抓遗忘」→ 踩过遗忘的坑业务数据里有隐私和脏东西,你怎么处理?
期望脱敏在入数据集前做,不是入模后补 —— 训进权重就拿不出来了;PII识别后替换为占位符,且占位符形态要与线上一致,否则分布对不上;敏感样本剔除要留记录,避免无意中剔掉整个类别造成分布倾斜;用外部标注要走数据出域审批信号说得出「脱敏必须在入数据集前」和「占位符形态要和线上一致」→ 真处理过;只答「做脱敏」→ 泛泛业务方只给 200 条数据、两周出结果;两周后不如 few-shot 基线,怎么向上汇报?
期望先判 200 条够不够:2–3 类分类可能真够,复杂生成肯定不够,不够就直说,别硬跑一轮 → 第一周不训练:挑 50 条最有代表性的做评测集、150 条训练,跑few-shot基线 → 第二周训练 + 对照 → 不够时靠重写提质、补边界,别合成凑 2000 条 → 汇报写「当前数据量下相对基线无稳定增量,交付物是 50 条评测集 + 可复现基线」信号直接开训、两周后报一个没有基线对照的数字 → 最常见也最扣分;第一周不训练、先做评测集和基线 → 本题最强信号
评分要点
- 能给出四步流水线(来源 / 判准 / 体检去重 / 切分),而不只是列数据来源
- 强调判准先于标注,并知道判准缺位会导致标注退化到表面特征
- 知道要算标注一致率,并知道不一致的分布形态是信号
- 知道评测集必须与训练集异源(本题核心)
- 知道要另加一份通用能力评测集抓遗忘
- 能给出按任务类型分档的数据量区间
- 知道质量压倒数量,数据不够时提质量而不是合成凑数
- (加分)知道近重复剔除和分布体检的具体做法
- (加分)知道微调成本大头在标注不在算力