QLoRA 量化低秩适配实战指南

📚 共计 30 章节
01
QLoRA背景与原理
大模型微调痛点 · QLoRA核心思想 · 与LoRA/Full Fine-tuning对比
背景原理
02
环境搭建
硬件要求 · 软件栈 · 虚拟环境配置
CUDAPEFTbitsandbytes
03
NF4量化原理
4-bit NormalFloat · 量化/反量化 · 分块量化策略
NF4分块
04
双重量化 (Double Quantization)
为什么需要双重量化 · 量化常数量化 · 内存节省分析
双重量化内存
05
Paged Optimizers
统一内存分页 · 解决显存尖峰 · 工作原理图解
分页显存
06
LoRA低秩适配回顾
低秩分解 · Rank选择 · Adapter插入 · 合并权重
LoRA低秩
07
QLoRA整体架构
量化权重+LoRA适配器 · 前向/反向传播 · 参数更新策略
架构前向
08
bitsandbytes库详解
8-bit/4-bit优化器 · LLM.int8() · NF4与FP4 · 配置参数
bitsandbytesNF4
09
Hugging Face PEFT库
PEFT核心API · LoraConfig · 与Transformers Trainer集成
PEFTTrainer
10
加载4-bit模型
from_pretrained参数 · load_in_4bit · compute_dtype · quant_type
4-bit加载
11
配置LoRA参数
目标模块选择 · lora_alpha · lora_dropout · fan_in_fan_out
LoRA调参
12
数据集准备
指令微调格式 · 数据预处理 · Tokenization与Padding
AlpacaShareGPT
13
训练参数设置
TrainingArguments详解 · batch_size · 梯度累积 · 学习率
超参数lr_scheduler
14
Trainer训练流程
初始化Trainer · 传入model/tokenizer · 开始训练 · 断点续训
Trainer断点
15
梯度检查点 (Gradient Checkpointing)
原理 · 启用方法 · 与QLoRA兼容性 · 显存节省实测
显存Checkpoint
16
混合精度训练
FP16/BF16与4-bit基座 · 避免精度溢出 · compute_dtype建议
混合精度BF16
17
模型保存与加载
save_pretrained · push_to_hub · 加载Adapter · 合并权重
保存合并
18
推理部署
4-bit推理 · 合并FP16 · vLLM/TGI · 量化推理速度对比
推理vLLM
19
常见问题与调试
OOM处理 · loss不下降 · 过拟合 · 量化噪声影响
调试OOM
20
实战案例1:Llama 3 8B中文对话
用QLoRA微调Llama 3 8B做中文对话
实战Llama3
21
实战案例2:Mistral 7B代码生成
用QLoRA微调Mistral 7B做代码生成
实战Mistral
22
实战案例3:Falcon 40B文本分类
单卡24G显存微调Falcon 40B文本分类
实战Falcon
23
实战案例4:多轮对话微调
ShareGPT格式多轮对话数据微调
实战多轮
24
实战案例5:领域适应微调
法律/医疗/金融领域适应微调
实战领域
25
性能优化技巧
梯度累积 · 动态批处理 · Flash Attention 2 · DeepSpeed ZeRO-3
优化Flash Attention
26
评估与验证
Perplexity · BLEU/ROUGE · 人工评测方案
评估Perplexity
27
多GPU训练
Data Parallelism · Model Parallelism · QLoRA+DeepSpeed
多GPUDeepSpeed
28
QLoRA vs 其他微调方法
Adapter · Prefix Tuning · IA3 · LoRA · Full Fine-tuning对比
对比Adapter
29
生产化部署
GPTQ/AWQ量化 · FastAPI封装 · Docker · 监控与日志
部署Docker
30
未来趋势
2-bit/1-bit量化 · 动态量化 · Apple Silicon/AMD ROCm适配
趋势量化