不少人在做数据整理或模型压缩时会把这两件事混着叫:明明想给一批文本自动分组,却被推荐去「蒸馏一个模型」;明明想让小模型继承大模型能力,却被建议「先做个聚类」。这篇不绕概念,直接从目标、输入输出、产物形态三处对照,给你一张能照着判断的对照表和落地顺序,并说明哪些情况下这两条路都不合适。
很多人把这两件事混着叫,是因为都能用「一堆数据进、一堆结果出」来描述,但落脚点完全不同。聚类是在数据里找分组,蒸馏是把一个已经训好的模型的输出习惯搬到另一个模型上。前者做完你得到的是一份分组结果,后者做完你得到的是一个新模型。混淆的代价不小:想给语料自动分堆却被推荐去蒸模型,白搭一轮训练;想让小模型承接大模型能力却被建议先聚类,最后拿到的只是几个簇编号,和部署降本没关系。
这篇不铺概念史,直接从目标、输入输出、产物形态三处对照,再给一张能照着判断的对照表和落地顺序,最后说清楚哪些情况下这两条路都不该走。
先看目标:一个找分组,一个搬能力
聚类解决的是「这批东西里谁和谁像」,蒸馏解决的是「怎么让一个更小的模型表现接近一个更强的模型」。目标不同,决定了你做完之后拿到手的东西也不同:聚类给你分组编号或簇中心,蒸馏给你一份新的模型权重文件。
- 聚类
- 没有标签的前提下,按相似度把样本归堆,产物是分组结果,通常接人工看、做标注筛选或特征加工
- 简单蒸馏
- 用教师模型的输出当监督信号,让一个小模型去拟合,产物是可部署的新模型,通常接评测和上线
判断口诀很简单:你要的是一份「结论」,还是一个「能继续跑的模型」。要结论往聚类想,要模型往蒸馏想。这条口诀的边界是——如果你既想要结论又想要模型,那就是两条流水线,不是一件事的两个选项。
再看输入输出:数据进数据出,还是模型进模型出
聚类的输入是一批样本,文本向量、图片特征、用户行为序列都行,核心动作是算距离或相似度。最常见的坑是特征没归一化、维度太高,导致距离度量失效,分出来的簇看着整齐其实没意义。蒸馏的输入是教师模型的输出加训练数据,核心动作是让小模型拟合教师给的软标签或中间表示,常见坑是训练数据分布和教师当初训练时差太远,小模型学到的只是表面像。
| 对照维度 | 聚类 | 简单蒸馏 |
|---|---|---|
| 核心动作 | 算样本之间的相似度并归堆 | 让新模型拟合教师模型的输出 |
| 是否需要标签 | 不需要 | 通常不需要人工标签,但需要已经训好的教师模型 |
| 输入 | 一批样本(向量、特征) | 教师模型输出 + 训练数据 |
| 产物 | 分组编号、簇中心 | 一个新的模型权重 |
| 主要成本 | 抽特征、调参、算距离 | 教师推理开销、训练算力、评测 |
| 验收方式 | 换随机种子后分组是否稳定 | 小模型在留出集上是否接近教师表现 |
一句话对照:聚类吃数据吐分组,蒸馏吃两组模型的输出对比吐一个新模型。前者不需要标签,后者通常需要一个已经能用的强模型当老师。没有可当教师的模型,蒸馏无从谈起。
什么场景用哪个:按手头资源反着推
- 看手里有没有教师模型已经有可用的强模型、且它在目标任务上表现靠谱,蒸馏才有意义;只有一堆没标注的数据,就先别想蒸馏
- 看瓶颈在数据还是在部署瓶颈是「不知道这批数据长什么样」,先做聚类摸底;瓶颈是「推理成本和延迟压不下来、必须落到本地或端侧」,才考虑蒸馏
- 看结果要不要给人看要把分组结果拿去做人工审核、抽样标注、去重,用聚类;要交付一个可调用的服务,用蒸馏
- 看两者能不能串起来常见组合是先用聚类把训练数据分堆,再按堆采样构造更均衡的蒸馏数据集,避免小模型只学到某一类样本的脾气
还有一种容易被忽略的情况:数据量很小。小样本下聚类结果对参数和随机种子非常敏感,蒸馏也容易过拟合教师的噪声输出。这时候先别急着上方法,先确认样本量够不够支撑你想得到的结论。
什么时候都不适用:别硬套
- 数据结构本身不可分,或者簇形状很怪(长条、嵌套、密度差异极大),普通聚类会给出一看就误导的分组,此时不如直接上分类模型或人工抽样
- 教师模型在目标任务上本来就不准,蒸馏只会把它的错一起搬过去,小模型不会因为「学得更认真」就变聪明
- 任务对输出格式和逻辑链要求很高、小模型容量明显不够时,蒸出来的模型容易「看着像但一较真就错」,这类优先考虑提示词或检索方案
- 数据分布会持续变化时,聚类结果和蒸馏模型都会快速过期,先想清楚多久重跑一次,再决定要不要投这笔人力
判断的底线是:如果这两条路都需要你先有一批质量过得去的样本,而你现在连样本长什么样都不清楚,那先做的是数据摸底,不是选方法。
落地顺序:照这个清单走一遍
- 确认目标写一句话说明你做完要交付什么:一份分组结果,还是一个可部署的模型。写不清楚就别动手
- 对齐口径聚类这边确认特征怎么抽、距离怎么算、簇数怎么定;蒸馏这边确认教师是谁、训练数据从哪来、小模型规模多大
- 小样本预跑聚类换几个随机种子跑,看分组是否稳定;蒸馏先用一小部分数据跑通流程,看小模型在留出集上的表现是否比随机初始化明显好
- 对照站内口径向量维度、模型规模、部署测算这些数字会变,到 /embeddings、/models/deploy 和 /compute/sizing 核对当时的数字,别拿旧记忆做决策
- 定复跑节奏数据分布多久变一次,就多久重跑一次聚类或重蒸一次模型,把这个节奏写进流程里,否则结果过期了你也不知道
常见问题
聚类算不算一种蒸馏?
不算。聚类是无监督的数据分析方法,没有教师模型也没有参数迁移,它只告诉你样本之间怎么分组;蒸馏是训练方法,必须有一个提供监督信号的教师模型,产出是新权重。两者可以配合使用,但不是同一类事。
小模型效果差,直接蒸馏一下就能追上大模型吗
要看差距来源。如果差在容量不够、任务又需要多步推理,蒸馏能缩小差距但通常追不平;如果差在输出风格、格式稳定性这类表层习惯,蒸馏收益会比较明显。建议先做小规模对照实验,别一次性投入全部数据。
聚类结果怎么判断靠不靠谱
先看稳定性:换随机种子、换特征抽取方式后分组是否大致一致;再看可解释性:抽几个人工能看懂的代表样本,看同组是不是真的同质。如果分组一变再变、或者每组里什么都混着,说明数据本身没有清晰结构,先别急着拿去做标注或训练。