2. 环境搭建
这是什么:环境搭建 = 把 PyTorch、CUDA 和 LLaMA-Factory 一次配齐,再按官方的显存表算明白「我这个模型要多少显存」。
为什么用:上一章知道微调值钱了,但微调是吃显存的体力活,估错了要么跑一半爆显存、要么买多余的卡。版本不对也是一路红灯,从装好到跑通,每一步都得踩准。
如何用:本章按「查硬件 → 对版本 → 三选一安装 → 算显存 → 验证」五步走,最后给出 Windows 用户的避坑清单。
2.1 第一步:先看清硬件门槛
微调需要 NVIDIA 显卡(官方也支持昇腾 NPU,但那是另一条路线)。先确认:
nvidia-smi
你会看到(示意):
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.14 Driver Version: 550.54.14 CUDA Version: 12.4 |
|-------------------------------+---------------------+----------------------+
| 0 NVIDIA GeForce RTX 4090 | 24576MiB / 24576MiB | 41 C | 0% |
+-----------------------------------------------------------------------------+
没有显卡也能读完本章——至少把版本表和显存账看懂,攒钱、租卡或者用云 GPU 都用得上。
2.2 第二步:官方依赖版本表
LLaMA-Factory 0.9.5(PyPI 包名 llamafactory,发布于 2026-05-30)要求 Python >= 3.11。
| 必装依赖 | 最低版本 | 推荐版本 |
|---|---|---|
| python | 3.11 | >=3.11 |
| torch | 2.0.0 | 2.6.0 |
| torchvision | 0.15.0 | 0.21.0 |
| transformers | 4.49.0 | 4.50.0 |
| datasets | 2.16.0 | 3.2.0 |
| accelerate | 0.34.0 | 1.2.1 |
| peft | 0.14.0 | 0.15.1 |
| trl | 0.8.6 | 0.9.6 |
| 可选依赖 | 最低版本 | 推荐版本 | 什么时候要 |
|---|---|---|---|
| CUDA | 11.6 | 12.2 | 必需,看你的驱动 |
| deepspeed | 0.10.0 | 0.16.4 | 多卡 ZeRO-3 省显存 |
| bitsandbytes | 0.39.0 | 0.43.1 | QLoRA 4bit/8bit 量化 |
| vllm | 0.4.3 | 0.8.2 | 第 6 章部署要用 |
| flash-attn | 2.5.6 | 2.7.2 | 长序列加速,RTX 4090/A100/H100 |
2.3 第三步:三种安装方式,任选其一
方式 A:从源码装(最推荐,能拿到全部 examples)
git clone --depth 1 https://github.com/hiyouga/LlamaFactory.git
cd LlamaFactory
pip install -e .
pip install -r requirements/metrics.txt
--depth 1 是只拉最新一次提交,快很多。requirements/metrics.txt 装的是 BLEU/ROUGE 等评测脚本要用的依赖。
方式 B:Docker 镜像(省事,环境已配好)
docker run -it --rm --gpus=all --ipc=host hiyouga/llamafactory:latest
这个镜像基于 Ubuntu 22.04 + CUDA 12.4 + Python 3.11 + PyTorch 2.6.0 + Flash-attn 2.7.4。--ipc=host 给容器足够的共享内存,多卡训练时必须加。
方式 C:uv(Python 环境管理一条龙)
uv run llamafactory-cli webui
uv 会自动建隔离环境并装好依赖,不用手动 pip install。
2.4 第四步:算清显存账
这是本章最实用的一张表(官方给的估算值,7B 模型列):
| 微调方式 | 位数 | 7B | 14B | 30B | 70B | 规律 |
|---|---|---|---|---|---|---|
| 全参(bf16 / fp16) | 32 | 120GB | 240GB | 600GB | 1200GB | 18x GB |
| 全参(pure_bf16) | 16 | 60GB | 120GB | 300GB | 600GB | 8x GB |
| 冻结 / LoRA / GaLore / APOLLO / BAdam / OFT | 16 | 16GB | 32GB | 64GB | 160GB | 2x GB |
| QLoRA / QOFT | 8 | 10GB | 20GB | 40GB | 80GB | x GB |
| QLoRA / QOFT | 4 | 6GB | 12GB | 24GB | 48GB | x/2 GB |
| QLoRA / QOFT | 2 | 4GB | 8GB | 16GB | 24GB | x/4 GB |
最后那列「规律」是给你自己换模型用的:记 18x 和 2x 两条线就够。比如你想微调 8B 模型,LoRA 就按 2×8=16GB 估,QLoRA 4bit 按 8/2=4GB 估,再往上留 2~4GB 给激活值和碎片。
结论:一张 24GB 的消费级显卡,QLoRA 4bit 微调 14B(约 12GB)绰绰有余,30B(约 24GB)就很紧张了;想全参微调 7B,得 80GB 卡起步。
2.5 Windows 用户注意
Windows 上有三件事官方特别点名:
① PyTorch 要手动装带 CUDA 的版本
pip uninstall torch torchvision torchaudio
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
python -c "import torch; print(torch.cuda.is_available())"
看到 True 才算成功。
② 报 Can't pickle local object 就把 worker 关掉
dataloader_num_workers: 0
③ bitsandbytes 要挑对 CUDA 发行版
pip install bitsandbytes
官方 Windows 版针对 CUDA 11.8~12.6 和 12.8~12.9 分别出包,RTX 50 系(sm_120)要用 CUDA 12.8~12.9 那版。用 uv 管理环境时,装完带 CUDA 的 PyTorch 之后再补一句 uv pip install bitsandbytes --no-deps,避免它把 PyTorch 顶掉。
2.6 第五步:验证安装
装好之后先别急着训练,跑两条命令确认:
llamafactory-cli version
llamafactory-cli env
你会看到(示意):
- `llamafactory` version: 0.9.5
- Platform: Linux-5.15.0-x86_64-with-glibc2.35
- Python version: 3.11.11
- PyTorch version: 2.6.0 (GPU)
- GPU type: NVIDIA GeForce RTX 4090
- GPU number: 1
- GPU memory: 23.99GB
- Transformers version: 4.50.0
- Datasets version: 3.2.0
- Accelerate version: 1.2.1
- PEFT version: 0.15.1
llamafactory-cli help 还能看到全部子命令:train、chat、export、webui、webchat、api、env、version、help。
动手改
- 用
llamafactory-cli env记下你机器的 GPU 型号和显存,按 2.4 的表算一下:这张卡能微调多大的模型? - 把 2.4 表里的
x换成你自己想用的模型参数量(30B、72B 都试一次),估算 QLoRA 4bit 的显存 - 去 PyPI 的
llamafactory页面看一眼 0.9.5 的发布说明,猜猜这个版本改了什么
小结
- 微调需要 NVIDIA 显卡;没显卡也能先把本章和第 3 章读懂
- LLaMA-Factory 0.9.5 要求 Python >= 3.11,torch 2.6.0 / transformers 4.50.0 / peft 0.15.1 是官方推荐值
- 三种装法:源码
pip install -e .(推荐)、Docker 镜像、uv - 显存按官方表估:LoRA 约
2xGB,QLoRA 4bit 约x/2GB,7B 只要 6GB - Windows 要手动装 CUDA 版 PyTorch;报
Can't pickle local object就设dataloader_num_workers: 0
下一章:数据准备 🐸