用RTX 5090本地微调语言模型
我关注NVIDIA的Blackwell架构发布已经有一段时间了,所以当看到Unsloth也加入了对Blackwell的支持时,我决定尝试单个GPU究竟能做到什么程度。
上周末,我完成了一件一年前想都不敢想的事情——我在自己的桌面 GPU 上微调了一个 200 亿语言模型。没有云资源。没有集群。只有我、一块 RTX 5090 显卡,以及一个名为 Unsloth 的开源项目。
我关注NVIDIA的Blackwell架构发布已经有一段时间了,它的一切都在向世人宣告“AI游乐场”。所以当我看到Unsloth也加入了对Blackwell的支持时,我心想:让我们看看单个GPU究竟能做到什么程度。
1、Unsloth到底是什么?
如果你曾经尝试过微调大型模型,你就会知道这通常是一场噩梦——几个小时的配置地狱、VRAM错误以及“CUDA内存不足”的提示信息,让你恨不得把电脑扔出窗外。
Unsloth解决了其中的许多问题。它是一个开源框架,本质上优化了LLM(逻辑学习模型)的微调和强化学习的核心流程。想象一下:训练速度提升2倍,VRAM占用减少70%,而且精度丝毫不减。
它支持Llama、gpt-oss和DeepSeek等热门模型。最酷的是什么?现在它针对 NVIDIA Blackwell GPU 进行了优化,包括 RTX 50 系列、新款 RTX PRO 6000 和 DGX Spark 系统。
所以,没错,你现在可以开始在家对 200 亿甚至 400 亿的模型进行微调了。
2、设置过程
我原本以为会遇到依赖关系混乱的问题。结果,我运行了以下命令:
pip install unsloth……然后就成功了。
然后我切换到了 Python:
from unsloth import FastLanguageModel
import torch
model, tokenizer = FastLanguageModel.from_pretrained(
model_name = "unsloth/gpt-oss-20b",
max_seq_length = 1024,
load_in_4bit = True,
full_finetuning = False,
)
from unsloth import FastLanguageModel
import torch
max_seq_length = 1024
fourbit_models = [
"unsloth/gpt-oss-20b-unsloth-bnb-4bit",
"unsloth/gpt-oss-120b-unsloth-bnb-4bit",
"unsloth/gpt-oss-20b",
"unsloth/gpt-oss-120b",
]
model, tokenizer = FastLanguageModel.from_pretrained(
model_name = "unsloth/gpt-oss-20b",
max_seq_length = max_seq_length,
load_in_4bit = True, # keeps VRAM low
full_finetuning = False,
)成功加载模型,没有 CUDA 错误。光是这一点就足以让人感到胜利。
3、Blackwell + Unsloth
接下来才是真正有趣的地方。
使用我的 RTX 5090(32GB 显存),微调 20B 模型竟然是可行的。训练速度大约是我之前使用 Hugging Face 和 Flash Attention 2 时的两倍。显存占用降低了约 70%,而且我可以将上下文窗口增加到 122k 个 token。
这不是笔误——在单张消费级 GPU 上就能处理 122,181 个 token。在使用 Unsloth 之前,超过 4k 的训练数据就会出现“内存不足”的错误。
以下是相关数据:
| VRAM | Unsloth Context Length | HF + FA2 Context |
| ----- | ---------------------- | ---------------- |
| 8 GB | 2,972 | OOM |
| 16 GB | 40,724 | 2,551 |
| 32 GB | 122,181 | 9,711 |实际上,你可以在中端 GPU 上运行 Llama 3.1 8B,并且还有剩余的训练容量。
4、无需修改代码即可扩展
Unsloth 的神奇之处不仅仅在于本地训练。它的设计初衷就是为了能够从你的桌面 GPU 扩展到 NVIDIA DGX Cloud 或任何 NVIDIA 云合作伙伴平台。
相同的代码,相同的配置——只需切换硬件即可。因此,当您完成本地实验后,无需编写任何 Python 代码,即可在 Blackwell 集群上训练超过 700 亿个模型。
5、如果你遇到 xFormers 问题……
您可能会遇到 xFormers 的构建错误(我就遇到过)。解决方法很简单:
pip uninstall xformers -y
pip install ninja
export TORCH_CUDA_ARCH_LIST="12.0"
git clone --depth=1 https://github.com/facebookresearch/xformers --recursive
cd xformers && python setup.py install && cd ..之后,一切就顺利了。
6、Docker 选项
如果您更喜欢容器(我在生产环境中使用容器),Unsloth 提供了一个即用型 Docker 镜像。
docker run -d -e JUPYTER_PASSWORD="mypassword" \
-p 8888:8888 -p 2222:22 \
-v $(pwd)/work:/workspace/work \
--gpus all \
unsloth/unsloth您需要安装 NVIDIA Container Toolkit,但一旦设置完成,您将拥有一个完整的 Jupyter Lab,可用于微调大型模型。
python -m venv unsloth
source unsloth/bin/activate
pip install unsloth7、为什么这很重要
Unsloth 联合创始人 Daniel Han 的一句话让我印象深刻:
“人工智能不应该是一个排他性的俱乐部。下一个伟大的人工智能突破可能来自任何地方——学生、独立研究人员或小型创业公司。”
这正是此设置的意义所在——LLM 微调的民主化。现在,一个拥有游戏电脑的孩子就可以训练一个模型,而这个模型曾经需要一个数据中心?这太不可思议了。
8、结束语
如果您拥有 RTX 5090 或 RTX PRO 6000 Blackwell 显卡,现在就可以从小规模开始。之后,当您准备扩展时,可以迁移到 DGX Cloud——无需重构,轻松搞定。
我要说的是:Unsloth 让微调再次成为一种乐趣。有了 Blackwell GPU,我们仿佛进入了一个新时代——“训练 LLM”不再意味着“租用 AWS 集群”。
简而言之:Unsloth + NVIDIA Blackwell = 人人都能享受本地微调。训练速度提升 2 倍,显存减少 70%,上下文时间延长 12 倍,无需依赖云平台。
原文链接:I Trained an LLM on My RTX 5090 with Unsloth
汇智网翻译整理,转载请标明出处