"AI 项目的诚实,是稀缺品"——Soup 做到了一个反直觉的事:它在 README 顶部主动声明"这个数字可能过时"。
先放一个数字:RTX 3050 笔记本 GPU,4GB 显存,QLoRA 微调 8B 模型,119.6 tok/s,峰值 3.32GB。层流(layer streaming)技术把冻结权重踢出 VRAM,任何时刻 VRAM 里只有一层——就像读书不复印,一页一页翻。代价是 PCIe 带宽,但位级精确(bit-exact),H100 独立复现 113 tok/s。
但真正精彩的是发布门 v0.73.2 的三个评测 bug:
Bug 1: mini_ 套件给 40/40 全对的模型打了 0.225 分——模型少输出一个右花括号,解析器回退到内层对象,然后评分器说"缺少外层 key"。模型答对了,解析器搞坏了,门说模型错了。
Bug 2: mini_mmlu 给 Llama-3.1-8B 打 0.423 分,比 0.5B 还低。原因?抽取器不认识 \boxed{C} 这种格式,而且 prompt 没要求输出字母。修完 0.423→0.731。模型其实会答,但评测器看不懂输出格式。
Bug 3: 没有 benign-prompt 轴。原来的门分不出"正常模型"和"拒绝所有请求的模型"——两者在七套件上字节级相同。加了 mini_over_refusal 才分得清。
更狠的是 GPU 噪声:--noise-floor N 让你先跑 N 次 base 模型测出噪声分布,然后任何小于这个 spread 的 delta 都不算"显著"。同一个模型同一份数据 GPU 跑五次,分数差 0.015-0.020——你的"显著改进"阈值是 0.05。
下一根钉子:Soup 关心"训完之后你怎么知道没搞坏",而不是"能不能训"。LLM 微调的失败模式不是 OOM,是"模型看起来变好了,其实在某些维度变差了,而你的评测根本没测那个维度"。