COUNT:用 n-gram 计数解锁主机内存缩放
来自 arXiv · 期号 2026-10-15
摘要
语言模型的计算量与性能之间存在缩放关系,但内存的缩放一直是个难题。 现有的 n-gram 嵌入方法需要从头训练,这要求昂贵的 GPU 内存来支持快速读写。COUNT 换了一条路:它不学参数,而是把预计算的 n-gram 频率存到廉价的主机内存上,推理时用这些频率把 LM 自身的下一 token 表征加权组合成 n-gram 嵌入。 在固定计算预算下,给 1B 参数的预训练模型加上 COUNT 嵌入,验证损失改善幅度相当于把计算量增加 57%。如果 GPU 内存有限,用 COUNT 把骨干参数塞满 GPU、把 n-gram 表放主机内存,效果比在 GPU 上分一部分内存给可学习的 n-gram 嵌入更好。 COUNT 还支持零训练领域适应:推理时换上一张来自目标语料的 n-gram 计数表即可。
深读
导读 语言模型的缩放定律通常只关注计算量,而内存的缩放一直是个难题。这篇论文提出的 COUNT 方法,通过将预计算的 n-gram 频率存到廉价的主机内存上,在不增加可学习参数的前提下,实现了内存与计算的解耦缩放。对于 1B 参数的模型,在固定计算预算下,COUNT 带来的验证损失改善相当于把计算量增加 57%。 关键信息 - COUNT 将 n-gram 频率表存储在主机内存(host memory)上,推理时用这些频率将 LM 自身的下一 token 表征加权组合成 n-gram 嵌入,不引入可学习参数。 - 在固定计算预算下,给 1B 参数的预训练模型加上 COUNT 嵌入,验证损失改善幅度相当于把计算量增加 57%。 - 当 GPU 内存有限时,用 COUNT 把骨干参数塞满 GPU、把 n-gram 表放主机内存,效果优于在 GPU 上分一部分内存给可学习的 n-gram 嵌入。 - COUNT 支持零训练领域适应:推理时换上一张来自目标语料的 n-gram 计数表即可,无需任何训练。 逐节讲解 问题:内存的缩放滞后于计算 语言模型的计算量与性能之间存在缩放关系,但内存的缩放一直是个难题。为 n-gram 添加嵌入是一种将内存与计算解耦的方式,因为每次前向传播只处理单个嵌入行,远小于整个嵌入表的存储量。然而,现有方法需要从头训练这些嵌入,这要求昂贵的 GPU 内存来支持快速读写,而主机系统的普通内存虽然廉价,却未被充分利用。 方法:COUNT 的离线计数嵌入 COUNT(Counting Offline Unlocks N-gram Transformers)的核心思路是:不学习参数,而是将预计算的 n-gram 频率存储到主机内存上。推理时,它利用语料库中的频率,将当前 n-gram 历史之后最常出现的下一 token 的 LM 自身表征(unembeddings)加权组合,生成 n-gram 嵌入。这样,n-gram 表可以放在廉价的主机内存中,GPU 内存则全部留给骨干参数。 效果与扩展 在固定计算预算下,给 1B 参数的预训练模型加上 COUNT 嵌入,验证损失改善幅度相当于把计算量增加 57%。如果 GPU 内存有限,用 COUNT 把骨干参数塞满 GPU、把 n-gram 表放主机内存,效果比在 GPU 上分一部分内存给可学习的 n-gram 嵌入更好。此外,COUNT 还支持零训练领域适应:推理时换上一张来自目标语料的 n-gram 计数表即可,无需任何训练。 值得注意 - 论文只给出了验证损失改善的量化结果(相当于 57% 的计算量增加),没有报告下游任务(如推理、问答、翻译)上的实际性能提升。验证损失的改善是否能直接转化为下游任务的收益,需要进一步验证。 - COUNT 的 n-gram 表大小与语料规模直接相关,论文没有讨论在超…