Skip to content

微调训练流程

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 可视化