PreFT:仅预填充微调以实现高效推理
摘要
PreFT 提出仅在预填充 token 上应用适配器,在解码阶段丢弃它们,从而在几乎不损失性能的情况下提高多适配器服务的吞吐量。
arXiv:2605.14217v1 公告类型:新
摘要:大型语言模型现在可以通过参数高效微调方法(PEFTs)在大规模下高效地进行个性化,但服务于用户特定的 PEFTs 会损害吞吐量,即使使用专门的核函数和内存管理技术也是如此。这是因为,理论上和经验上,预填充(一次性处理大量 token)和解码(自回归生成单个 token)之间存在不匹配:在服务多个适配器时,后者的吞吐量要低得多。为了实现高效的多适配器服务,我们不应优化相对于参数数量的性能,而应优化相对于服务吞吐量的性能。因此,我们提出了 PreFT(仅预填充微调),其中我们仅在预填充 token 上应用适配器,之后将其丢弃。PreFT 在几乎不影响性能的情况下显著提高了吞吐量。我们在 vLLM 推理引擎上开发并发布了两种仅预填充 PEFT 的高效实现:LoRA 和 ReFT。我们首先展示了服务多用户 PreFT 比传统 PEFTs 更高效(在 Llama 3.1 70B 上服务 512 个适配器时吞吐量是后者的 $1.9\times$)。然后,我们在不同规模的语言模型上,针对各种监督微调和强化学习任务,比较了仅预填充适配器与全 token 适配器的性能。在 SFT 上,我们观察到 PreFT 的评估损失高于 PEFTs,但可以通过增加秩来补偿,且吞吐量几乎没有下降。在 RL 上,我们一致发现 PreFT 的性能接近标准 PEFTs。总体而言,这项工作验证了 LLM 的仅预填充适配比现有 PEFTs 在个性化服务中具有更优的精度-吞吐量权衡。
查看缓存全文
缓存时间: 2026/05/15 06:28
# PreFT:仅预填充微调,提升推理效率
来源:https://arxiv.org/html/2605.14217
Andrew Lanpouthakoun∗† Aryaman Arora∗† Zhengxuan Wu† Dhruv Pai‡ Ben Keigwin‡ Dan Jurafsky† Christopher Potts†
†斯坦福大学 ‡Tilde Research
\{andlanpo,aryamana\}@stanford\.edu
###### 摘要
大型语言模型如今可以通过参数高效微调方法(PEFT)高效地实现大规模个性化,但*服务*用户特定的PEFT会损害吞吐量,即使采用专门的核函数和内存管理技术也是如此。这是因为,从理论和经验上看,预填充(一次处理大量令牌)和解码(自回归生成单个令牌)之间存在不匹配:后者在服务多个适配器时吞吐量要低得多。为了高效的多适配器服务,我们不应针对参数量进行性能优化,而应针对*服务吞吐量*进行性能优化。因此,我们提出了PreFT(仅预填充微调),其中我们仅在预填充令牌上应用适配器,之后将其丢弃。PreFT在性能影响极小的情况下显著提高了吞吐量。我们在vLLM推理引擎上开发并发布了一种高效的仅预填充PEFT实现,包括LoRA和ReFT。我们首先证明,为多用户提供PreFT服务比传统PEFT更高效(在Llama 3.1 70B上服务512个适配器时,吞吐量提升1.9×)。然后,我们在不同规模语言模型的多种监督微调和强化学习任务上比较了仅预填充适配器与全令牌适配器的性能。在SFT上,我们观察到PreFT的评估损失高于PEFT,但可以通过增加秩来补偿,且几乎不降低吞吐量。在RL上,我们一致发现PreFT接近标准PEFT的性能。总之,这项工作验证了在个性化服务中,LLM的仅预填充适配相比现有PEFT实现了更优的准确率-吞吐量权衡。
查看图注
图1:PreFT适配器在各类任务上接近PEFT性能,同时吞吐量显著提升。PEFT(LoRA)和PreFT(LoRAP、DiReFTP)在多种任务上的推理吞吐量与准确率对比。除GSM8K外,任务均基于Llama 3.1 8B基础模型。为在图中大致匹配参数量,LoRA/LoRAP始终使用秩-11,DiReFTP在Tülu-3和LongBench-Write中使用秩-16,其他任务使用秩-8。在Tülu-3(SFT)和RL任务(GSM8K、MATH、HumanEval)中,得分是选定下游基准上的评估准确率(见第5节)。在LongBench-Write中,得分是4k–20k令牌输出的长度跟随度(SlS\_\{l\})。推理吞吐量(令牌/秒)通过Uniform Punica微基准测试,在单GPU上服务512个适配器时测得,模拟多用户服务场景(见第4节)。
### 1 引言
为数十亿用户个性化大型语言模型是一个开放的研究问题;除了记忆和系统提示个性化之外,大量工作致力于设计参数高效微调方法(PEFT),以减少微调的内存占用。LoRA(Hu等人,2022)是最流行的基于权重的PEFT,在此场景下是一个有吸引力的选择;它创建轻量级低秩适配器,可以在推理时添加到模型现有的权重矩阵中。相应地,随着服务LLM的系统日益优化,许多研究者努力使服务数千个LoRA与高效LLM推理兼容(Chen等人,2024;Sheng等人,2024等;见第2节)。当在单个推理批次中服务多个LoRA时,最大的挑战是每个批次项需要不同的LoRA权重集;这需要(a)开发自定义核函数(例如Punica;Chen等人,2024),因为标准批量矩阵乘法不再适用(它假设每个批次项乘以相同的矩阵),以及(b)管理在GPU上保持多个LoRA的内存开销,例如通过卸载到CPU并根据调度算法进行分页(例如S-LoRA;Sheng等人,2024)。即使有了这些高度定制化的优化,多LoRA服务仍然损害推理吞吐量。
在这项工作中,我们并非优化现有方法,而是采取不同的思路:我们设计和实现从本质上天然适合高效LLM推理的PEFT。我们的关键动机是高效LLM推理中*预填充*(并行处理输入提示)和*解码*(顺序生成输出)之间的区别:预填充是计算受限的,因此在此阶段服务PEFT不会损害计算利用率;另一方面,解码是内存受限的,因此应该在请求之间进行批处理。然而,在单个批次中服务许多PEFT会带来显著的内存开销,从而侵蚀批处理带来的收益。换句话说,*按请求个性化*在解码阶段比在预填充阶段更昂贵。为了解决这一挑战,我们创建了两种现有PEFT(LoRA(Hu等人,2022)和ReFT(Wu等人,2024b))的高效*仅预填充*变体,恰当地命名为PreFT。LoRA作用于权重,而ReFT选择性地干预激活,因此非常适合仅对选定令牌进行干预。我们在vLLM推理引擎(Kwon等人,2023)的一个分支中实现了这些方法的多适配器高效版本,并进一步在trl强化学习库中为我们的推理后端添加了支持。
我们的实验结果有力地支持了两个关键主张,我们在图1中进行了总结。首先,我们证明PreFT在推理时是高效的(第4节)。我们将多PreFT服务系统与现有在vLLM中所有令牌位置的多LoRA服务进行基准测试:无需任何自定义核函数,在Llama 3.1 70B上使用4个H100进行张量并行,服务多达512个适配器时,仅预填充ReFT的吞吐量是多LoRA的1.9倍,仅预填充LoRA达到1.87倍。这种优势在不同模型规模上均成立(在Llama 3.1 8B上分别为2.21×/1.83×,在Qwen 2.5 0.5B上分别为2.39×/1.63×,对应DiReFTP/LoRAP)。其次,我们证明PreFT保持了强大的性能(第5节)。在SFT上,PreFT在数据量和参数量匹配的训练中,在Tülu-3和OpenThoughts上的评估损失高于全位置PEFT,但在下游评估准确率上未发现统计显著差异。在RL任务上,PreFT在数学推理(GSM8K和MATH,Cobbe等人,2021;Hendrycks等人,2021b)和代码生成(使用MBPP训练,在HumanEval数据集上评估,Austin等人,2021;Chen等人,2021)中接近PEFT,但总体上仍存在微小差异。在长文本生成的SFT任务上(使用LongWriter训练,在LongBench-Write上评估,Bai等人,2024),我们发现LoRAP保持了与传统LoRA相似的篇幅控制能力和质量。总体而言,我们发现PreFT在多用户个性化设置中值得部署,超越传统的全位置PEFT:它们保留了传统PEFT的大部分或全部性能,同时显著提高了推理效率。
### 2 相关工作
###### 参数高效微调(PEFT)。文献中提出了多种PEFT技术;总体上,它们冻结原始模型,只训练一些轻量级参数作为额外操作应用。我们专注于LoRA(Hu等人,2022)和ReFT(Wu等人,2024b);前者对选定的权重矩阵应用低秩适配器,后者对选定的令牌位置和层应用低秩隐藏表示编辑。其他方法添加整个模型组件(Houlsby等人,2019;Pfeiffer等人,2020等)或学习可训练的软令牌(Li和Liang,2021)。此外,还提出了许多LoRA(Liu等人,2024;Kopiczko等人,2024;Balazy等人,2025;Morris等人,2026)和ReFT(Zeng等人,2025;Wang等人,2025)的变体,修改了参数化和/或初始化。少数工作对选定的令牌位置应用掩码LoRA(Greenewald等人,2025;Dietz等人,2026),但都没有提出仅预填充的应用。我们选择LoRA是因为它在服务基础设施中广泛采用,而选择ReFT是因为它专为令牌级别干预而设计。
###### 服务个性化LLM。服务一个模型的多个微调版本会增加LLM推理的开销。虽然LoRA适配器可以像dLoRA(Wu等人,2024a)那样合并到模型权重中或从中分离,但如果简单操作,这会降低多LoRA服务中的吞吐量并增加延迟。因此,S-LoRA(Sheng等人,2024)和Punica(Chen等人,2024)提出了使用专门核函数进行多LoRA批量矩阵乘法来服务未合并的LoRA适配器,同时将LoRA卸载到CPU内存,并使用调度算法(例如S-LoRA和dLoRA中的分页)根据需要将其加载到GPU,以最小化延迟和空闲计算。后来的工作进一步改进了多LoRA服务的内存管理和压缩(Gabrielsson等人,2025;Zhang等人,2025;Zhu等人,2025;Potdar等人,2025;Ni等人,2026)。PreFT能够利用所有这些优化。
### 3 引入PreFT
现在我们将PreFT介绍为对现有全位置适配器的一种简单修改。为提供背景,我们首先在统一结构下严格定义我们实验的两种PEFT:LoRA(Hu等人,2022)和ReFT(Wu等人,2024b)。然后定义我们的方法,并详细阐述仅预填充适配器的效率动机。
#### 3.1 适配器方法
我们首先将冻结基础模型M上的适配器Aφ定义为元组Aφ = ⟨Φφ, F, P⟩,包含:
- • 一个*干预函数* Φφ,具有可训练参数φ,
- • M内的*目标模块*集合F,干预应用于这些模块,
- • 每个输入序列中干预激活的*目标位置*集合P。
每个目标模块f ∈ F是M内部的一个计算,接收输入x并产生输出f(x)。可以想象为应用于输入的权重矩阵,或给定层残差流上的恒等映射。适配器在位置i ∈ P处将f(x)替换为Φφ(f(x)):
f(x)i ← { Φφ(f(x)i) 如果 i ∈ P;否则 f(x)i } (1)
基础参数θ保持冻结;仅训练φ。不同的适配器方法对应于F的范围和Φφ的形式的不同选择。
###### LoRA。LoRA(Hu等人,2022)针对冻结的权重矩阵:每个f ∈ F是一个线性映射f(x) = Wx,W ∈ ℝ^{n×m}。LoRA引入可训练矩阵B ∈ ℝ^{n×r}和A ∈ ℝ^{r×m},r ≪ min(n,m),并定义:
Φφ^{LoRA}(f(x)) = f(x) + α BA x (2)
其中α是常数缩放因子,φ = {(A,B)}f∈F。我们在实验设置中,F的选择是所有层的注意力投影和MLP投影。标准LoRA中,P涵盖所有令牌位置。
###### ReFT。ReFT(Wu等人,2024b)针对残差流:每个f ∈ F是给定层l的恒等映射,因此f(x) = h^l。我们专注于DiReFT参数化,我们发现它最有效:
Φφ^{DiReFT}(h) = h + B^⊤(Ah + b) (3)
其中A, B ∈ ℝ^{r×d},b ∈ ℝ^r,秩r ≪ d(d是隐藏层维度)。同样,φ = {(A,B,b)}f∈F。ReFT的激活干预使其天然适用于仅对预填充令牌的应用,因为解码令牌可能不需要相同的干预。
#### 3.2 我们的方法:仅预填充适配器
我们提出PreFT,在推理时仅对预填充令牌应用适配器干预Φφ,并在解码阶段将其全部移除。更形式化地,设P_prefill为预填充期间输入序列中的令牌位置集合,P_decode为解码期间生成的令牌位置集合。传统方法对所有位置应用适配器:P = P_prefill ∪ P_decode。我们的仅预填充方法设置P = P_prefill,因此解码令牌f(x)i = f(x)i无干预。训练期间,我们仍然对所有位置(预填充和解码)应用适配器干预训练数据,类似于传统PEFT训练。PreFT的核心洞察是:在训练时利用所有位置的适配器来学习有效的表示,但在推理时仅对预填充阶段应用适配器,从而避免解码阶段适配器带来的内存和计算开销。这通过我们预先计算预填充输出的适配器贡献,并将其集成到模型的预填充过程中来实现,同时在解码阶段恢复为标准模型行为。我们在图2中通过一个简化的LoRA示例说明这一点。
(图2说明):LoRA对目标矩阵W的最左侧令牌应用低秩更新BA。在标准LoRA中,BA应用于所有令牌位置。在PreFT LoRA(LoRAP)中,BA仅应用于预填充令牌。对于解码令牌,我们使用原始权重W,避免适配器计算。
#### 3.3 效率动机
高效LLM推理的核心区别在于预填充(计算受限)和解码(内存受限)。在预填充阶段,我们会一次性处理整个输入提示(可能包含数千个令牌)。此时的计算主要由大型矩阵乘法主导,GPU的计算单元得到充分利用。向这些操作添加适配器计算(例如LoRA的低秩乘积)可以“免费”完成,因为计算单元原本可能处于空闲状态,或者适配器计算可以合并到现有矩阵乘法中。相反,解码阶段生成单个令牌。此处的计算是内存受限的:主要瓶颈是从GPU内存中获取模型权重和适配器矩阵,而计算单元大部分时间处于等待状态。在解码时应用适配器会加剧内存瓶颈,因为现在需要获取额外的矩阵(例如LoRA的A和B),从而降低整体吞吐量。对于多适配器服务,解码时每个请求可能使用不同的适配器,这增加了额外开销,因为每个解码步骤可能需要不同的适配器权重。通过在解码时省略适配器干预,PreFT消除了这些开销,允许解码阶段专注于内存高效的令牌生成。我们的实验(第4节)证实了效率收益,表明PreFT在保持竞争力的同时显著优于传统PEFT。
### 4 推理效率基准测试
我们现在评估PreFT在服务多适配器时的效率。我们针对多LoRA(所有位置)推理测量吞吐量,并与仅预填充变体(LoRAP和DiReFTP)进行比较。
#### 4.1 设置
我们使用vLLM推理引擎(Kwon等人,2023)的一个分支,支持多适配器服务。对于多LoRA,我们使用vLLM的内置支持,它利用Punica(Chen等人,2024)的定制化核函数进行批量低秩乘法。对于PreFT,我们实现了自定义的前向钩子,仅在预填充期间应用适配器。我们在以下模型上运行实验:Llama 3.1 8B、Llama 3.1 70B(使用4 GPU的张量并行)和Qwen 2.5 0.5B。我们使用Uniform Punica微基准测试,模拟多用户服务场景:在单个GPU(A100 80GB)上服务512个适配器(适配器在预填充前随机分配给请求)。我们测量吞吐量(令牌/秒),包括预填充和解码阶段。批处理大小设置为最大可能的,而不耗尽内存。
#### 4.2 结果
结果总结于表1。在所有模型规模下,PreFT变体显著优于多LoRA。例如,在Llama 3.1 70B上,DiReFTP实现1.90×的吞吐量提升,LoRAP实现1.87×的提升。在较小的模型上,收益更大:在Llama 3.1 8B上,DiReFTP达到2.21×,LoRAP达到1.83×;在Qwen 2.5 0.5B上,DiReFTP达到2.39×,LoRAP达到1.63×。这些收益源于解码阶段免除了适配器计算,对于小模型尤其显著,因为小模型中适配器的相对开销更大。
表1:吞吐量(令牌/秒)比较。测量值来自512适配器的均匀Punica微基准测试。在Llama 3.1 70B上使用4 GPU张量并行。
| 模型 | 多LoRA | LoRAP | DiReFTP |
|---|---|---|---|
| Qwen 2.5 0.5B | 1250 | 2040 (1.63×) | 2980 (2.39×) |
| Llama 3.1 8B | 950 | 1740 (1.83×) | 2100 (2.21×) |
| Llama 3.1 70B | 420 | 785 (1.87×) | 798 (1.90×) |
### 5 性能评估
我们评估PreFT在多种任务上的性能,与全位置PEFT进行比较。我们关注三个主要设置:监督微调(SFT)、强化学习(RL)和长文本生成。
#### 5.1 监督微调(SFT)
我们在Tülu-3数据集(指令调优)和OpenThoughts(推理数据集)上训练模型。我们比较标准LoRA(所有位置)与LoRAP(仅预填充)。我们报告评估损失和下游准确率(Tülu-3的MMLU、GSM8K、HumanEval;OpenThoughts的MATH、AIME24)。所有实验使用秩11的LoRA,以及秩16的DiReFTP(Tülu-3和LongBench-Write)或秩8的其他情况。参数计数大致匹配。结果见表2。
表2:SFT性能比较。评估损失和下游准确率。Tülu-3使用MATH、GSM8K、HumanEval的平均准确率;OpenThoughts使用MATH和AIME24的平均准确率。
| 数据集 | 指标 | 标准LoRA | LoRAP | DiReFTP |
|---|---|---|---|---|
| Tülu-3 | 评估损失 | 0.38 | 0.41 (+0.03) | 0.40 (+0.02) |
| Tülu-3 | 下游准确率 (%) | 68.2 | 67.5 (-0.7) | 68.0 (-0.2) |
| OpenThoughts | 评估损失 | 0.55 | 0.58 (+0.03) | 0.57 (+0.02) |
| OpenThoughts | 下游准确率 (%) | 34.1 | 33.8 (-0.3) | 34.0 (-0.1) |
我们观察到PreFT的评估损失略高,但下游准确率下降很小,且在统计上不显著(p > 0.05,配对样本t检验)。通过增加秩(例如,LoRAP使用秩22可以进一步缩小损失差距),而对吞吐量影响极小(因为增加秩不会影响解码阶段的效率)。
#### 5.2 强化学习(RL)
我们使用GRPO(Shine等人,2024)对基于推理的数据集(GSM8K、MATH)进行RL训练,并评估数学推理和代码生成。所有RL实验使用秩8的LoRA和PreFT变体。结果见表3。
表3:RL性能比较。数学推理(GSM8K、MATH)和代码生成(HumanEval)的准确率。训练使用GSM8K + MATH进行数学推理,使用MBPP进行代码生成。
| 任务 | 标准LoRA | LoRAP | DiReFTP |
|---|---|---|---|
| GSM8K | 82.5 | 81.9 (-0.6) | 82.2 (-0.3) |
| MATH | 48.3 | 47.8 (-0.5) | 48.0 (-0.3) |
| HumanEval | 72.0 | 71.2 (-0.8) | 71.8 (-0.2) |
PreFT在RL上的结果接近标准PEFT,差异很小。数学推理任务上,DiReFTP更接近全位置LoRA;代码生成任务上,LoRAP的差距略大。总体而言,性能差距在1%以内,表明PreFT在RL设置中同样有效。
#### 5.3 长文本生成
我们使用LongWriter数据集训练模型生成长达20k令牌的文本,并在LongBench-Write上评估。我们报告长度跟随分数Sl和LLM-as-judge质量分数Sq。结果见表4。
表4:长文本生成性能。LongBench-Write评估的长度跟随度(Sl)和质量(Sq)。
| 方法 | Sl (4k-20k) | Sq (1-5) |
|---|---|---|
| 标准LoRA | 87.3 | 4.1 |
| LoRAP | 86.9 | 4.0 |
| DiReFTP | 85.1 | 3.9 |
LoRAP几乎保持了标准LoRA的长度控制能力和质量,差距极小。DiReFTP在长文本任务上略弱,但差距仍然较小。
### 6 讨论与结论
我们提出了PreFT,一种仅预填充的适配器方法,旨在提升多用户LLM推理服务的效率。通过将适配器应用限制在预填充阶段,PreFT解码时无需额外内存和计算,从而显著提高吞吐量。在多种模型规模和任务上的实验表明,PreFT的吞吐量收益显著(1.5×–2.4×),同时在SFT和RL上性能接近全位置PEFT。我们相信PreFT为个性化LLM服务提供了一种更实用的替代方案,能在不大幅牺牲性能的情况下实现高效扩展。未来的工作可以探索预填充应用的更精细化控制,以及PreFT与其他优化(如量化、稀疏注意力)的结合。
(参考文献按原文保留,此处省略以避免冗余)相似文章
UniPrefill:基于块级动态稀疏化的通用长上下文预填充加速
UniPrefill 是一项在研究论文中提出的新型预填充加速框架,通过块级动态稀疏化实现大语言模型(LLMs)的通用长上下文处理。该框架与 vLLM 集成,可在多种模型架构中将首次 Token 生成时间(TTFT)加速最高达 2.1 倍。
浅层预填,深层解码:通过层非对称 KV 可见性实现高效的长上下文推理
本文介绍了 SPEED,一种层非对称 KV 可见性策略,通过仅在预填阶段的下层处理提示 token,同时在解码阶段保持全深度注意力,从而降低长上下文推理的成本。
ShadowPEFT:面向参数高效微调的阴影网络
ShadowPEFT 提出一种集中式参数高效微调方法,通过深度共享的阴影模块细化 Transformer 层表示,在可训练参数量与 LoRA/DoRA 相当的情况下实现同等甚至更优的性能。
ConFu:通过未来思考实现更好的推测采样
ConFu引入了一个新颖的推测解码框架,使草稿模型能够通过思考令牌和软提示预期未来的生成方向,在多个LLM模型上相比EAGLE-3实现了8-20%的令牌接受率和生成速度提升。
PaT:试错后规划,实现高效的测试时代码生成
本文介绍了 PaT(试错后规划),这是一种用于代码生成的自适应测试时计算策略,在保持与更大模型相当的性能的同时,将推理成本降低了约 69%。