本文目录导读:

在Python中微调大语言模型,最常用的库是 Hugging Face Transformers,以下是推荐的库及其分工:
核心库
Hugging Face Transformers (最主流)
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments, Trainer
- 支持几乎所有主流模型(LLaMA、GPT、BERT、T5等)
- 提供完整的训练管线
PEFT (参数高效微调)
from peft import LoraConfig, get_peft_model, TaskType
- 实现LoRA、QLoRA、Adapter等参数高效微调
- 大幅降低显存需求
TRL (Transformer Reinforcement Learning)
from trl import SFTTrainer, DPOTrainer
- 专门针对LLM的训练工具
- 支持SFT(监督微调)、RLHF(基于人类反馈的强化学习)
高效微调方案
bitsandbytes (量化)
from transformers import BitsAndBytesConfig
- 4-bit/8-bit量化训练
- 配合QLoRA可在消费级GPU上微调大模型
Accelerate (分布式训练)
from accelerate import Accelerator
- 支持多GPU、混合精度、梯度累积
其他重要库
Datasets (数据处理)
from datasets import load_dataset, Dataset
- 高效的数据加载和预处理
Tokenizers (分词器)
from tokenizers import Tokenizer
- 高性能分词(通常与Transformers配套使用)
完整示例(QLoRA微调)
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments, BitsAndBytesConfig
from peft import LoraConfig, get_peft_model
from trl import SFTTrainer
from datasets import load_dataset
import torch
# 1. 量化配置
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.float16
)
# 2. 加载模型
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-2-7b-hf",
quantization_config=bnb_config,
device_map="auto"
)
# 3. LoRA配置
lora_config = LoraConfig(
r=16, # 秩
lora_alpha=32,
target_modules=["q_proj", "v_proj"], # 目标模块
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM"
)
# 4. 应用LoRA
model = get_peft_model(model, lora_config)
# 5. 训练
trainer = SFTTrainer(
model=model,
train_dataset=load_dataset("json", data_files="train.json")["train"],
args=TrainingArguments(
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
num_train_epochs=3,
learning_rate=2e-4,
fp16=True,
logging_steps=10,
output_dir="./output"
)
)
trainer.train()
选择建议
| 场景 | 推荐库 |
|---|---|
| 完整微调(有足够GPU) | Transformers + Accelerate |
| 资源有限(消费级GPU) | PEFT (LoRA/QLoRA) + bitsandbytes |
| 需要RLHF | TRL + Transformers |
| 快速原型开发 | Transformer + PEFT + TRL |
常用组合:Transformers + PEFT + TRL + bitsandbytes + Accelerate