清华UDS智能过滤劣质样本量子位

6/27/2026

大模型做监督微调(SFT),是不是数据越多越好?

直觉上,当然是把完整数据集都喂给模型最稳妥。但在真实训练里,事情并没有这么简单。

全量SFT不仅计算成本高,还可能带来过拟合、偏见放大等问题。更关键的是,一个训练集里的样本价值并不相同:有些样本信息量很高,值得反复学习;有些样本高度重复,继续训练只是在浪费算力。

于是,一个问题变得越来越重要:

能不能在训练过程中,让模型一边看数据,一边自动挑出最值得更新参数的样本?

来自清华大学自动化系的研究者提出了UDS(Utility-Diversity Sampling),一个面向大语言模型SFT的在线batch选择框架。

一句话概括:UDS不是简单挑loss最大的样本,而是利用前向传播中已经产生的logits,同时评估样本“有没有用”和“够不够多样”,从而在不依赖验证集、参考模型和额外反向传播的情况下,更高效地完成SFT。

实验显示,在MMLU、ScienceQA、GSM8K、HumanEval四个基准上,UDS在Llama-3.1-8B和Qwen-2.5-7B上都取得了在线batch选择方法中的最优表现。以Qwen-2.5-7B为例,UDS在MMLU上达到63.34%,相比GREATS提升5.15个百分点;同时训练吞吐量也高于全量SFT。

现有方法会“挑数据”,但挑得还不够聪明

在SFT中,最朴素的方法是全量训练:每个batch里的样本全部参与参数更新。

但这会带来两个问题。

第一,训练贵。大模型每一步反向传播都很耗时,如果大量样本本身价值有限,就会造成计算浪费。

第二,训练未必更好。数据里可能存在重复样本、低价值样本,甚至会让模型更容易过拟合到某些偏置模式。

因此,在线batch选择(online batch selection)成为一个自然方向:模型在训练时先看到候选batch,然后只选出其中一部分样本真正参与参数更新。

已有方法通常会根据样本的utility(效用)进行选择。比如:

MaxLoss:优先选择loss最大的样本;

MaxGrad:优先选择梯度范数最大的样本;

RHO-Loss:借助参考模型或验证集估计样本价值;

GREATS:进一步引入训练动态信息。

但这些方法仍有明显限制。

一方面,很多方法只看“这个样本难不难、有用没用”,却忽略了多样性。如果一个batch里都是相似样本,训练信号仍然会高度冗余。

另一方面,部分方法依赖外部验证集、参考模型,或者需要额外梯度计算,导致训练开销反而可能超过全量SFT。

论文因此提出,一个理想的在线batch选择方法,至少要满足三点:

同时考虑数据效用、样本内部多样性、样本之间多样性;

不依赖外部资源,例如验证集或参考模型;

训练总时间要比全量SFT更低。

△在线batch选择方法能力对比:UDS同时满足数据效用、样本内多样性、样本间多样性、无外部资源、训练时间降低五项要求

核心方法:用logits同时判断“有用”和“多样”

UDS的关键思想,是把模型前向传播时已经产生的logits用起来。

对于一个训练样本,LLM在每个token位置都会输出一个词表维度的logits向量。把整段序列所有token的logits拼在一起,就得到一个logits矩阵。

这个矩阵里其实包含了很多信息:

模型对这个样本是否不确定?

这个样本是否能带来较大的loss reduction?

序列内部的token预测是否丰富,还是高度重复?

这个样本和历史上已经训练过的样本是否过于相似?

UDS将这些信息拆成两个分数。

第一个是intra-sample importance score,也就是样本内部重要性分数。它通过logits矩阵的nuclear norm(核范数)计算,用来同时刻画样本效用和样本内部多样性。

第二个是inter-sample importance score,也就是样本之间重要性分数。它通过低维投影后的样本表示,与历史memory buffer中样本的距离来计算,用来避免反复训练相似样本。

最后,UDS把这两个分数加权合并,选出当前候选batch中分数最高的Top-K样本参与参数更新。

△UDS框架示意图:模型先对候选样本做前向传播,得到logits;再分别计算样本内部重要性和样本间多样性;最终选择高价值样本更新模型

为什么nuclear norm能衡量样本价值?

UDS的第一个核心设计,是用logits矩阵的nuclear norm衡量样本内部价值。

直观理解,nuclear norm越大,通常意味着两件事。

第一,样本更可能带来训练收益。

如果模型对某个样本的预测分布呈现出更强的训练信号,它往往更可能带来loss reduction。论文在Qwen-2.5-7B + MMLU上做了相关性分析,发现nuclear norm与训练后的loss reduction存在较强相关性。

第二,样本内部的信息更丰富。

如果一个样本的token预测高度重复,logits矩阵的行向量会更接近同一方向,矩阵秩较低;如果每个token都包含不同语义信息,logits矩阵会呈现更高秩、更丰富的谱结构,nuclear norm也会更高。

也就是说,UDS不是只看“这个样本难不难”,而是在看:

这个样本是否既有学习价值,又能提供足够丰富的token级训练信号。

△相关性分析与样本内多样性示意:nuclear norm与loss reduction、矩阵秩之间存在明显相关;高多样性序列会呈现更丰富的预测分布

论文还给出一个简化例子:左边序列中模型预测cat、dog、bird等不同token,代表更高样本内多样性;右边序列几乎只预测cat,代表低多样性。

△高样本内多样性与低样本内多样性的对比

只看单个样本还不够,还要避免“重复训练”

如果只看nuclear norm,模型可能会持续选择某些高价值但相似的样本。

这在训练中也会造成浪费:单个样本看起来有用,但一整批样本如果高度重复,整体batch的信息增益并不高。

为了解决这个问题,UDS引入了样本之间的多样性建模。

具体做法是维护一个固定大小的FIFO memory buffer,用来保存最近被选中参与训练的样本表示。对于当前候选样本,UDS会计算它与memory buffer中历史样本的平均欧氏距离。距离越大,说明这个样本越不像最近已经训练过的数据,越值得加入训练。

但这里有一个现实问题:原始logits矩阵太大,直接保存代价非常高。

论文指出,如果在Qwen-2.5-7B中为1024个样本直接存储完整logits矩阵,内存可能达到约74GB。这显然不适合实际训练。

因此,UDS设计了一个低维投影方法,把logits矩阵压缩成紧凑向量,再放进memory buffer。论文采用类似SRFT的两侧随机投影,把词表维度和序列长度维度分别降维,从而避免显式存储巨大的投影矩阵。

Scroll for more