小型专用模型还有价值吗:微调编码器与零样本决策模型对比实测
The Case for Small Specialized Models
一项实测对比显示,微调小型编码器在文本分类上仍大幅领先零样本决策模型:最差的 TheseusBERT(0.709 macro-F1)比最好的 Clef 27B(0.419)高 29 分,对 Tev1-4B 还快 34-91 倍。
2026年10月5日 10分钟阅读

2026年的一个热门想法是“System-1”决策模型:一个小型、非自回归的模型,不生成文本即可分类,并在单次前向传播中返回校准后的概率。TypeSafe AI的Jev以惊人的数字推出了它(比LLM快约193倍、便宜约445倍),Together发布了一个开源克隆Tev1-4B(“17美元”帖子),社区随后跟进推出了laya、von等。
这些速度和成本声明是相对于前沿LLM衡量的,并且与它们相比极具竞争力。 但阅读发布帖子时,我意识到我默认使用的工具——微调的小型编码器——没有最新的数据。 文献表明,微调的小模型在文本分类上仍然优于零样本生成模型,常见的生产模式是(希望如此)一个廉价分类器来路由流量,只将困难案例升级给LLM。
所以我自己测量了两边:我自己的数据集、Modal GPU、本地运行的4B模型,以及通过TypeSafe API调用的原始Jev。首先需要说明一点:在域内标签上训练的模型应该优于零样本模型。我想知道的是,小型模型在2026年是否仍然重要,以及它需要多少标签才能见效。 答案是:比最佳决策模型领先29个宏F1点,大约需要100个标签,一小时的标注。 然而,在AG News上的一次检查让我看到了决策模型真正闪耀的地方。
我自己的分类体系
tldr_news是来自TLDR新闻通讯的约2.2万条内容,每条都带有一个section标签。原始标签很混乱(23个近似重复的板块、一个空标签、赞助商行),所以我将它们合并为干净的类别。下面的每类诊断显示了这样做的效果。Tev在其上坍缩到0.00,laya为0.25,而微调模型得分约为0.9,因为它们仅从长度线索就能学会格式。零样本模型无法猜测新闻通讯的编辑惯例,所以我删除了该类,并在五个内容类别上进行了比较。

零样本模型在不确定时也会抓住Security:在六类运行中,Tev对Security项目的召回率为0.98,精确率为0.24。
完全披露,以便你可以相应打折:这是我的数据集、我的标签映射和我的类别描述。以下所有数字共享相同的seed-42分层划分(约1.2k测试项)、仅正文输入、宏F1。
相差三十分
| 模型 | 方法 | 参数量 | 宏F1 | 毫秒/项 (bs=1) | 毫秒/项 (bs=32) |
|---|---|---|---|---|---|
| RoBERTa-base | 微调 | 125M | 0.783 | 10.5 | 7.1 |
| ModernBERT-base | 微调 | 150M | 0.759 | 16.5 | 9.7 |
| DistilBERT-base | 微调 | 67M | 0.739 | 5.4 | 3.6 |
| FastBERT | 提前退出 | 251M | 0.732 | 11.8 | 8.4 |
| TheseusBERT | 压缩 | 151M | 0.709 | 4.6 | 3.6 |
| Clef | 零样本决策模型 | 27B | 0.419 | 341.2 ⁴ | 不适用 ⁴ |
| Tev1-4B | 零样本决策模型 | 5B ¹ | 0.410 | 418.9 | 123.4 |
| Jev (API) | 零样本决策模型 | 未披露 | 0.407 | 不适用 ² | 不适用 ² |
| laya | 零样本决策模型 | 421M | 0.381 | 59.9 | 不适用 ³ |
¹ 命名为4B;检查点在其模型卡上报告约5B参数。
² Jev运行在TypeSafe的API后面(p50往返约250毫秒);与本地单GPU数字不可比,因此不参与延迟和成本列。
³ laya的Router.predict没有批量API,因此单条运行。
⁴ Clef (27B) 无法放入其他行使用的L4;其延迟是在H100上的bs=1,因此不参与成本列。
差距并不微妙。这里最差的微调模型 TheseusBERT 为 0.709,比最好的零样本决策模型 Cloudflare 的 27B Clef(0.419)高出 29 个 macro-F1 点。与适配同一 L4 测试框架的零样本模型 Tev1-4B 相比,它的回答速度也快 34-91 倍。原始的 Jev 通过 TypeSafe 的 API 使用相同提示词查询,得分为 0.407,与其开源克隆版持平。批处理对所有人都有帮助(编码器单条延迟下降 25-40%),但排名没有变化,Tev 即使批处理也仍然慢 13-34 倍。FastBERT 和 TheseusBERT 是我提前退出系列中的压缩架构,这里使用 bert-squeeze 训练。
延迟直接转化为金钱。在 Modal L4 上批处理,每 GPU 秒 $0.000222:
| 模型 | ~$ / 100 万次分类 |
|---|---|
| DistilBERT-base / TheseusBERT | ~$0.80 |
| RoBERTa-base | ~$1.58 |
| FastBERT | ~$1.86 |
| ModernBERT-base | ~$2.15 |
| laya | ~$13(单条;批处理 API 会大幅降低此成本) |
| Tev1-4B | ~$27 |
将准确率与该成本作图:

紫色箭头是额外收获:将 RoBERTa-large 教师模型蒸馏到 DistilBERT 中,在规模、延迟和成本不变的情况下,将其从 0.73 提升到 0.76。
充分利用零样本
只有零样本一侧设置得当时,这样的比较才公平。我逐步改进了它:
- 六个类别,简洁提示词:laya 0.22,Tev 0.27。
- 五个内容类别,更丰富的描述:laya 0.38,Tev 0.41。
- 将标题加入输入:laya 0.38(无变化),Tev 0.42。
- 为 Tev 提供少样本(10 个示例):0.06。这是一个注意事项而非陷阱:少样本超出了 Tev 文档中记载的单样本格式,因此崩溃并不意外。不过实际要点仍然成立。与 LLM 不同,你无法用示例来购买准确率。你要么完全按照训练方式使用这些模型,要么对它们进行微调。
最好的零样本结果 Clef 为 0.419,仍落后每个微调模型约 29 个点。
校准测试
校准概率是决策模型的标志性主张,所以我测量了:ECE、Brier、NLL 和可靠性图,并对编码器进行单参数温度缩放。
| 模型 | acc | ECE ↓ | Brier ↓ | NLL ↓ |
|---|---|---|---|---|
| RoBERTa-base | 0.78 | 0.096 → 0.028(温度缩放后) | 0.333 | 0.640 |
| DistilBERT-base | 0.72 | 0.126 → 0.046 | 0.418 | 0.800 |
| laya | 0.36 | 0.033 | 0.752 | 1.501 |
| Tev1-4B | 0.41 | 0.327 | 0.860 | 1.969 |
| Jev (API) | 0.40 | 0.472 | 1.028 | 6.910 |
| Clef | 0.45 | 0.323 | 0.812 | 1.658 |

给它们一个公平的比较:laya 兑现了其 ECE 主张。0.033 的期望校准误差确实不错。但这是一个平坦、欠自信分布的校准。模型不确定且大多错误,这就是为什么它的 Brier 和 NLL 是表中最差的。Tev 的概率:ECE 0.327,系统性过度自信,可靠性曲线远低于对角线。而经过温度缩放的 RoBERTa 在 ECE 上与 laya 持平,准确率却是其两倍(Brier 0.33 对 0.75)。
原始的 Jev 是这个故事最鲜明的版本。在 AG News 上,它得心应手,概率是诚实的(ECE 0.076)。在我的分类体系上,它返回接近独热的分布,但大多数时候是错误的:ECE 0.472,NLL 6.9。事实证明,校准和准确率一样,都是分布内的事情。Clef 是最有力的见证:Cloudflare 用明确的 Brier 目标训练它,在分布内这一点得以体现,拥有整篇文章中最好的校准(AG News 上 ECE 0.026,比原始编码器更好)。在我的分类体系上,同一个模型以 ECE 0.323 过度自信地运行。它的可靠性曲线与 Tev 的相似,所以为了清晰起见,我将其从图表中省略。
两个注意事项。温度缩放本身会消耗带标签的验证集:成本低,但并非零标签。而且在约 1.2k 个测试项下,约 0.02 以内的 ECE 差异落在分箱噪声范围内,所以把 0.028 与 0.033 视为持平。稳健的信号是 Brier 和 NLL,而在那里差距并不接近。
为“无标签”承诺定价
零样本最强的实际论据是完全跳过标注。那么让我们为这种便利定价:在训练集的分层子样本上微调 DistilBERT 和 RoBERTa,每个三个随机种子,看看它们在哪里越过零样本线。

二十五个标签不够。DistilBERT 停在 0.27,低于两个零样本模型。五十个标签时 laya 持平,而 RoBERTa 在那里每个种子上都已超过 Tev。在一百个标签时,连 DistilBERT 都在每个种子上击败 Tev1-4B(0.49 对 0.41),此后两条曲线都只是攀升:RoBERTa 在 100 时达到 0.55,在 1,000 时达到 0.66,在完整的约 9,850 上达到 0.78。
一百个标注样本是一小时的标注工作。训练账单是个舍入误差:完整微调大约需要五分钟 GPU 时间,在 Modal L4 上约 $0.07,大约相当于用 Tev 分类 2,500 个项目一次的成本。在这个分类体系上,跳过标注要付出约 30 个 F1 点的代价,而一小时的标注就能把它们买回来。
一个不属于我的数据集:AG News
以上所有内容都基于一个数据集:我的,用我的标签映射。所以我在 AG News 上重跑了核心比较:四个类别,官方的 120k/7.6k 划分,不是任何人的分类体系,而是基准自己的。
| AG News(官方测试集,macro-F1) | |
|---|---|
| DistilBERT · 微调(完整训练集) | 0.944 |
| RoBERTa · 微调(完整训练集) | 0.944 |
| laya · 零样本 | 0.929 |
| Clef · 零样本 | 0.904 |
| Tev1-4B · 零样本 | 0.896 |
| Jev · 零样本(API) | 0.884 |
| DistilBERT · 在 100 个标签上微调 | 0.851 |

这在一定程度上与我的标题结论相悖,但我还是如实报告:在一个经典的基准分类体系上,零样本决策模型很好。laya 落在完整微调的 1.6 个点以内,而且在这里零样本击败了 100 个标签。
但有一个原因——AG News 在 Tev 的训练混合数据中。Together 自己的配方在 tev1 的训练数据中列出了“AG News(1,500 个示例)”(他们的博客)。对 Tev 来说,这更接近分布内测试,而非零样本测试。laya 的训练混合数据未公开,但新闻主题分类是标准的决策模型演示,其性能模式也指向同一方向。
每种方法的适用场景
我最终得到的图景比我开始时更有用。决策模型在标签模式与其训练分布相似的地方表现强劲:实践中的“零样本”意味着“对别人的训练混合数据而言是分布内”。如果你的标签模式看起来像公共基准,或者它在运行时确实会变化,决策模型会很好地为你服务。如果你的分类体系是你自己的(编辑栏目、内部工单类别:正常的生产情况),一百个标签加上 $0.07 的微调就能让你得到一个小模型,它在准确率、延迟、成本以及在一个温度参数之后的校准上都领先。
即使在为决策模型构建的任务上,小模型也毫不逊色。 在 AG News 上,微调后的 DistilBERT 以 0.944 对 0.929 击败 Laya,而延迟和成本只是其一小部分。 这不仅仅是那些开源克隆版的怪癖:原版 Jev 在我的分类体系上得分为 0.407,在 AG News 上为 0.884,而 Cloudflare 的 Clef——其中最大最好的,270 亿参数——也遵循同样的曲线,分别为 0.419 和 0.904。 同样的结果在各个价位上都出现了。当替代方案是前沿 LLM 时,System-1 确实更快。 然而,面对一个小型微调编码器,成本优势就消失了。
复现这些数字
from bert_squeeze.assistants import TrainAssistant
TrainAssistant(
"automodel",
general_kwargs={"labels": list(range(5)), "num_labels": 5},
model_kwargs={"pretrained_model": "roberta-base"}, # or ModernBERT, DeBERTa, …
data_kwargs={"dataset_config": {
"path": "JulesBelveze/tldr_news", "text_col": "text",
"label_col": "section", "label_map": SECTION_MAP, # 5 content classes
"stratify_by_column": "section"}},
)
在 Modal(T4/L4/H100)上运行 - 方法:
- 训练配方:每个标题微调都使用 bert-squeeze 的
TrainAssistant配合交叉熵,AdamW 学习率 2e-5,批量大小 32,最大长度 256,3 个 epoch。 标签效率子采样使用普通的 HF 循环(AdamW 学习率 3e-5,无论 n 多少都约 300 步);AG News 全数据运行训练 2 个 epoch。编码器和 Tev 运行在 transformers 4.57 上,FastBERT 和 TheseusBERT 运行在 4.45 上(它们的自定义 BERT 图早于 4.48 的注意力重构),laya 通过其layapip 包运行。 - 延迟是预热后的前向传播,序列长度 256,毫秒/项,全部在同一块
L4 上测量。Tev 通过 HF
generate在本地以 bf16 运行(贪心解码,最多 8 个新 token,按其模型卡使用聊天模板)。那是一个朴素的循环,不是优化的服务栈, 所以把它的数字视为上限。laya 通过其Router.predictAPI 端到端计时,这是它暴露的唯一接口。ModernBERT 对注意力内核敏感(使用 flash-attn 大约比 eager 快 2 倍)。 - 方差:标题编码器数字是单种子的。标签效率运行 的种子波动为 ±0.01-0.02,足以重新排列相邻编码器,但远不及 编码器与零样本之间 30 个百分点的差距。在所有实验中,DistilBERT 的全数据运行 落在 0.73-0.74,RoBERTa 的落在 0.77-0.80,这涵盖了标题中的 0.783。
- 编码器评估丢弃了最后一个不完整的批次(1,216 对 1,232 个测试项,约 1%)。
- AG News 检查使用官方训练/测试划分,完整测试集(7,600 项, 任何零样本模型都没有未解析的答案),以及与 主运行相同的提示协议。
- Clef 从开放权重(
Cloudflare/clef,Apache 2.0)在 H100 上本地运行, 通过捆绑的joint_schema_model代码(torch 2.11,transformers 5.10),批量大小 16, 与其他每次运行相同的提示和类别描述。 - Jev 通过 TypeSafe 的 API 查询(
jev-latest,解析为jev-1.13.0),与其他每次运行相同的类别描述和仅正文输入, 两个数据集都使用完整测试集,0 个无法识别的答案。其概率直接 来自 API 响应。 - 还尝试了:朴素的动态 int8 量化将 RoBERTa 的 CPU 延迟减半,但损失了 15 个 F1 点。量化需要 QAT 或选择性层,而不是一行代码。DeeBERT 被 排除(朴素微调不提供其分阶段提前退出训练)。
参考文献
- Together AI,如何训练你自己的 Jev · Jev API 文档
- Tom's Hardware,TypeSafe AI 的 Jev 提供了 LLM 的替代方案
- 微调的小型 LLM(仍然)在文本分类中显著优于零样本生成式 AI 模型
JulesBelveze/tldr_news· AG News · laya · Tev1-4B · Clef- bert-squeeze,用于训练、蒸馏和 提前退出模型的压缩库 · 我的 提前退出系列
来源:Hacker News · julesbelveze.github.io