模型部署入门—MindSpeed实践指导
发表于 2025/11/19
背景和意义
本文档可以作为AI学习者的模型部署入门指导,将介绍在NPU环境上基于MindSpeed-LLM部署Qwen3的实践流程,从本文章主要可以了解到以下内容
- 使用MindSpeed-LLM部署模型
- 结合docker和conda搭建环境
- 搭建过程报错处理
- 模型代码,权重获取方式
- 模型单机运行和双机运行
- 精度指标的简单介绍
环境版本与依赖清单
| 依赖软件 | 版本 |
|---|---|
| 昇腾NPU驱动 | 商发版本 |
| 昇腾NPU固件 | 商发版本 |
| CANN Toolkit(开发套件) | 商发版本 |
| CANN Kernel(算子包) | 商发版本 |
| CANN NNAL(Ascend Transformer Boost加速库) | 商发版本 |
| Python | >=3.10 |
| PyTorch | 2.1.0 |
| torch_npu插件 | 2.1.0 |
| apex | 商发版本 |
| transformers | 4.51.0 |
环境搭建准备
昇腾常用指令了解
- 查看npu信息:npu-smi info
- 查看cann 版本:cat /usr/local/Ascend/ascend-toolkit/latest/version.cfg (这只是个默认地址,具体根据实际引用的CANN地址)
环境搭建
官方安装指导:MindSpeed-LLM: 昇腾LLM分布式训练框架 - Gitee.com
- 安装NPU驱动与固件软件安装-CANN商用版8.0.0-昇腾社区
- 安装CANN软件安装-CANN商用版8.0.0-昇腾社区
- 本次实践是在容器环境下实施的,实现环境隔离,先起一个容器
docker run -it -u root --ipc=host --net=host --name=ming-test --ipc=host --privileged=true \ # name参数代表新建容器的名字
-e ASCEND_VISIBLE_DEVICES=0-7 \ # 新建容器调用八卡
--device=/dev/davinci0 \
--device=/dev/davinci1 \
--device=/dev/davinci2 \
--device=/dev/davinci3 \
--device=/dev/davinci4 \
--device=/dev/davinci5 \
--device=/dev/davinci6 \
--device=/dev/davinci7 \
--device=/dev/davinci_manager \
--device=/dev/devmm_svm \
--device=/dev/hisi_hdc \
-v /etc/ascend_install.info:/etc/ascend_install.info \ # 必须挂载
-v /usr/local/Ascend/:/usr/local/Ascend/ \ # 挂载宿主机上CANN驱动和固件
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /usr/local/Ascend/add-ons/:/usr/local/Ascend/add-ons/ \
-v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \ # 挂载npu-smi命令
-v /usr/local/sbin/:/usr/local/sbin/ \
-v /home/:/home/ \ # 挂载模型数据文件
mindspeed_llm:rc4 \ # 基础镜像名字和版本
/bin/bash
- 进入容器后安装conda环境,敲conda指令,验证是否安装成功
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh
bash Miniconda3-latest-Linux-aarch64.sh -b -p /opt/conda
export PATH="/opt/conda/bin:$PATH"
- conda环境初始化
conda init #看下哪些文件是有change的,一般是/root/.bashrc
#如果直接init失败,/root/.bashrc change,则执行以下命令完成初始化
source /root/.bashrc
出现以下标识即初始化成功

- 仓库拉取
git clone https://gitee.com/ascend/MindSpeed-LLM.git
git clone https://github.com/NVIDIA/Megatron-LM.git
cd Megatron-LM
git checkout core_r0.8.0
cp -r megatron ../MindSpeed-LLM/
cd ..
cd MindSpeed-LLM
mkdir logs
mkdir dataset
mkdir ckpt
- 依赖安装
# python3.10
conda create -n test python=3.10
conda activate test
#torch 和 torch_npu
pip install torch==2.1.0
pip install torch-npu==2.1.0
#apex安装 https://gitee.com/ascend/apex
git clone -b master https://gitee.com/ascend/apex.git
cd apex/
bash scripts/build.sh --python=3.10
cd apex/dist/
pip3 uninstall apex
pip3 install --upgrade apex-0.1+ascend-{version}.whl # version为python版本和cpu架构
# 安装加速库
git clone https://gitee.com/ascend/MindSpeed.git
cd MindSpeed
# checkout commit from MindSpeed core_r0.8.0
git checkout 2c085cc9
pip install -r requirements.txt
pip install -e .
cd ../MindSpeed-LLM
# 安装其余依赖库
pip install -r requirements.txt
pip install transformers==4.51.0
模型部署流程
基于上述流程,已经完成所有的依赖和环境搭建。
单机运行
参考训练全流程处即可
多机运行
与单机运行类似,主要是留意以下内容
MASTER_ADDR=localhost #主节点IP
MASTER_PORT=6000 #主节点端口
NNODES=1 #机器数
NODE_RANK=0 #主节点为0,第二个为1,以此类推
需要在两台节点上分布执行脚本,并非真的集群具备自动调度能力
scp -r /xxx/xx root@IP:/xxx/xxx #可能用到的跨机文件复制



