LLaMA Factory 微调 Qwen3 / Qwen3.5 LoRA 记录

文档目的

本文档用于记录使用 LLaMA Factory 微调 Qwen3 与 Qwen3.5-27B LoRA 时的环境选择、实际现象、问题分析。

环境与现象摘要

场景 使用环境 模型 现象
Qwen3 LoRA 微调 LLaMA Factory Docker 0.9.3 Qwen3,包含 AWQ 4bit 量化基座场景 安装 AWQ 及相关 Python 依赖后,可以继续进行 LoRA / QLoRA 类微调流程
Qwen3.5-27B LoRA 微调 LLaMA Factory latest 镜像 Qwen3.5-27B 当前环境中,量化版 Qwen3.5-27B 无法稳定进入微调流程;全精度或 bf16 基座配合 LoRA、DeepSpeed ZeRO-3 和 CPU offload 可以推进训练

Qwen3 微调经验

使用 LLaMA Factory Docker 0.9.3 时,可以用于 Qwen3 的 LoRA 微调。该版本环境对 Qwen3 的支持相对明确,适合作为 Qwen3 系列实验的基础环境。

如果使用 AWQ 4bit 量化基座:

  • 需要对其环境先安装依赖:pip install autoawq,.apt update -y && apt install -y python3.10-dev gcc-9 g+±9 make cmake nvidia-cuda-toolkit pkg-config

Qwen3.5-27B 微调问题分析

Qwen3.5-27B 与普通纯文本 CausalLM 的处理路径不同。它在 Transformers 中对应 Qwen3_5ForConditionalGeneration,并且模型配置、processor、多模态输入字段和权重结构都更敏感。

当前遇到的问题可以总结为:

  • LLaMA Factory latest 镜像可以尝试加载 Qwen3.5-27B,但量化版模型在当前环境中无法稳定开始微调。
  • 问题不一定是 LoRA 数据集本身导致,更可能与 Qwen3.5-27B 的模型类、量化后权重结构、processor、config 元数据和 LLaMA Factory 内部自动加载链路有关。
  • 即使使用较新的 Transformers,也不代表 LLaMA Factory 的训练、合并、量化模型加载流程已经完整适配 Qwen3.5-27B 的所有场景。
  • 当前可推进的路线是使用全精度或 bf16 基座模型进行 LoRA 微调,再使用自定义脚本完成 LoRA 合并。

在当前 LLaMA Factory latest 镜像和本地依赖组合下,Qwen3.5-27B 量化版未能稳定进入微调流程;已验证可推进的方案是使用全精度或 bf16 基座进行 LoRA 微调。

DeepSpeed 与显存策略

Qwen3.5-27B 参数规模较大,使用全精度或 bf16 基座进行 LoRA 微调时,显存压力很高。当前经验中采用了:

  • DeepSpeed ZeRO Stage 3
  • CPU offload
  • LoRA rank 设置为 4
  • 训练参数尽量降低
  • 约 450 条训练数据
  • 2 张 GPU 训练约 3 到 4 小时

需要注意,CPU offload 并不等于“训练完全在 CPU 上运行”。它的作用是把部分参数、优化器状态或梯度状态卸载到 CPU 内存,降低 GPU 显存占用,但计算仍然高度依赖 GPU,并且会增加 CPU 内存与 PCIe 传输压力。

使用 DeepSpeed ZeRO-3 和 CPU offload 降低 GPU 显存占用,但训练主体仍依赖 GPU,CPU 主要承担部分状态卸载。

显存占用注意事项

在 2 张 GPU 上微调 Qwen3.5-27B 时,显存余量非常重要。当前经验中,只要其他进程占用额外显存,训练就容易出现 OOM 或初始化失败。

更规范的表达应为:

  • 训练前使用 nvidia-smi 检查 GPU 是否存在无关进程。
  • 尽量保证两张 GPU 处于空闲状态。
  • 不要把“任何显存占用都会失败”写成绝对规律,因为这取决于 GPU 型号、单卡显存、batch size、sequence length、gradient checkpointing、ZeRO 配置和 offload 配置。
  • 在当前实验条件下,显存余量较小,因此建议清理所有无关显存占用后再启动训练。

推荐流程

1. Qwen3 微调

建议继续使用 LLaMA Factory Docker 0.9.3 作为 Qwen3 实验环境,并记录以下信息:

如果使用 AWQ 量化基座,还需要记录 AWQ 相关包版本和量化模型来源。

2. Qwen3.5-27B 微调

建议优先使用全精度或 bf16 基座模型进行 LoRA 微调。训练时控制以下参数:

  • 降低 LoRA rank,例如 r=4
  • 降低 batch size 和 micro batch size
  • 开启 gradient checkpointing
  • 使用 DeepSpeed ZeRO-3
  • 视显存情况启用 CPU offload
  • 训练前清理无关 GPU 进程

3. Qwen3.5-27B 合并

Qwen3.5-27B LoRA 训练完成后,不建议优先依赖 LLaMA Factory 静态合并。当前更稳定的路线是使用自定义合并脚本,并显式指定:

Qwen3_5ForConditionalGeneration.from_pretrained(...)

合并后必须检查 config.json 中保留:

"architectures": ["Qwen3_5ForConditionalGeneration"]
Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐