LLM学习笔记(1)loraQlora
2026/6/10 21:41:09 网站建设 项目流程


LoRA 完整详解:原理、r/alpha、Rank取值、矩阵初始化、自定义初始化

一、LoRA 基础介绍

LoRA(Low-Rank Adaptation,低秩适配)是参数高效微调方案,核心思路:

  1. 冻结预训练大模型全部原始权重W0W_0W0,不更新;
  2. 对目标线性层(Transformer 的 Query/Value 为主)新增两个小低秩矩阵A、BA、BAB,仅训练这两个小矩阵;
  3. 前向传播公式:
    h=W0x+αr⋅BA⋅x h = W_0 x + \frac{\alpha}{r} \cdot BA \cdot xh=W0x+rαBAx
  4. 推理时可将ΔW=αrBA\Delta W=\frac{\alpha}{r}BAΔW=rαBA合并进原始权重W0W_0W0无推理延迟
  5. 参数量极低:原始权重d×dd\times dd×d,LoRA 参数仅d⋅r+r⋅d=2drd\cdot r + r\cdot d = 2drdr+rd=2drr≪dr\ll drd,显存开销远小于全量微调。

二、r(Rank)与 alpha(lora_alpha)的作用

1. r = LoRA Rank(低秩维度)

数学定义
  • A∈Rin_dim×rA \in \mathbb{R}^{in\_dim \times r}ARin_dim×r:降维矩阵,把输入特征映射到低秩空间;
  • B∈Rr×out_dimB \in \mathbb{R}^{r \times out\_dim}BRr×out_dim:升维矩阵,从低秩空间还原回原始维度;
  • rrr是两个矩阵共享的中间维度,控制 LoRA总参数量与表达能力
核心作用
  1. 表达能力预算:r 越大,LoRA 能拟合的任务细节越多、适配能力越强,但参数量、显存、训练耗时同步上升;r 越小,参数越少、训练越快,但表达不足,容易欠拟合。
  2. 控制低秩约束强度rrr越小,ΔW=BA\Delta W=BAΔW=BA的秩上限越低,对原模型的修改越克制,更不容易覆盖预训练基础能力。
工程常用 Rank 取值
r 取值适用场景
2 / 4 / 8小数据集、快速实验、风格微调(AI绘画)、资源受限
16 / 32通用平衡首选,LLM对话、通用任务、大部分AI绘画
64 / 128大数据集、复杂逻辑任务、追求极致效果、SOTA微调

行业默认经验:LLM 基础实验优先r=8/16;Stable Diffusion 绘画常用r=4~32;大参数量基座(70B+)可直接用 r=64。

2. alpha(lora_alpha,缩放超参)

数学定位

缩放系数s=αrs=\frac{\alpha}{r}s=rα,整体放大/缩小低秩增量BABABA对原模型的影响:
ΔW=αr⋅BA \Delta W = \frac{\alpha}{r} \cdot BAΔW=rαBA

核心作用
  1. 统一不同 r 的更新幅度
    更换 r 时,仅同步修改 alpha 就能保持 LoRA 更新强度不变,不用大幅调整学习率。行业通用默认配置:α=r\alpha=rα=r,此时缩放因子s=1s=1s=1,增量幅度标准化。
  2. 手动控制微调强度
    • α>r\alpha > rα>r:放大 LoRA 修改,模型更容易贴合下游任务,但容易过拟合、遗忘基座知识;
    • α<r\alpha < rα<r:削弱 LoRA 修改,对原模型改动极小,稳定性强,但拟合效果会下降。

举例:r=16,alpha=32 → s=2,两倍放大低秩更新;r=16,alpha=8 → s=0.5,削弱更新。

三、LoRA 两个矩阵 A、B 的标准初始化方案

标准初始化规则(PEFT/HuggingFace 官方默认)

  1. 矩阵 A(in_dim × r):随机初始化
    采用 Kaiming Uniform / 小方差正态分布N(0,0.02)\mathcal{N}(0,0.02)N(0,0.02),填充随机小数;
  2. 矩阵 B(r × out_dim):全零初始化,所有权重=0。

为什么要这样设计?两大核心目标

目标1:训练初始时刻完全不改动原始模型输出

矩阵乘法性质:零矩阵 × 任意矩阵 = 零矩阵。
训练第0轮时B=0B=0B=0,因此ΔW=αrBA=0\Delta W=\frac{\alpha}{r}BA=0ΔW=rαBA=0,前向传播输出完全等于原始预训练模型:
h=W0x+0=W0x h = W_0 x + 0 = W_0 xh=W0x+0=W0x
优势:

  • 训练起点完全复用预训练模型的成熟表征,不会随机扰动输出;
  • 避免初期梯度剧烈震荡、灾难性遗忘基座知识;
  • 训练稳定,小数据集场景鲁棒性极强。
目标2:保证梯度正常流动,模型可以正常学习
  1. 不能 A、B 全部置零:
    若 A=0、B=0,则全程BA=0BA=0BA=0,无论怎么训练,增量永远为0,梯度全程为0,参数无法更新,训练失效。
  2. 不能 A、B 全部随机初始化:
    初始BA≠0BA≠0BA=0,训练一开始就给原模型叠加随机偏移,大模型预训练权重极度敏感,极易出现:损失飙升、梯度爆炸、收敛缓慢、破坏基座能力。
  3. 单随机、单零的折中方案:
    B初始全零,但A有随机值;训练第一步反向传播时,B立刻收到非零梯度开始更新,A后续跟随更新,梯度通路完整,兼顾初始稳定性可训练性

补充:也可以反过来 A置零、B随机,效果等价,只是行业统一约定 A随机、B零初始化。

四、能否更换初始化方式?

结论:完全可以更换初始化,学术界已有大量改进方案

1. 主流自定义初始化方案

(1)双随机小方差初始化

A、B全部使用极小方差高斯初始化(如σ=0.001\sigma=0.001σ=0.001),不再把其中一个置零。

  • 优点:收敛速度更快,适合大数据集、充足算力场景;
  • 缺点:训练初期不稳定,需要同步降低学习率,小数据集极易过拟合。
(2)数据驱动初始化(LoRA-GA、EVA 等论文方案)

利用预训练模型的输入特征、权重SVD分解结果,根据下游任务数据统计值初始化 A、B。

  • 优势:大幅提升收敛速度,同等 r 下最终效果更好;
  • 缺点:实现复杂,需要前向采集数据统计,增加训练前预处理开销。
(3)正交初始化、Xavier/Kaiming 调整方差

修改A矩阵随机分布的方差、采用正交矩阵初始化,缓解梯度消失,多用于深度大模型微调。

2. 更换初始化的注意事项

  1. 稳定性风险:脱离「一随机一零」标准初始化后,训练初期大概率震荡,必须下调学习率;小数据集、低资源场景不推荐。
  2. 推理合并兼容:无论怎么修改初始化,训练完成后BABABA依然可以正常合并进原始权重,推理无额外开销。
  3. PEFT 框架支持自定义:HuggingFace PEFT 库开放 LoRA Layer 初始化接口,可重载reset_parameters()函数替换 A、B 的初始化逻辑。

3. 适用场景建议

  • 快速实验、小数据集、新手调参:坚持标准初始化(A随机,B全零),稳定性优先;
  • 大数据集、追求收敛速度、有调参能力:尝试双极小方差随机初始化;
  • 科研实验、追求SOTA性能:使用 LoRA-GA 等数据感知初始化方案。

总结

  1. LoRA 冻结基座,仅训练低秩矩阵 A、B,参数量极低,推理无延迟;
  2. r 控制 LoRA 表达能力与参数量,通用推荐 r=16/32;alpha 是缩放因子,默认 alpha=r,用来标准化不同 r 的更新幅度;
  3. 标准初始化:A随机、B全零;目的是初始不扰动原模型、同时保证梯度可更新;
  4. 支持自定义更换初始化,但非标准初始化会降低训练稳定性,需要配套调整学习率。
    量化基础概念

大模型量化技术全解:基础概念

一、量化基础:核心定义、通用名词

1. 什么是量化(Quantization)

高精度浮点数权重/激活映射到低比特整数/低精度浮点(INT4/INT8/FP8/NF4),用微小精度损失换取:

  • 模型体积缩小、显存占用下降;
  • 推理速度提升(硬件低比特加速单元);
  • 更低硬件门槛(7B FP16=13GB,4bit仅3.5GB)。

2. 基础数值格式名词

名词全称用途
FP3232位单精度浮点数模型训练、原始权重,4字节/参数
FP16 / BF1616位半精度常规推理基线,2字节/参数;BF16动态范围更大,LLM首选
INT88位有符号整数8bit量化,1字节/参数
INT4 / NF44位整数/归一化4bit主流低比特量化,0.5字节/参数;NF4适配权重正态分布
FP88位浮点(E4M3/E5M2)新一代GPU硬件原生支持,兼顾动态范围与速度

3. 量化对象命名(WxAy 规范)

  • W=Weight(权重):仅量化模型参数,推理时反量化回FP16计算;省显存,速度提升有限。
    • W4A16:权重4bit、激活FP16(GPTQ/AWQ标准)
    • W8A16:权重8bit、激活FP16
  • A=Activation(激活):量化前向传播中间张量,权重+激活全低比特,可用硬件INT8/FP8矩阵核心加速,大幅提速。
    • W8A8:权重8bit+激活8bit(SmoothQuant/FP8全量化)
  • KV Cache量化:对Transformer缓存做低比特压缩,降低长上下文显存占用。

4. 量化粒度名词(控制精度的关键)

  1. Per-Tensor(逐张量):整个权重矩阵共用1组scale/零点;速度最快、误差最大。
  2. Per-Channel / Per-Group(逐通道/分组量化):每N个权重一组独立scale,GPTQ/AWQ默认group_size=128;精度大幅提升,行业标准。
  3. Per-Token(逐Token激活量化):激活值按每个输入文本Token单独缩放,解决激活离群值问题。

5. 通用基础算法名词

RTN(Round-to-Nearest,就近取整量化)

最简单PTQ基线:浮点数值直接除以scale后四舍五入到整数。无误差优化,4bit精度损失巨大,仅作对比基准。

Zero Point(零点)& Symmetric/Asymmetric(对称/非对称量化)
  • 对称量化:数值范围[-max, max],零点=0;GPTQ/AWQ默认,计算更快。
  • 非对称量化:数值[min, max],带偏移零点;适合ReLU这类单向激活。
Scale(缩放因子)

浮点↔整数转换的比例系数:
Wfloat=Wint×ScaleW_{float}=W_{int} \times ScaleWfloat=Wint×Scale

二、两大量化范式:PTQ vs QAT(核心分类)

1. PTQ(Post-Training Quantization,训练后量化)

定义:对已经完整训练好的模型直接量化,不需要重新训练,仅需少量校准样本统计分布。

  • 优势:速度快、无需训练算力、开源社区全部模型支持;
  • 劣势:低比特(4bit)会有一定精度损失;
  • 主流PTQ算法:GPTQ、AWQ、SmoothQuant、RTN;
  • 适用:开源LLM快速部署、本地跑模型、商用快速上线。

2. QAT(Quantization-Aware Training,量化感知训练)

定义模型训练阶段就模拟量化噪声(在前向传播中插入量化/反量化算子),反向传播同时优化权重与量化参数。

  • 优势:4bit/8bit精度远高于PTQ,几乎逼近FP16原生效果;
  • 劣势:需要完整训练数据、大算力、训练耗时极长;
  • 适用:商业闭源模型、对输出质量要求极高的场景、FP8训练;
  • 衍生:LLM-QAT(大模型专用量化感知训练)。

三、四大主流PTQ算法深度详解:GPTQ、AWQ、SmoothQuant、BitsAndBytes

1. GPTQ(Generative Pre-trained Transformer Quantization)

基础信息
  • 类型:PTQ、仅权重量化(W4A16)、对称分组量化(group=128)
  • 论文2022,基于OBQ最优脑损伤理论,逐层优化权重量化误差
核心原理
  1. 逐层处理:模型一层一层量化,量化当前层时固定其他层;
  2. Hessian矩阵误差补偿:计算权重对输出损失的影响(Hessian),量化某权重后,把产生的误差分摊到剩余未量化权重,全局最小化层输出重构误差;
  3. 优化量化顺序:优先量化对损失影响最小的权重,抑制误差扩散。
优缺点

✅ 优点:4bit精度优秀、支持2/3/4/8bit、生态完善(ExLlamaV2、text-generation-webui、vLLM);
❌ 缺点:量化过程计算量大、耗时长;推理内核速度略低于AWQ;

适用场景:NVIDIA GPU离线量化、通用开源模型、ExLlamaV2加速。

2. AWQ(Activation-Aware Weight Quantization,激活感知权重量化)

基础信息
  • 类型:PTQ、W4A16分组量化、MIT韩实验室2024提出,目前4bit精度天花板
核心原理

关键发现:只有0.1%~1%的权重通道对模型输出起决定性作用(显著权重Salient Weights),这些通道对应激活值幅度极大。

  1. 用少量校准数据统计每层激活分布,定位高贡献通道;
  2. 对高贡献通道单独缩放放大,保护其数值动态范围,避免量化后信息丢失;
  3. 其余普通通道正常量化,整体误差远小于GPTQ。
优缺点

✅ 优点:同等4bit下精度比GPTQ高1~3%;vLLM Marlin内核推理速度远超GPTQ;量化耗时比GPTQ短;
❌ 缺点:仅支持NVIDIA CUDA GPU,不支持CPU;生态略少于GPTQ;

适用场景:云端GPU推理、vLLM高并发服务、追求4bit最高输出质量。

3. SmoothQuant(平滑量化)

基础信息
  • 类型:PTQ、权重+激活全量化(W8A8),NVIDIA/Intel主推的8bit工业方案
核心原理

LLM痛点:权重分布平滑易量化,激活存在大量极端离群值,INT8量化误差爆炸。
数学等价变换Y=X⋅W=(X/S)⋅(S⋅W)Y=X \cdot W = (X/S) \cdot (S\cdot W)Y=XW=(X/S)(SW)

  1. 对角平滑系数S:把激活的离群值转移到权重上;
  2. 变换后激活X/S分布收敛、权重S*W轻微变差;两者都适合INT8量化;
  3. 实现W8A8全整数计算,调用GPU INT8 Tensor Core,推理速度翻倍。
优缺点

✅ 优点:推理速度极强、支持CPU/GPU、8bit几乎无精度损失;
❌ 缺点:仅适合8bit,4bit效果差;需要校准数据;

适用场景:大批次云端推理、8bit低成本加速、Intel CPU部署。

4. BitsAndBytes(bnb,动态量化)

  • 类型:运行时动态PTQ,无需提前离线量化模型文件;
  • 原理:加载FP16模型后,推理时实时将权重转为4/8bit,反向推理时自动反量化;
  • 优点:开箱即用、不用提前转模型、LoRA微调原生支持;
  • 缺点:推理速度慢、显存开销高于GPTQ/AWQ;
  • 适用:快速实验、LoRA微调、临时测试模型。

四、GGUF:本地CPU/GPU通用量化文件格式(重点名词)

1. GGUF全称:GPT-Generated Unified Format

由llama.cpp作者开发,替代老旧GGML/GGMF格式,专门面向本地离线推理(CPU、Mac M系列、低端GPU、Ollama)的二进制模型存储格式。

核心特性
  1. 内置完整模型元数据、量化参数、词表,加载速度极快;
  2. 原生支持K-quants分组量化(Q2_K~Q8_K),同等比特精度优于传统Q4_0/Q5_1;
  3. 跨硬件:CPU、Apple Metal、NVIDIA/AMD GPU通用,Ollama、llama.cpp主流工具唯一标准格式;
  4. 和GPTQ/AWQ本质区别:GPTQ/AWQ是量化算法(量化权重的数学方法);GGUF是存储文件格式(存放量化权重的容器)。

2. GGUF量化等级(Q系列,行业通用命名)

量化类型比特定位推荐场景
Q2_K2bit极致压缩,损失大手机/老旧电脑、临时测试
Q3_K_S/M/L3bit小体积平衡低内存笔记本
Q4_K_S/M4bit行业首选Q4_K_M;平衡速度/内存/精度90%本地用户通用选择
Q5_K_S/M5bit高精度4bit+对文本质量敏感、有充足内存
Q6_K6bit接近原生FP16写作、代码、专业对话
Q8_08bit几乎无损追求最高本地输出质量

3. 旧格式补充:GGML / GGMF

GGUF的前身,现已全部淘汰,不再推荐下载使用,兼容性差、内存优化不足。

五、其他高频量化名词汇总

  1. ExLlama / ExLlamaV2
    GPTQ模型专用GPU推理内核,极致优化4bit GPTQ速度,text-generation-webui、本地部署常用。
  2. Marlin Kernel
    AWQ专用高速推理内核,vLLM内置,同等硬件下AWQ速度远超GPTQ。
  3. NF4(Normalized Float 4-bit)
    4bit归一化浮点格式,BitsAndBytes专用,适配权重正态分布,微调友好。
  4. FP8(E4M3 / E5M2)
    新一代硬件原生8bit浮点,H100/RTX40系支持;W8A8全量化,速度远超INT8,精度损失极小,云端大模型主流方案。
  5. QuIP# / LLM.int8()
    LLM.int8:最早8bit权重量化方案;QuIP#:超低位2/3bit高精度PTQ前沿算法。
  6. Group Size(分组大小)
    GPTQ/AWQ/GGUF的核心超参,每组权重共用1个scale;默认128,group越小精度越高、文件越大。
  7. Calibration Data(校准数据)
    PTQ算法所需少量文本样本(几十~几百条),用来统计权重/激活数值分布,计算scale、识别显著权重(AWQ)、平滑因子(SmoothQuant)。无校准数据则只能用RTN,精度暴跌。
  8. Weight-Only Quantization(仅权重量化)
    GPTQ/AWQ/BnB都属于此类,只压缩权重存储,激活保持FP16;优势是兼容所有Transformer模型、支持LoRA微调。
  9. Full Quantization(全量化 W8A8/FP8)
    权重+激活全部低比特,硬件整数/浮点核心加速,并发推理吞吐量翻倍,但微调支持差。

六、GPTQ / AWQ / GGUF 横向对比速记

项目GPTQAWQGGUF
本质PTQ量化算法PTQ量化算法模型存储文件格式(兼容多种量化)
推理硬件NVIDIA GPU(ExLlamaV2)NVIDIA GPU(Marlin/vLLM)CPU、Mac、NVIDIA/AMD全平台
4bit精度良好最优Q4_K_M接近AWQ
量化速度中等转换工具速度快
典型工具text-gen-webui、ExLlamavLLM、AutoAWQllama.cpp、Ollama
适用场景离线GPU本地部署云端高并发GPU服务个人电脑、Mac、边缘设备本地运行

七、选型快速指南

  1. 云端GPU推理、高并发、追求4bit最高质量→ AWQ + vLLM Marlin
  2. 离线NVIDIA显卡、本地网页UI(text-gen-webui)→ GPTQ + ExLlamaV2
  3. CPU/苹果Mac/无独立显卡、Ollama本地跑模型→ GGUF Q4_K_M
  4. 8bit大批次云端加速、Intel CPU部署→ SmoothQuant W8A8
  5. 临时实验、LoRA微调快速测试→ BitsAndBytes动态4bit
  6. 商业模型、极致精度要求→ QAT量化

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询