ACM Computing Surveys 2025 | 大语言模型的高效压缩与调优方法综述
文章目录
1. 论文信息
- 论文题目:Efficient Compressing and Tuning Methods for Large Language Models: A Systematic Literature Review
- 论文作者:GUN IL KIM,SUNGA HWANG,BEAKCHEOL
- 发表单位:韩国延世大学
- 发表期刊:ACM Computing Surveys 2025
2. 论文主要贡献
- 构建了首个压缩+微调一体化的统一分类体系
- 系统对比了主流方法的优劣与适用场景
- 识别了领域关键痛点与研究空白
3. 论文创新点
- 提出了压缩+微调一体化的统一框架
- 构建了LLM专属的压缩技术分类与评估范式
- 揭示了压缩与微调技术的交叉融合瓶颈与关键问题
大语言模型的高效压缩与调优方法分类体系
研究问题(RQ1-RQ4):分别聚焦 “LLM 压缩技术有哪些”“LLM 调优趋势”“实际应用场景”“核心发现与启示”。
搜索策略:数据源(ACM Digital Library、IEEE Xplore 等 6 大数据库)、时间范围(2020-2024)、关键词(如 “pruning large language models”“LoRA”)
筛选标准:纳入标准(IC1-IC6,如英文、AI/CS 领域会议期刊、有实际应用)与排除标准(EC1-EC5,如预印本、非 NLP 领域)
文章筛选流程:从 505 篇初筛文献→257 篇标题 / 摘要筛选→123 篇全文分析,最终确定纳入综述的文献。
4. 方法
模型蒸馏与模型评估的详细流程可视化
4.1 知识蒸馏(Knowledge Distillation)
核心:小模型(学生模型)模仿大模型(教师模型,已经学完海量知识的预训练模型)的行为
通过迁移大模型的“隐形知识”(如输出分布,中间层注意力,推理逻辑),在大幅减少参数规模和计算成本的同时,保留接近大模型的性能。
这个教学过程是在模型与训练阶段完成的,不是针对某一个具体任务,而是让小模型变得更轻巧的同时掌握大模型的通用语言能力。
模型蒸馏和评估详细过程中的可视化
4.1.1 预训练蒸馏
案例 1:DynaBERT(2020)的两阶段操作(自适应宽度和深度)-让小模型“聪明又轻巧”
把模型想象成一个“工厂”:
宽度:工厂里的生产线数量——处理模型的“注意力头”,“前馈网络”这些小模块;
深度:工厂的楼层数——模型的层数
• 阶段 1:自适应宽度调整
◦大模型里有很多 “生产线”(比如 12 个注意力头),但不是所有都有用。DynaBERT 会 “重连” 工厂的管道(模型中间层的连接),让那些处理关键信息的生产线(比如能识别语法、语义的注意力头)并行工作,同时砍掉没用的 “闲置生产线”。
—— 重连 Transformer 中间层的多头注意力(MHA)和前馈网络(FFN),让重要注意力头和神经元并行工作,裁剪冗余头 / 神经元
◦ 不硬砍,而是慢慢调整层数,同时加了 “记忆保护”(正则化),让小模型在减少层数的同时,不忘记之前学的基础语言知识。
——用 GLUE 和 SQuAD 数据集校准,保留对任务关键的组件(如情感分类任务中对情感词敏感的注意力头)
• 阶段 2:自适应深度调整
◦ 用 “深度倍增器” 控制学生模型的层数(如从教师模型的 12 层裁剪为 6 层),引入正则化避免 “灾难性遗忘”(即忘记预训练的基础语言知识);
◦ 在 ARM 智能手机上测试,确保低计算资源下的推理速度(比 BERT 快 2 倍,内存占用减少 50%)。
案例 2:FedKD(联邦学习 + 蒸馏)的分布式操作-多个地方一起训练小模型并且不会泄露隐私
多个班级一起学同一本教材,但不用把学生的作业集中到一个老师手里
• 客户端侧操作:
◦ 每个机构只用自己的本地数据(医院用医疗文本,银行用金融文本),让本地的 “大老师” 教 “小学生”:比如用医疗文本让小模型学 “肿瘤”“手术” 这类专业词的用法,同时不泄露病人信息。
——每个客户端本地训练教师模型(如 LLaMA-7B),并初始化共享的学生模型(如 LLaMA-1.3B)
◦ 本地蒸馏:用客户端数据训练教师→学生模型,计算预测准确率,动态调整知识迁移强度(准确率高则增强迁移);
◦ 每个机构的小模型学完后,不会把自己的训练数据(比如病人病历)传给中央服务器,只会传 “小模型的更新内容”(比如哪些参数改了)。但就算传更新数据量也大,所以 FedKD 还用了个 “压缩技巧”(专业叫 SVD,奇异值分解):把要传的 “更新内容” 用数学方法压缩变小,比如原来 1G 的数据,压缩后只剩 200M,传的时候更快、更省流量。
——梯度压缩:用 SVD(奇异值分解)对学生模型的更新梯度进行自适应精度压缩,减少通信量
• 服务器侧操作:
◦ 中央服务器收到所有机构的小模型更新后,会把这些更新 “合并”(比如取平均值),得到一个 “更厉害的小模型”,再发回给每个机构。每个机构拿到这个 “统一的好学生” 后,再用自己的本地数据接着训 —— 反复几轮,每个机构的小模型都学到了大模型的通用能力,还掌握了自己领域的专业知识,同时全程没泄露任何原始数据
——聚合所有客户端的学生模型更新,生成全局学生模型;
将全局模型下发给客户端,迭代至所有客户端的学生模型性能收敛(通信成本比传统联邦学习降低 60%)
两者都是通过蒸馏让小模型继承大模型的能力,
但前者聚焦单机资源优化,后者聚焦多机构协同优化。
4.1.2 白盒模型与黑盒模型
白盒模型蒸馏:可访问教师模型参数
适用于开源 LLM(如 LLaMA、OPT),可利用教师模型的内部结构(如中间层、注意力权重)提升蒸馏效果。
案例:I2D2(常识蒸馏框架)的操作
步骤 1:规避大教师模型依赖
不使用 GPT-3 等超大模型,而是基于中等大小的开源模型(如 RoBERTa- Large),用 “NeuroLogic Decoding” 优化生成质量(通过逻辑约束过滤不合理输出);
步骤 2:自模仿学习
让小模型生成常识文本(如 “下雨需要带伞”),再用自身的高质量生成样本(创新点一:使用神经逻辑解码来提高更小更以获取得语言模型的生成质量;创新点二:自我模仿学习,能够迭代学习并增强自身的常识理解能力)作为 “伪教师输出”,迭代优化常识理解能力;
步骤 3:偏见过滤
训练 “批评模型”(基于人类标注数据),过滤小模型生成的偏见 / 低质量内容(如性别歧视表述),确保蒸馏后的数据伦理。
案例:DeepSeek-R1 模型(推理蒸馏案例)
老师模型用 “逐步推理”(比如算数学题时写步骤:先算乘法再算加法),白盒蒸馏时,学生会把老师的 “推理步骤” 也学过来 —— 不仅学最终答案,还学 “第一步怎么拆分问题、第二步怎么用公式”,最后学生模型即使变小,也能像老师一样一步步推理,减少 “瞎猜”( hallucination)
案例:MiniLLM 模型
会解决 “学生学偏” 的问题:比如老师对 “冷门常识”(比如 “企鹅是鸟类”)的预测概率很低,学生容易把这种 “低概率” 当成 “错误答案” 而忽略。这时就用 “策略梯度”(一种调整方法),让学生重点学老师对 “冷门知识” 的判断逻辑,避免学丢重要细节。
应对高方差,奖励欺骗和生成长度偏差等问题:单步正则化,教师混合采样和长度归一化。
黑盒模型蒸馏:仅访问教师模型 API-学生靠反向推导老师的计算过程
适用于闭源 LLM(如 ChatGPT、Gemini),无法获取参数,只能通过 API 获取输出,核心是 “提取教师的推理逻辑”。
案例:Distilling step-by-step(分步蒸馏)的操作
步骤 1:提取教师推理依据(Rationales)
向黑盒教师模型(如 GPT-3.5)输入任务样本(如算术题 “3+5×2=?”),要求输出推理步骤(“先算 5×2=10,再算 3+10=13”);
收集这些 “推理步骤 + 答案” 作为 “结构化知识”,替代传统的软标签。
步骤 2:多任务训练学生模型-让学生刷题
构建多任务损失:学生模型需同时预测 “推理步骤” 和 “最终答案”,推理步骤损失(与教师推理步骤的文本相似度)+ 答案损失(与真实答案的交叉熵);
步骤 3:少样本优化
仅用 10% 的训练数据(相比传统蒸馏减少 90%),学生模型(如 DistilGPT2)在算术、常识推理任务上超越少样本提示的 GPT-3,且减少教师模型的偏见(因推理步骤可验证)。
符号思维链蒸馏(SCoTD):在较小的大型模型上使用思维链提示方法,以基于较小的学生模型提高其准确性。在少样本提示过程中精心筛选一组带标签的思维链,学生模型使用标准的语言建模损失进行训练。
核心区别:能否看到大模型内部的构造
白盒适合 “要精准模仿大模型能力” 的场景(比如让小模型保留大模型的推理步骤),黑盒适合 “只能用闭源大模型” 的场景(比如用 ChatGPT 的输出训自己的小模型)—— 本质都是 “让小模型抄大模型的作业”,只是白盒能抄过程,黑盒只能抄答案。
4.2.低秩策略(Low-rank Strategy)
核心:将大型数据矩阵分解为维度更低的小型矩阵(将大型权重矩阵W分解为两个正交矩阵U和V,使得W近似等于UV,U和V的乘积近似于原始权重矩阵。
4.2.1 低秩近似
核心:使用奇异值分解来降低维度,能够解释潜在的语义结构
问题:参数导致误差对原始矩阵影响大
解决方案:引入费希尔信息(Fisher information)对影响模型预测结果的参数重要性进行加权,从而衡量影响模型预测的参数的重要性
即——费希尔加权奇异值分解(FWSVD)
此外,真加权奇异值分解(TFWSVD)通过回归数值优化,比FWSVD更优秀:
该方法基于自适应矩估计(ADAM)与随机梯度下降(SGD)优化器的混合算法计算切换点,并在此基础上实现交替最小二乘(ALS)优化,通过将每个参数与其独特重要性相关联,实现模型的高效压缩。
低秩稀疏近似(LoSparse) 结合了低秩近似与剪枝技术的优势,同时规避了两者的局限性(例如,低秩近似难以精准拟合对模型性能至关重要的部分,因为它难以兼顾所有不同权重)。
该方法通过用权重矩阵中 “相干部分” 所对应的低秩近似,与 “非相干部分” 所对应的稀疏矩阵之和来近似权重矩阵,实现了更高效、更稳定的模型优化。在分解之前,低精度低秩分解(LPLR)[120] 会从现有矩阵中随机选取一列,计算其基向量,然后对该基向量进行量化处理。随后,以经过量化的基向量为中心,将其投影到现有矩阵中随机选取的另一列上,并使用较少的比特数来最小化弗罗贝尼乌斯范数误差(Frobenius norm error),该方法已应用于 LLaMA-7B [136] 模型。
4.2.2 低秩分解
直接作用于模型层:比如对模型里的注意力层、全连接层的权重矩阵进行拆分,让模型在计算时直接用小矩阵运算,从根本上降低模型的计算负担。
核心:把大语言模型里复杂的大型权重矩阵(可以理解为模型存储知识的 “表格”)拆成两个更小、更简单的矩阵。
渐进式低秩分解:该方法将模型分解为多个中间步骤,从而能够对所有层进行分解(而非一次性压缩),之后通过微调恢复模型精度。
数据感知低秩压缩(DRONE) 的研究表明:即便无法对模型中的指标进行近似,只要数据分布处于较低的内在维度空间,且保留关键输入因素,就能实现低秩分解。通过最小化输出的近似误差,该方法被证明比传统奇异值分解方法的效果更优。
克罗内克分解(Kronecker decomposition):在基于 Transformer 的模型(如 GPT-2)中,可将不同注意力头和不同层的所有权重矩阵分解为克罗内克因子,由此形成了 KnGPT2 模型。此外,针对 StarCoder 这类代码生成大语言模型,研究人员提出了一种名为*低秩分解(LoRD)*的压缩方法。该方法根据秩的平衡点,计算低维矩阵与高维矩阵的宽高比,进而实现秩的降低。
ESPACE:该方法通过降低激活值(activations)的维度来优化模型。ESPACE 保留权重矩阵不变,对激活张量的自相关矩阵进行特征值分解,并利用主特征向量构建静态正交矩阵,将激活值投影到低维空间。能够最大限度地减少激活值降维过程中引入的噪声,能在多种大语言模型上实现高达 50% 的压缩率,同时使模型性能损失降至最低。
4.3 参数剪枝(Parameter Pruning)
核心:去掉模型里不重要的参数或结构,让模型更小,跑得更快,同时尽量不影响性能。
4.3.1 预训练剪枝-模型刚学完通用知识就瘦身
指在模型预训练完成后、下游任务微调前进行的剪枝操作,核心是在保留预训练知识的同时减少模型冗余,区别于 “微调后剪枝”。
预训练后的模型里,有很多参数其实对 “通用语言能力” 作用不大(比如有些注意力头、神经元,在理解通用文本时几乎用不上),可以提前去掉。研究发现,有些模型哪怕减少一半注意力头,通用语言能力反而没降甚至更好 —— 因为去掉了 “冗余” 的 “无效注意力”。
如何判断 “哪些参数不重要”?
通过数学工具(像泰勒展开)计算参数对模型预测结果的影响,影响小的就标记为 “可剪”;或者把模型里的结构(比如注意力头、层块)分成 “有用组” 和 “无用组”,直接删掉无用组。
注意力头迭代剪枝 :会基于数据分布和损失值,通过泰勒展开(Taylor expansion)计算一个代理分数(proxy score),以此识别出对模型影响较大的注意力头,随后相应地减少各层中的多头注意力数量。该方法可通过多种方式实现,以达到模型压缩的目的。
——结构化块剪枝(structured block pruning)便是其中一种实现方式。它采用任意大小的 “块” 作为剪枝单元,并可扩展至移动剪枝(movement pruning)。此外,FLOP 方法 通过*对角掩码(diagonal mask)*在重参数化矩阵中筛选出秩为 1 的组件,其性能显著优于结构化块剪枝。
由于结构化剪枝存在灵活性不足的缺点,有研究者提出了一种新方法 —— *粗粒度 - 细粒度联合剪枝(Coarse-and Fine-grained Pruning,简称 CoFi)。该方法通过对粗粒度单元和细粒度单元进行联合剪枝,“粗粒度” 指以模型层、注意力头组等大结构为剪枝单元,“细粒度” 指以隐藏维度、单个神经元等小单元为剪枝单元,实现了以更小单元进行剪枝的目标。
4.3.2 生成式剪枝-专门给会写文本的模型瘦身
大语言模型分两类:
一类是 “判别式”(比如判断文本是正面还是负面、回答问题时选正确答案)
另一类是 “生成式”(比如写作文、编代码、生成对话,像 GPT、LLaMA 这类)。生成式模型的核心需求是 “流畅生成文本”,但体积往往更大,剪枝时得特别注意不破坏 “生成逻辑”。
生成式剪枝特指针对生成式大语言模型(如 LLaMA、GPT 系列)的剪枝技术,区别于面向分类、问答等判别式任务模型的剪枝,需重点保障模型的文本生成质量与逻辑连贯性。
通常在模型已经能生成文本后(比如预训练后,或初步微调后)进行(区别于上文的预训练剪枝)
它和预训练剪枝的关键区别有两个:
- 针对模型类型不同:只给 “会生成文本” 的模型用,比如给 LLaMA、GPT-2 剪枝,得保证剪完后模型还能流畅写句子、编代码,不能剪得 “不会说话”;
- 剪枝逻辑更关注 “生成稳定性”:生成式模型需要连贯的 “中间思考过程”(比如写文章要先有段落逻辑),所以剪枝时不能随便删结构 —— 比如会把相互依赖的参数(像注意力头和对应的神经元)“打包一起剪”,避免模型生成文本时逻辑断裂。
LLM-Pruner 是首个对生成式大语言模型(LLMs)进行结构化剪枝的尝试,它支持计算组重要性分数,以此对待移除的结构进行排序。通常,该分数是基于全梯度信息计算得出的,这能避免在处理完整模型时产生大量资源消耗。
研究人员采用了基于依赖关系的结构化剪枝方式,确保相互依赖的组件被一同剪枝,从而防止出现中间表示错位的情况 —— 这种错位可能会导致模型在各类任务中的性能失衡。
此外,该方法通过使用小型公开数据集进行剪枝后微调,最大限度地减少了对专有训练语料库的依赖,提升了剪枝后模型在不同任务和数据集上的泛化能力与公平性。
Sheared-LLaMA 实现了目标结构化剪枝,它是 *CoFi(粗粒度 - 细粒度联合剪枝)的扩展方法。该方法除了考虑拉格朗日约束(Lagrangian constraints)*外,还通过确定目标模型结构的形状来辅助剪枝,同时保持目标模型的结构不变;并且,它采用动态批次加载算法,更高效地利用数据。
*基于波动的自适应结构化剪枝(FLAP):与 LLM-Pruner 以及 Wanda 的结构化剪枝版本不同,*提出了一种无需再训练的结构化剪枝方法:它根据特征波动选择方差较低的输入通道,以最大限度降低剪枝带来的影响。此外,该方法还设计了偏差补偿机制,利用校准数据计算得出的基准值,恢复被剪枝后的输出特征图。这种方法无需再训练就能将剪枝导致的性能下降降至最低
SLICEGPT 则利用 Transformer 模型中的*计算不变性(computational invariance)提出了一种模型压缩技术:
通过应用正交变换(orthogonal transformations)修改权重矩阵,同时不改变模型的输出结果。该方法借助 RMSNorm 连接整合正交矩阵,并通过主成分分析(PCA)*将每个块的信号矩阵投影到其主成分上;随后,通过删除特定的行和列移除不重要的成分,从而有效降低模型的嵌入维度。
Group importance scores:“组重要性分数”:指对模型中具有关联的结构(如注意力头组、层块)计算的重要性指标,用于判断哪些结构可被安全移除,是结构化剪枝的核心判断依据。
Full-gradient information:“全梯度信息”:指利用模型训练过程中所有参数的梯度数据计算重要性分数,相比仅用参数 magnitude(幅值)的方法,能更精准反映参数对模型性能的影响,但计算成本更低(因无需处理完整模型)。
Computational invariance:“计算不变性”:是 Transformer 模型的特性之一,指在特定数学变换(如正交变换)下,模型的计算结果(输出)保持不变,SLICEGPT 正是利用这一特性实现 “修改权重却不影响输出” 的剪枝。
RMSNorm:“均方根归一化”:是大语言模型中常用的归一化方法(替代 LayerNorm),通过对输入信号的均方根进行归一化稳定训练,此处用于辅助正交矩阵的整合,确保剪枝后模型的数值稳定性。
4.4 量化(Quantization)
核心:给大语言模型这个“超级计算器”减负,把那些高精度的数字,换成精度更低但能够用的格式。从而起到省内存提速度降能耗的效果。
量化能降低神经网络中权重,激活值等数值的精度,该过程通常涉及将高位宽格式转换为低位宽格式(例如,从 32 位浮点数 FP32 转换为 8 位整数 INT8 或 4 位整数 INT4)
4.4.1 训练后仅权重量化(Post-training Weights-only Quantization)
仅利用大语言模型的权重,对已训练完成的模型进行运算转换,从而实现内存优化
8位量化技术(8-bit Quantization)
- LLM.int8方法
LLM.int8()作为首个应用于1750亿参数大模型的INT8训练后量化方法,在保证全精度模型性能的同时显著降低了内存占用。其创新性体现在:
向量级量化:将矩阵乘法分解为独立内积运算序列
混合精度分解:对离群值采用高精度乘法处理,有效防止特征分布偏移导致的信息丢失
- LUT-GEMM方法
基于二进制编码量化(BCQ)的LUT-GEMM实现了压缩率与量化误差的平衡,支持均匀/非均匀双重量化格式。
相比cuBLAS张量并行方案具有以下优势:
-
避免多GPU分配导致的资源闲置和延迟增加
-
最大化单GPU利用率,减少同步开销
显著提升处理速度并降低能耗 -
该方法保持了量化兼容性,确保模型在多语言任务中的泛化能力。
低位宽量化技术(Low-bit Quantization)
- GPTQ算法
该算法突破性地实现了3-4位超大规模模型量化,关键技术包括:
1.统一权重行量化顺序(区别于OBQ方法)
2.专注更新权重矩阵最后一列
3.优化并使用乔列斯基核(Cholesky kernel)提升速度,确保仅更新必要权重。
-
AWQ方法
权重重要性差异理论:并非所有权重的重要性相同,因此只需保护少数关键权重即可显著降低量化误差
基于"权重重要性差异"理论,通过以下方式降低量化误差:
通道级缩放公式与搜索空间
激活值感知的最优缩放因子确定 -
SpQR方法(稀疏量化表示)
通过离群权重分离实现4倍以上内存压缩:
分组量化捕获小型相关权重
16位精度保留离群值
3-4位压缩非离群权重在转换为16位离群格式 -
SqueezeLLM创新
- 基于灵敏度的非均匀量化方案:在 3 位精度下提升模型困惑度(perplexity);
- 稠密 - 稀疏量化方法:对权重进行分解,实现离群值与敏感权重的有效存储,后续可移除冗余部分,显著提升量化分辨率。
4.2.2 训练后权重与激活值量化(Post-training Weights and Activation Quantization)
大型语言模型的训练后权重与激活值量化,旨在实现两个目标:一是缩小量化后模型参数与浮点参数在权重分布上的差异;二是将层输出的激活值分布量化为低位宽格式。
8位量化方案
-
ZeroQuant
解决两大核心问题:
令牌(token)间激活值范围差异
权重行间范围差异
通过对令牌进行令牌级/对权重进行行级量化 提升精度 -
SmoothQuant
创新性平滑方案解决神经网络激活值量化的难题(激活值通常比权重更具波动性,更难处理):
核心思路:将激活值中的离群值转移到权重中,从而平滑激活值分布,再简化量化的过程同时保持激活值分布的平稳性。
低位宽量化(Low-bit quantization)
问题:若在不同通道间使用相同的量化参数,会导致数值差异过大。
-
RPTQ(将激活值相近的通道分组,是每个组内可使用相同的统一量化参数)
首创3位量化与激活函数结合:
通道聚类分组 -
LLM-FP4
双核心技术:
联合格式 最小化量化层中间输出与原始层输出之间的距离误差
最大值搜索优化格式
预移位指数偏置解决通道间激活值方差过大问题 -
OliVe算法
OVP方法特点:
定位优化降低硬件开销
内存对齐编码兼容加速器
实测性能提升4.5倍,能耗降低4倍 -
低秩补偿技术(Low-Rank Compensation)
基于奇异值分解SVD的低秩矩阵分解误差优化:
通过两个低秩矩阵构建新的误差优化
最小化参数量影响
训练后量化(PTQ):“先训好,再简化”
模型先按高精度(比如 FP32)完整训练好,之后再把它的 “数字零件” 换成低精度格式。就像先把一栋房子盖好,再把里面没必要的精细装饰换成简单版本,尽量不影响房子的整体功能。比如有些方法会专门 “照顾” 那些关键的 “特殊数字”(叫 “离群值”,比如特别大或特别小的权重)—— 这些数字对模型 accuracy 影响大,就保留稍高的精度,其他普通数字再用低精度,既省空间又少丢精度。
4.4.3 量化感知训练(QAT)-边训边适应低精度
训练模型时,就故意用低精度格式去计算,让模型提前 “适应” 精度降低的情况。好比盖房子时,就按 “简单装饰” 的标准来设计结构,房子盖好后自然能适应低精度,不会因为后续简化而 “塌掉”。比如有些方法会在训练中调整低精度数字的误差,让模型慢慢学会用不那么精细的数字,也能算出准确结果。
流程:模型先完成初始训练,随后在重新训练(retraining)过程中调整量化值,最终实现模型优化。
-
BitNet突破
首个1位权重Transformer训练方案:
BitLinear层简化二进制运算
关键组件保留高精度
显著降低能耗 -
LLM-QAT优化
8位量化保持性能的创新:
无数据自生成蒸馏
KV缓存量化
增强长程依赖处理
DeepSeek-V3框架 -
FP8动态混合精度方案:
计算密集型操作选择性量化
关键组件保留高精度
计算速度倍增,内存占用降低
5.高效微调(Efficient Tuning)
论文介绍了各种调优技术的主要方面:参数高效微调,查询调优和推理调优
5.1 参数高效微调
参数高效微调(PEFT)通过仅更新一小部分参数来适配预训练语言模型,在保持模型性能的同时,减少了训练时间、部署成本和计算需求。主要有两种微调技术,包括适配微调与重参数化微调。
5.1.1 适配器调优
不改动模型的整体结构,只是在关键位置加一些“小配件”让模型适应新场景。
适配器调优的核心逻辑是:不修改大模型的原始权重(相当于不拆别墅主体),而是在模型的 Transformer 层里插入一个个小巧的 “适配器模块”(相当于加配件),只训练这些新增的小模块,就能让模型适配特定任务。
适配器模块长什么样?
核心是 “瓶颈结构”
这些插入的 “小配件”(适配器模块)有个关键设计:先压缩维度,再恢复维度,就像一个 “瓶颈”,所以也叫 “瓶颈适配器”。
举个具体例子:
- 假设模型某一层的输出是 “1024 维” 的向量(可以理解为别墅某层有 1024 个房间);
- 适配器先把这 1024 维压缩到 “64 维”(相当于把 1024 个房间临时合并成 64 个功能区,减少计算量);
- 对 64 维向量做简单计算(相当于给功能区做针对性改造,比如摆上奶茶设备);
- 再把 64 维恢复回 1024 维(相当于把改造好的功能区还原成 1024 个房间,和原别墅结构兼容)。 这种 “压缩 - 改造 - 恢复” 的设计,既能让适配器学到任务专属的知识,又不会增加太多计算量 —— 就像用很少的材料,快速改造别墅的核心功能区。
有哪些常见的 “适配器变种”?
研究者们在基础适配器上做了很多优化,比如
• Compacter:给适配器加了 “低秩矩阵”(相当于配件用了更轻便的材料),进一步减少参数,同时兼顾性能,适合多任务场景;
• AdaMix:一次插多个不同的适配器模块,训练时随机选几个用(相当于同时准备奶茶店、书店的配件,根据需求选着用),能适配更多样的任务,还比只用一个适配器效果好;
• SparseAdapter:训练前先 “剪枝”—— 把适配器里没用的参数删掉(相当于提前去掉配件里多余的零件),最多能删掉 80% 的冗余参数,让模型跑得更快。
实际用起来有啥好处? 拿自然语言处理任务举例:
• 比如给 BERT 模型做 “情感分析”(判断句子是正面还是负面),用适配器调优只需要训练几百上千个参数,普通 GPU 几小时就能完成,而全量微调可能需要几天;
• 训练完后,把适配器模块关掉,模型还是原来的 BERT,能正常处理翻译、问答等其他任务,不会 “忘事”;
• 甚至可以给一个模型插多个适配器,比如一个处理情感分析、一个处理文本摘要,用的时候切换就行,相当于一栋别墅能快速切换成奶茶店、书店、咖啡店。
简单总结:适配器调优就是 “给大模型加小插件”—— 用最少的参数、最低的成本,让预训练大模型快速适配新任务,同时不破坏它原本的通用能力,特别适合资源有限又需要灵活调优的场景(比如中小企业、个人研究者)
5.1.2 重新参数化微调
核心:不改动模型原始大参数,而是通过“重新设计参数结构”减少要训练的参数数量,既省资源又能让模型适配新任务。
重新参数化的思路是:把这些复杂的大矩阵,拆解成几个小的、结构更简单的矩阵(比如低秩矩阵、量化后的矩阵),或者用其他紧凑结构替代。
训练时只更新这些 “小矩阵 / 紧凑结构” 的参数,原始大参数保持不变,最后再把这些小参数的效果融合回原模型,实现高效微调。
最典型的例子:LoRA(低秩适应)
这是重新参数化微调里最常用的技术,原理很直观:
把模型里负责关键计算的大权重矩阵(比如注意力层的矩阵),拆成两个非常 “瘦长” 的小矩阵(叫低秩矩阵)。
训练时只更新这两个小矩阵的参数,原始大矩阵完全冻结,不用动。
微调完成后,把两个小矩阵的计算结果加回原始大矩阵,模型就学到了新任务的知识。
简单说,就像给大模型的 “核心部件” 装了个 “小插件”,不用拆换整个部件,只调试插件就能让模型适配新需求,又快又省资源。
其他常见形式
量化 + 重新参数化:比如 QLoRA,先把原始模型参数压缩成低精度(比如 4 位),再用低秩矩阵微调,进一步减少内存占用。
稀疏 + 重新参数化:比如 LoRAPrune,一边用低秩矩阵微调,一边剪掉模型里没用的参数,让模型更精简。
5.2 查询微调
5.2.1提示微调(Prompt Tuning)-给模型 “定制软提示”
平时我们用模型时可能会写 “请总结这段文字” 这种手动提示,但 “提示微调” 是让模型自己学一套 “隐形提示”(叫 “软提示”,是计算机能读懂的向量数据,不是文字),让模型更适配特定任务。比如想让模型专门做 “医疗问答”,不用改模型本身,只训练一组 “医疗专属软提示”,每次输入医疗问题时,先把这组软提示偷偷加在输入里,模型就知道要切换到 “医疗模式”。
具体有几种常见玩法:
- 自动生成提示:比如有个叫 AutoPrompt 的方法,不用人写提示,它会通过数据自动搜一套最优提示(比如 “症状是 XX,诊断可能是?” 这种结构),省了人工设计的麻烦。
- 混合提示借力:比如 ATTEMPT 方法,会把多个任务的提示 “混在一起”。比如想让模型做 “法律问答”,就把之前学过的 “通用问答”“合同解读” 的提示融合,生成一组新提示,让模型更快学会新任务。
- 分任务定制提示:比如 Multitask Pt 方法,把不同任务(比如 “写邮件”“算数学”)的提示整合成一个 “提示库”,模型遇到新任务时,从库里挑对应的提示微调,不用重新训练。
- 给模型加 “提示生成器”:比如 IAPT 方法,在模型每一层都加了个小模块,能根据输入的指令(比如 “用口语化总结”)实时生成对应的软提示,不用提前准备固定提示,灵活性更高。
5.2.2 前缀微调(Prefix Tuning)-给模型 “加虚拟引导信号”
和 “提示微调” 有点像,但它加的不是 “提示词”,而是一组 “虚拟 tokens(虚拟符号)”—— 就像给模型输入内容前,先加一段 “隐形引导语”,告诉模型 “接下来要按这个风格 / 逻辑处理”。
比如想让模型写 “正式新闻稿”,就在输入新闻素材前,先加一组 “新闻风格虚拟 tokens”,模型看到这组 tokens,就自动切换到 “新闻写作模式”。
具体有几种关键改进:
- 全层加前缀,效果更稳:早期前缀只加在模型第一层,效果有限。后来有个叫 P-tuning 的方法,把前缀加到模型所有层,让每一层都能收到 “引导信号”,哪怕是 100 亿参数的大模型,用这种方法只调 0.1% 的参数,效果就能接近全量微调。
- 解决 “长文本处理差” 的问题:比如 Prefix-Propagation 方法,之前处理长文档(比如 1000 字报告)时,前缀的引导效果会越来越弱。它改成 “根据前面内容动态调整前缀”—— 比如读报告到第 500 字时,根据前 500 字的内容更新一次前缀,让引导效果贯穿全文,还比原来省了 50% 的参数。
- 用 “改写数据” 优化前缀:比如 WRAP 方法,想让模型擅长 “把网页内容改写成对话体”,就先让模型自己把大量网页内容改写成对话(生成 “ synthetic 数据”),再用这些数据训练前缀,这样模型学出来的前缀更贴合 “改写任务”,效果更好。
总结:查询微调的核心优势
不管是 “提示微调” 还是 “前缀微调”,本质都是 “用最小的改动(只调提示 / 前缀,不动模型大参数)” 让模型适配新任务 —— 比如做医疗问答、法律文档分析时,不用花大价钱训练整个模型,只花一点资源调一组 “提示 / 前缀” 就行,又省又灵活,特别适合中小企业或个人用。
6.个人声明
本文为作者对原论文的学习笔记与心得分享,受个人学识与理解所限,文中对论文内容的解读或有不够周全之处,一切以原论文正式表述为准。本文仅用于学术交流与传播,内容均由作者独立整理完成,不代表本公众号立场。如文中所涉文字、图片等内容存在版权争议,请及时与作者联系,作者将在第一时间核实并妥善处理。
更多推荐



所有评论(0)