0. 系列闭环
| 本篇位置 | 上游 | 本篇产出 | 下游 |
|---|---|---|---|
| 第 4/10 篇 | 第 03 篇原理 | 可运行的 GPU 环境 + 基座路径 | 第 05 篇 python train_lora_single.py |
环境不对的表现不是「报错退出」,而是 bf16 不支持 silently 变慢、模型路径软链接断裂训到一半才 fail。本篇按日志里真实成功的组合写。
1. 要解决的实际问题
LoRA 训练依赖:
- CUDA + bf16 可用的 PyTorch(V100 实测 2.5.1+cu124)
- 完整 Qwen3.5-4B 权重 在
MODEL_PATH - TRL / PEFT / bitsandbytes 版本与 Transformers 5.x 匹配
- JSONL 在
DATA_PATH
验证与训练可以分机:训练在 AutoDL V100,验证在 Mac mini MPS(用户实测 verify_lora.py 通过)。vLLM 仅 Linux+CUDA(第 10 篇)。
2. 实现位置
| 路径 | 说明 |
|---|---|
LoRA_Demo/README.md 第 31–54 行 |
pip 依赖与 ModelScope 下载 |
LoRA_Demo/train_lora_single.py 第 49–51 行 |
MODEL_PATH / DATA_PATH / OUTPUT_DIR |
LoRA_Demo/models/Qwen3.5-4B/ |
基座目录(约 8.7 GB) |
LoRA_Demo/.venv/ |
本地 Python 3.11 虚拟环境(可选) |
3. Python 依赖与版本锚点
1 | |
checkpoint-750 内嵌版本(训练落盘):
| 包 | 版本 |
|---|---|
| PyTorch | 2.5.1+cu124 |
| transformers | 5.9.0 |
| trl | 1.5.1 |
| peft | 0.19.1 |
不要用 TRL 0.7 老教程里的 TrainingArguments + 手写 formatting_func 来对照本项目——脚本用的是 **TRL 1.x 的 SFTConfig**,参数名 max_length 而非旧版 max_seq_length(Trainer 内部仍可能打印 max_seq_length=512,以脚本 MAX_SEQ_LEN 为准)。
4. 基座模型获取
4.1 ModelScope(国内)
1 | |
4.2 校验
1 | |
train_lora_single.py 使用 trust_remote_code=True——Qwen3.5 需要仓库内自定义 modeling 代码,不能省略。
5. 硬件与精度策略
5.1 训练(日志实测)
1 | |
来源:all_logs.log 第 12–23 行。
V100 支持 bf16,故 train_lora_single.py 第 178、210 行 dtype=torch.bfloat16 + bf16=True 无需改。
5.2 验证(Mac MPS 实测)
verify_lora.py 第 101–107 行:
1 | |
用户截图显示:推理设备: mps | 精度: torch.float16,LoRA 加载 426 个权重成功。说明 验证不必须回到 V100。
5.3 部署
vLLM 要求 Linux + NVIDIA GPU,RTX 4090 / V100-32GB / A10-24GB 均可(README.md 硬件表)。
6. 开训前自检命令
1 | |
期望:CUDA True、JSONL 约 1000 行、safetensors 存在、trl≥1.5。
7. 日志里两类警告的处理
7.1 flash-linear-attention 未安装
1 | |
见第 09 篇。不阻断训练,仅速度略慢。41 分钟训完 750 步可接受。
7.2 tokenizer special token 对齐
1 | |
脚本已 tokenizer.pad_token = tokenizer.eos_token(train_lora_single.py 第 164 行)。Trainer 自动对齐 config,可忽略。
8. 踩坑
坑 1:软链接指向错误缓存路径
ModelScope 升级后 hub 路径变化,models/Qwen3.5-4B 悬空,from_pretrained 报 FileNotFound。用 ls -l models/Qwen3.5-4B 检查链接。
坑 2:云镜像自带 torch,pip 又装 CPU 版覆盖torch.cuda.is_available() 变 False。开训前必打印 CUDA。
坑 3:Mac 上试图 pip install vllm 做部署
官方不支持 Mac CUDA。部署请用 Linux 云主机,本地只做 verify_lora.py。
坑 4:磁盘空间
基座 8.7 GB + 15 个 checkpoint(各约 81 MB 含 optimizer)+ final_lora。output/ 预留 ≥2 GB;只有 final_lora 时约 50 MB。
9. 小结
- 依赖:torch 2.5 + transformers 5.9 + trl 1.5 + peft 0.19。
- 基座:**ModelScope 下载 + 软链到
./models/Qwen3.5-4B**。 - 训练:V100-32GB + bf16 + batch 2×2。
- 验证:Mac MPS 可用 float16,与训练 bf16 略不同但实测可用。
- 部署:仅 Linux,见第 10 篇。
附录:路径常量
1 | |
系列导航
| 篇目 | 链接 |
|---|---|
| 上一篇 | 03 · LoRA 原理 |
| 下一篇 | 05 · SFT 实战(上) |
| 索引 | README |