微调技术

简介: 微调是将预训练模型适配特定任务的关键技术,涵盖指令微调、对齐微调与高效参数微调。LoRA通过低秩分解减少参数量,提升训练效率;Prefix Tuning与Prompt Tuning则通过可训练前缀或软提示实现轻量微调。不同方法在参数量、速度与效果间权衡,满足多样化部署需求。(238字)

🎯 微调概述
微调是将预训练模型适配到特定任务的关键技术,包括指令微调、对齐微调和高效参数微调。
🏗️ 微调类型
1️⃣ 指令微调 (SFT)

原理:在指令-响应对上训练

数据格式:{"instruction": "...", "output": "..."}

效果:提升指令遵循能力
2️⃣ 对齐微调 (RLHF)

流程:
a
人类偏好数据收集
b
奖励模型训练
c
PPO强化学习优化

目标:使模型行为符合人类价值观
3️⃣ 高效参数微调
LoRA (Low-Rank Adaptation)
背景
矩阵中的最大的不相关的向量个数,就叫做秩。如果矩阵中数据比较相关,则为低秩矩阵。

例如,一个
m×n
的矩阵,如果它的秩 r 远小于 m 和 n,那么它就是一个低秩矩阵,冗余信息很多

反之,若矩阵的秩等于矩阵的行数 m,或者列数 n,则它是一个满秩矩阵

大模型的参数矩阵中的秩往往较小,具有很强的冗余
LoRA 原理

原理:如果一个矩阵P(假设维度为
d×d
)存在大量冗余信息,即低秩特性,可以不用完整的
d×d
尺寸来表示它,可利用因式分解这个想法,用两个较小的矩阵( A和B )的乘积 BA 来表示矩阵P,其中 A 维度
r×d
,B 维度
d×r
,则
P=AB
,其中
r
为秩,远小于
d
,A 和 B 为低秩矩阵

思想:将全参数微调理解为“冻住的预训练权重” + “微调过程中产生的权重更新量”,因此微调只学习“更新”的那部分参数量(与预训练权重维度相同)。同时借助矩阵分解的思想,将“更新”的大模型参数矩阵分解为两个低秩矩阵的乘积,从而减少参数量,提高训练速度

公式:
output=W
0

x+ΔWx=W
0

x+BAx
其中
W
0

为预训练权重,维度为
d×d

x
为输入,
B

A
为可训练参数,维度分别为
d×r

r×d
(
r
为秩,远小于
d
),
ΔW
为微调过程中产生的权重更新量,即
BA


效果:参数更新量由
d×d
降低为
2×d×r
,反向传播时,只有 A、B 获得梯度,
W
0

不变,因而大大减少计算量
LoRA的初始化
常见的初始化方法是:矩阵A 高斯初始化,矩阵 B 初始化为零矩阵,保证模型输出在第一步与预训练一致,避免任何初始扰动,保证不会在一开始就破坏预训练表示

为什么A 高斯初始化,B 初始化为零矩阵?为什么不能都高斯初始化?或者都为0,或者B 高斯初始化,A 初始化为零矩阵?

具体可参考: LoRA微调中的矩阵初始化策略:A随机与B零初始化

A 随机与 B 零初始化: B在第一轮即可获得梯度,更新参数,A在第一轮无法获得梯度,不更新参数,但随着B的更新,A会逐渐获得梯度,开始更新

A 和 B 都高斯初始化: 模型输出在第一步与预训练不一致,引入噪声,干扰训练

A 和 B 都初始化为零: A 和 B 均无法获得梯度,无法更新,训练无法启动

B 随机与 A 零初始化: 理论上可能,但会导致训练效率显著下降甚至失败。B在第一轮无法获得梯度,无法更新参数,A 在第一轮的梯度不为零(取决于随机初始化的 B),可以更新,但 A 的更新需要与 B 的更新协同才能有效调整权重。由于 B 在初始阶段无法更新,A 的更新方向会受限于初始随机的 B,导致优化过程不稳定。
LoRA作用的位置
理论上LoRA的思想可以应用到任何权值矩阵上,例如在自注意机制中有四个权值矩阵 wq,wk ,wv ,wo ,另外在Transformer的全连接中也有两个权值矩阵w_up 和 w_down。关于LoRA在Transformer的作用位置,LoRA论文在自注意力层做了一组对照实验,证明如果只将LoRA作用到某个单一矩阵上,效果不佳,如果将LoRA作用到两个矩阵上,放在 wq 和 wv 效果最好。建议在所有的权值矩阵都加上LoRA,有利于模型捕捉到所有矩阵的关键信息

LoRA中参数

r
:秩,表示低秩矩阵的维度,一般取1、2、4、8、16、32,比较常见的取值是8,值越高意味着矩阵越大

lora_alpha:缩放因子,用于调整低秩矩阵的影响力。可以理解为对BA的更新幅度进行放大或缩小

lora_target:指示需要应用低秩适应(LoRA)模块的特定网络层或模块
LoRA的变体

LoRA+(LoRA Plus): LoRA 的增强版本,主要通过为矩阵 A 和 B 引入不同的学习率改进Lora,其中矩阵 B 的学习率设置为矩阵 A 的 16 倍。这种策略可以显著提高训练效率,同时提升模型精度(约 2%),并将训练时间缩短 2 倍。前提:原始 LoRA 中,矩阵 A 和 B 使用相同的学习率进行更新。该方法认为当模型的宽度(即嵌入维度)较大时,这种单一学习率的设置会导致微调效果不佳。)

QLoRA(Quantized LoRA): QLoRA 是 LoRA 的量化版本,主要通过对低秩矩阵进行量化,从而显著降低存储和计算成本。这使得模型在显存受限的环境中运行更加高效。

AdaLoRA(Adaptive LoRA):AdaLoRA 是 LoRA 的自适应版本,它支持动态调整秩,可根据任务和数据的复杂度动态调整低秩矩阵的秩,避免了固定秩带来的限制。

Prefix Tuning

原理:在输入前添加可训练前缀

特点:仅训练前缀参数
Prompt Tuning

原理:学习软提示词嵌入

特点:简单高效
📊 微调方法对比
方法
参数量
训练速度
效果
部署
全参数
100%

最好
困难
LoRA
1%


容易
Prefix
0.1%
最快

容易

相关文章
|
安全 大数据
数据集不是“越多越好”:微调里最容易被误解的一件事
微调中数据非“越多越好”,而是“越清楚越好”。它本质是约束而非燃料:重目标一致性、表达稳定性与边界清晰度,而非规模。小而精的数据更易定位问题、验证假设;盲目扩量反致模型平均化、难调试、掩盖目标缺陷。关键在明确“教模型什么”,而非堆砌数量。
|
设计模式 算法 安全
【设计模式】RBAC 模型详解
随着软件系统的复杂性和规模的不断增长,权限管理成为了一个至关重要的问题。在大型多人协作的系统中,如何有效地管理不同用户的访问权限,确保系统的安全性和稳定性,是每一个开发者都需要面对的挑战。为了解决这一问题,业界提出了一种被广泛应用的权限管理模型——基于角色的访问控制(Role-Based Access Control,简称RBAC)。希望通过本篇博客的学习,您能够深入了解RBAC模型的核心思想和实现原理,掌握如何在实际项目中应用RBAC模型来提高系统的安全性和可维护性。
2789 1
|
3月前
|
人工智能 搜索推荐 持续交付
阿里云GPU服务器租用价格表2026年最新:L20/A10/V100/T4/P100/P4 GPU卡支持
阿里云2026年最新GPU服务器(现称EGS弹性GPU服务)支持L20、A10、V100等多款GPU卡,覆盖AI推理、图形渲染、科学计算等场景。提供按量、包月、包年多种计费,gn8is(L20)等实例月付低至6919元起,支持1小时起租与机密计算。(239字)
1672 9
|
3月前
|
机器学习/深度学习 人工智能 JSON
大模型微调实战:从原理到落地的完整指南
本文系统讲解大模型微调的原理与实战,涵盖LoRA等高效方法,手把手教你用少量数据定制专属模型,结合数据准备、训练策略与效果评估,助力开发者低成本实现AI应用落地。
|
27天前
|
人工智能 Linux API
从1人到AI团队:OpenClaw(Clawdbot)全平台部署(阿里云/Win11/Mac/Linux)及百炼API配置+多Agent协作+FAQ
一个人运营AI自媒体,既要找素材、写文案,又要做编辑、盯进度,常常忙得焦头烂额却产出寥寥——这是很多内容创作者的共同困境。2026年,OpenClaw(昵称“龙虾”)的多Agent协同功能彻底改变了这一现状:它允许用户创建多个分工明确的AI Agent,像真实团队一样相互协作、自主推进任务,从选题、素材整理到文章编辑、进度把控,全程无需人工干预。
590 2
|
网络协议 芯片
|
1月前
|
存储 机器学习/深度学习 人工智能
AI Agent 记忆机制详解:是什么、为什么、怎么用
AI Agent的记忆系统是突破“上下文腐烂”的核心:通过分层架构(短期/长期/元记忆)实现跨会话连续性、自我反思与长期目标追踪;融合向量检索、知识图谱与摘要压缩等技术,兼顾效率与语义深度;兼顾伦理合规,让AI从工具进化为可信伙伴。(239字)
715 1
|
10月前
|
JSON 安全 API
网络商城支付API对接全攻略
本文介绍了API在支付领域的应用及其重要性,特别是在网络商城中的广泛使用场景。API通过标准化规则实现不同软件间的交互,支持支付指令传输、多支付方式接入及数据安全保障。文章详细阐述了收款场景资料准备、技术文档对接流程、测试交付要求以及注意事项,并提供了常见问题的解决方案,帮助开发者顺利完成支付平台与网络商城的对接,确保交易稳定性和安全性。
400 1
|
SQL 容灾 关系型数据库
让X不断延伸, 从跨AZ到跨Region再到跨Cloud
本文从“空间”这一维度,聊一聊PolarDB-X在跨空间部署能力上的不断发展和延伸,以及在不同空间范围下的高可用和容灾能力,并着重介绍一下最新的产品能力——GDN(Global Database Network)。
8997 23
如何在 Linux 系统中查看进程占用的内存?
如何在 Linux 系统中查看进程占用的内存?
2762 58

热门文章

最新文章