| 名稱 | GitHub Star | 一句話賣點 | 適合人群 | 缺點 |
|---|---|---|---|---|
| ms-swift | 3k | 阿里系、支持通義千問,中文文檔完善 | 國內開發者 | 社區規模較小 |
| Firefly | 4k | 全流程腳本化,一鍵跑LoRA | 大語言模型微調新手 | 新模型適配較慢 |
| DeepSpeedExamples | 9k | 微軟官方,極致分布式 | 擁有 A100 集群的大團隊 | 配置復雜 |
| unsloth | 10k | 訓練速度×2,顯存減半 | 單卡玩家 | 僅支持 Llama2/3 |
| LLaMA-Factory | 23k | 全家桶(SFT/RLHF/量化)+ WebUI | 所有人 | 代碼量龐大 |
| FastChat | 26k | 主打推理 & 在線標注,社區活躍 | 需要 RLHF 數據閉環 | 微調功能相對弱 |
選型建議
全參數微調(Full Fine?Tuning)
PEFT(Parameter?Efficient Fine?Tuning)
LoRA?&?QLoRA
任務復雜度 ↑
│ 全參數
│ P?Tuning v2
│ LoRA
│ QLoRA
└────────→ 資源預算
| 模型規模 | 全參數 FP16 | LoRA r=64 | QLoRA 4?bit | 推薦 GPU | Spot 單價(北京) |
|---|---|---|---|---|---|
| 7B | 28?GB | 12?GB | 6?GB | 1×A10G | ¥1.8/小時 |
| 13B | 52?GB | 24?GB | 12?GB | 1×A100?40G | ¥4.5/小時 |
| 30B | 120?GB | 48?GB | 24?GB | 2×A100?80G | ¥9.0/小時 |
| 65B | 260?GB | 96?GB | 48?GB | 4×A100?80G | ¥18/小時 |
省錢技巧:
制作鏡像
FROM 763104351884.dkr.ecr.cn-northwest-1.amazonaws.com.cn/pytorch-training:2.1.0-gpu-py310-cu121-ubuntu20.04
RUN pip install llama-factory[metrics,bitsandbytes]
COPY ./scripts /opt/ml/code
ENV SAGEMAKER_PROGRAM train.py
上傳數據到 S3
aws s3 cp dataset.jsonl s3://your-bucket/data/
啟動訓練任務
from sagemaker.pytorch import PyTorch
estimator = PyTorch(
entry_point='train.py',
role=role,
image_uri='…/llama-factory:latest',
instance_type='ml.g5.12xlarge',
use_spot_instances=True,
checkpoint_s3_uri='s3://your-bucket/checkpoints/',
hyperparameters={…}
)
estimator.fit({'train': 's3://your-bucket/data/'})
學習率?(lr)
Epoch?& Early Stop
Batch?Size?& 梯度累積
per_device_train_batch_size=1
gradient_accumulation_steps=32
等同 global batch=32,但顯存僅算1條。
Warmup?& Scheduler
CloudWatch:train/loss、eval/loss、learning_rate、GPUUtilization
Weights &?Biases:
import wandb
wandb.init(project='llama2-7b-alpaca-zh')
一行代碼接入,自動記錄 loss、grad_norm、文本樣本,并通過 sweep 快速對比多組超參。
人類反饋閉環:FastChat + Gradio,用戶點贊/踩 → 數據寫回 S3,下一輪 RLHF 繼續精煉。
| 癥狀 | 診斷 | 藥方 |
|---|---|---|
| loss 不下降 | lr 太小 / 數據臟 | 升 lr?10×,并清洗訓練集 |
| eval 高 train 低 | 過擬合 | 加 dropout、減 epoch、數據增強 |
| 顯存 OOM | batch 太大 / 序列長 | 梯度累積 + FlashAttention2 |
| 中文亂碼 | template 錯 | 確認 template=qwen 而非 llama |
合并 LoRA
python scripts/export_model.py \
--model_name_or_path NousResearch/Llama-2-7b-hf \
--adapter_name_or_path ./saves/llama2-7b-lora \
--export_dir ./models/llama2-7b-chat
量化壓縮
評估
部署
大語言模型微調不是一錘子買賣,而是「數據 → 訓練 → 評估 → 數據」的螺旋上升。今天你或許只煉得“小還丹”,但只要持續迭代,終有一日定能煉成“九轉金丹”。