news 2026/6/22 21:38:59

大模型微调(二)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
大模型微调(二)

一.adapter Turning

1.1adapter Turning原理

adapter Turning原理和LoRA很像,和之前说的pre Turning以及P-Turning不同.

  • pre Turning以及P-Turning是通过和原数据拼接的方式来训练参数.这种方式的缺点是和原文本拼接会超出模型限制
  • adapter Turning是在网络层中加新的网络层来适配新的任务.

1.2adapter Turning执行流程

adapter Turning不会调整模型的参数.只会修改adapter Turning中的参数(高效微调)

在原本的网络层中加入了适配器,适配器类似于前馈神经网络层(两个线性层中间加了一个激活函数),区别于前馈神经网络,adapter Turning是先降维后升维

1.3adapter Turning的缺点

  • 因为大部分参数被冻结,adapter 的容量有限,对复杂任务或需要大规模参数调整的任务可能效果不如全量微调。
  • Adapter 的维度大小(瓶颈层大小)、插入位置等超参数对性能影响较大,调参复杂度较高。
  • PLM 基础上添加适配器层会引入额外的计算,带来推理延迟问题

因为adapter Turning的这些缺点,所以引入LoRA进行`高效微调

二.LoRA微调

2.1秩

作用:衡量矩阵中有多少线性无关的行和列

第一个矩阵秩为1,第二个矩阵的秩为2.

秩越大,独立信息越多.

2.2LoRA微调原理

我们先思考两个问题:为何用数千的样本就能将一个数十亿参数的模型微调得比较好?为何大模型表现出很好的few-shot能力?
Aghajanyan的研究 (《Intrinsic Dimensionality Explains the Effectiveness of Language ModelFine-Tuning》))表明:预训练模型拥有极小的内在维度(instrisic dimension),即存在一个极低维度的参数,微调它和在全参数空间中微调能起到相同的效果【大模型在预训练阶段已经学到了更多的“通用特征”,所以在微调时,只需要在一个更小的方向空间中“对齐"或"修正“即可】。

同时Aghajanyan发现在预训练后,越大的模型有越小的内在维度,这也解释了为何大模型都拥有很好的few-shot能力【因为它们已经覆盖了大部分语言知识,少量参数更新(甚至几条示例 in-context)就能把输出方向调整到目标任务】。

总的来说,大模型已经学到了大部分知识,只需要一些点播就可以很好的完成下游任务

LoRA微调使用两个低秩矩阵来代替原有的参数矩阵,极大的减少了参数的训练量.

2.3LoRA的使用

2.3.1基本原理

LoRA技术冻结预训练模型的权重,并在每个Transformer块中注入可训练层(称为秩分解矩阵),即在模型的Linear层的旁边增加一个“旁支”A和B。其中,A将数据从d维降到r维,这个r是LoRA的秩,是一个重要的超参数;B将数据从r维升到d维,B部分的参数初始为0。模型训练结束后,需要将A+B部分的参数与原大模型的参数合并在一起使用。

真正实现是在Linear层旁边加低秩矩阵.注意力机制的Linear层加三个低秩矩阵,前馈全连接层有两个线性层,默认加一个低秩矩阵就可以了

2.3.2具体实现

这个详细的展现了LoRA微调的细节.

主要是明白秩是怎么来的(这里秩是8,原始维度是768)

原始的参数量是768*768,现在是768*8+768*8,参数量不是一个级别,而且现在的大模型基本是4000左右的维度,这个影响还是相当大的 (LoRA微调本质就是两个低秩矩阵替代一个高维矩阵)

A模块的初始化方式是正态分布初始化,B模块使用的是全零初始化,这样初始化的原因是为了匹配原始维度,第二个方面是加快收敛.

2.4LoRA微调的优点

  • 只训练极少参数,相对全量微调的存储和训练成本低。
  • 效果接近全参数微调,且保留原模型能力。
  • 不同任务的 LoRA 模块可插拔,便于多任务部署(训练低秩矩阵模块,可以在不同的任务场景下放入训练好的低秩模块)。

2.5LoRA微调的缺点

LoRA微调的本质是更新权重矩阵,这些参数表达能力有限,在复杂任务上可能无法拟合

LoRA通常加载线性层上,不同任务可能对位置比较敏感,选择不好可能会影响性能.

三.QLoRA

LoRA在训练巨语言模型下达不到好的效果,QLoRA优化了LORA的缺陷.

3.1原理

通过对预训练语言模型(PLM)进行量化(通常是4-bitNormalFloat),并结合LoRA技术进行微调,从而在极低的内存消耗下,仍然能够高效地微调巨型语言模型,同时保持甚至超越全量16-bit LoRA的性能。

传统的量化可能会导致精度丢失,QLoRA使用的是NF4量化方式,通过正态分布的设计,保留模型的精度.同时支持可以把显存保存到cpu内存中降低显存消耗.

3.2优点

  • 极低的内存消耗。这是QLoRA 最显著的优势。可以将训练巨型模型的内存需求降低 3-4倍,使得在单张消费级 GPU 上(如 24GB VRAM 的 RTX 3090/4090) 微调 65B 甚至 70B参数的模型成为可能。
  • 性能优异尽管进行了 4-bit 量化,但由于 16-bit 的 LoRA 权重和优化器状态,QLoRA 在许多任务上能够保持与 16-bit LoRA 甚至全量微调相媲美的生能。
  • 训练速度快:由于只训练少量参数且内存效率高,训练速度非常快。

3.3缺点

  • 虽然NF4优化了精度,但极端任务或敏感任务可能仍受4-bit量化影响。
  • 由于量化和分页机制的存在,训练和问题调试会比标准LoRA更复杂。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/12 17:35:29

【Java 网络编程全解】Socket 套接字与 TCP/UDP 通信实战全解

文章目录一、 网络编程基础1.1 网络编程中的基本概念1.1.1 发送端和接收端1.1.2 请求和响应1.1.3 客户端和服务端二、Socket套接字三、UDP数据报套接字编程四、TCP流套接字编程4.1 服务器引入多线程4.2 服务器引入线程池一、 网络编程基础 什么是网络编程 网络编程&#xff0…

作者头像 李华
网站建设 2026/6/20 3:53:15

Dify部署后上传不了文件?90%的人都忽略了这个关键配置!

第一章:Dify部署后上传文件提示 413 Request Entity Too Large 在完成 Dify 的本地或服务器部署后,用户在尝试上传较大文件时可能会遇到 413 Request Entity Too Large 错误。该问题通常并非由 Dify 应用本身引起,而是其前置代理服务&#x…

作者头像 李华
网站建设 2026/6/20 20:36:37

向量检索性能提升300%,Dify集成Milvus你不可错过的8个关键步骤

第一章:Dify集成Milvus的核心价值与性能突破 在构建现代AI应用的过程中,高效的向量检索能力成为提升系统响应速度与智能水平的关键。Dify作为一款面向开发者的低代码AI应用开发平台,通过深度集成Milvus这一领先的开源向量数据库,实…

作者头像 李华
网站建设 2026/6/13 11:05:09

如何在MCP服务器中高效配置动态resources?90%工程师忽略的关键细节

第一章:MCP服务器中动态resources的核心概念在MCP(Modular Control Plane)服务器架构中,动态resources是指能够在运行时根据请求上下文、环境变量或策略规则动态加载与配置的资源实体。这类资源不同于静态定义的组件,具…

作者头像 李华
网站建设 2026/6/22 0:07:32

Z-Image-Turbo从零开始:Python调用API接口代码实例详解

Z-Image-Turbo从零开始:Python调用API接口代码实例详解 Z-Image-Turbo是阿里巴巴通义实验室开源的一款高效AI图像生成模型,作为Z-Image的蒸馏版本,它在保持高质量图像输出的同时大幅提升了推理速度。仅需8步扩散过程即可生成照片级真实感图像…

作者头像 李华