本文档说明如何在华为升腾(Ascend)NPU 服务器上使用 FineTuneX 进行大模型微调。
华为升腾需要安装 CANN(Compute Architecture for Neural Networks)软件栈:
配置环境变量:
# 添加以下行到 ~/.bashrc
source /usr/local/Ascend/ascend-toolkit/set_env.sh
# 重新加载环境变量
source ~/.bashrc
# 使用 conda 创建 Python 环境(推荐 Python 3.9+)
conda create -n finetunex python=3.9
conda activate finetunex
# 安装华为适配的 PyTorch 和 torch-npu
# 请参考华为官方文档获取对应版本的安装命令
pip install torch torch-npu
# 安装 FineTuneX 的其他依赖
pip install transformers>=4.40.0 datasets>=2.14.0 accelerate>=0.25.0
pip install peft>=0.7.0 trl>=0.7.0 sentencepiece>=0.1.99
pip install pandas>=2.0.0 numpy>=1.24.0 tqdm>=4.65.0
注意:华为升腾 NPU 不支持以下库:
bitsandbytes(4bit/8bit 量化)autoawq(AWQ 量化)auto-gptq(GPTQ 量化)llama-cpp-python(GGUF 量化)华为升腾版本已调整依赖:
torch-npu 替代标准 torchbitsandbytes 等不兼容的量化库在 finetunex/models/qwen.py 中:
device_map="auto" 会自动映射到 NPU 设备在 finetunex/trainer/trainer.py 中:
check_device() 方法,自动检测 CUDA/NPU/CPUbf16 混合精度训练(华为升腾推荐)adamw_torch(NPU 兼容)在 finetunex/utils/helpers.py 中:
get_gpu_info() 现在支持 NPU 设备检测python scripts/check_env.py
会同时检测 CUDA 和 NPU 设备状态。
python examples/qwen3.5_0.8b_finetune.py
# 修改 examples/qwen3.5_0.8b_local_finetune.py 中的模型路径
python examples/qwen3.5_0.8b_local_finetune.py
config = QwenConfig(
model_name="Qwen/Qwen3.5-0.5B",
use_4bit=False, # NPU 必须关闭 4bit 量化
bnb_4bit_compute_dtype="bfloat16", # 推荐 bf16
)
trainer.setup_training(
bf16=True, # NPU 推荐 bf16
fp16=False,
)
由于华为升腾不支持 4bit 量化,需要使用 bf16/fp16 加载模型:
确保已正确安装 torch-npu 包并配置了 CANN 环境变量:
source /usr/local/Ascend/ascend-toolkit/set_env.sh
python -c "import torch; print(hasattr(torch, 'npu'))"
检查以下几点:
npu-smi info 检查 NPU 状态由于无法使用 4bit 量化,如果显存不足:
max_seq_lengthper_device_train_batch_sizegradient_accumulation_steps