LLaMA-Factory / Unsloth

5,351 字 · 预计阅读 15 分钟

数据有了,方案定了,这一节开始训练课程助教 v1。

前面我们自己写训练循环,是为了看清每一步。真正微调开源模型时,没必要从头写:数据怎么拼对话模板、哪些位置算损失、LoRA 怎么挂到每一层、混合精度怎么开,这些成熟的工具都已经处理好了。

我们只需要写一份配置文件。

学完这一节,你能做到:装好 LLaMA-Factory,写出课程助教的训练配置,跑完一次 LoRA 微调,看懂训练日志,并且和微调后的模型聊上几句。


一、两个常用工具

LLaMA-Factory Unsloth
怎么用 写 YAML 配置文件,用命令行或网页界面启动 写 Python 代码,也有图形界面版
特点 支持的模型和训练方法很多,一份配置就能复现 自己写了加速内核,速度快、显存省
硬件 NVIDIA,也支持 AMD、华为昇腾等 主要面向 NVIDIA
许可 Apache 2.0 Apache 2.0
本课用法 主线 后面简单介绍

表里的 YAML 是一种写配置的文本格式:一行写一项,冒号前是名字,冒号后是值,后面写配置时就会见到。

"加速内核"是在显卡上跑的底层计算程序。Unsloth 自己重写了一部分,同样的计算算得更快、占的显存更少。

主线用 LLaMA-Factory,原因有三:不用写代码,配置文件就是完整的实验记录;它的支持列表里专门有 Qwen3.5 的对话模板;前面学过的概念,在它的配置里都能一一找到对应。


二、准备环境

微调要在有 NVIDIA 显卡的机器上做,有两种选择:

本地的 NVIDIA 显卡 租 AutoDL 的云 GPU
系统 Linux,或者 Windows 上的 WSL2 自带 Linux
显存 8GB 以上就够 常见的卡都够用
模型和数据 前面已经下载好,直接用 要在服务器上重新下载一遍

表里的 WSL2 是 Windows 自带的 Linux 子系统,相当于在 Windows 里再装一个 Linux。训练用的这些库,在 Linux 上最顺。

AutoDL 是国内一个按小时出租显卡服务器的平台。租一台带显卡的 Linux 电脑,用完关机,就不再计费。

按前面的显存估算,Qwen3.5-0.8B 的 16 位 LoRA,显存大约要 4~6GB,8GB 显存的显卡就够用。

在 AutoDL 上的话,系统盘很小,先在数据盘上建好项目目录,后面的命令都在这里运行:

bash
mkdir -p /root/autodl-tmp/llm-course
cd /root/autodl-tmp/llm-course

mkdir -p 是新建文件夹,-p 表示路径上缺的上一级文件夹也一起建;cd 是进入这个文件夹。/root/autodl-tmp 就是 AutoDL 的数据盘。


1. 装 PyTorch 和 LLaMA-Factory

LLaMA-Factory 要求 Python 3.11 以上。在 llm-course 目录下建好虚拟环境、装好 CUDA 版的 PyTorch,然后安装:

bash
uv pip install "llamafactory==0.9.5"

这里要用 uv pip。uv venv 建的环境里没有 pip,直接写 pip install 会用到系统 Python 的 pip,包装错地方,运行时报 ModuleNotFoundError。

为什么写死 0.9.5?这一节的配置都是用这个版本测试过的,它已经支持 Qwen3.5。LLaMA-Factory 更新很快,新版本的参数偶尔会变,固定版本最不容易出岔子。

这一节的命令都在 llm-course 目录下运行。装好后确认一下:

bash
uv run llamafactory-cli version

会看到下面这个方框,版本号是 0.9.5 就说明装好了:

----------------------------------------------------------
| Welcome to LLaMA Factory, version 0.9.5                |
|                                                        |
| Project page: https://github.com/hiyouga/LLaMA-Factory |
----------------------------------------------------------

2. 装 Qwen3.5 的加速库

Qwen3.5 的线性注意力层有专门的加速实现,不装也能跑,但会慢很多。加载模型时看到的那两条提示,说的就是它们。

两个库分开安装,在终端里一条一条运行。原生 Windows(不是 WSL2)的装法不一样,看这一小节的最后一段。

先装 flash-linear-attention:

bash
uv pip install "flash-linear-attention==0.5.2"

它的版本也要写死。最新的 0.6.0 要求更新的 transformers,会把 LLaMA-Factory 0.9.5 要求的版本挤掉,运行时报版本不符。

再装 causal-conv1d。它没有现成的安装包:安装时会按你的 PyTorch 和 CUDA 版本,去 GitHub 下载对应的预编译文件;找不到,就在你的机器上现场编译,可能要等很久,也可能失败。

"编译"是把源代码翻译成显卡能直接运行的程序,要用到 CUDA 的开发工具,耗时也长。"预编译文件"就是别人已经编译好的成品,下载下来就能用。

它的预编译文件目前只做到 PyTorch 2.10,前面装的 PyTorch 比这新的话,基本都要现场编译。所以先看看机器上有没有编译要用的 nvcc:

bash
nvcc --version

能打印出 Cuda compilation tools, release … 这样一行,再往下装;提示找不到命令,就跳过 causal-conv1d。PyTorch 自带的 CUDA 只够运行,不带 nvcc,只装了显卡驱动和 PyTorch 的机器上都没有它。没有 nvcc 还硬装,会报 NameError: name 'bare_metal_version' is not defined,这是它的安装脚本没处理好缺 nvcc 的情况,报错里看不出原因。

bash
uv pip install setuptools wheel
uv pip install causal-conv1d --no-build-isolation

--no-build-isolation 让它安装时直接用环境里已经装好的 PyTorch,所以要先装上 setuptools 和 wheel 这两个打包工具。

这一步装不上也没关系,先跳过。不装它也能训练,只是慢一些;0.8B 本来就小,慢一点也能接受。

AutoDL 上访问 GitHub 慢的话,先运行 source /etc/network_turbo 打开学术加速。

原生 Windows 上,flash-linear-attention 要和 triton-windows 一起装,causal-conv1d 跳过。 前面推荐 WSL2,就是因为这两个库都是照着 Linux 做的。直接在 Windows 上训练也能跑通,把上面装 flash-linear-attention 的那条换成:

bash
uv pip install "flash-linear-attention==0.5.2" "triton-windows==3.6.0.post26"

Triton 是一种写显卡计算程序的工具,flash-linear-attention 的加速代码就是用它写的。Linux 上装 PyTorch 时会顺带装上 Triton,Windows 上不会,PyPI 上的 triton 也没有 Windows 版,所以要装社区维护的 triton-windows。只装 flash-linear-attention、不装它,加载模型时会直接报 No module named 'triton':transformers 发现装了 flash-linear-attention 就会去加载它,而它离不开 Triton。不装加速库只是慢,装一半反而跑不起来。

causal-conv1d 没有 Windows 的预编译文件,直接跳过。


3. 把模型和数据放到位

在本地训练的话,模型和数据前面都准备好了,这一步跳过。

本文是会员内容

全文 5,351 字,已试读约 30%。开通专业版可阅读全文,并解锁全部官方课程与后续更新。

开通专业版

支持 7 天无理由退款 · 早鸟价 99 元/年(售完恢复365/年)

课程中涉及的第三方项目,其著作权与商标归各自权利人所有;引用处的署名与许可见《开源与来源说明》。