模型微调教程
LoRA、QLoRA 微调实战,从数据准备到模型部署
大模型微调(Fine-tuning)是指在预训练模型基础上,使用特定领域数据进行进一步训练,使模型适应特定任务或领域。
为什么需要微调?
- 领域适配:让通用模型理解专业术语和行业知识
- 任务定制:优化模型在特定任务上的表现
- 风格控制:调整模型的输出风格和格式
- 成本优化:相比从头训练,微调成本更低
微调方法对比
| 方法 |
参数量 |
显存需求 |
效果 |
适用场景 |
| 全量微调 |
100% |
高 |
最好 |
数据充足、资源充足 |
| LoRA |
<1% |
低 |
较好 |
资源有限、快速迭代 |
| QLoRA |
<1% |
极低 |
较好 |
消费级显卡 |
章节目录
| 章节 |
标题 |
内容概要 |
| 第一章 |
微调基础概念 |
方法对比、流程概览 |
| 第二章 |
数据准备与处理 |
数据格式、清洗、增强 |
| 第三章 |
LoRA 微调实战 |
完整训练流程 |
| 第四章 |
QLoRA 量化微调 |
消费级显卡微调 |
| 第五章 |
模型评估与部署 |
评估方法、部署方案 |
快速开始
LoRA 微调
from peft import LoraConfig, get_peft_model
from transformers import AutoModelForCausalLM
# 加载模型
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2-7B")
# 配置 LoRA
config = LoraConfig(
r=16,
lora_alpha=32,
target_modules=["q_proj", "v_proj"],
lora_dropout=0.05,
)
model = get_peft_model(model, config)
QLoRA 微调(4-bit)
from transformers import BitsAndBytesConfig
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.float16,
)
model = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen2-7B",
quantization_config=bnb_config,
device_map="auto"
)
显存需求
| 模型大小 |
LoRA (FP16) |
QLoRA (4bit) |
| 7B |
~16GB |
~6GB |
| 13B |
~30GB |
~10GB |
| 70B |
~160GB |
~48GB |
相关教程