📝 写在前面

作为一名AI开发者,我一直对国产大模型+国产算力的组合充满期待。这次参加魔乐社区的新年征文赛,目标很明确:在昇腾NPU上成功部署国产大模型,并且争取“自行适配其他系列模型”的加分项。

经过几天的摸索和踩坑,我终于成功在魔乐社区的昇腾环境中跑通了 Qwen2.5-VL-3B-Instruct 和 DeepSeek-R1-Distill-Qwen-7B 两个模型。这篇文章将完整记录整个过程,希望能帮助更多开发者少走弯路。


一、环境准备:从零开始搭建

1.1 魔乐社区创空间创建

首先在魔乐社区(modelers.cn)注册账号,然后创建“创空间”:

· 接入SDK:选择 Application
· 算力资源:选择NPU配额(2卡)
· 基础环境:选择 openeuler-python3.11-xxx 系列镜像

创建成功后,打开Notebook环境,默认登录令牌是 openMind。

1.2 验证基础环境

python -c "import torch; print(f'PyTorch版本: {torch.__version__}')"

1.3 遇到的第一个坑:版本冲突

刚开始时,我遇到了各种版本冲突问题。经过多次尝试,最终确定了兼容的版本组合:

# 卸载所有冲突包
pip uninstall torch torch-npu torchaudio torchvision -y

# 安装正确版本
pip install torch==2.8.0
pip install torch-npu==2.8.0
pip install torchvision==0.23.0
pip install torchaudio==2.8.0

# 验证NPU可用性
python -c "import torch; import torch_npu; print(f'NPU可用: {torch.npu.is_available()}')"
# 输出应为 True

关键点:torch 和 torch_npu 版本必须严格匹配,否则会出现 undefined symbol 错误。

1.4 安装LLaMA-Factory

# 克隆LLaMA-Factory
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory

# 安装
pip install -e .

# 验证安装
llamafactory-cli env

如果提示 command not found,需要添加PATH:

export PATH="$HOME/.local/bin:$PATH"
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

二、模型一:Qwen2.5-VL-3B-Instruct 部署实战

2.1 下载模型

用transformers库直接下载:

python -c "
from transformers import AutoModelForCausalLM, AutoTokenizer
model_path = '/home/openmind/LLaMA-Factory/Qwen2.5-VL-3B-Instruct'
print('正在下载Qwen模型...')
tokenizer = AutoTokenizer.from_pretrained('Qwen/Qwen2.5-VL-3B-Instruct', trust_remote_code=True)
tokenizer.save_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained('Qwen/Qwen2.5-VL-3B-Instruct', trust_remote_code=True)
model.save_pretrained(model_path)
print('✅ Qwen模型下载完成!')
"

2.2 创建配置文件

创建 qwen.yaml:

model_name_or_path: /home/openmind/LLaMA-Factory/Qwen2.5-VL-3B-Instruct
template: qwen
infer_backend: huggingface
max_length: 4096
top_p: 0.9
temperature: 0.7
repetition_penalty: 1.05

2.3 运行模型

llamafactory-cli chat qwen.yaml

成功截图:


三、模型二:DeepSeek-R1-Distill-Qwen-7B 部署实战

3.1 下载模型(使用魔乐社区的modelscope)

由于网络限制,Hugging Face连接不稳定,我改用魔乐社区自带的modelscope工具下载:

# 安装modelscope
pip install modelscope

# 下载DeepSeek模型
python -c "
from modelscope import snapshot_download
snapshot_download(
    'deepseek-ai/DeepSeek-R1-Distill-Qwen-7B',
    cache_dir='/home/openmind/LLaMA-Factory/DeepSeek-R1-Distill-Qwen-7B'
)
print('✅ DeepSeek模型下载完成!')
"

下载过程会显示进度:

Downloading [model-00001-of-000002.safetensors]: 100%
Downloading [model-00002-of-000002.safetensors]: 100%

3.2 创建配置文件

创建 deepseek.yaml:

model_name_or_path: /home/openmind/LLaMA-Factory/DeepSeek-R1-Distill-Qwen-7B/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B
template: deepseek
infer_backend: huggingface
max_length: 4096
top_p: 0.9
temperature: 0.7
repetition_penalty: 1.05

3.3 运行模型

llamafactory-cli chat deepseek.yaml

成功截图:


四、踩坑与解决方案

4.1 版本冲突问题

问题现象:

ImportError: /usr/local/python3.11.13/lib/python3.11/site-packages/torch_npu/lib/libnpu_profiler.so: undefined symbol

解决方案:
必须确保 torch 和 torch_npu 版本完全一致。我的最终版本组合:

· torch==2.8.0
· torch_npu==2.8.0
· torchvision==0.23.0
· torchaudio==2.8.0

4.2 权限问题

问题现象:

PermissionError: [Errno 13] Permission denied: '/usr/local/python3.11.13/bin/transformers'

解决方案:
系统目录没有写入权限,用 --user 参数安装到用户目录:

pip install --user transformers==4.45.0

4.3 模型下载失败

问题现象:

Failed to connect to huggingface.co port 443

解决方案:
使用魔乐社区的 modelscope 工具下载,速度快且稳定。

4.4 PATH问题

问题现象:

llamafactory-cli: command not found

解决方案:

export PATH="$HOME/.local/bin:$PATH"
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

五、性能对比

模型 参数量 显存占用 加载时间 推理速度
Qwen2.5-VL-3B 3.7B ~7.2 GB 约30秒 较快
DeepSeek-R1 7.6B ~14 GB 约45秒 适中

分析:

· DeepSeek参数量是Qwen的两倍,显存占用也相应增加
· 在昇腾910B2 NPU上,两个模型都能流畅运行
· 建议根据实际需求选择合适的模型


六、一键部署脚本

为了方便复现,我整理了完整的部署脚本:

#!/bin/bash
# deploy_all.sh - 一键部署Qwen和DeepSeek

# 1. 安装依赖
pip install torch==2.8.0 torch-npu==2.8.0 torchvision==0.23.0 torchaudio==2.8.0
pip install transformers==4.45.0 peft==0.12.0
pip install vllm==0.9.2 vllm-ascend==0.9.2rc1

# 2. 安装LLaMA-Factory
cd ~
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
pip install -e .

# 3. 添加PATH
export PATH="$HOME/.local/bin:$PATH"
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc

# 4. 下载Qwen模型
python -c "
from transformers import AutoModelForCausalLM, AutoTokenizer
AutoTokenizer.from_pretrained('Qwen/Qwen2.5-VL-3B-Instruct', trust_remote_code=True).save_pretrained('/home/openmind/LLaMA-Factory/Qwen2.5-VL-3B-Instruct')
AutoModelForCausalLM.from_pretrained('Qwen/Qwen2.5-VL-3B-Instruct', trust_remote_code=True).save_pretrained('/home/openmind/LLaMA-Factory/Qwen2.5-VL-3B-Instruct')
"

# 5. 下载DeepSeek模型(可选)
pip install modelscope
python -c "
from modelscope import snapshot_download
snapshot_download('deepseek-ai/DeepSeek-R1-Distill-Qwen-7B', cache_dir='/home/openmind/LLaMA-Factory/DeepSeek-R1-Distill-Qwen-7B')
"

echo "✅ 部署完成!"

七、总结与展望

通过这次实践,我深刻体会到国产大模型+国产算力的组合已经具备了很好的可用性。在昇腾NPU上,无论是Qwen还是DeepSeek都能流畅运行,推理速度令人满意。

几点感悟:

  1. 环境配置是关键:版本匹配是最大的坑,但只要找到正确的版本组合,后续就很顺利
  2. 国产工具越来越成熟:魔乐社区的modelscope下载速度很快,解决了网络问题
  3. 多模型适配并不难:只要环境配好,换模型只需要改几个参数

后续计划:

· 尝试用vLLM后端提升推理速度
· 探索模型微调的可能性
· 在昇腾NPU上部署更多国产模型


📌 附录:最终环境信息

# 执行以下命令查看完整环境
llamafactory-cli env

我的环境信息:

· Python版本:3.11.13
· PyTorch版本:2.8.0 (NPU)
· NPU类型:Ascend910B2
· CANN版本:8.3.RC2
· Transformers版本:4.45.0
· LLaMA-Factory版本:0.9.5.dev0


博文作者:ryo3344
日期:2026年3月8日
魔乐社区主页:https://modelers.cn/user/luo2005
配套脚本仓库:https://modelers.cn/luo2005/deploy-qwen-deepseek-ascent

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐