Chapter 01

认识 Unsloth 与环境

理解微调为何又慢又费显存,搞清 Unsloth 靠什么把它变快变省,并在 Colab 或本地把环境跑起来。

1.1 微调为什么慢、为什么费显存

微调(Fine-tuning)就是在预训练好的大模型上,用你自己的数据继续训练,让它学会特定任务或风格。看似只是"再训练一会儿",但代价很高,原因主要有两个。

显存爆炸。一次训练要在显存里同时放下:模型权重、梯度、优化器状态(Adam 每个参数要存两份动量)、以及前向传播的激活值。以 7B 模型全参微调为例,光是权重 + 梯度 + Adam 状态就要约 7B × (2 + 2 + 8) = 84GB(fp16 权重 2 字节、梯度 2 字节、Adam 状态 8 字节),远超单张消费级显卡。

计算冗余。PyTorch 的自动求导(autograd)会为每个算子保存中间张量以便反向传播,attention 的 softmax、RoPE 旋转、交叉熵等热点算子反复读写显存,带宽成为瓶颈,GPU 算力吃不满。

预训练(Pre-training)
在海量无标注语料上从零训练一个基础模型,成本极高(百万美元级),普通人不做,只用它的产出。
微调(Fine-tuning)
在预训练模型基础上用少量领域数据继续训练,让模型学会特定任务。本教程的主线。
全参微调(Full Fine-tuning)
更新模型的全部参数,效果最好但显存与算力代价最大,7B 模型往往需 80GB+ 显存。
PEFT(Parameter-Efficient Fine-Tuning)
参数高效微调,只训练一小部分新增参数(如 LoRA),冻结原权重,显存骤降。Unsloth 主要加速这类。
显存(VRAM)
GPU 上的内存。微调能不能跑,第一关卡就是显存够不够。省显存 = 能上更大模型或更长序列。
Triton
OpenAI 出品的 Python DSL,用来写自定义 GPU kernel(算子),比手写 CUDA 简单,是 Unsloth 加速的底层武器。
autograd(自动求导)
PyTorch 自动记录前向计算图、反向算梯度的机制。方便但有额外显存/计算开销,Unsloth 对热点算子手写反向以省开销。
kernel(内核/算子)
在 GPU 上执行一次具体计算的程序单元。把多个算子"融合"成一个 kernel 能减少显存读写,是提速关键。

1.2 Unsloth 到底做了什么

Unsloth 不是"降低精度换速度"的近似方案,它的核心是工程重写:把 Transformer 中最耗时的算子用 Triton 手写、把反向传播手动推导实现,从而在数学上完全等价原生实现的前提下,减少显存读写与冗余计算。

直观收益

同样微调 Llama-3-8B、同样超参:原生 HF + PEFT 可能需要 24GB 显存、训练 1 小时;用 Unsloth 大约 12GB 显存、20 分钟左右——一张免费的 Colab T4 就能跑通。

1.3 支持的模型

模型家族代表型号说明
LlamaLlama 3 / 3.1 / 3.2支持最完整,社区 notebook 最多
MistralMistral 7B / Mixtral含 MoE 变体
GemmaGemma 2 / 3Google 开源系列
QwenQwen2.5 / Qwen3中文能力强,本教程实战首选
PhiPhi-3 / Phi-4小体积高质量
DeepSeekDeepSeek-V / R 系列含蒸馏版
视觉多模态Llama 3.2 Vision / Qwen-VL见第 9 章

1.4 安装:Colab(推荐入门)

Colab 是零成本上手的最快路径——免费提供 T4 GPU,Unsloth 官方也维护了大量现成 notebook。在 Colab 里只需一行安装:

# Colab 中安装(自动匹配 CUDA / torch 版本)
!pip install unsloth

# 若要最新特性,可从 GitHub 主分支安装
!pip install --upgrade --no-cache-dir "unsloth[colab-new] @ git+https://github.com/unslothai/unsloth.git"

1.5 安装:本地环境

本地需要 NVIDIA GPU(支持 CUDA)。推荐用 conda 或 uv 建独立环境,先装好匹配的 PyTorch,再装 Unsloth。

# 1. 建环境(Python 3.10/3.11 均可)
$ conda create -n unsloth python=3.11 -y
$ conda activate unsloth

# 2. 安装 unsloth(会带上 torch、triton、bitsandbytes、trl、peft 等)
$ pip install unsloth

# 3. 验证 CUDA 与 GPU 是否可见
$ python -c "import torch; print(torch.cuda.get_device_name(0))"
版本坑提醒

Unsloth 对 torchCUDAtriton 版本较敏感。安装报错时优先看官方文档给出的当前推荐组合,不要盲目升级 torch。Windows 用户建议走 WSL2。

1.6 30 秒验证环境

装完后跑这段最小代码,能加载模型即说明环境 OK(下一章起会逐行讲解):

from unsloth import FastLanguageModel

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name = "unsloth/Qwen2.5-3B-Instruct",
    max_seq_length = 2048,
    load_in_4bit = True,   # 4bit 量化加载,省显存
)
print("环境就绪,模型已加载 ✅")
unsloth/ 前缀是什么

形如 unsloth/Qwen2.5-3B-Instruct 是 Unsloth 在 HuggingFace 上预量化好的镜像仓库,下载更小、加载更快。你也可以直接用官方原始名如 Qwen/Qwen2.5-3B-Instruct

1.7 小结与下一步