跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

华为昇腾 910B 上基于 LLaMA-Factory 微调 Qwen3.5-32B 的 LoRA 实战

华为昇腾 910B 环境下基于 LLaMA-Factory 微调 Qwen3.5-32B 的 LoRA 实战流程。涵盖环境搭建、PyTorch NPU 适配、数据准备、多卡训练及推理验证。重点解决 CANN 兼容性与显存优化,提供关键配置参数与脚本示例,助力国产算力下的模型定制开发。

XiaoPingzi发布于 2026/4/10更新于 2026/5/2313 浏览
华为昇腾 910B 上基于 LLaMA-Factory 微调 Qwen3.5-32B 的 LoRA 实战

华为昇腾 910B 上基于 LLaMA-Factory 微调 Qwen3.5-32B 的 LoRA 实战

在国产算力环境下,利用华为昇腾 910B 配合 LLaMA-Factory 框架对 Qwen3.5-32B 大模型进行 LoRA 微调,已成为许多团队降低训练成本、适配业务场景的主流方案。本文基于 Ubuntu 20.04 + CANN 8.0 + PyTorch NPU 环境,梳理从环境配置、数据准备到多卡分布式训练及推理验证的全流程。

环境准备与依赖安装

硬件要求:建议 Atlas 800/900 服务器,配备 8×Ascend 910B(64GB HBM)。 系统要求:Ubuntu 20.04 LTS,CANN 8.0.RC1 或更高版本驱动已预装。 Python 版本:推荐 3.10.x(如 3.10.16)。

创建虚拟环境

使用 Conda 隔离依赖,避免污染系统环境。

# 若未安装 Miniconda,先执行以下命令
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -p $HOME/miniconda3
source ~/.bashrc

# 创建并激活环境
conda create -n llama-factory python=3.10.16 -y
conda activate llama-factory

安装 PyTorch NPU 与 CANN 库

⚠️ 注意:切勿直接使用 pip install torch,必须安装华为官方适配的 PyTorch NPU 包。

# 设置清华镜像加速(可选)
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

# 安装昇腾专用 PyTorch(对应 CANN 8.0 版本)
pip install torch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 \
    --extra-index-url https://pypi.tuna.tsinghua.edu.cn/simple

# 安装 torch_npu(关键依赖)
pip install torch_npu==2.4.0.post1 -f https://pypi.tuna.tsinghua.edu.cn/simple

# 验证 NPU 可见性
python -c "import torch; print(torch.npu.is_available()); print(torch.npu.device_count())"
# 预期输出:True 和 8(根据实际卡数)

安装 LLaMA-Factory

克隆代码仓库并安装昇腾适配版依赖。

git clone https://gitee.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory

# 安装依赖,指定 torch-npu 分支
pip install -e ".[torch-npu,metrics]"

# 升级 Pillow 以避免兼容问题
pip install --upgrade pillow

# 验证安装状态
llamafactory-cli env
# 确认输出包含:NPU type: Ascend910B2, CANN version: 8.0...

模型下载与数据准备

下载 Qwen3.5-32B 模型

Qwen3.5-32B 在 Hugging Face 可能需要授权,国内用户建议使用 ModelScope(魔搭社区)下载。

pip install modelscope
mkdir -p /data/models/qwen3.5-32b

python -c "
from modelscope import snapshot_download
snapshot_download(
    'qwen/Qwen3.5-32B',
    cache_dir='/data/models/qwen3.5-32b',
    revision='master'
)
"
# 模型路径通常为:/data/models/qwen3.5-32b/qwen/Qwen3.5-32B

准备微调数据集

LLaMA-Factory 支持 Alpaca 格式。创建 my_data.json 文件,内容示例如下:

[
  {
    "instruction": "你是谁?",
    "input": "",
    "output": "我是由张老师开发的 AI 助手,专注于解答公司制度问题。"
  },
  {
    "instruction": "年假怎么计算?",
    "input": "",
    "output": "根据《员工手册》第 5 章:工作满 1 年不满 10 年,年假 5 天;满 10 年不满 20 年,10 天。"
  }
]

保存至 LLaMA-Factory/data/my_data.json,并在 data/dataset_info.json 中注册该数据集:

"my_company_qa": {
  "file_name": "my_data.json",
  "columns": {
    "prompt": "instruction",
    "query": "input",
    "response": "output"
  }
}

配置训练参数

创建 YAML 配置文件 train_qwen35_32b_lora.yaml。针对 32B 模型,显存管理是核心,需合理设置 batch size 与梯度累积。

### 模型设置 ###
model_name_or_path: /data/models/qwen3.5-32b/qwen/Qwen3.5-32B
template: qwen  # Qwen 系列必须指定 template

### 训练设置 ###
stage: sft
do_train: true
finetuning_type: lora
lora_target: all  # Qwen 推荐 all(含 attention + mlp)

### LoRA 参数 ###
lora_rank: 64
lora_alpha: 128
lora_dropout: 0.05

### 数据集 ###
dataset: my_company_qa
max_samples: 1000  # 若数据少可注释此行
val_size: 0.1

### 批处理 ###
per_device_train_batch_size: 1   # 32B 模型显存占用高,单卡 batch_size=1
gradient_accumulation_steps: 8   # 等效 batch_size = 1*8*8 = 64
lr_scheduler_type: cosine
learning_rate: 1e-4
num_train_epochs: 3
max_grad_norm: 1.0

### 输出 ###
output_dir: saves/qwen3.5-32b/lora/company_qa
logging_steps: 10
save_steps: 500
plot_loss: true

### 硬件 ###
bf16: true        # 昇腾 910B 支持 bf16
ddp_timeout: 18000

关键说明:

  • per_device_train_batch_size=1:防止 OOM,32B 模型单卡显存紧张。
  • gradient_accumulation_steps=8:模拟更大 Batch Size 以提升收敛稳定性。
  • bf16: true:启用 bfloat16 混合精度,显著提升训练效率。

启动多卡微调训练

设置环境变量以识别所有 NPU 设备,并使用 torchrun 启动分布式训练。

# 设置可见 NPU(8 卡全用)
export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7

# 启动训练
torchrun \
  --nnodes=1 \
  --nproc_per_node=8 \
  src/train.py \
  --config train_qwen35_32b_lora.yaml

预计耗时取决于数据量,1000 条数据 × 3 epoch 在 8 卡 910B 上约需 2–4 小时。请实时监控日志中的 loss 变化,检查 saves/.../trainer_log.jsonl。

验证效果与模型导出

Chat 测试

训练完成后,加载 LoRA 适配器进行对话测试。

llamafactory-cli chat \
  --model_name_or_path /data/models/qwen3.5-32b/qwen/Qwen3.5-32B \
  --adapter_name_or_path saves/qwen3.5-32b/lora/company_qa \
  --template qwen \
  --finetuning_type lora \
  --infer_backend vllm \
  --port 8080

或使用 WebUI 进行交互:

export ASCEND_RT_VISIBLE_DEVICES=0  # WebUI 单卡即可
llamafactory-cli webui
# 访问 http://<服务器 IP>:7860

合并模型(可选)

将 LoRA 权重合并到基础模型,生成可直接部署的完整模型。

llamafactory-cli export \
  --model_name_or_path /data/models/qwen3.5-32b/qwen/Qwen3.5-32B \
  --adapter_name_or_path saves/qwen3.5-32b/lora/company_qa \
  --template qwen \
  --finetuning_type lora \
  --export_dir /data/models/qwen3.5-32b-finetuned

合并后的模型无需额外加载 adapter,可直接用于生产环境推理。

常见问题排查

问题解决方案
torch not compiled with npu support重新安装 torch_npu==2.4.0.post1
显存不足 OOM减小 per_device_train_batch_size=1,增大 gradient_accumulation_steps
tokenizer 报错确保 template: qwen(Qwen 必须指定)
多卡通信失败检查 ASCEND_RT_VISIBLE_DEVICES 是否包含所有卡号
模型下载慢使用 modelscope + 国内网络

若资源有限,可考虑使用 QLoRA(4-bit 量化),在配置文件中添加 quantization_bit: 4 并调整 finetuning_type: qlora。

目录

  1. 华为昇腾 910B 上基于 LLaMA-Factory 微调 Qwen3.5-32B 的 LoRA 实战
  2. 环境准备与依赖安装
  3. 创建虚拟环境
  4. 若未安装 Miniconda,先执行以下命令
  5. 创建并激活环境
  6. 安装 PyTorch NPU 与 CANN 库
  7. 设置清华镜像加速(可选)
  8. 安装昇腾专用 PyTorch(对应 CANN 8.0 版本)
  9. 安装 torch_npu(关键依赖)
  10. 验证 NPU 可见性
  11. 预期输出:True 和 8(根据实际卡数)
  12. 安装 LLaMA-Factory
  13. 安装依赖,指定 torch-npu 分支
  14. 升级 Pillow 以避免兼容问题
  15. 验证安装状态
  16. 确认输出包含:NPU type: Ascend910B2, CANN version: 8.0...
  17. 模型下载与数据准备
  18. 下载 Qwen3.5-32B 模型
  19. 模型路径通常为:/data/models/qwen3.5-32b/qwen/Qwen3.5-32B
  20. 准备微调数据集
  21. 配置训练参数
  22. 模型设置
  23. 训练设置
  24. LoRA 参数
  25. 数据集
  26. 批处理
  27. 输出
  28. 硬件
  29. 启动多卡微调训练
  30. 设置可见 NPU(8 卡全用)
  31. 启动训练
  32. 验证效果与模型导出
  33. Chat 测试
  34. 访问 http://<服务器 IP>:7860
  35. 合并模型(可选)
  36. 常见问题排查
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Python 通达信数据接口实战:股票数据分析入门
  • Stable Diffusion 模型训练工具 kohya_ss 入门指南
  • 结构化信息管理与 ChatGPT 的高效应用
  • C++ 与 Python 传值及传引用机制对比
  • SCI 论文降低 AI 检测率的工具实测与方案
  • MySQL 8.4 在 Windows 下的免安装版配置指南
  • Unity VR Pico 开发环境一键配置与项目搭建指南
  • 国内执行式 AI 平替对比:OpenClaw 与实在 Agent 落地分析
  • 基于 Openclaw 与 Seed2.0 Skills 构建 AI 漫剧生成工作流
  • Llama 3-8B-Instruct 在昇腾 NPU 上的 SGLang 性能实测
  • Stable-Diffusion-v1-5 镜像部署:Web 界面与 Supervisor 自动恢复
  • next-ai-draw-io:基于 Next.js 的 AI 绘图工具搭建指南
  • AI 提示词工程:原理、策略与精通指南
  • Visual Studio 17.14 GitHub Copilot 模型管理与自定义接入
  • Linux Shell 脚本正则表达式基础
  • Spring Boot 数据仓库与 ETL 工具集成
  • 鸿蒙 4.2/4.3 系统安装谷歌服务框架指南
  • Ventoy 终极教程:U 盘启动 Windows/Linux 多系统安装指南
  • OpenCode AI 编程工具使用指南:从安装配置到实战技巧
  • OpenClaw 本地安装与 Web UI 使用指南

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online