LLM 微调完全入门指南(第1篇)

小飞兽 AI技术 504 次阅读 2026-06-26

一、引言

大语言模型(LLM)的微调(Fine-tuning)是指在预训练模型的基础上,使用特定领域或任务的数据进行额外训练,使模型适配特定应用场景。本文是 LLM 微调入门系列的第一篇,介绍微调的基本概念、常见方法(LoRA、QLoRA、Full Fine-tuning)、以及如何在消费级 GPU 上进行实战微调。

二、基础语法

2.1 什么是微调

# 预训练模型:在大规模通用语料上训练(如 7B 参数)

微调:在特定任务数据上进一步训练,使模型适配特定任务

典型微调场景

  • 医疗问答:使用医疗文献数据微调
  • 代码生成:使用 GitHub 代码数据微调
  • 客服对话:使用历史对话记录微调</code></pre>

2.2 微调方法对比

# Full Fine-tuning(全量微调)

优点:效果最好

缺点:需要多卡 GPU,显存占用大(7B模型约 28GB)

LoRA(Low-Rank Adaptation)

优点:只需训练少量参数,单卡可行

缺点:效果略低于全量微调

QLoRA(Quantized LoRA)

优点:4-bit 量化,单卡 24GB 可训练 65B 模型

缺点:训练速度较慢</code></pre>

三、完整代码示例

# 安装依赖

pip install transformers peft datasets accelerate bitsandbytes

from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import LoraConfig, get_peft_model, prepare_model_for_kbit_training
from datasets import load_dataset
import torch

model_name = "bigscience/bloom-560m"

加载模型(8-bit 量化)

model = AutoModelForCausalLM.from_pretrained( model_name, load_in_8bit=True, device_map="auto" ) model = prepare_model_for_kbit_training(model)

配置 LoRA

lora_config = LoraConfig( r=8, lora_alpha=16, target_modules=["query_key_value"], lora_dropout=0.05, bias="none", task_type="CAUSAL_LM" )

应用 LoRA

model = get_peft_model(model, lora_config) model.print_trainable_parameters()

输出:trainable params: 81,920 || all params: 559,214,592 || trainable%: 0.015%

准备数据集(以对话数据为例)

dataset = load_dataset("json", data_files="conversation_data.jsonl") train_dataset = dataset["train"].map( lambda x: tokenizer(x["text"], truncation=True, padding="max_length"), batched=True )

开始训练

from transformers import Trainer, TrainingArguments

training_args = TrainingArguments(
output_dir="./output",
num_train_epochs=3,
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
learning_rate=2e-4,
logging_steps=10,
)

trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
)
trainer.train()

四、运行效果

运行上述代码后,Bloom-560M 模型会通过 LoRA 技术进行微调,仅训练约 0.015% 的参数(8万个参数),在单张消费级 GPU 上即可完成训练。LoRA 通过在注意力层注入低秩矩阵,大幅降低训练成本,同时保持较好的任务适配效果。

五、常见问题

Q1:微调需要多少数据?
答:通常至少需要几千条高质量任务相关数据,数据量越大效果越好,但过多可能导致过拟合。

Q2:如何评估微调效果?
答:使用 perplexity、在验证集上的准确率或 loss 监控,或通过人工评估生成质量。

Q3:LoRA 和 QLoRA 如何选择?
答:显存足够(大于等于24GB)用 LoRA;显存有限用 QLoRA,牺牲一定速度换取更低显存占用。

六、延伸阅读

    • LoRA 论文:LoRA: Low-Rank Adaptation of Large Language Models
  • QLoRA 论文:QLoRA: Efficient Finetuning of Quantized LLMs
  • 本系列文章:LLM 微调完全入门指南(第2篇)、LLM 推理优化完全指南