跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
PythonAI算法

华为昇腾 910B 使用 LLaMA-Factory 微调 Qwen3.5-32B 模型指南

在华为昇腾 910B 服务器上,使用 LLaMA-Factory 框架对 Qwen3.5-32B 大语言模型进行 LoRA 微调的完整流程。内容涵盖环境配置、依赖安装、数据集准备、多卡训练启动及效果验证。通过提供详细的 Bash 脚本和 YAML 配置文件,帮助用户实现高效的大模型本地化微调与推理部署。

CloudNative发布于 2026/4/5更新于 2026/5/626 浏览
华为昇腾 910B 使用 LLaMA-Factory 微调 Qwen3.5-32B 模型指南

华为昇腾 910B(Ascend 910B)上使用 LLaMA-Factory 对 Qwen3.5-32B 模型进行 LoRA 微调的全流程操作指南

本教程基于 Ubuntu 20.04 + CANN 8.0 + MindSpore/PyTorch NPU + LLaMA-Factory v0.9.3+ 环境,适用于 8 卡昇腾 910B 服务器。包含环境配置、依赖安装、数据准备、训练启动、验证与推理等完整步骤。

前提条件

项目要求
硬件华为 Atlas 800/900 服务器,8×Ascend 910B(64GB HBM)
OSUbuntu 20.04 LTS
驱动CANN 8.0.RC1 或更高(已预装)
Python3.10.x(推荐 3.10.16)
存储≥ 2TB SSD(模型 + 数据集 + 缓存)

第一步:创建并激活虚拟环境

bash

安装 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 包

bash

添加清华镜像加速(可选)

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

安装昇腾专用 PyTorch(CANN 8.0 对应 torch-npu 2.4.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(昇腾适配版)

bash

克隆 LLaMA-Factory

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

安装依赖(关键:使用 torch-npu 分支)

pip install -e ".[torch-npu,metrics]"

升级 Pillow(避免 CANN 兼容问题)

pip install --upgrade pillow

验证安装

llamafactory-cli env

✅ 正确输出应包含: 文本

  • NPU type: Ascend910B2
  • CANN version: 8.0.RC2
  • PyTorch version: 2.4.0 (NPU)

第四步:下载 Qwen3.5-32B 模型

❗ Qwen3.5-32B 在 Hugging Face 需授权,国内推荐使用 ModelScope(魔搭)

bash

安装 modelscope

pip install modelscope

下载模型到本地(约 60GB)

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

第五步:准备微调数据集(Alpaca 格式)

创建训练数据 my_data.json(示例:公司制度问答):

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

保存到:LLaMA-Factory/data/my_data.json

然后注册数据集:

bash

编辑 dataset_info.json

nano data/dataset_info.json

在文件末尾添加:

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

第六步:配置多卡训练参数(YAML 文件)

创建配置文件 train_qwen35_32b_lora.yaml:

yaml

模型设置

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 = 188 = 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:32B 模型显存占用高,单卡只能 batch=1
  • gradient_accumulation_steps=8:模拟更大 batch
  • bf16: true:启用 bfloat16 提升性能(昇腾支持)

第七步:启动多卡微调训练

bash

设置可见 NPU(8 卡全用)

export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7

启动训练(使用 torchrun 多进程)

torchrun \ --nnodes=1 \ --nproc_per_node=8 \ src/train.py \ --config train_qwen35_32b_lora.yaml

🕒 预计耗时:

  • 1000 条数据 × 3 epoch ≈ 2–4 小时(8 卡 910B)
  • 日志实时输出 loss,检查 saves/.../trainer_log.jsonl

第八步:验证微调效果(Chat 测试)

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

bash 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 # 若安装了 vLLM-NPU(可选) --port 8080

或使用 WebUI:

bash export ASCEND_RT_VISIBLE_DEVICES=0 # WebUI 单卡即可 llamafactory-cli webui

访问 http://<服务器 IP>:7860 → 加载模型 → 测试问答。

第九步:合并模型(可选)

将 LoRA 权重合并到基础模型,生成完整模型:

bash 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 + 国内网络

总结

你已完成:

  1. 昇腾 910B 环境配置
  2. Qwen3.5-32B 模型下载
  3. 自定义数据集微调
  4. 8 卡 LoRA 分布式训练
  5. 效果验证与模型导出

💡 提示:Qwen3.5-32B 是超大模型,若资源有限,可考虑:

  • 使用 QLoRA(4-bit 量化):finetuning_type: qlora + quantization_bit: 4
  • 微调更小版本:如 Qwen3.5-7B

参考脚本结构

以下为微调流程的自动化脚本参考,包含环境初始化、模型下载、数据准备、训练启动及验证测试。

qwen35-32b-ascend-finetune/
├── setup_env.sh             # 1. 环境初始化
├── download_model.sh         # 2. 下载 Qwen3.5-32B(魔搭)
├── prepare_data.py           # 3. 生成示例数据集
├── train_qwen35_32b_lora.yaml # 4. 训练配置文件
├── run_train.sh              # 5. 启动多卡训练
├── test_chat.sh              # 6. 加载模型对话测试
├── merge_model.sh            # 7. 合并 LoRA 权重(可选)
└── README.md                 # 使用说明
文件 1:setup_env.sh

bash #!/bin/bash

setup_env.sh - 初始化昇腾 910B 环境

echo "🚀 创建 Conda 环境..." conda create -n llama-factory python=3.10.16 -y conda activate llama-factory

echo "📦 安装 PyTorch NPU (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 pip install torch_npu==2.4.0.post1 -f https://pypi.tuna.tsinghua.edu.cn/simple

echo "📥 克隆 LLaMA-Factory (Gitee 镜像)..." git clone https://gitee.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory

echo "🔧 安装 LLaMA-Factory (昇腾版)..." pip install -e ".[torch-npu,metrics]" pip install --upgrade pillow

echo "✅ 验证 NPU 可用性..." python -c "import torch; print('NPU available:', torch.npu.is_available()); print('Device count:', torch.npu.device_count())"

echo "🎉 环境配置完成!请运行:source ~/.bashrc && conda activate llama-factory"

文件 2:download_model.sh

bash #!/bin/bash

download_model.sh - 从魔搭下载 Qwen3.5-32B

MODEL_DIR="/data/models/qwen3.5-32b" mkdir -p $MODEL_DIR

echo "🌐 正在从 ModelScope 下载 Qwen3.5-32B..." python <<EOF from modelscope import snapshot_download snapshot_download( 'qwen/Qwen3.5-32B', cache_dir='$MODEL_DIR', revision='master' ) print("✅ 模型已保存至:$MODEL_DIR/qwen/Qwen3.5-32B") EOF

文件 3:prepare_data.py

python

prepare_data.py - 生成示例微调数据集

import json data = [ { "instruction": "你是谁?", "input": "", "output": "我是由张老师开发的 AI 助手,专注于解答公司制度问题。" }, { "instruction": "年假怎么计算?", "input": "", "output": "根据《员工手册》第 5 章:工作满 1 年不满 10 年,年假 5 天;满 10 年不满 20 年,10 天。" }, { "instruction": "加班有补贴吗?", "input": "", "output": "工作日加班按 1.5 倍工资,休息日 2 倍,法定节假日 3 倍。" } ]

with open("LLaMA-Factory/data/my_company_qa.json", "w", encoding="utf-8") as f: json.dump(data, f, ensure_ascii=False, indent=2)

注册数据集到 dataset_info.json

import os dataset_info_path = "LLaMA-Factory/data/dataset_info.json" if os.path.exists(dataset_info_path): with open(dataset_info_path, "r", encoding="utf-8") as f: info = json.load(f) else: info = {} info["my_company_qa"] = { "file_name": "my_company_qa.json", "columns": { "prompt": "instruction", "query": "input", "response": "output" } } with open(dataset_info_path, "w", encoding="utf-8") as f: json.dump(info, f, ensure_ascii=False, indent=2) print("✅ 数据集已生成并注册:LLaMA-Factory/data/my_company_qa.json")

文件 4:train_qwen35_32b_lora.yaml

yaml model_name_or_path: /data/models/qwen3.5-32b/qwen/Qwen3.5-32B template: qwen stage: sft do_train: true finetuning_type: lora lora_target: all 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 gradient_accumulation_steps: 8 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 ddp_timeout: 18000

文件 5:run_train.sh

bash #!/bin/bash

run_train.sh - 启动 8 卡微调训练

export ASCEND_RT_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 cd LLaMA-Factory

echo "🔥 启动 Qwen3.5-32B LoRA 微调 (8 卡昇腾 910B)..." torchrun \ --nnodes=1 \ --nproc_per_node=8 \ src/train.py \ --config ../train_qwen35_32b_lora.yaml

echo "✅ 训练完成!检查 saves/qwen3.5-32b/lora/company_qa/"

文件 6:test_chat.sh

bash #!/bin/bash

test_chat.sh - 加载微调后模型进行对话测试

export ASCEND_RT_VISIBLE_DEVICES=0 # 单卡推理 cd LLaMA-Factory

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 \ --bf16

文件 7:merge_model.sh

bash #!/bin/bash

merge_model.sh - 合并 LoRA 权重到基础模型

cd LLaMA-Factory

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

echo "✅ 合并完成!完整模型路径:/data/models/qwen3.5-32b-finetuned"

文件 8:README.md

markdown

Qwen3.5-32B 昇腾 910B 微调脚本包

🚀 快速开始

  1. 赋予执行权限:
    chmod +x *.sh
    
  2. 依次运行:
    ./setup_env.sh          # 配置环境(需手动激活 conda)
    conda activate llama-factory
    ./download_model.sh     # 下载模型(约 60GB)
    python prepare_data.py  # 生成示例数据
    ./run_train.sh          # 启动 8 卡训练
    ./test_chat.sh          # 测试微调效果
    

⚙️ 自定义

  • 修改 prepare_data.py 添加你的业务数据
  • 调整 train_qwen35_32b_lora.yaml 中的超参数

💾 输出目录

  • 微调检查点:LLaMA-Factory/saves/qwen3.5-32b/lora/company_qa
  • 合并模型:/data/models/qwen3.5-32b-finetuned

注意:首次运行需确保 CANN 8.0 已安装,且 NPU 驱动正常。

使用流程

# 1. 赋权
chmod +x *.sh

# 2. 逐个执行(按 README 顺序)
./setup_env.sh
conda activate llama-factory
./download_model.sh
python prepare_data.py
./run_train.sh
./test_chat.sh

提示

  • 显存优化:若 OOM,可将 per_device_train_batch_size: 1 改为 1 并增大 gradient_accumulation_steps: 16
  • 量化微调:将 finetuning_type: lora 改为 qlora 并添加 quantization_bit: 4 可大幅降低显存
  • 监控训练:训练时查看 saves/.../trainer_log.jsonl 或使用 plot_loss: true 生成 loss 曲线图

目录

  1. 前提条件
  2. 第一步:创建并激活虚拟环境
  3. 安装 Miniconda(若未安装)
  4. 创建虚拟环境
  5. 第二步:安装 PyTorch NPU + CANN 兼容库
  6. 添加清华镜像加速(可选)
  7. 安装昇腾专用 PyTorch(CANN 8.0 对应 torch-npu 2.4.0)
  8. 安装 torch_npu(关键!)
  9. 验证 NPU 可见性
  10. 应输出:True 和 8(或你的卡数)
  11. 第三步:安装 LLaMA-Factory(昇腾适配版)
  12. 克隆 LLaMA-Factory
  13. 安装依赖(关键:使用 torch-npu 分支)
  14. 升级 Pillow(避免 CANN 兼容问题)
  15. 验证安装
  16. 第四步:下载 Qwen3.5-32B 模型
  17. 安装 modelscope
  18. 下载模型到本地(约 60GB)
  19. 第五步:准备微调数据集(Alpaca 格式)
  20. 编辑 dataset_info.json
  21. 第六步:配置多卡训练参数(YAML 文件)
  22. 模型设置
  23. 训练设置
  24. LoRA 参数
  25. 数据集
  26. 批处理
  27. 输出
  28. 硬件
  29. 第七步:启动多卡微调训练
  30. 设置可见 NPU(8 卡全用)
  31. 启动训练(使用 torchrun 多进程)
  32. 第八步:验证微调效果(Chat 测试)
  33. 第九步:合并模型(可选)
  34. 常见问题解决
  35. 总结
  36. 参考脚本结构
  37. 文件 1:setup_env.sh
  38. setup_env.sh - 初始化昇腾 910B 环境
  39. 文件 2:download_model.sh
  40. download_model.sh - 从魔搭下载 Qwen3.5-32B
  41. 文件 3:prepare_data.py
  42. prepare_data.py - 生成示例微调数据集
  43. 注册数据集到 dataset_info.json
  44. 文件 4:trainqwen3532b_lora.yaml
  45. 文件 5:run_train.sh
  46. run_train.sh - 启动 8 卡微调训练
  47. 文件 6:test_chat.sh
  48. test_chat.sh - 加载微调后模型进行对话测试
  49. 文件 7:merge_model.sh
  50. merge_model.sh - 合并 LoRA 权重到基础模型
  51. 文件 8:README.md
  52. Qwen3.5-32B 昇腾 910B 微调脚本包
  53. 🚀 快速开始
  54. ⚙️ 自定义
  55. 💾 输出目录
  56. 使用流程
  57. 1. 赋权
  58. 2. 逐个执行(按 README 顺序)
  59. 提示
  • 💰 8折买阿里云服务器限时8折了解详情
  • GPT-5.5 超高智商模型1元抵1刀ChatGPT中转购买
  • 代充Chatgpt Plus/pro 帐号了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • Python 数据可视化绘图基础与实战指南
  • 前端国际化最佳实践:从硬编码到专业方案
  • PX4 与 ROS 无人机 Offboard 控制模式解析与实战
  • OpenClaw Gateway 连接断开与超时问题排查
  • 九快记账:基于 Spring Boot 与 Flutter 的开源财务管理系统
  • Java 流程控制:从条件判断到循环遍历
  • GitHub Copilot 实战:AI 编程助手如何提升开发效率
  • 基于混元 AIGC 与腾讯云智能体构建文思通写作助手
  • 电科金仓发布融合数据库 KES V9 2025 及 AI 产品体系
  • OpenDroneMap 无人机影像三维重建部署与实战指南
  • 基于 SpringBoot 的无人机智能管控系统小程序设计与实现
  • AI 大模型时代个人工作站硬件配置与成本分析
  • Ant Design Form 表单组件实现原理
  • 云边端一体化解析:概念、原理与AI基础设施实践
  • Windows 配置 Claude Desktop 与 MCP 实现本地文件读写
  • Whisper 语音识别教育场景:课堂录音自动转文字方案
  • RAG 系统优化研究:最佳实践与核心组件解析
  • Midjourney 中文版入门指南:指令优化与使用技巧
  • HUSKYLENS 2 AI 相机视觉传感器识别条形码输出数据
  • 国内如何升级 GitHub Copilot 到专业版

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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