Reusing Pre-Training Data at Test Time is a Compute Multiplier


TL;DR

本文提出,在测试时通过检索增强的方式重用模型的预训练数据,可以显著提升大语言模型的性能,这种方法相当于一种高效的“计算倍增器”,证明了当前预训练方法并未充分利用数据中的信息。

关键定义

本文主要沿用并组合了现有概念,其中对理解本文至关重要的核心概念包括:

相关工作

当前,提升大语言模型(LLM)性能的主要途径是扩大预训练的计算量、模型参数和数据规模。然而,这一趋势面临着收益递减的挑战,即在更大规模上,需要投入不成比例的更多计算才能获得相同的性能增益。同时,研究也表明LLM在长尾知识和某些泛化能力(如“反转诅咒”)上存在局限。

虽然研究者们付出了巨大努力来构建和优化预训练数据集,但很少有工作去探究预训练过程从这些数据中提取知识的效率到底有多高。与此同时,检索增强方法通常将知识外置于非参数内存中,以提升知识密集型任务的性能。

本文旨在解决的核心问题是:现有的预训练方法是否充分利用了数据中的知识? 作者假设预训练过程是“有损”的,大量有价值的信息被遗漏。因此,他们探索能否在测试时通过检索重用这些预训练数据,来弥补预训练过程的不足,并量化这种方法带来的价值。

本文方法

本文的核心方法是在测试时对预训练数据集进行检索增强,并结合多种测试时计算技术来进一步释放数据潜力。

核心思想与流程

本文的创新并非提出一种全新的算法,而是提出一种新的范式:让模型在回答问题时,“重读”其预训练材料中的相关部分。这揭示了一个关键洞见:预训练并不能让模型完美地内化所有知识,显式地提供上下文仍然至关重要。

其技术流程如下:

  1. 索引构建:将用于预训练的多个数据集(如网页抓取、arXiv、维基百科、数学数据等)构建成一个可供检索的索引库。
  2. 检索:当模型接收到一个问题时,使用一个嵌入模型(如 Qwen3 Embedding)将问题编码,并在索引库中(使用 FAISS FlatIP)检索出 top-k(例如100个)最相关的文档片段。
  3. 重排 (Rerank):使用一个重排模型(如 Qwen3 Reranker)对初步检索到的文档进行重新排序,以提高最相关文档的排名。
  4. 生成:将排名靠前的文档作为上下文,与原始问题一起输入到“阅读器模型”(Reader Model,即被测试的LLM)中,生成最终答案。

测试时计算增强

为了最大化从检索到的文档中提取信息的能力,本文还引入了额外的测试时计算策略:

通过这些方法,测试时计算被有效地、数据驱动地用于提升检索工具本身(通过选择更优的上下文)和模型推理过程,而不仅仅是简单地增加推理时长。

实验结论

本文通过一系列实验,有力地证明了在测试时重用预训练数据是一种高效的性能提升手段。

预训练实验

计算预算 基线 MMLU 检索后 MMLU 匹配检索性能所需的基线计算量 计算倍率
$5.64\times 10^{21}$ 0.4873 0.6063 $2.98\times 10^{22}$ 5.28x
$1.90\times 10^{22}$ 0.6021 0.6943 $1.36\times 10^{23}$ 7.17x
$7.04\times 10^{22}$ 0.6623 0.7410 $3.34\times 10^{23}$ 4.74x
$1.74\times 10^{23}$ 0.7107 0.7775 $7.35\times 10^{23}$ 4.23x
$7.34\times 10^{23}$ 0.7633 0.8186 $2.11\times 10^{24}$ 2.88x

测试时计算实验

方法 MMLU (All) Math-500 SimpleQA GPQA (All)
基线 71.6 48.7 1.5 30.6
+ 自洽性 75.3 55.9 N/A 31.4
+ 检索 76.6 56.7 65.7 33.2
+ 重排 77.7 56.8 74.0 34.8
+ 重排 + 自洽性 81.0 64.3 N/A 36.1
+ 重排 + 自洽性 + VR 82.1 64.4 N/A 36.8

其他分析与总结