微调训练流程
TIP
使用 Hugging Face Transformers + PEFT + TRL 快速开始微调。
完整训练脚本
python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments
from peft import LoraConfig, get_peft_model
from trl import SFTTrainer
from datasets import load_dataset
# 1. 加载模型(4bit 量化)
model = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen2-7B",
load_in_4bit=True,
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2-7B")
tokenizer.pad_token = tokenizer.eos_token
# 2. LoRA 配置
lora_config = LoraConfig(
r=16, lora_alpha=32,
target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],
lora_dropout=0.05, bias="none", task_type="CAUSAL_LM"
)
model = get_peft_model(model, lora_config)
# 3. 训练参数
training_args = TrainingArguments(
output_dir="./qwen-lora",
num_train_epochs=3,
per_device_train_batch_size=4,
gradient_accumulation_steps=4,
learning_rate=2e-4,
warmup_steps=100,
logging_steps=10,
save_steps=500,
fp16=True,
report_to="none"
)
# 4. 启动训练
trainer = SFTTrainer(
model=model,
args=training_args,
train_dataset=load_dataset("json", data_files="train.json")["train"],
tokenizer=tokenizer,
max_seq_length=1024
)
trainer.train()
trainer.save_model("./qwen-lora-final")监控指标
- loss:训练损失(应持续下降)
- eval_loss:验证损失
- 使用 TensorBoard 可视化