跳到正文

目录

Unsloth:61k Stars 的 LLM 微调与推理加速库

Unsloth:LLM 微调与推理加速库

在消费级 GPU 上跑模型的人,总会碰到同一个问题:显存不够。买更大显存的卡要花钱,上云要花钱,换更小的模型意味着牺牲效果。Unsloth 做的事很直接——在不换硬件的前提下,让训练快一倍、显存占用量砍到三成,靠的是手动写的 Triton 内核和 4-bit QLoRA 量化。

Yann LeCun 在 X 上转推过它,HuggingFace TRL 团队在合作优化,Qwen / Llama 4 / Mistral / Gemma 等模型团队会直接把 bug 修到上游。这 61k Stars 背后是可复用的训练加速能力,下面这张总览图先看两条主线怎么分工。

系统总览

Unsloth 内部其实是两条独立的主线,共用一个安装入口:

  • Studio:Web UI,适合不想写代码的场景——搜模型、下载、对话、拖数据进去微调,全程在浏览器里完成。
  • Core:Python 包,适合要把训练流程嵌进脚本或 CI 的人——FastLanguageModel + GRPOConfig 两行起手,剩下的交给内核优化。

两条线共享同一套加速内核,2 倍速和 70% 显存节省在哪个入口都一样。

一个完整的微调任务长什么样

在讨论功能列表之前,先看一个真实路径:给 Gemma 3 4B 做一次 4-bit 微调。

1. 安装 Core

curl -LsSf https://astral.sh/uv/install.sh | sh
uv venv unsloth_env --python 3.13
source unsloth_env/bin/activate
uv pip install unsloth --torch-backend=auto

2. 加载模型(4-bit 量化)

from unsloth import FastLanguageModel

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name="unsloth/gemma-3-4b-it",
    max_seq_length=2048,
    load_in_4bit=True,
)

这一步里,Unsloth 的自定义 Triton 内核接管了 PyTorch 的默认算子。原始 Gemma 3 4B 在 16-bit 下需要约 8 GB 显存,4-bit 量化后降到约 3 GB——多出来的 5 GB 可以塞上下文或更大的 batch。

3. 准备数据

from datasets import load_dataset

dataset = load_dataset("json", data_files="my_data.jsonl", split="train")

也可以用 Studio 的 Data Recipes:上传 PDF、CSV 或 DOCX,在可视化界面里编辑节点,导出为训练集。

4. 配置并启动训练

from unsloth import unsloth_train
from transformers import TrainingArguments

training_args = TrainingArguments(
    output_dir="./gemma3-finetuned",
    per_device_train_batch_size=4,
    gradient_accumulation_steps=4,
    num_train_epochs=3,
    learning_rate=2e-4,
    fp16=not model.config.to_dict().get("load_in_4bit"),
)

trainer = unsloth_train(model, tokenizer, dataset, training_args)
trainer.train()

5. 保存并推理

model.save_pretrained("./gemma3-finetuned")
tokenizer.save_pretrained("./gemma3-finetuned")

FastLanguageModel.for_inference(model)
inputs = tokenizer(["你好,请介绍一下自己"], return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=128)

这五步走完,你得到的是一个在自己数据上微调过的 Gemma 3 4B,全程显存峰值不超过 6 GB——一张 RTX 3060 就够。


推理:模型下载、对话与工具调用

模型搜索与下载

Studio 内置模型搜索,支持 GGUF、LoRA 适配器和 safetensors 三种格式。搜索到模型后一键下载到本地 ~/.cache/huggingface/hub/,不用手动处理 HuggingFace 的 LFS。

如果只用 Core,也可以直接写:

from unsloth import FastLanguageModel

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name="unsloth/Llama-3.1-8B-bnb-4bit",
    load_in_4bit=True,
)

格式选择的经验法则:

格式适用场景占用
GGUF纯推理,想要最小显存最小
LoRA 适配器在基础模型上叠加多个任务切换极小(几 MB)
safetensors完整模型,训练或推理都需要完整大小

工具调用与代码执行

Unsloth 的 Agent 接口支持 self-healing tool calling——工具调用出错时自动重试修正,而不是直接抛异常。

agent = Agent(tools=["web_search", "calculator"])
result = await agent.run("搜索最新的 AI 新闻,然后计算 1000 的 15%")

代码执行跑在沙盒里,类似 Claude Artifacts 的体验:

agent = Agent(tools=["code_execution"])
result = await agent.run("写一段 Python 打印斐波那契数列前 20 项并运行")

多模态

上传图片、音频、PDF、DOCX 后直接对话。底层由模型自身多模态能力支撑——Unsloth 负责把文件转成模型能消费的格式,不额外加一层代理。


训练:500+ 模型,4 种精度

训练模式对比

Unsloth 支持的训练精度和适用场景:

模式显存需求 (7B 模型)适用场景精度影响
16-bit Full~14 GB追求最高精度,有 A100/H100基准
4-bit QLoRA~6 GB消费级 GPU,个人微调实测无明显损失
FP8~8 GBAda/Blackwell 架构,兼顾速度与精度极小
RL / GRPO~4 GB (在 4-bit 上再省 80%)强化学习微调训练阶段量化,推理可恢复 16-bit

GRPO 的 80% 显存节省叠在 4-bit 量化之上,不是一个独立数字。对 7B 模型,16-bit RL 原本需要约 20 GB,切成 4-bit 再跑 GRPO 后降到 4 GB 以内,这才是消费级 GPU 能跑强化学习的原因。

自定义 Triton 内核为什么快

PyTorch 默认的线性代数算子(矩阵乘、注意力计算)是按通用场景写的。Unsloth 为每个模型家族手写了 Triton 内核——针对 Gemma、Qwen、Llama 各自的注意力模式和 FFN 结构做了特化。效果是:同样的矩阵乘法,少掉 30%-50% 的中间张量分配,省下的显存可以拉大 batch size 或上下文长度。

from unsloth import FastLanguageModel

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name="unsloth/gemma-3-4b-it",
    max_seq_length=2048,
    load_in_4bit=True,
)
# 这行 import 背后已经替换了 PyTorch 默认算子

免费 Notebooks 性能表——这些数字在测什么

下面这张表来自 Unsloth 官方免费 Colab Notebooks。但只看数字容易误判,先解释一下测量对象:

  • faster / less VRAM 的基准线是 HuggingFace Transformers 的默认 Trainer + 对应精度。测的是同一个模型、同一批数据、同样 epoch 下的训练吞吐和显存峰值。
  • 数字反映的是 Unsloth Triton 内核 + 量化方案的联合优化,不能直接推出"比所有框架都快"。
  • 显存节省百分比是在该精度下的相对值,不是绝对值——4-bit 本身已经省了 70%,在此基础上 GRPO 再省 80% 指的是 RL 训练阶段的额外优化。
模型加速显存节省
Gemma 4 (E2B)1.5x50%
Qwen3.5 (4B)1.5x60%
gpt-oss (20B)2x70%
gpt-oss RL2x80%
Qwen3 GSPO2x70%
Llama 3.1 (8B)2x70%
embedding-gemma (300M)2x20%
Mistral Ministral 3 (3B)1.5x60%

embedding-gemma 只省 20% 是合理的:embedding 模型的核心计算在 token embedding 层,矩阵乘占比低,Triton 内核的优化空间本来就小。


模型支持

Unsloth 为每个模型家族都写了专用内核。这是它支持 500+ 模型的方式,也是代价所在:加一个新模型家族需要专门适配,换 config 是拿不下来的。当前已适配的家族:

模型家族代表模型适配特色
GemmaGemma 4 (E2B), Gemma 3Google 最新,完整支持
QwenQwen3.5 (0.8B-112B), Qwen3 GSPO阿里开源,支持 GSPO 强化学习
LlamaLlama 3.1/3.2 (8B-405B)Meta 开源,2x 加速
DeepSeekDeepSeek V3, Coder国产模型,完整适配
MistralMistral, Ministral 3欧洲团队,1.5x 加速
gpt-ossOpenAI o1/o3 开源复现Unsloth 参与合作
PhiPhi-4微软小模型
Embeddingembedding-gemma向量模型,2x 加速

硬件与显存

平台支持

平台训练推理备注
NVIDIA GPU (RTX 30/40/50, Blackwell, DGX)全功能
AMD GPU仅 Core,无 Studio
Intel GPU即将
Apple MLX即将即将
macOS即将Metal 加速
CPU纯推理可用

AMD 用户注意:训练走 Core 没问题,Studio UI 目前只支持 NVIDIA。

显存需求速查

模型大小4-bit 训练16-bit 训练4-bit 推理
3B~4 GB~8 GB~2 GB
7B~6 GB~14 GB~4 GB
13B~10 GB~26 GB~7 GB
20B~14 GB~40 GB~10 GB
70B~48 GB~140 GB~35 GB

这张表的前提是 max_seq_length=2048。上下文越长,KV cache 吃显存越多,实际需求会往上浮动。


安装与启动

Studio(Web UI)

macOS / Linux / WSL:

curl -fsSL https://unsloth.ai/install.sh | sh

Windows:

irm https://unsloth.ai/install.ps1 | iex

启动(默认端口 8888):

unsloth studio -H 0.0.0.0 -p 8888

更新:

unsloth studio update

Core(Python 包)

Linux / WSL:

curl -LsSf https://astral.sh/uv/install.sh | sh
uv venv unsloth_env --python 3.13
source unsloth_env/bin/activate
uv pip install unsloth --torch-backend=auto

Windows:

winget install -e --id Python.Python.3.13
winget install --id=astral-sh.uv -e
uv venv unsloth_env --python 3.13
.\unsloth_env\Scripts\activate
uv pip install unsloth --torch-backend=auto

Docker

docker run -d \
  -e JUPYTER_PASSWORD="mypassword" \
  -p 8888:8888 -p 8000:8000 -p 2222:22 \
  -v $(pwd)/work:/workspace/work \
  --gpus all \
  unsloth/unsloth

开发者安装

从源码安装,切 nightly 分支可以体验最新特性:

git clone https://github.com/unslothai/unsloth
cd unsloth
./install.sh --local
unsloth studio -H 0.0.0.0 -p 8888

上游合作

Unsloth 跟模型团队的协作是直接修 bug:发现模型在 GGUF 转换、128K 上下文或特定硬件上的问题后,直接把修复推到上游。所以它的内核适配能跟模型发布几乎同步:

  • gpt-oss:联合修复 bug,提升复现准确性
  • Qwen3:修复动态 GGUF 128K 上下文的截断 bug
  • Llama 4 / Mistral / Gemma 1-3 / Phi-4:训练和推理阶段的问题修复

社区与资源

资源链接
Discordhttps://discord.com/invite/unsloth
Twitterhttps://twitter.com/unslothai
Reddithttps://reddit.com/r/unsloth
文档https://unsloth.ai/docs
模型目录https://unsloth.ai/docs/get-started/unsloth-model-catalog
免费 Notebookshttps://colab.research.google.com/github/unslothai/notebooks
官方博客https://unsloth.ai/blog

适用边界:什么时候值得用

Unsloth 解决的是"消费级 GPU 上能不能把模型训练起来"的问题,适合两类人:想在本地微调模型、又不想自己写显存优化的人;想用浏览器界面完成训练和推理、不碰代码的人。

也有不必用的场景。如果手上有 A100/H100 这类大显存卡、追求最高精度,直接跑 16-bit 全量微调即可,量化带来的显存红利用不上。如果只是偶尔跑一次推理、不做训练,加载原生模型就够,不必引入这套内核。它偏 Python 生态,Java 或 Go 服务里想调用,走的是推理 API 而不是直接集成。

对多数个人开发者,建议从 Core 入手:一条命令装好,两行代码起手,先在一张小模型上跑通流程,再决定要不要上 Studio 的界面。


卸载

# Studio
rm -rf ~/.unsloth/studio

# 下载的模型文件
rm -rf ~/.cache/huggingface/hub/

参与讨论

使用 GitHub 登录。欢迎补充事实、异议与实践。