NeurlPS 2022 | 全新大模型参数高效微调方法SSF:仅需训练0.3M的参数,效果卓越

简介: NeurlPS 2022 | 全新大模型参数高效微调方法SSF:仅需训练0.3M的参数,效果卓越

作者:字节跳动智能创作团队近期,由新加坡国立大学和字节跳动联合发表的论文入选 NeurIPS 2022。该论文提出了一个全新的、针对大模型训练的参数高效微调方法 SSF(Scaling & Shifting Your Features),可简洁、高效、零开销实现参数微调。


大模型训练调参:开销和性能不可兼得?
随着数据驱动的方法在深度学习界的普及,数据集规模和模型规模都有了巨大的爆发。业界倾向于探索大模型,然后在下游任务中采用这些预训练的模型,以获得更好的性能和更快的收敛。
然而,目前的程序严重依赖于全面微调,即更新模型的所有参数。这不可避免地导致模型对小的目标数据集过度拟合,继而在微调后不能用于其他任务。因此,设备需要为每个任务保存一套专门的模型参数,造成了巨大的存储空间,特别是对于如今的大模型(例如, ViT-G/14, 1.8G, CoAtNet, 2.4G)来说,训练开销很大。
此前,业界对上述问题的解决方案是:仅仅微调头部层,即只对最后一个头部层进行微调。然而,与完全微调相比,这种做法通常会产生较差的性能。
以视觉任务上实现的方法 VPT(视觉提示微调)[1]为例,VPT 提出插入可学习的提示作为输入,并将其附加到原始图像 token 中。这些提示将通过执行自我注意力(self attention)与图像 token 交互,并在微调过程中进行更新。通过这种方式,与只微调头部层相比,在下游任务中可以实现显著的性能提升。然而,与完全微调和微调头部层相比,VPT 方法额外引入了两个问题:
i) VPT 为不同的任务调整提示的数量,这引入了一个与任务相关的可学习参数空间。微调的性能对每个任务的提示数量很敏感,需要仔细设计。太少或太多的提示可能会降低微调的准确性或增加计算的冗余度(例如,在 Clevr/count 上有 200 个提示,但是 Flowers102 上有 1 个提示);
ii) VPT 以及其他基于适配器(adapter)的方法 [2],与原始预训练模型相比,在推理阶段引入了额外的参数和计算成本。例如,VPT 引入了额外的输入,基于适配器的方法在预训练的模型中插入额外的模块。这些方法改变了预训练网络结构或网络的输入,可能导致频繁的结构修改和沉重的工作量,特别是对于那些已经部署在边缘设备(如移动电话)中的模型。
符合奥卡姆剃刀原则的新方法
受一些特征调制方法的启发,针对上述难题,新加坡国立大学和字节跳动的研究者提出了一种全新的参数高效的微调方法,名为 SSF。采用 SSF 方法,只需要对预训练的模型提取的深层特征进行缩放和移位,就可以进行微调。
由于上游数据集和下游数据集的数据分布不同,很难将在上游数据集训练的模型权重应用于下游数据集。例如,保持骨干权重的微调头部层策略会导致性能下降。为了缓解上述问题,SSF 引入了缩放参数和移位参数,这些参数可以被认为是方差和均值,用于调节用上游数据集上的预训练模型提取的下游数据集的特征,从而使被调节的特征落在一个鉴别性的空间。这些缩放参数和移位参数不依赖于任何输入,对于不同的任务有一个统一的可学习参数空间。
SSF 的另一个优点是,它只引入了线性变换,这是因为研究者仅仅对提取的特征进行了缩放和移位。这些线性变换可以在推理阶段通过模型重新参数化(model re-parameterization) [3] 进一步合并到原始的预训练权重中,从而避免了下游任务的额外参数和 FLOPs。对于部署在边缘设备中的模型,只需要上传微调后的更新权重,而不需要改变网络结构。
表一显示了 SSF 和其他微调方法之间的具体特征比较。SSF 简单、有效、高效,也符合奥卡姆剃刀原则。研究者探索了这个新的基线,发现它出人意料地超过了所有其他参数高效的微调方法。

图一:SSF 方法的特点以及它在 FGVC 和 VTAB 任务上的性能。

通过在 26 个分类数据集和 3 个鲁棒性数据集上评估 SSF 方法,结果显示:与其他参数高效的微调方法相比,SSF 获得了最先进的性能。
与完全微调相比,SSF 方法在 FGVC 和 VTAB-1k 上获得了 2.46%(90.72% {vs. 88.54%)和 11.48%(73.10%  vs. 65.57%)的 Top-1 精度性能改进,但只需要大约 0.3M 的可训参数。此外,SSF 在推理阶段不需要额外的参数,可以即插即用,很容易扩展到各种模型系列(CNN、Transformer 以及 MLP 网络)。
具体的实现思路
与此前方法不同的是,研究者引入了缩放和移位因子来调节由预先训练好的模型提取的深层特征,并进行线性转换以匹配目标数据集的分布。
这一方法涵盖了五个主要属性:
i) SSF 实现了与完全微调策略相同的性能;ii) 所有的下游任务都可以独立地输入到模型中,而不依赖任何其他任务;iii) 模型只需要微调很少的参数;iv)与 VPT 不同,VPT 为每个任务调整提示的数量,而 SSF 中微调的参数集不会随着任务的变化而变化,这使得之后可以通过增加更多的任务进行多任务学习或连续学习来进一步微调参数是可行的(它提供了更多的灵活性,与 ii)并不矛盾);v)由于线性变换,SSF 避免了在推理阶段引入额外的参数和计算成本,使这一方法实现零开销。

图二:SSF 的总体框架。

SSF 的设计:SSF 执行线性转换来调节特征来进行参数高效的微调,如图二所示。在图二(a)中,给定一个在上游任务中预训练的模型,研究者在网络的每个操作(OP)之后插入 SSF-ADA (把提出的方法称为 SSF,把具体的模块称为 SSF-ADA)来调节特征。总共有 K 个操作,这些操作可能包含多头自注意力(MSA)、MLP 和层归一化化(LN)等等。在微调过程中,这些操作中的预训练权重保持冻结,SSF-ADA 参数保持更新。具体的 SSF-ADA 结构如图二 (c) 所示,前一个操作输出的特征用一个缩放因子进行点乘,然后用一个移位因子求和,这与输入无关,如下所示

重参数化:由于 SSF-ADA 是一个完全的线性变换,可以通过吸收缩放和移位项来重新参数化它,如下所示

其中 w 和 b 分别为权重和偏置项。* 代表卷积层中的 "卷积" 操作或 MLP 层中的 "乘法" 操作。t 是前一个线性层的输入。由于 w 和 b 被冻结,而和在微调中被更新,在推理阶段,和可以通过上述公式合并到原始参数空间(w 和 b)。从这个角度看,SSF-ADA 使得在不增加任何额外参数和计算成本的情况下执行下游任务成为可能,如图二(b)所示。
实验结果
1. SSF 在图像分类数据集上的性能
研究者分别在 FGVC、VTAB、CIFAR-100 和 ImageNet-1K 进行了实验,如表一、二、三。SSF 一致性地超过了其他高效微调方法(Adapter、Bias 和 VPT)。在表三中,SSF 在 Swin Transformer、ConvNext 和 AS-MLP 等各种模型上的结果也始终优于其他参数高效微调方法,这也验证了 SSF 在多种模型上的有效性。更多的分析见论文。

表一:在 FGVC 数据集上使用 ViT-B/16 预训练模型的实验结果

表二:在 VTAB 数据集上使用 ViT-B/16 预训练模型的实验结果

表三:在 CIFAR-100 和 ImageNet-1K 数据集上使用 ViT-B/16, Swin-B, ConvNext-B 和 AS-MLP-B 等预训练模型的实验结果

2. 不同的设计对结果的影响
研究者还进行实验来分析不同设计对微调的影响。所有的实验都是在 CIFAR-100 上用预训练的 ViT-B/16 模型实现的,结果见表四。

表四:不同设计的影响。(a)  层数的影响 (b) 不同插入位置的影响 (c) 初始化的影响 (d) 不同组件的影响

3. 可视化分析
为了进一步研究为什么 SSF 能取得更优异的性能,研究者还将完全微调和微调头部层、完全微调和 VPT-Deep、完全微调和 SSF 之间的特征相似性可视化,如图三所示。在最后一层,SSF 与完全微调的特征最相似,准确度也最接近。这表明 SSF 能很好地提取下游任务中的图像特征。

图三:完全微调和微调头部层、完全微调和 VPT-Deep、完全微调和 SSF 在 ViT-B/16 的不同层中的特征相似性的可视化。

结论
在本文中,研究者专注于参数高效的微调,并提出了一种 SSF 方法来缩放和移位预先训练好的模型所提取的特征。SSF 在微调过程中引入的缩放和移位参数可以通过推理阶段的重参数化合并到原来的预训练模型权重中,避免了额外的参数和 FLOPs。在总共 26 个图像分类数据集和 3 个鲁棒性和分布外数据集以不同的模型(CNN、Transformers 和 MLPs)进行实验,SSF 出人意料地优于其他参数高效的微调方法,它建立了一个新的基线。
引用:[1] Jia et al., Visual Prompt Tuning, ECCV2022.[2] Houlsby et al., Parameter-efficient transfer learning for nlp, ICML2019.[3] Ding et al., Repvgg: Making vgg-style convnets great again, CVPR2021.

相关文章
|
2月前
|
存储 机器学习/深度学习 人工智能
大模型微调技术:LoRA原理与实践
本文深入解析大语言模型微调中的关键技术——低秩自适应(LoRA)。通过分析全参数微调的计算瓶颈,详细阐述LoRA的数学原理、实现机制和优势特点。文章包含完整的PyTorch实现代码、性能对比实验以及实际应用场景,为开发者提供高效微调大模型的实践指南。
1975 2
|
2月前
|
存储 数据采集 自然语言处理
56_大模型微调:全参数与参数高效方法对比
随着大型语言模型(LLM)规模的不断增长,从数百亿到数千亿参数,传统的全参数微调方法面临着计算资源消耗巨大、训练效率低下等挑战。2025年,大模型微调技术已经从早期的全参数微调发展到如今以LoRA、QLoRA为代表的参数高效微调方法,以及多种技术融合的复杂策略。本文将深入对比全参数微调和参数高效微调的技术原理、适用场景、性能表现和工程实践,为研究者和工程师提供全面的技术参考。
|
2月前
|
机器学习/深度学习 存储 人工智能
大模型微调:从理论到实践的全面指南
🌟蒋星熠Jaxonic:AI探索者,专注大模型微调技术。从LoRA到RLHF,实践医疗、法律等垂直领域模型优化,分享深度学习的科学与艺术,共赴二进制星河的极客征程。
大模型微调:从理论到实践的全面指南
|
3月前
|
机器学习/深度学习 数据采集 算法
大模型微调技术综述与详细案例解读
本文是一篇理论与实践结合的综述文章,综合性全面介绍大模型微调技术。本文先介绍大模型训练的两类场景:预训练和后训练,了解业界常见的模型训练方法。在后训练介绍内容中,引出模型微调(模型微调是属于后训练的一种)。然后,通过介绍业界常见的模型微调方法,以及通过模型微调实操案例的参数优化、微调过程介绍、微调日志解读,让读者对模型微调有更加直观的了解。最后,我们详细探讨数据并行训练DDP与模型并行训练MP两类模型并行训练技术,讨论在实际项目中如何选择两类并行训练技术。
|
3月前
|
人工智能 自然语言处理 IDE
模型微调不再被代码难住!PAI和Qwen3-Coder加速AI开发新体验
通义千问 AI 编程大模型 Qwen3-Coder 正式开源,阿里云人工智能平台 PAI 支持云上一键部署 Qwen3-Coder 模型,并可在交互式建模环境中使用 Qwen3-Coder 模型。
767 109
|
3月前
|
分布式计算 测试技术 Spark
科大讯飞开源星火化学大模型、文生音效模型
近期,科大讯飞在魔搭社区(ModelScope)和Gitcode上开源两款模型:讯飞星火化学大模型Spark Chemistry-X1-13B、讯飞文生音频模型AudioFly,助力前沿化学技术研究,以及声音生成技术和应用的探索。
329 2
|
3月前
|
人工智能 Java API
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)
本文介绍AI大模型的核心概念、分类及开发者学习路径,重点讲解如何选择与接入大模型。项目基于Spring Boot,使用阿里云灵积模型(Qwen-Plus),对比SDK、HTTP、Spring AI和LangChain4j四种接入方式,助力开发者高效构建AI应用。
1641 122
AI 超级智能体全栈项目阶段一:AI大模型概述、选型、项目初始化以及基于阿里云灵积模型 Qwen-Plus实现模型接入四种方式(SDK/HTTP/SpringAI/langchain4j)