Fine-tuning

训练环境配置&踩坑记录

上一节课我们选好了训练框架 ms swift,接下来就把整个训练环境搭建起来。这一步是整个流程里最容易出问题的地方。 版本之间的兼容性非常容易出问题。 核心类库 大模型训练和推理涉及的核心类库,有一条从底层到上层的依赖关系:

TL;DR

上一节课我们选好了训练框架 ms swift,接下来就把整个训练环境搭建起来。这一步是整个流程里最容易出问题的地方。 版本之间的兼容性非常容易出问题。 核心类库 大模型训练和推理涉及的核心类库,有一条从底层到上层的依赖关系:

上一节课我们选好了训练框架 ms-swift,接下来就把整个训练环境搭建起来。这一步是整个流程里最容易出问题的地方。 版本之间的兼容性非常容易出问题。

核心类库

大模型训练和推理涉及的核心类库,有一条从底层到上层的依赖关系:

CUDA          GPU 底层计算接口,让代码能调用显卡
  ↓
PyTorch       深度学习框架,训练和推理的基础
  ↓
Triton        PyTorch 的编译后端,torch.compile 依赖它
  ↓
Transformers  HuggingFace 的模型加载库,负责加载权重和分词器
  ↓
vLLM          GPU 推理加速框架,高吞吐推理用
  ↓
Swift         ms-swift 训练框架,封装了微调、推理、导出全流程

每个库的作用: - CUDA:NVIDIA 提供的 GPU 计算平台。CUDA 版本由镜像决定,是整个依赖链的起点。 其他所有库的版本都要根据 CUDA 版本来匹配。 - PyTorch:最主流的深度学习框架,每个 PyTorch 版本都有对应的 CUDA 编译版本,两者必须匹配。 - Triton:PyTorch 的编译加速后端,版本必须和 PyTorch 匹配。 - Transformers:HuggingFace 的模型库,负责加载模型权重、处理 tokenizer、管理 chat template。 - vLLM:GPU 推理加速框架。安装时它会自动拉取兼容版本的 PyTorch、Triton、Transformers,所以安装顺序很重要——先装 vLLM。 - ms-swift:阿里团队的训练框架,封装了数据处理、LoRA 微调、模型导出、推理的全流程。 CUDA 版本决定了其他所有库的版本选择。 选对了 CUDA 版本,后面每一层都可以按需匹配;选错了,后面怎么装都可能出问题。

base 环境的风险

AutoDL 启动容器后,默认进入 conda 的 base 环境,已经装好了一些基础包。 不建议直接在 base 环境里装东西,问题可能会在不确定的时间点冒出来: - 可能训练就报错了 - 可能推理的时候挂了 - 可能过两天 pip install 了另一个包,环境突然就坏了

踩坑记录

当时在 base 环境里装了 Swift 4.2.0,训练正常。但后面推理时需要安装 vLLM:

swift infer --infer_backend vllm

直接在 base 环境里执行:

pip install vllm

安装没报错,但装完后 Torch、Transformers、Triton 都被升级了,环境依赖发生了变化,最终出现兼容性报错:

AssertionError: duplicate template name

排查过程:逐个排查 Swift、Qwen 模型、vLLM,最后发现连最简单的代码都跑不了:

python - <<'PY'
import torch

@torch.compile
def f(x):
    return x + 1

print("compile ok")
PY

## 正常应该输出 compile ok才对

问题根本不在 Swift,而是在 PyTorch 这一层。 而且 base 环境会被污染:pip uninstall 卸载不干净,会导致多版本依赖覆盖、缓存残留、依赖树变化。最终错误往往和真正原因完全无关。 结论:base 环境一旦被污染,不要试图修复,直接新建一个干净的环境。

安装步骤

第一步:创建新的 conda 环境 先查看当前环境:

conda env

创建新环境:

conda create
conda activate swift

用 Python 3.12,和 ms-swift 官方推荐的版本一致。环境名用 swift-clean,和 base 环境完全隔离。 第二步:安装 vLLM(指定版本,让它自动装好 PyTorch、Triton、Transformers) 新create的env是没有torch,vllm这些类库的,也可以先执行一下看看

pip show torch
pip show vllm

如果没有的话,也不要直接自己手动装 PyTorch:

pip install torch

正确的做法是装 vLLM,让它自动安装对应依赖:

pip install vllm

会自动安装匹配的:

torch
transformers
triton
xformers

会自动安装匹配的 torch、transformers、triton、xformers。vLLM 的依赖声明里已经锁定了兼容的版本,这样装出来的环境最可靠。 第三步:安装 ms-swift

pip install ms

如果需要全部功能,可以装全量版:

pip install

第四步:锁版本 装完所有依赖后,立刻保存当前环境的版本快照:

pip freeze

以后恢复环境:

pip install

环境验证

装完后按顺序验证,不要跳步。底层没问题再验证上层。 重要经验:装好所有依赖之后,先用基模跑一下推理,确认环境没问题再开始训练。 验证一:版本检查 逐个检查核心类库的版本,确认都安装正确:

python
python
python
python
python
python

正常输出类似:

CUDA: 12.8
Torch: 2.10.0+cu128
vLLM: 0.17.1
Transformers: 4.57.6
Swift: 4.2.0
GPU: True

如果任何一个包报 ModuleNotFoundError,说明对应库没装好。如果 GPU: False,说明 PyTorch 找不到 GPU,需要检查 CUDA 版本是否匹配。 验证二:检查 GPU

nvidia

确认 GPU 可见,驱动版本和 CUDA 版本符合预期。 验证三:检查 torch.compile

python
import

@torch
def


print
PY

输出 compile ok 说明 PyTorch 底层环境完全正常。这是所有验证里最重要的。 验证四:检查 vLLM

python
from
print
PY

验证五:基模推理验证 前面几步只是验证了各个包能正常 import,但还不能说明它们之间配合没问题。最后一步是用基模实际跑一次推理:

swift infer \
  • --model Qwen/Qwen3-0.6B:指定基座模型,首次运行会从 ModelScope 自动下载
  • --infer_backend vllm:使用 vLLM 作为推理后端 能正常启动并返回结果,说明 CUDA、PyTorch、Triton、vLLM、Swift 之间配合完全 OK。

离线运行

可以将模型先下载到本地数据盘目录,实现离线运行。AutoDL 中默认下载到系统盘(root 目录),磁盘空间较小,建议下载到数据盘。 打开新终端窗口即能看到如下说明: 使用 modelscope 将模型下载到数据盘:

pip install modelscope

modelscope download \

下载完成后,我们的数据盘就会有模型文件:

cd Qwen3-0.6B

看到这些文件,基本就是一个完整的大语言模型目录了。 其中核心文件: - model.safetensors:模型训练得到的全部参数 - config.json:模型结构配置文件(Transformer 层数、隐藏层维度、注意力头数量等) - tokenizer 相关文件:文本和 Token 之间的转换 简单理解: - config.json:定义模型结构(骨架) - model.safetensors:存储模型参数(大脑记忆) - tokenizer:负责文本和 Token 转换(语言翻译器) 这时候离线运行的命令就要改了:

swift infer \
版本提示

模型、框架与接口会持续变化。涉及版本号、参数与生产配置时,请在实践前对照对应官方文档。

LLMentor系统化学习大模型应用工程

内容来自个人课程知识库备份,并经过结构化整理。技术版本持续演进,生产使用前请结合官方文档验证。