Unsloth 不是又一整套 YAML 工厂,而是专注 LoRA/QLoRA 训练加速 的库:通过 Triton 手写内核减少前向/反向开销,在 NVIDIA GPU 上常显著缩短 step 时间。加速层定位见 03-00 横向对比;与 Liger 对比见 07-03。
段末注释:Triton 是 OpenAI 开源的 GPU 编程语言,用于编写高性能深度学习内核;Unsloth 核心算子以 Triton 实现。
系列索引:微调技术路线导读 | 旧版笔记:5023 Unsloth
一、定位
| 适合 | 不适合 |
|---|---|
| 单卡 QLoRA 快速迭代 | 必须 AMD ROCm 稳定训练(见 AMD 实战 BF16) |
| Llama/Gemma/Mistral/Qwen 等主流架构 | 自定义架构 / 改 loss |
与 TRL SFTTrainer 组合 |
替代完整对齐平台(DPO/GRPO 仍靠 TRL) |
二、安装
1 | pip install unsloth |
支持消费级 NVIDIA GPU(T4、RTX 20/30/40、A100 等);ROCm 支持有限。
三、独立训练流程
1 | from unsloth import FastLanguageModel |
四、与 Hugging Face 权重互操作
- 可从
unsloth/前缀的 预量化模型 加载,省下载与转换。 - 也可对标准 HF 模型使用
FastLanguageModel.from_pretrained(..., load_in_4bit=True)。 - 保存的 adapter 一般可用
peft加载;merge 见 02-04。
五、与 SFTTrainer / Liger 选型
| Unsloth | Liger (use_liger_kernel=True) |
|
|---|---|---|
| 改动量 | 换模型加载类 | SFTConfig 一行 |
| 加速来源 | 全流程内核 | 部分 loss/层融合 |
| QLoRA | 强项 | 依版本 |
| 绑定度 | 较高 | 低,仍在 TRL 内 |
建议:已有 TRL 脚本 → 先试 Liger;要极致 QLoRA 速度 → Unsloth。
六、数据格式
与 TRL 相同:JSONL messages 或 text;须与 01-01 template 一致。Unsloth 不解决数据清洗(01-02)。
七、验收
加速不改变训练目标;仍须 08-01 基线评估 与 04 任务指标。对比实验时锁定 seed、数据子集。
八、常见踩坑
| 现象 | 对策 |
|---|---|
| 仅支持部分模型 | 查官方支持列表;换 unsloth/ 镜像权重 |
tokenizer 与 TRL 版本 |
按 Unsloth 文档 pin 版本 |
| ROCm 失败 | 改用 SFTTrainer + BF16 LoRA |
| 与 Factory 同时装依赖冲突 | 独立 venv |
九、小结
Unsloth = 在 TRL 之上换高速引擎,主攻单卡 LoRA/QLoRA。工厂选型用 LLaMA-Factory / ms-swift;编程与对齐用 SFTTrainer。
横向对比:03-00