多 GPU:Unsloth Pro / 社区方案
Unsloth 开源版只支持单 GPU,这是它最大的限制,也是它商业化的根基。本章讲清楚单卡的能力边界、 Unsloth Pro 的多卡方案、以及社区的"民间多卡 patch"分别能做什么。
9.1单卡能做到什么程度
把前面几章的优化全开后,单卡 24G 4090 能训:
| 任务 | 模型 | 方法 |
|---|---|---|
| SFT | Llama-3-70B | QLoRA r=16, seq=2K |
| SFT | Llama-3-13B | QLoRA r=64, seq=8K |
| SFT | Llama-3-8B | QLoRA r=64, seq=32K |
| DPO | Llama-3-8B | QLoRA r=16 |
| GRPO (v2026) | Qwen3-4B | QLoRA + vLLM |
| VLM SFT | Llama-3.2-11B-Vision | QLoRA |
对于个人 / 小团队,单卡训练 70B 是近年来最革命性的能力。这就是 Unsloth 在 Reddit 火爆的原因。
9.2为什么开源版只支持单卡
不是技术问题,是商业决策。Unsloth 团队的逻辑:
- 单卡场景覆盖 80% 的个人 / 学生 / 小公司用户;
- 对企业用户(多卡 / 多机),收费版才能维持团队运转;
- 多卡 LoRA 需要的 patch 工作量比单卡大,团队精力有限。
这种"OSS 单卡 + 商业版多卡"模式在工具类开源项目里很常见(类似 PostgresPro / Redis Stack 等)。
9.3Unsloth Pro:多卡 / 多机
| 能力 | OSS | Pro |
|---|---|---|
| 单 GPU | ✅ | ✅ |
| 多 GPU 单节点(DDP) | ❌ | ✅ |
| 多机训练 | ❌ | ✅ |
| DeepSpeed ZeRO 集成 | ❌ | ✅ |
| FSDP 集成 | ❌ | ✅ |
| 全参微调(大模型) | 极限 | ✅ 顺畅 |
| 支持服务(SLA) | 社区 Discord | 付费支持 |
| 价格 | 免费 | 按企业谈 |
Pro 不是公开下载,需要通过 unsloth.ai/contact 联系。 官方有 case study:某团队在 Pro 上 8 × H100 训 Llama-3-70B 全参,吞吐比纯 HF + DeepSpeed 快 3×。
9.4社区"民间多卡 patch"
开源社区一直有"想白嫖多卡加速"的需求。常见做法:
方案 A:DDP + Unsloth(不官方但能跑)
# 假设有 2 张卡
torchrun --nproc_per_node=2 train.py
# train.py 里
from unsloth import FastLanguageModel
import os
# 在 Unsloth 之前设这些环境变量
os.environ["UNSLOTH_DISABLE_AUTO_GPU_INIT"] = "1"
model, tokenizer = FastLanguageModel.from_pretrained(...)
# ... 正常训练
问题:
- Unsloth 的某些 kernel 没考虑多进程,可能引发死锁;
- 梯度同步走 HF Trainer 自带的 DDP,没有 ZeRO 切分优化;
- 实测速度通常不到 2× 单卡(应该 ~2×),效率打折。
方案 B:FSDP + Unsloth(社区 fork)
Issue 区有不少社区 fork 加上 FSDP 支持,质量参差。用之前看 issue 反馈。
方案 C:LLaMA-Factory + DeepSpeed + Unsloth
LLaMA-Factory 已经支持 DeepSpeed,把 model 用 Unsloth 加载后再走 DeepSpeed:
# LLaMA-Factory YAML
use_unsloth: true
deepspeed: examples/deepspeed/ds_z3_config.json
这条路在 LLaMA-Factory issue 区被验证可用,但有偶发的 ZeRO-3 + Unsloth kernel 冲突,需要时刻关注上游版本。
9.5"何时单卡够用、何时该换 Pro"
| 诉求 | 建议 |
|---|---|
| 个人 / 学生 / Colab | 单卡 + Unsloth OSS |
| 初创团队 1-2 卡 | 单卡 + OSS;够用 |
| 小公司 8 卡服务器 | OSS 单卡用其中一张;或 LLaMA-Factory + DeepSpeed |
| 企业级 16+ 卡训练 | Unsloth Pro 或换 Megatron / verl |
| 千亿模型从零预训练 | Megatron-LM;Unsloth 不是这种 scale 的工具 |
| R1 风格大规模 RLHF | verl / OpenRLHF |
9.6多卡 LoRA 的另一条路:accelerate
不用 Unsloth、但又想保留 LoRA 的"省显存",可以用纯 HuggingFace stack:
accelerate launch --multi_gpu --num_processes=2 train.py
+ train.py 内用 HF + PEFT + bitsandbytes:
- 速度比 Unsloth 单卡慢一些,但吃满 N 张卡;
- 所有 HF 生态原生支持,不会有 patch 兼容问题;
- 没有 Unsloth 的省显存 trick,因此训不了 70B QLoRA。
所以单卡 vs 多卡 LoRA 是真实 tradeoff,看你的瓶颈是显存还是吞吐。
9.7多卡推理(也很重要)
Unsloth 训完的模型用 vLLM 多卡 serve:
# 训完导出 merged 模型
model.save_pretrained_merged("merged", tokenizer, save_method="merged_16bit")
# vLLM 多卡 serve
vllm serve ./merged --tensor-parallel-size 4 --port 8000
这一条线没有任何限制——Unsloth 训出的模型是标准 HF 格式,任何推理引擎都能用。
9.8Unsloth Studio:本地 GUI
v2026 推出 Unsloth Studio(仓库 studio/ 目录):
- Tauri 桌面应用;
- 本地下载 / 训练 / 推理一站式 UI;
- 支持 chat 界面、模型管理、训练任务监控;
- 底层调用同一份 unsloth 库。
对 GUI 用户友好,但仍然单卡限制。
9.9这章带走的
- Unsloth OSS只支持单 GPU,多卡需要 Pro 或社区 patch;
- 单卡能力其实非常强:24G 4090 能训 70B QLoRA;
- "硬要多卡"的中间路径:LLaMA-Factory + DeepSpeed + use_unsloth;
- 真要企业级多机训练 → Pro 或换 Megatron / verl;
- 多卡推理无限制,vLLM serve merged 模型即可。