安装与升级
安装MindCluster Ascend Deployer工具
离线安装
现场无连通外部网络的服务器,需要在PC上下载MindCluster Ascend Deployer工具。
PC上安装MindCluster Ascend Deployer工具的方式如下:
获取链接:MindCluster Ascend Deployer工具(建议下载最新版本工具zip包),下载后解压使用。
在线安装
现场能连通外部网络的情况下,可直接在服务器上下载MindCluster Ascend Deployer工具。当前支持以下2种安装方式。
安装前,请确保当前环境上Python版本大于等于3.6并已安装Pip3。
-
以root用户登录待安装MindCluster Ascend Deployer工具的服务器。
-
执行以下命令安装软件包。
pip3 install ascend-deployer=={version}{version}表示软件包的版本。建议下载最新版本。
-
执行以下命令完成初始化。初始化后自动生成ascend-deployer目录,路径为$HOME/ascend-deployer。
ascend-deployer -h
-
获取MindCluster Ascend Deployer工具(建议下载最新版本工具zip包)。
-
以root用户登录待安装MindCluster Ascend Deployer工具的服务器。
-
将zip包上传至待安装设备(Linux系统)$HOME目录。
-
解压zip包。示例如下:
unzip ascend-deployer-{version}.zip
下载昇腾软件
在Windows系统上下载
MindCluster Ascend Deployer工具支持在Windows系统上下载系统依赖、CANN软件包、NPU固件与驱动、AI框架、MindIE镜像以及MindCluster组件(性能测试,故障诊断,集群调度)。MindCluster Ascend Deployer工具支持下载的全部软件包请参见支持下载的软件包和OS中“支持下载的软件包”部分。
-
MindCluster Ascend Deployer工具在线下载仅提供昇腾社区版本的软件包,商用版本无法拉取。如需获取商用版本请在下载时仅选择下载OS依赖包,对应软件包请参考安装昇腾软件(自行准备软件包方式)自行上传。自行放置软件时,请勿放置相同软件的多个不同版本的软件包,如同时放置Ascend-cann-toolkit-8.2.RC1.zip和Ascend-cann-toolkit-8.3.RC1.zip。
-
下载软件时,请勿重复下载相同软件的多个不同版本。
-
下载软件包和依赖所需空间较多,请确保下载目录的可用空间至少为20G,下载过程中如遇空间不足的报错信息,请根据实际情况配置可用空间。
-
由于需要安装大量开源软件,MindCluster Ascend Deployer工具下载的开源软件均来自操作系统源,开源软件的漏洞和修复需要用户自行根据情况修复,建议使用官方源定期更新。
-
了解全部MindCluster Ascend Deployer工具下载须知请参见支持下载的软件包和OS中“下载注意事项”部分。
-
MTOS由于需使用到公网无法获取的kernel-devel包,下载功能仅为预埋,若需使用,请下载完成后替换为镜像解压后的kernel-devel-5.10.0-218.0.0.mt20240808.560.mt2203sp4.aarch64.rpm包。
-
MindCluster Ascend Deployer工具默认下载和安装的Python版本为3.7.5,本手册中均以环境上安装Python 3.7.5为例进行说明。
如果用户想选择其他Python版本(不建议更改默认配置),可以通过设置环境变量ASCEND_PYTHON_VERSION(如export ASCEND_PYTHON_VERSION=Python-3.7.0)或修改ascend-deployer-{version}/ascend_deployer/downloader/config.ini文件中的Python配置项的方式,指定要安装的Python版本(可选版本为3.7.0~3.7.11、3.8.0~3.8.11、3.9.0~3.9.9、3.10.0~3.10.12、3.11.4、3.12.10)。
已安装MindCluster Ascend Deployer工具。
-
Windows环境需安装Python3,推荐使用Python3.7版本以上。下载链接:Python3.7.5。(如果已安装,请忽略。)
请根据界面提示完成Python安装。注意安装时在“Advanced Options”界面勾选“Add Python to environment variables”,否则需手动添加环境变量。
-
进入解压后的ascend-deployer-{version}安装文件,进入ascend_deployer文件夹,双击运行start_download_ui.bat,进入“离线安装下载器”。
-
勾选待安装设备的OS和需要在线下载的软件包。
-
(可选)单击“启用代理”,填写代理信息。
在Windows10及以上版本操作系统上,用户可使用已配置的代理服务器进行软件下载。其他操作系统暂不支持此功能。
-
(可选)用户可通过在UI中点击“刷新下载列表”按钮,刷新可下载的软件包列表。
-
单击“开始下载”。
出现类似如下回显,表示下载完成。如图1所示。
-
然后将“ascend-deployer-{version}”整个目录压缩成zip包上传至执行机(用于部署MindCluster Ascend Deployer工具执行批量安装的服务器)任意目录。
-
在执行机上执行unzip ascend-deployer-{version}.zip命令解压获得“ascend-deployer-{version}”目录。
-
下载完成后,在~/.ascend_deployer/download_info下会生成下载结果文件failed_download_result_{pid}_{下载时间}.json。若下载失败,可在此查看下载失败的结果报告。
在Linux系统上下载
MindCluster Ascend Deployer工具支持在Linux系统上下载系统依赖、CANN软件包、NPU固件与驱动、AI框架、MindCluster组件(性能测试,故障诊断,集群调度)等。MindCluster Ascend Deployer工具支持下载的全部软件包请参见支持下载的软件包和OS中“支持下载的软件包”部分。
当前支持以下2种下载方式。
-
MindCluster Ascend Deployer工具在线下载仅提供昇腾社区版本的软件包,商用版本无法拉取。如需获取商用版本请在下载时仅选择下载OS依赖包,对应软件包请参考安装昇腾软件(自行准备软件包方式)自行上传。
-
下载软件包和依赖所需空间较多,请确保下载目录的可用空间至少为20G,下载过程中如遇空间不足的报错信息,请根据实际情况配置可用空间。
-
由于需要安装大量开源软件,MindCluster Ascend Deployer工具下载的开源软件均来自操作系统源,开源软件的漏洞和修复需要用户自行根据情况修复,建议使用官方源定期更新。
-
了解全部MindCluster Ascend Deployer工具下载须知请参见支持下载的软件包和OS中“下载注意事项”部分。
-
MTOS由于需使用到公网无法获取的kernel-devel包,下载功能仅为预埋,若需使用,请下载完成后替换为镜像解压后的kernel-devel-5.10.0-218.0.0.mt20240808.560.mt2203sp4.aarch64.rpm包。
-
Linux用户可通过如下命令,触发刷新可下载的软件包列表。
bash start_download.sh -h若使用Pip方式刷新,可使用如下命令。
ascend-download -h
- 已安装MindCluster Ascend Deployer工具。
- 执行下载操作的用户需具有MindCluster Ascend Deployer工具目录的可执行权限。
- 当前环境上存在Python3及Pip3。
使用Pip方式安装MindCluster Ascend Deployer时,执行命令如下:
ascend-download --os-list=<OS> --download=<PK1>,<PK2>==<Version>
关于以上参数的详细说明请参考表1或执行ascend-download --help查看。
执行以上命令时需确认$HOME目录不存在ascend-deployer目录,若存在需删除该目录后再执行。因为执行命令时会默认在$HOME目录下生成ascend-deployer目录,可通过设置环境变量ASCEND_DEPLOYER_HOME修改该目录所在路径。
当通过下载zip包解压使用MindCluster Ascend Deployer工具时,可执行此种下载方式。
进入MindCluster Ascend Deployer解压后的目录。示例如下。
cd $HOME/ascend-deployer-{version}/ascend_deployer
执行如下命令:
bash start_download.sh --os-list=<OS> --download=<PK1>,<PK2>==<Version>
参数说明具体请参考表1或执行bash start_download.sh --help查看。
表 1 参数说明
| 参数 | 说明 | 是否可选 |
|---|---|---|
| --os-list=<OS> | --os-list参数用于指定待安装设备的OS,请根据实际替换,可同时指定多个。示例如下:--os-list=Ubuntu_18.04_aarch64 查看MindCluster Ascend Deployer工具支持的全部OS,请查看支持的OS及架构。 [!NOTICE] 须知
|
必选 |
| --download=<PK1>,<PK2>==<Version> | 使用--download参数可以在线下载的全部软件包请参见支持下载的软件包。 如用户想指定下载的软件包版本,请联系华为技术支持获取版本配套表;若不指定软件包版本,则会下载最新可选版本的软件包。由于MindIE-image较大,下载时需要指定其版本及型号。示例如下: --download=NPU,CANN,Torch-npu,DL,FaultDiag 在以上示例中,各软件包包含的组件说明如下: NPU:npu(driver、firmware),mcu CANN:nnae,nnrt,toolkit,kernels,toolbox DL:ascend-device-plugin,ascend-docker-runtime,noded,npu-exporter,volcano,ascend-operator,resilience-controller,clusterd FaultDiag:faultDiag MindSpore:mindspore TensorFlow:tensorflow Torch-npu:torch-npu,torch MindIE-image:mindie-image |
可选 |
- 当使用下载方式一时,执行下载后,软件包会自动放置到“$HOME/ascend-deployer/resources”目录下。
- 当使用下载方式二时,执行下载后,软件包会自动放置到“$HOME/ascend-deployer-{version}/ascend_deployer/resources”目录下。
下载完成后,在~/.ascend_deployer/download_info下会生成下载结果文件failed_download_result_{pid}_{下载时间}.json。若下载失败,可在此查看下载失败的结果报告。
安装昇腾软件
远程连接服务器(可选)
MindCluster Ascend Deployer支持通过SSH密钥认证(免密登录)和SSH密码认证两种方式远程连接其他待安装服务器,推荐用户参考以下步骤进行SSH密钥认证。配置HCCN参数时必须配置免密登录。
SSH密码认证请根据所需安装的软件包,配置服务器安装部署参数(以下简称inventory_file)文件中的ansible_ssh_pass字段。
单机安装请跳过本步骤。
已完成软件包的下载。
-
-
在管理服务器(MindCluster Ascend Deployer执行机)上执行以下命令生成SSH Key。
为安全起见,请在执行以下命令前将当前umask值改为0077,执行完后再恢复原umask值。
(在远程登录时,建议在家目录下的.bashrc里修改umask值,并将操作命令放置在.bashrc的首行。然后执行:wq!命令保存文件并退出;执行source ~/.bashrc命令使其立即生效)。
ssh-keygen -t rsa -b 3072在提示“Enter file in which to save the key”时直接回车选择默认选项即可。为了安全起见,建议在提示“Enter passphrase”时输入密钥密码(符合密码复杂度要求)。
Note
以上为示例,请注意SSH密钥和密钥密码在使用和保管过程中的风险,特别是密钥未加密时的风险,用户应按照所在组织的安全策略进行相关配置,如口令复杂度要求、安全配置(协议、加密套件、密钥长度、是否允许使用ssh-keygen等)。
-
执行以下命令将管理服务器的公钥拷贝到其他待安装设备上。
ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@<ip>其中<user>替换为登录的账号,<ip>替换为待安装设备服务器的IP。后续在inventory_file文件中配置时,需与当前步骤配置的用户名和IP保持一致。
-
验证管理服务器是否可以正常登录其他待安装设备。
ssh <user>@<ip>其中<user>替换为登录的账号,<ip>替换为待安装设备服务器的IP。
-
退出登录。
exit
-
-
在管理服务器上,设置SSH代理管理SSH密钥,避免在MindCluster Ascend Deployer工具批量安装过程中输入密钥密码。设置SSH代理命令如下:
-
开启ssh-agent的bash进程。
ssh-agent bash -
向ssh-agent添加私钥。
ssh-add ~/.ssh/id_rsa执行如上命令会提示“Enter passphrase for /root/.ssh/id_rsa:”,此时需要输入步骤1中设置的密钥密码。
Note
后续批量安装过程结束后,请执行exit退出ssh-agent的bash进程,避免安全风险。
-
配置服务器安装部署参数
配置批量待安装场景
安装NPU驱动固件、CANN软件包、AI框架和MindCluster组件(性能测试,故障诊断,集群调度)、MindIE镜像和配置HCCN参数前需要参考以下操作完成配置。当前支持以下2种配置方式。
本章节主要指导批量安装的场景,单机安装可跳过。
-
登录MindCluster Ascend Deployer执行机。
-
在MindCluster Ascend Deployer执行机上配置待安装的其他设备的IP地址、用户名。
进入ascend-deployer/ascend_deployer目录(若使用Pip安装方式,则进入/root/ascend-deployer/inventory_file目录中),编辑inventory_file文件,在[worker]下面需注释或删除“localhost ansible_connection='local' ansible_ssh_user='root'”内容。按照表1,完成相关参数的配置,填写完成后执行:wq保存退出。
表 1 参数说明
参数 是否可选 说明 IP 必选 服务器的IP地址。 ansible_ssh_user 必选 SSH登录远程服务器的账号,需要为root账号。 ansible_ssh_pass 可选 SSH登录远程服务器账号的密码。
如果配置了SSH密钥认证方式且root用户可以登录,则无需配置。
npu_num 可选 设置NPU卡的数量,可核对识别到的NPU数量与规划NPU数量是否相符。 davinci 仅在安装MindIE时选填 表示映射到容器的davinci,可以挂载一个或者多个davinci。可以通过执行ll /dev/ | grep davinci查询设备上davinci的名称及个数。
如果不填写,则默认挂载设备上所有的davinci。
-
在[all:vars]配置字段下完成全局变量配置。
参数 是否可选 说明 WEIGHTS_PATH 可选
安装MindIE时必填。
服务器上模型权重所在的目录,节点上真实存在的文件路径。
示例如下:
[worker] xx.xxx.xx.xx1 ansible_ssh_user="root" ansible_ssh_pass="xxxxxxx" #请替换为实际待安装设备的IP xx.xxx.xx.xx2 ansible_ssh_user="root" ansible_ssh_pass="xxxxxxx" davinci=0,1,2,3 #请替换为实际待安装设备的IP [all:vars] WEIGHTS_PATH="/home/weights" #请替换为模型权重所在目录
Note
IP地址支持配置IPv4和IPv6两种类型,用户使用PuTTY等SSH客户端连接执行机的IP地址和inventory_file文件中配置的IP地址类型需要保持统一,均为IPv4或IPv6。
配置参数面网络
功能介绍
当进行分布式训练时,需要通过配置device的网卡IP,用于多个device间通信以实现网络模型参数的同步更新。
- 方式一:通过修改MindCluster Ascend Deployer工具提供的inventory_file,并执行脚本配置device的网卡IP。
- 方式二:使用昇腾软件中的HCCN Tool工具配置device的网卡IP。
- 方式三:通过Excel表格配置服务器安装或升级的部署参数。
Note
Atlas 300T 训练卡(型号 9000)、Atlas 800 训练服务器(型号 9000)(NPU半配)、Atlas 800 训练服务器(型号 9010)(NPU半配)不支持通过MindCluster Ascend Deployer工具配置参数面网络。
使用MindCluster Ascend Deployer配置
为实现后续分布式训练时各训练节点上模型的参数同步,需要为每台训练节点的NPU网口配置参数面网络。本章节仅提供批量配置训练节点NPU网口网络信息的方法。
对应的交换机配置和参数面网络介绍请参见《Ascend Training Solution 组网指南(Atlas A2训练产品)》中的“参数面网络配置示例”>“配置示例(选择对应的产品)”>“配置Leaf交换机”(可在Ascend Training Solution选择您使用的服务器类型相关文档进行查看)。
MindCluster Ascend Deployer执行机上已存在MindCluster Ascend Deployer执行下载操作后的resources/pylibs目录。
针对不同训练产品,NPU网口的IP网段配置策略有所不同。支持配置HCCN参数的硬件及配置策略如下表所示。
| 产品型号 | 配置策略说明 |
|---|---|
Atlas 800T A2 训练服务器 Atlas 900 A2 PoD 集群基础单元 |
|
Atlas 800 训练服务器(型号:9000) Atlas 800 训练服务器(型号:9010) Atlas 900 PoD(型号:9000) Atlas 900T PoD Lite |
|
Atlas 900 A3 SuperPoD 超节点 Atlas 800I A3 超节点服务器 |
|
-
进入ascend-deployer/ascend_deployer,修改inventory_file文件的hccn变量配置区域并保存。示例如下。
[hccn] xx.xx.xx.xx ansible_ssh_user="root" deviceip=xx.xx.xx.xx,xx.xx.xx.xx detectip=xx.xx.xx.xx,xx.xx.xx.xx //此处依次填写训练节点业务IP地址、远程登录用户账号、NPU网口IP地址,每台节点配置一行 xx.xx.xx.xx ansible_ssh_user="root" deviceip=xx.xx.xx.xx,xx.xx.xx.xx detectip=xx.xx.xx.xx,xx.xx.xx.xx [hccn:vars] gateways="xx.xx.xx.xx" netmask="255.255.255.0" roce_port=4791 bitmap="0,0,0,1,0,0,0,0" dscp_tc="xx:x," common_network=""
表 1 hccn变量配置参数说明
字段 是否可选 说明 IP 必选 ansible_ssh_user字段前的xx.xx.xx.xx需填写训练节点的业务IP地址,用于SSH远程登录。 ansible_ssh_user 必选 SSH远程训练节点的账号,需配置为“root”。 deviceip 必选 由用户自行规划,配置每个NPU网口IP,如一台训练节点的8个NPU网口填写示例如下(从NPU0至NPU7):
IPv4:
10.20.0.2,10.20.0.3,10.20.0.4,10.20.0.5,10.20.0.6,10.20.0.7,10.20.0.8,10.20.0.9(逗号必须为英文)。
IPv6:
2001:0db8:85a3::8a2e:0370:7330,2001:0db8:85a3::8a2e:0370:7331,2001:0db8:85a3::8a2e:0370:7332,2001:0db8:85a3::8a2e:0374:7333,2001:0db8:85a3::8a2e:0370:7334,2001:0db8:85a3::8a2e:0370:7335,2001:0db8:85a3::8a2e:0370:7336,2001:0db8:85a3::8a2e:0370:7337(逗号必须为英文)。
仅Atlas 800T A2 训练服务器、Atlas 900 A2 PoD 集群基础单元、Atlas 200T A2 Box16 异构子框支持IPv6;IPv4和IPv6不能混合使用。
detectip 必选 配置每个NPU网口的网络检测对象IP。该功能主要用于检测网络状态,可将检测对象IP配置为网段内的网关地址,训练节点会定时检测NPU网口和网关地址通信是否正常,如一台训练节点的8个NPU网口填写示例如下(从NPU0至NPU7):
IPv4:
10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1(逗号必须为英文)。
IPv6:
2001:0db8:85a3::8a2e:0370:7330,2001:0db8:85a3::8a2e:0370:7331,2001:0db8:85a3::8a2e:0370:7332,2001:0db8:85a3::8a2e:0374:7333,2001:0db8:85a3::8a2e:0370:7334,2001:0db8:85a3::8a2e:0370:7335,2001:0db8:85a3::8a2e:0370:7336,2001:0db8:85a3::8a2e:0370:7337(逗号必须为英文)。
仅Atlas 800T A2 训练服务器、Atlas 900 A2 PoD 集群基础单元、Atlas 200T A2 Box16 异构子框支持IPv6;IPv4和IPv6不能混合使用。
gateways 必选 配置网关,因需要网关转发报文,配置时要保证网关真实可用。
配置示例:
IPv4:10.20.0.1。
IPv6:2001:0db8:85a3::8a2e:0370:1。
如果NPU网口组网内存在多个网关地址,需要填写多个,如:
IPv4:10.20.0.1,10.20.1.1(逗号必须为英文)。
IPv6:2001:0db8:85a3::8a2e:0370:1,2001:0db8:85a3::8a2e:0371:1(逗号必须为英文)。
netmask 必选 子网掩码,如IPv4:255.255.255.0;IPv6:64。子网掩码只支持填写一个,所有训练节点的NPU网口IP的子网掩码需保持一致。 roce_port - 预留端口,无需修改配置。 bitmap 可选 PFC优先级队列启动配置。NPU参数面网口默认开启优先级队列4的PFC,建议现场交换机PFC配置策略和NPU网口保持一致。
如果现场保留NPU参数面网口默认配置(优先级队列4),则填写空值。
如果现场交换机PFC配置为其他值且不能修改,则NPU网口需要做对应的配置,组网内所有训练服务器的NPU网口的PFC策略需保持一致。
“bitmap”参数的字符串的每个bit位对应一个优先级队列,共有8个优先级队列,对应位为1表示开启PFC,0表示不开启,从左到右,第一个bit代表优先级队列0的配置,依次类推。如填写0,0,0,1,0,0,0,0表示开启NPU网口优先级队列3的PFC功能。
如果需要了解PFC的配置原理请参见《Ascend Training Solution 组网指南(Atlas A2训练产品)》中的“参数面网络配置示例”>“网络配置说明”>“拥塞控制与纠错配置策略”(可在Ascend Training Solution选择您使用的服务器类型相关文档进行查看)。
dscp_tc 可选 指定DSCP与TC的映射属性,填写格式:DSCP值:TC值,
注意TC值后面需加一个英文逗号。
当前NPU参数面网口默认将DSCP 33映射到优先级队列4(对应TC2),建议现场交换机映射关系配置策略和NPU网口保持一致。
如果现场保留NPU参数面网口默认配置(DSCP 33映射TC2),则填写空值。
如果现场交换机映射关系为其他值且不能修改,则NPU网口需要做对应的配置。
优先级队列和TC对应关系如下:
- 优先级队列0/1/2对应TC3
- 优先级队列3/4对应TC2
- 优先级队列5对应TC1
- 优先级队列6/7对应TC0
由于是统一配置,因此组网内所有训练服务器的NPU网口的PFC策略需保持一致。
如果需要了解DSCP和TC的配置原理请参见《Ascend Training Solution 组网指南(Atlas A2训练产品)》中的“参数面网络配置示例”>“网络配置说明”>“拥塞控制与纠错配置策略”(可在Ascend Training Solution选择您使用的服务器类型相关文档进行查看)。
common_network - 当产品为Atlas 800T A2 训练服务器、Atlas 900 A2 PoD 集群基础单元、Atlas 200T A2 Box16 异构子框时:保留空值或填写"0.0.0.0/0"。
当产品为Atlas 800 训练服务器(型号:9000)、Atlas 800 训练服务器(型号:9010)、Atlas 900 PoD(型号:9000)、Atlas 900T PoD Lite、Atlas A3 训练系列产品时:填写"0.0.0.0/0"。
Note
以下为配置参数中涉及的概念解释:
- PFC(Priority-based Flow Control):是以太网协议的一种基于优先级的流控机制,当某个端口的接收缓存出现拥塞时,会向对端发送反压报文,对端暂停发送对应优先级队列的报文。
- DSCP(Differentiated Services Code Point):IP报文头部用来划分服务类型和服务优先级的一个域,取值范围是0~63。
- 优先级队列:交换机和网卡内部实现的QoS队列,包含0~7的8个优先级队列。
- TC(Traffic Class):网络设备将报文区分为不同的服务类别,采用对应的调度策略。一般交换机将报文分成0~7的8个TC,与优先级队列一一对应。NPU参数面网口将报文分成0~3的4个TC。
-
当产品为Atlas 800T A2 训练服务器、Atlas 900 A2 PoD 集群基础单元时示例如下。
以下以2台训练节点(每台节点8个NPU网口IP同网段)接入两台交换机(每台交换机接两台节点),每台交换机使用一个网段(对应两个网关地址),PFC优先级队列为3,DSCP25映射到TC2为例展示配置示例:
-
IPv4:
[hccn] 192.168.10.2 ansible_ssh_user="root" deviceip=10.20.0.2,10.20.0.3,10.20.0.4,10.20.0.5,10.20.0.6,10.20.0.7,10.20.0.8,10.20.0.9 detectip=10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1 192.168.10.3 ansible_ssh_user="root" deviceip=10.20.0.10,10.20.0.11,10.20.0.12,10.20.0.13,10.20.0.14,10.20.0.15,10.20.0.16,10.20.0.17 detectip=10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1 [hccn:vars] gateways="10.20.0.1,10.20.1.1" netmask="255.255.255.0" roce_port=4791 bitmap="" dscp_tc="" common_network=""
-
IPv6:
[hccn] 3fff:0050:4400::222 ansible_ssh_user="root" deviceip=2001:0db8:85a3::8a2e:0370:7330,2001:0db8:85a3::8a2e:0370:7331,2001:0db8:85a3::8a2e:0370:7332,2001:0db8:85a3::8a2e:0374:7333,2001:0db8:85a3::8a2e:0370:7334,2001:0db8:85a3::8a2e:0370:7335,2001:0db8:85a3::8a2e:0370:7336,2001:0db8:85a3::8a2e:0370:7337 detectip=2001:0db8:85a3::8a2e:0370:7340,2001:0db8:85a3::8a2e:0370:7341,2001:0db8:85a3::8a2e:0370:7342,2001:0db8:85a3::8a2e:0374:7343,2001:0db8:85a3::8a2e:0370:7344,2001:0db8:85a3::8a2e:0370:7345,2001:0db8:85a3::8a2e:0370:7346,2001:0db8:85a3::8a2e:0370:7347 3fff:0050:4400::220 ansible_ssh_user="root" deviceip=2001:0db8:85a3::8a2e:0370:7340,2001:0db8:85a3::8a2e:0370:7341,2001:0db8:85a3::8a2e:0370:7342,2001:0db8:85a3::8a2e:0374:7343,2001:0db8:85a3::8a2e:0370:7344,2001:0db8:85a3::8a2e:0370:7345,2001:0db8:85a3::8a2e:0370:7346,2001:0db8:85a3::8a2e:0370:7347 detectip=2001:0db8:85a3::8a2e:0370:7330,2001:0db8:85a3::8a2e:0370:7331,2001:0db8:85a3::8a2e:0370:7332,2001:0db8:85a3::8a2e:0374:7333,2001:0db8:85a3::8a2e:0370:7334,2001:0db8:85a3::8a2e:0370:7335,2001:0db8:85a3::8a2e:0370:7336,2001:0db8:85a3::8a2e:0370:7337 [hccn:vars] gateways="2001:0db8:85a3::8a2e:0370:1" netmask="64" roce_port=4791 bitmap="" dscp_tc="" common_network="" [other_build_image] [all:vars] SCALE="false"
-
-
当产品为Atlas 900 A3 SuperPoD 超节点时示例如下。
IPv4:以下以2个计算节点,每个计算节点8个NPU模组对应16个Device为例。
[hccn] 192.168.10.2 ansible_ssh_user="root" deviceip=10.20.0.2,10.20.1.2,10.20.0.3,10.20.1.3,10.20.0.4,10.20.1.4,10.20.0.5,10.20.1.5,10.20.0.6,10.20.1.6,10.20.0.7,10.20.1.7,10.20.0.8,10.20.1.8,10.20.0.9,10.20.1.9 detectip=10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1 192.168.10.3 ansible_ssh_user="root" deviceip=10.20.0.10,10.20.1.10,10.20.0.11,10.20.1.11,10.20.0.12,10.20.1.12,10.20.0.13,10.20.1.13,10.20.0.14,10.20.1.14,10.20.0.15,10.20.1.15,10.20.0.16,10.20.1.16,10.20.0.17,10.20.1.17 detectip=10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1,10.20.0.1 [hccn:vars] gateways="10.20.0.1,10.20.1.1" netmask="255.255.255.0" roce_port=4791 bitmap="" dscp_tc="" common_network="0.0.0.0/0"
-
当产品为Atlas 800 训练服务器(型号:9000)、Atlas 800 训练服务器(型号:9010)、Atlas 900 PoD、Atlas 900T PoD Lite时示例如下。
以下以2台训练节点,每台节点NPU网口IP地址为4个网段(对应4个网关地址),PFC优先级队列为3,DSCP25映射到TC2为例展示配置示例:
[hccn] 192.168.10.2 ansible_ssh_user="root" deviceip=10.20.1.2,10.20.2.3,10.20.3.4,10.20.4.5,10.20.1.6,10.20.2.7,10.20.3.8,10.20.4.9 detectip=10.20.1.1,10.20.2.1,10.20.3.1,10.20.4.1,10.20.1.1,10.20.2.1,10.20.3.1,10.20.4.1 192.168.10.3 ansible_ssh_user="root" deviceip=10.20.1.10,10.20.2.11,10.20.3.12,10.20.4.13,10.20.1.14,10.20.2.15,10.20.3.16,10.20.4.17 detectip=10.20.1.1,10.20.2.1,10.20.3.1,10.20.4.1,10.20.1.1,10.20.2.1,10.20.3.1,10.20.4.1 [hccn:vars] gateways="10.20.1.1,10.20.2.1,10.20.3.1,10.20.4.1" netmask="255.255.255.0" roce_port=4791 bitmap="" dscp_tc="" common_network="0.0.0.0/0"
-
执行脚本对inventory_file进行检测。
-
方式一:执行ascend-deployer.py文件,进行检测。
ascend-deployer --hccn --check -
方式二:通过bash执行检测命令。
bash install.sh --hccn --check
-
-
执行脚本完成配置。执行脚本时会默认在当前环境上安装ansible,若已安装ansible,则会跳过安装。
-
方式一:执行ascend-deployer.py文件,调用hccn参数。
ascend-deployer --hccn -
方式二:执行hccn脚本。
bash install.sh --hccn
-
-
(可选)如需查询RoCE网卡的IP、网关,配置网络检测对象IP和查询LLDP信息,请参见《Atlas A2 中心推理和训练硬件 26.0.RC1 HCCN Tool 接口参考》的“信息查询”>“获取hccn_tool帮助提示信息”章节。
使用HCCN Tool工具配置
当进行分布式训练时,需要通过昇腾软件中的HCCN Tool工具配置device的网卡IP,用于多个device间通信以实现网络模型参数的同步更新。如果用户需要使用HCCN Tool工具的其他功能(如检查网口Link状态),请参见《Atlas 中心训练服务器 26.0.RC1 HCCN Tool 接口参考》中“信息查询”>"查询网口link状态"或《Atlas A2 中心推理和训练硬件 26.0.RC1 HCCN Tool 接口参考》中“信息查询”>"查询网口link状态"。
Atlas 800 训练服务器、Atlas 900 PoD(型号 9000)、Atlas 300T 训练卡
Atlas 800 训练服务器(型号 9000)、Atlas 800 训练服务器(型号 9010)、Atlas 900 PoD(型号 9000)、Atlas 300T 训练卡(型号 9000)、Atlas 300T Pro 训练卡(型号 9000)请参考《Ascend Training Solution 组网指南》中“参数面网络介绍>中大规模集群组网/小规模组网>参数面网络配置示例”章节中“配置训练节点”通过HCCN Tool配置NPU网口的device IP。
Atlas 800T A2 训练服务器、Atlas 900 A2 PoD 集群基础单元、Atlas 200T A2 Box16 异构子框请参考《Ascend Training Solution 组网指南(Atlas A2训练产品)》中的“参数面网络配置示例”>“配置示例(选择对应的产品)”>“配置训练节点”,通过HCCN Tool配置NPU网口的device IP。
Atlas 900 A3 SuperPoD 超节点请参考《Ascend Training Solution 组网指南(Atlas A3训练产品)》中的“ROCE网口网络配置 > 配置示例(选择对应的示例类型)> 配置训练节点”,通过HCCN_Tool配置NPU网口的device IP。
安装MindCluster集群调度前配置
批量安装MindCluster集群调度前需要参考以下操作完成配置。
当Kubernetes集群规模比较大的时候,可进行分批部署。分批部署时,除按照本章节进行inventory_file配置外,第二批及以后场景需将SCALE参数设置为true,并将第一批已部署完成的worker节点信息删除或注释。
- 集群已完成Kubernetes的安装部署,且使用kubectl get pod -A -owide命令查询Pod(容器组)状态为Running正常。
- 使用MindCluster Ascend Deployer安装MindCluster集群调度时,建议选择worker节点作为执行机。
- 安装MindCluster集群调度单个组件时,优先安装Ascend Docker Runtime、Volcano。
- 如需使用MindCluster集群调度,请参见《MindCluster 集群调度用户指南》的“特性指南 > 调度特性指南”章节。
- 已完成参数面网络配置。执行集群训练前,训练节点须进行hccn_tool网络配置,参考步骤1仅修改配置hccn变量区域。
- 请确保集群所有服务器已配置DNS,所有待安装设备的DNS建议保持一致。若未配置DNS,请参考配置DNS完成DNS的配置。
-
登录MindCluster Ascend Deployer执行机。
-
在MindCluster Ascend Deployer执行机上配置待安装设备的IP地址、用户名。
进入ascend-deployer/ascend_deployer目录,编辑inventory_file文件,添加完成后执行:wq保存退出。
-
按照表1,完成master、worker、other_build_image(可选)、npu_node(可选)的变量配置。
Note
- 如果K8s集群中存在与master节点架构不一致的服务器,并且该节点(或多个异构节点)会部署MindCluster集群调度时,需在inventory_file文件中配置other_build_image。详细配置方法请参见配置other_build_image。
- 在向K8s集群应用MindCluster集群调度配置时,需要关注集群中不同的NPU硬件形态,提供不同硬件的特征服务器信息。通过设置npu_node配置不同硬件的特征服务器信息,每种硬件各填写任意一个特征服务器的信息。若不配置npu_node,则默认为inventory_file中worker下面配置的首节点的NPU硬件类型。npu_node需在worker组,可仅填写IP。worker组的参数会根据IP对应覆盖npu_node参数。
- 当一台服务器既为master节点也作为worker节点时,需要在master和worker节点下均填写该服务器信息。其他服务器按照所属节点角色填写至对应组中。
表 1 参数说明
参数 是否可选 说明 IP 必选 服务器的IP地址,支持动态输入多个IP地址。参数说明如下: - index:服务器在IP段中的序号,Int类型,默认为1,如1.1.1.1-1.1.1.3 set_hostname="master-{index}",那1.1.1.1对应的set_hostname=master-1。
- step_len:IP跳位步长,末尾IP若不在步长内也会保留。如设置1.1.1.1-1.1.1.6 step_len=2,则输出1.1.1.1,1.1.1.3,1.1.1.5,1.1.1.6。
- 在批量输入的配置{}中,支持解析参数,包含数据运算、转型等,解析后输出字符串类型。如1.1.1.1-1.1.1.3 set_hostname="master-{str(index+20)+'x'}",则解析后的主机信息为1.1.1.1 set_hostname="master-21x" ...。
- IP段输入参数暂仅支持python3。
- 当为IPv6时,不支持将IP作为动态参数填入。
ansible_ssh_user 必选 SSH登录远程服务器的账号,需要为root账号。 ansible_ssh_pass 可选 SSH登录远程服务器账号的密码。 如果配置了SSH密钥认证方式且root用户可以登录,则无需配置。
ansible_ssh_port 可选 SSH连接的端口。
使用默认值22端口时无需配置。
如果使用了非默认的其他端口,则需要配置。
set_hostname 可选。 多master或多worker节点时必选,单节点时可选。
设置节点在K8s集群中的节点名,建议用“master-1”或“worker-1”的格式,按照顺序填充。
如果已有K8s集群,则该名字需要为节点在K8s中的名字,必须配置为小写,不可随意填写。
若set_hostname与K8s节点名称一致时可不填写;如不一致则需要填写set_hostname。
npu_num 可选 设置NPU卡的数量。 Note
- 配置master节点的主机为K8s的默认控制节点。
- master个数必须为奇数。
-
在[all:vars]配置字段下完成全局变量配置。
表 2 参数说明
参数 是否可选 说明 SCALE 可选 用于决定是否进行分批部署的可选参数。
默认值为false。
当K8s集群规模比较大的时候,可进行分批部署。第二批及之后场景需设置此参数值为true。
分批部署时,整个集群的MindCluster集群调度组件的版本要求保持一致。
RUNNER_IP 可选 可配置为MindCluster Ascend Deployer执行机的IP地址,请注意该IP需与其他待安装设备互通。建议在执行机含有多网段多个本机IP时配置该字段。 示例如下:
[master] xx.xxx.xx.x1 ansible_ssh_user="root" ansible_ssh_pass="xxxxxxx" set_hostname="master-1" #请替换为实际待安装设备的IP [worker] xx.xxx.xx.x1-xx.xxx.xx.x3 ansible_ssh_user="root" ansible_ssh_pass="xxxxxxx" xx.xxx.xx.x5-xx.xxx.xx.x9 ansible_ssh_user="root" ansible_ssh_pass="xxxxxxx" set_hostname="worker-{ip}-{index}" step_len=2 [npu_node] xx.xxx.xx.x3 ansible_ssh_user="root" ansible_ssh_pass="xxxxxxx" set_hostname="worker-1" #npu_node用于设置不同硬件的特征服务器信息,每种硬件各填写任意一个特征服务器的信息 xx.xxx.xx.x4 ansible_ssh_user="root" ansible_ssh_pass="xxxxxxx" set_hostname="worker-2"
Note
Atlas A2 训练系列产品上,IP地址支持配置IPv4和IPv6两种类型,用户使用PuTTY等SSH客户端连接执行机的IP地址和inventory_file文件中配置的IP地址类型需要保持统一,均为IPv4或IPv6。其他设备仅支持配置为IPv4地址。
-
部署DeepSeek PD实例时配置
- 已安装完成MindCluster集群调度的ascend-docker-runtime、volcano、ascend-device-plugin、ascend-operator、clusterd、noded组件,且各个组件状态为Running正常。
- 已完成DeepSeek模型权重文件的准备。
- 已完成参数面网络配置。
- 已在master节点上使用ascend-deployer安装3.9及以上版本的Python。
Note
MindCluster Ascend Deployer工具目前仅支持拉起经典配置的DeepSeek PD实例。
[master] xx.xxx.xx.x1 ansible_ssh_user="root" ansible_ssh_pass="xxxxxxx" set_hostname="master-1" #请替换为实际待安装设备的IP [worker] xx.xxx.xx.x1-xx.xxx.xx.x3 ansible_ssh_user="root" ansible_ssh_pass="xxxxxxx" xx.xxx.xx.x5-xx.xxx.xx.x9 ansible_ssh_user="root" ansible_ssh_pass="xxxxxxx" [all:vars] # 部署DeepSeek PD时配置 weight_mount_path="" model_weight_path="" mindie_image_name="" mindie_image_file="" expert_map_file="" model_name="ds_r1" job_id="mindie-service" p_instances_num=2 d_instances_num=1 single_p_instance_pod_num=2 single_d_instance_pod_num=4 max_seq_len=18000 mindie_host_log_path=""
表 1 [master]、[worker]参数说明
| 参数 | 是否可选 | 说明 |
|---|---|---|
| IP | 必选 | 服务器的IP地址,支持动态输入多个IP地址。参数说明如下:
|
| ansible_ssh_user | 必选 | SSH登录远程服务器的账号,需要为root账号。 |
| ansible_ssh_pass | 可选 | SSH登录远程服务器账号的密码。 如果配置了SSH密钥认证方式且root用户可以登录,则无需配置。 |
| ansible_ssh_port | 可选 | SSH连接的端口。 使用默认值22端口时无需配置。 如果使用了非默认的其他端口,则需要配置。 |
表 2 [all:vars]参数说明
| 参数 | 是否可选 | 说明 |
|---|---|---|
| weight_mount_path | 必选 | 宿主机挂载目录,将目录挂载至容器。 如:/mnt/mindie_data/ |
| model_weight_path | 必选 | 指定容器内访问权重的路径。 如:/mnt/mindie_data/deepseek_diff_level/deepseek_r1_w8a8 |
| mindie_image_name | 可选 | 镜像名称(适配已经装载好MindIE镜像)。 如:mindie:dev-2.0.RC1.B091-800I-A2-py311-ubuntu22.04-aarch64 |
| mindie_image_file | 可选 | 共享存储镜像文件地址(适配未装载MindIE镜像)。 如:/mnt/weight/image/mindie_image*.tar.gz |
| expert_map_file | 可选 | 专家部署表路径,需要确保部署表所在的路径后续可在容器中被加载。如:/mnt/weight/16node_gsm8k.json |
| model_name | 可选 | 模型名称,请求接口时需指定该名称。 |
| job_id | 必选 | 填写Kubernetes中的Namespace。 |
| p_instances_num | 必选 | P实例个数。 |
| d_instances_num | 必选 | D实例个数。 |
| single_p_instance_pod_num | 必选 | 单个P实例占用pod个数。 |
| single_d_instance_pod_num | 必选 | 单个D实例占用pod个数。 |
| max_seq_len | 必选 | 最大序列长度,数值要求大于0。仅支持选择以下其中一种取值:
|
| mindie_host_log_path | 可选 | MindIE日志存储路径,如果CCAE需要配套使用,请填写非root目录。 |
Note
- 若集群中存在MindIE镜像,请填写mindie_image_name;若每个节点中存在MindIE镜像文件,请填写mindie_image_file。两个参数中选一个填写即可,若都填写,则优先使用mindie_image_name;若两个参数都未填写,MindCluster Ascend Deployer将尝试从ascend_deployer/resources/MindIE-image目录下查找镜像文件。
- 填写mindie_image_name和mindie_image_file参数时,请确保集群环境中都存在对应的MindIE镜像或镜像文件。
- 使用mindie_image_name时,只需填写master节点,worker节点可不填写。未使用mindie_image_name时,请填写待部署的所有worker节点。
Docker场景部署DeepSeek
- 已完成DeepSeek模型权重文件的准备。
- 已完成Docker组件安装且Docker状态正常,Docker组件需为24.0.0及以上版本。
- 已完成参数面网络配置。
- 暂仅支持Atlas 800I A2 推理服务器(64GB HCCS款)单机和双机场景、Atlas 800I A3 超节点服务器的单机场景下使用。
- 执行部署DeepSeek前,待部署节点须进行hccn_tool网络配置,参考步骤1仅修改配置HCCN变量区域。
配置参数填写示例如下,单机填写一台worker信息;双机填写两台worker信息,同时指定mindie_master。参数说明请参见表1、表2。
[worker] xx.xx.xx.77 ansible_ssh_user="******" ansible_ssh_pass="******" xx.xx.xx.87 ansible_ssh_user="******" ansible_ssh_pass="******." [all:vars] mindie_master="xx.xx.xx.77" weight_mount_path="/home/" # 权重挂载目录,用于后续挂载到PD实例的容器,请确保权重在该目录下 model_weight_path="/home/whr/safetensor/" # 权重文件路径 cntr_mnt_path="/home/" mindie_image_name="" mindie_image_file=""
表 1 [worker]参数说明
| 参数 | 是否可选 | 说明 |
|---|---|---|
| IP | 必选 | 服务器的IP地址,支持动态输入多个IP地址。参数说明如下:
|
| ansible_ssh_user | 必选 | SSH登录远程服务器的账号,需要为root账号。 |
| ansible_ssh_pass | 可选 | SSH登录远程服务器账号的密码。 如果配置了SSH密钥认证方式且root用户可以登录,则无需配置。 |
| ansible_ssh_port | 可选 | SSH连接的端口。 使用默认值22端口时无需配置。 如果使用了非默认的其他端口,则需要配置。 |
表 2 [all:vars]参数说明
| 参数 | 是否可选 | 说明 |
|---|---|---|
| weight_mount_path | 必选 | 宿主机挂载目录,将目录挂载至容器。 如:/mnt/mindie_data/ |
| model_weight_path | 必选 | 指定容器内访问权重的路径。 如:/mnt/mindie_data/deepseek_diff_level/deepseek_r1_w8a8 |
| mindie_image_name | 可选 | 镜像名称(适配已装载好MindIE镜像)。 如:mindie:dev-2.0.RC1.B091-800I-A2-py311-ubuntu22.04-aarch64 |
| mindie_image_file | 可选 | 共享存储镜像文件地址(适配未装载MindIE镜像)。 如:/mnt/weight/image/mindie_image*.tar.gz |
| cntr_mnt_path | 必选 | 创建容器时,容器内挂载目录。 |
| mindie_master | 可选 双机场景时必选。 |
双节点时,用于指定MindIE的master节点IP。 |
Note
- 若集群中存在MindIE镜像,请填写mindie_image_name;若每个节点中存在MindIE镜像文件,请填写mindie_image_file。两个参数中选一个填写即可,若都填写,则优先使用mindie_image_name;若两个参数都未填写,MindCluster Ascend Deployer将尝试从ascend_deployer/resources/MindIE-image目录下查找镜像文件。
- 填写mindie_image_name和mindie_image_file参数时,请确保集群环境中都存在对应的MindIE镜像或镜像文件。
执行安装命令
- 使用MindCluster Ascend Deployer工具安装前,请确保MindCluster Ascend Deployer执行机的硬盘存储空间在16G以上。
- 部分组件存在运行时依赖,如PyTorch需要toolkit或nnae提供运行时依赖;在Atlas A2 训练系列产品中,PyTorch需要安装kernels;TensorFlow调用NPU资源需要toolkit或nnae提供运行时依赖;MindSpore安装需要nnae或toolkit,以及kernels软件包提供运行时依赖。
- 若环境中已安装了ansible,需确保其版本大于等于默认版本。默认版本信息可以在downloader/ansible_reqs.json文件中查看。
- 已完成软件包的下载。
- 安装用户为root用户,且具有install.sh的可执行权限。
- 在待安装环境上准备运行用户。MindCluster Ascend Deployer在执行安装命令时会自动创建默认运行用户HwHiAiUser,如用户需自行创建可参考手动创建运行用户。
-
以软件包的安装用户登录待安装设备。
-
执行安装命令。
-
使用Pip方式安装MindCluster Ascend Deployer时,在本机任意路径使用ascend-deployer命令进行安装。
ascend-deployer --install=<package_name_1>,<package_name_2> -
通过下载zip包解压使用MindCluster Ascend Deployer工具时,需进入ascend_deployer目录,使用bash install.sh命令安装。
bash install.sh --install=<package_name_1>,<package_name_2>
命令示例如表1所示。
<package_name_x>可选范围参见支持安装及升级场景或通过执行bash install.sh --help查看全部可用参数。
请按照“sys_pkg>python>npu>CANN、MindIE、MindCluster(性能测试,故障诊断,集群调度)>ubengine(可选)>deepseek_pd、deepseek_cntr”的顺序进行安装,安装时resources目录下的CANN包版本需和NPU配套。
Note
执行安装命令时MindCluster Ascend Deployer工具会默认检查环境是否满足安装的要求,若出现检查报错信息,请根据其信息评估是否使用--skip_check跳过检查继续安装。如示例所示。
bash install.sh --install=<package_name_1>,<package_name_2> --skip_check表 1 安装命令示例
安装类型 安装命令 系统环境初始化(安装sys_pkg) bash install.sh --install=sys_pkg #执行--install命令时,请勿重复安装sys_pkg。
系统环境初始化(安装python) bash install.sh --install=python
NPU固件与驱动(右侧命令任选其一执行) bash install.sh --install=npu
bash install.sh --install=driver,firmware
CANN软件(训练&推理&开发调试场景) bash install.sh --install=kernels,toolkit
CANN软件(边缘推理场景) bash install.sh --install=nnrt,kernels
CANN软件(训练&推理场景) bash install.sh --install=nnae,kernels
MindCluster集群调度 bash install.sh --install=ascend-device-plugin,ascend-docker-runtime,noded,npu-exporter,volcano,ascend-operator,clusterd,resilience-controller
MindCluster性能测试 bash install.sh --install=toolbox
MindCluster故障诊断 bash install.sh --install=fault-diag
MindIE推理引擎 bash install.sh --install=mindie_image
部署DeepSeek PD实例 bash install.sh --install=deepseek_pd
Docker场景部署DeepSeek bash install.sh --install=deepseek_cntr
MAMI包修复UB链路 bash install.sh --install=ubengine
Note
- 安装上述软件包的详细约束请参见表1。
- <package_name_x>的全部可选参数详见支持安装及升级的软件包。
-
-
(可选)涉及安装CANN和ToolBox时,用户需签署华为企业业务最终用户许可协议(EULA)后进入安装流程,根据回显页面执行y或Y确认协议,输入其他任意字符为拒绝协议,确认接受协议后自动开始安装。
若当前语言环境不满足要求,可以执行如下命令配置系统的默认语言环境。
-
配置为中文
export LANG=zh_CN.UTF-8 -
配置为英文
export LANG=en_US.UTF-8
-
-
(可选)涉及到安装驱动固件时,建议安装完成后立即重启。
单机安装时重启请执行reboot命令。批量安装则执行以下命令重启所有设备。
-
如果MindCluster Ascend Deployer工具是部署在某一台待安装设备上,需要先在“inventory_file”屏蔽本机IP地址,如下所示,否则执行4.b时可能还未发送重启命令到其他服务器,本机就已重启,导致其他服务器无法重启。如果MindCluster Ascend Deployer工具是部署在通用服务器可以跳过本步骤。
#本机IP address ansible_ssh_user="root" # 屏蔽本机IP
-
ansible -i inventory_file all -m shell -a 'reboot' -
其他待安装设备重启后,请在“inventory_file”中解除屏蔽的本机IP,然后执行reboot命令重启本机。
-
-
(可选)部署DeepSeek PD实例时,MindIE的部署脚本将存放在[master][0]节点的/root/.ascend_deployer/mindie_pd/kubernetes_deploy_scripts/路径中。
-
若重新拉起DeepSeek PD实例,需进入MindIE部署脚本存放路径后,执行以下命令。
# 使用Atlas 800I A2 推理产品时,对应命令如下 source /usr/local/ascendrc && python3 deploy_ac_job.py # 使用Atlas 800I A3 超节点服务器时,对应命令如下 source /usr/local/ascendrc && python3 deploy_ac_job.py --user_config_path user_config_base_A3.json -
查看DeepSeek PD实例的状态,执行以下命令。
kubectl get pod -A -owide | grep mindie # 将mindie替换成拉起服务时填写的job_id若pod状态显示为“Running”,即表示PD实例对应的pod节点已拉起,如下图所示。

-
执行如下命令进行一个问答测试,验证PD实例是否正常。
# 将master节点IP替换成实际的IP curl http://master节点IP:31015/v1/chat/completions -X POST -d'{"model": "ds_r1","messages": [{"role": "user","content": "You are a helpful assistant."}],"stream": false,"presence_penalty": 1.03,"frequency_penalty": 1.0,"repetition_penalty": 1.0,"temperature": 0.5,"top_p": 0.95,"top_k": 1,"seed": 1,"max_tokens": 500}'等待大约1分钟后,如能正常回答如下内容(每次回答的内容可能不同),表示实例状态正常。
{"id":"******","object":"chat.completion","created":1747295960,"model":"dsv3_w8a8","choices":[{"index":0,"message":{"role":"assistant","tool_calls":null,"content":"<think>\nOkay, the user wants me to act as a helpful assistant. Let me start by understanding what that entails. Being helpful means providing accurate, clear, and concise information. I need to make sure I address their queries effectively without unnecessary fluff.\n\nFirst, I should consider different types of questions they might ask—factual, how-to, troubleshooting, etc. For each type, my approach might vary. Factual questions require quick answers with reliable sources. How-to guides need step-by-step instructions. Troubleshooting might involve asking follow-up questions to diagnose issues.\n\nI also need to be cautious about potential misunderstandings. If a question is ambiguous or unclear, it's better to ask for clarification rather than assume. That way, I can provide the most relevant assistance possible.\n\nAnother aspect is maintaining a friendly and approachable tone. Even though the user hasn't specified this explicitly since they mentioned \"helpful,\" which usually implies a positive interaction style.\n\nAdditionally, I should stay updated on current information if needed but remember my knowledge cutoff is October 2023. So if there's a time-sensitive question post that date, I should inform them about the limitation.\n\nLastly, ensuring responses are well-structured. Using bullet points or numbered lists when appropriate can enhance readability. Avoiding technical jargon unless necessary, and explaining terms if used.\n</think>\n\nHello! I'm here to help you with any questions, tasks, or information you need—just let me know how I can assist you today! Whether it's explaining concepts solving problems, offering advice, or brainstorming ideas, feel free to ask. ... -
若需要删除DeepSeek PD实例,需进入MindIE部署脚本存放路径后,执行以下命令。
bash delete.sh mindie # 将mindie替换成拉起服务时填写的job_id
-
-
(可选)Docker场景部署DeepSeek时,MindIE Server的配置文件将存放在/usr/local/Ascend/mindie/latest/mindie-service/conf/config.json路径中。
-
启动mindieservice_daemon服务化,进入容器内,执行以下命令。
# source 下面对应的环境变量/usr/local/Ascend/mindie/latest/mindie-service/scripts/ # 确保source完所有环境变量后执行如下命令启动服务化,需绑核拉起,可使用lscpu查询第一个NUMA的核数,典配800IA2服务器的第一个NUMA核数为0-31: taskset -c 0-31 /usr/local/Ascend/mindie/latest/mindie-service/bin/mindieservice_daemon -
查看回显,出现“Daemon start success!”时表示服务拉起成功。

-
执行如下命令进行一个问答测试,验证推理服务是否正常。
Note
在双机场景下,请将命令中的127.0.0.1替换成MindIE master节点的IP地址。
curl 127.0.0.1:1025 -X POST -d '{"inputs":"You are a helpful assistant.","parameters":{"max_new_tokens":250, "temperature":0.3, "top_p":0.3, "top_k":5, "do_sample":true, "repetition_penalty":1.05, "seed":128}}'等待大约1分钟后,如能正常回答如下内容(每次回答的内容可能不同),表示服务状态正常。
{"id":"******","object":"chat.completion","created":1747295960,"model":"dsv3_w8a8","choices":[{"index":0,"message":{"role":"assistant","tool_calls":null,"content":"<think>\nOkay, the user wants me to act as a helpful assistant. Let me start by understanding what that entails. Being helpful means providing accurate, clear, and concise information. I need to make sure I address their queries effectively without unnecessary fluff.\n\nFirst, I should consider different types of questions they might ask—factual, how-to, troubleshooting, etc. For each type, my approach might vary. Factual questions require quick answers with reliable sources. How-to guides need step-by-step instructions. Troubleshooting might involve asking follow-up questions to diagnose issues.\n\nI also need to be cautious about potential misunderstandings. If a question is ambiguous or unclear, it's better to ask for clarification rather than assume. That way, I can provide the most relevant assistance possible.\n\nAnother aspect is maintaining a friendly and approachable tone. Even though the user hasn't specified this explicitly since they mentioned \"helpful,\" which usually implies a positive interaction style.\n\nAdditionally, I should stay updated on current information if needed but remember my knowledge cutoff is October 2023. So if there's a time-sensitive question post that date, I should inform them about the limitation.\n\nLastly, ensuring responses are well-structured. Using bullet points or numbered lists when appropriate can enhance readability. Avoiding technical jargon unless necessary, and explaining terms if used.\n</think>\n\nHello! I'm here to help you with any questions, tasks, or information you need—just let me know how I can assist you today! Whether it's explaining concepts solving problems, offering advice, or brainstorming ideas, feel free to ask. ... -
若需要停止mindieservice_daemon服务,执行以下命令。
pkill -9 -f "mindieservice_daemon" pkill -9 -f mindie_llm_back
-
安装完成后会在当前路径下生成report目录,包含安装报告report.csv和report.json文件。报告文件中以服务器为维度记录了服务器IP地址、状态等结果信息。
在~/.ascend_deployer/deploy_info下会生成安装进度信息文件deployer_progress_output.json,查看安装过程和状态信息。
检查安装结果
通过MindCluster Ascend Deployer工具安装完成后,可以通过执行如下操作检查各组件的版本及能否正常工作。
<target>可选范围可通过执行bash install.sh --help查看或参考install参数说明。
bash install.sh --test=<target>
检查已安装的全量组件及版本信息。
bash install.sh --test=all //测试已安装的全量组件及版本信息
回显信息如下所示。
task info:Generate the test report
[===================================================]
{'xx.xx.xx.xx': {'driver': ['OK', '26.0.RC1'], 'ubengine': ['not installed', ''], 'firmware': ['OK', '9.0.0.0.203'], 'mcu': {'npu_id_0': '24.15.30', 'npu_id_1': '24.15.30', 'npu_id_2': '24.15.30', 'npu_id_3': '24.15.30', 'npu_id_4': '24.15.30', 'npu_id_5': '24.15.30', 'npu_id_6': '24.15.30', 'npu_id_7': '24.15.30'}, 'toolbox': ['OK', '26.0.0'], 'mindspore': ['not installed', ''], 'pytorch': ['not installed', ''], 'tensorflow': ['not installed', ''], 'nnae': ['OK', '9.0.0'], 'nnrt': ['OK', '9.0.0'], 'toolkit': ['OK', '9.0.0'], 'fault-diag': ['OK', '26.0.0'], 'mindie_image': ['not installed', '']}}
localhost.localdomain: xx.xx.xx.xx: {'ascend-operator': ['OK', 'v26.0.0'], 'clusterd': ['OK', 'v26.0.0'], 'resilience-controller': ['not installed', ''], 'volcano': ['OK', 'v1.9.0'], 'ascend-device-plugin': ['OK', 'v26.0.0'], 'noded': ['not installed', ''], 'npu-exporter': ['not installed', ''], 'ascend-docker-runtime': ['not installed', '']}
npu-clusters
------------+--------------+------------------+--------------
npu | driver | firmware | ubengine
------------+--------------+------------------+----------------
xx.xx.xx.xx | OK, 26.0.RC1 | OK, 9.0.0.0.203 | not installed
------------+--------------+------------------+--------------
mcu-version
------------+----------+----------+----------+----------+----------+----------+----------+---------
ip | npu_id_0 | npu_id_1 | npu_id_2 | npu_id_3 | npu_id_4 | npu_id_5 | npu_id_6 | npu_id_7
------------+----------+----------+----------+----------+----------+----------+----------+---------
xx.xx.xx.xx | 24.15.30 | 24.15.30 | 24.15.30 | 24.15.30 | 24.15.30 | 24.15.30 | 24.15.30 | 24.15.30
------------+----------+----------+----------+----------+----------+----------+----------+---------
cann-clusters
------------+------------+------------+------------+-----------+--------------
cann | toolbox | nnae | nnrt | toolkit | mindie_image
------------+------------+------------+------------+-----------+--------------
xx.xx.xx.xx | OK, 26.0.0 | OK, 9.0.0 | OK, 9.0.0 | OK, 9.0.0 | not installed
------------+------------+------------+------------+-----------+--------------
pypkg-clusters
------------+---------------+---------------+---------------+------------
pypkg | mindspore | tensorflow | pytorch | fault-diag
------------+---------------+---------------+---------------+------------
xx.xx.xx.xx | not installed | not installed | not installed | OK, 26.0.0
------------+---------------+---------------+---------------+------------
dl-clusters(master-node)
-----------------------------------+-----------------+--------------+------------+----------------------
master-node | ascend-operator | clusterd | volcano | resilience-controller
-----------------------------------+-----------------+----------+------------+--------------------------
localhost.localdomain: xx.xx.xx.xx | OK, v26.0.0 | OK, v26.0.0 | OK, v1.9.0 | not installed
-----------------------------------+-----------------+--------------+------------+----------------------
dl-clusters(worker-node)
-----------------------------------+----------------------+---------------+--------------
worker-node | ascend-device-plugin | noded | npu-exporter
-----------------------------------+----------------------+---------------+--------------
localhost.localdomain: xx.xx.xx.xx | OK, v26.0.0 | not installed | not installed
-----------------------------------+----------------------+---------------+--------------
dl-clusters(worker-node-physical)
-----------------------------------+----------------------
worker-node | ascend-docker-runtime
-----------------------------------+----------------------
localhost.localdomain: xx.xx.xx.xx | not installed
-----------------------------------+----------------------
=> localhost
ascend deployer processed success
run cmd: --test=all successfully
检查NPU驱动与固件、UB互联、CANN、MindCluster故障诊断、MindCluster性能测试、MindIE容器
可执行如下命令查询已安装软件及版本信息。
bash install.sh --test=toolbox //测试toolbox是否正常
可执行如下命令查询已安装的AI框架信息。
bash install.sh --test=mindspore //测试已安装的mindspore及版本信息。
-
方式一:执行如下命令检查已安装的MindCluster集群调度组件及版本信息。示例如下。
bash install.sh --test=clusterd -
方式二:安装MindCluster集群调度后,可进入/ascend_deployer/report目录通过报告文件“report.json”或“report.csv”查看安装结果及节点状态。
可执行如下命令检查MindIE容器的版本信息。
bash install.sh --test=mindie_image
配置环境变量
当用户完成软件包的安装后,为保证软件的正常使用,需参考相关步骤完成环境变量的配置。
建议安装完成后,根据实际使用场景,自行取消root用户登录和免密登录。
在Linux系统中,如果用户是通过ssh-keygen生成密钥实现的免密登录,可以执行如下步骤取消免密登录。
-
进入~/ssh目录。
cd ~/.ssh -
删除对应的公钥文件。
rm authorized_keys
在使用Python3.7.5之前,需配置如下环境变量:
#用于设置Python3.7.5库文件路径
export LD_LIBRARY_PATH=/usr/local/python3.7.5/lib:$LD_LIBRARY_PATH
#如果用户环境存在多个Python3版本,则指定使用Python3.7.5版本
export PATH=/usr/local/python3.7.5/bin:$PATH
模型训练要求7.3.0版本及以上gcc(执行gcc --version命令查询),若低于7.3.0,用户可执行如下操作步骤,使用工具安装的7.3.0版本gcc。
-
以root用户登录服务器。
-
配置环境变量(以“/usr/local/gcc7.3.0”路径为例,请根据gcc7.3.0实际路径为准,实际安装路径可执行find / -name gcc7.3.0)。
export LD_LIBRARY_PATH=/usr/local/gcc7.3.0/lib64:${LD_LIBRARY_PATH} export CC=/usr/local/gcc7.3.0/bin/gcc export CXX=/usr/local/gcc7.3.0/bin/g++ export PATH=/usr/local/gcc7.3.0/bin:${PATH} -
执行gcc --version命令查看gcc版本,若返回如下版本信息,表示配置成功。
gcc (GCC) 7.3.0
[!NOTICE]
- 安装过程中会创建Docker用户组并启动Docker服务。安装完成后,用户可以卸载系统中可能存在安全风险的gcc、g++、JDK等第三方组件。
- 如果用户明确需要gcc7.3.0编译模型,且由于用户编译脚本等问题,无法通过环境变量控制gcc版本时,可执行如下操作,修改软链接。 修改软链接前,用户需执行find / -name gcc7.3.0是否存在gcc7.3.0文件夹,若没有该文件夹,表示工具没有安装7.3.0版本gcc,则请用户跳过如下操作步骤。
在服务器任意目录下执行如下示例命令(以“/usr/local/gcc7.3.0”路径为例),根据gcc7.3.0文件夹实际路径建立软链接。
ln -sf /usr/local/gcc7.3.0/bin/gcc /usr/bin/gcc执行gcc --version命令查看gcc版本,若返回如下版本信息,表示配置成功。
gcc (GCC) 7.3.0
toolkit等软件提供进程级环境变量设置脚本,供用户在进程中引用,以自动完成环境变量设置。用户进程结束后自动失效。示例如下(以root用户默认安装路径为例):
# 安装8.5.0之前版本的toolkit包时配置
. /usr/local/Ascend/ascend-toolkit/set_env.sh
# 安装8.5.0及之后版本的toolkit/nnrt/nnae包时配置
. /usr/local/Ascend/cann/set_env.sh
# 安装8.5.0之前版本的nnrt包时配置
. /usr/local/Ascend/nnrt/set_env.sh
# 安装8.5.0之前版本的nnae包时配置
. /usr/local/Ascend/nnae/set_env.sh
# 安装toolbox包时配置
. /usr/local/Ascend/toolbox/set_env.sh
用户也可以通过修改~/.bashrc文件方式设置永久环境变量,操作如下:
- 以运行用户在任意目录下执行vi ~/.bashrc命令,打开.bashrc文件,在文件最后一行后面添加上述内容。
- 执行:wq!命令保存文件并退出。
- 执行source ~/.bashrc命令使其立即生效。
当进行分布式训练时,需配置device的网卡IP,具体操作可参考配置参数面网络。
如果用户想批量配置device的网卡IP,可取用MindCluster Ascend Deployer工具提供的device IP配置脚本(ascend-deployer/ascend_deployer/tools/hccn.py),详情可参考使用HCCN Tool工具配置。
升级昇腾软件
MindCluster Ascend Deployer工具当前仅支持升级CANN软件包、NPU固件与驱动、MAMI包、MCU固件以及MindCluster组件(性能测试,故障诊断,集群调度),升级操作可以参考安装昇腾软件,获取所需版本的软件包后执行升级操作即可。
升级前准备
MindCluster Ascend Deployer工具当前支持单机升级软件包及批量升级软件包,当前支持升级以下软件:CANN软件包、NPU固件与驱动、MAMI包、MCU固件以及MindCluster组件(性能测试,故障诊断,集群调度)。
如果是单机升级,请跳过远程连接服务器与配置服务器升级参数章节。
使用MindCluster Ascend Deployer工具进行软件升级前,请确保已完成以下操作。
- 升级前需注意在ascend-deployer/ascend_deployer/resources/目录下,请确保只存在所需版本的软件包,否则可能出现版本不配套的情况。
- 升级MindCluster组件请在获取软件包后使用指定软件安装方式升级。
远程连接服务器(可选)
MindCluster Ascend Deployer支持通过SSH密钥认证(免密登录)和SSH密码认证两种方式远程连接其他待升级服务器,推荐用户参考以下步骤进行SSH密钥认证。配置HCCN参数时必须配置免密登录。
SSH密码认证请根据所需安装的软件包,配置服务器安装部署参数(以下简称inventory_file)文件中的ansible_ssh_pass字段。
单机升级请跳过本步骤。
已完成软件包的下载。
-
-
在管理服务器(MindCluster Ascend Deployer执行机)上执行以下命令生成SSH Key。
为安全起见,请在执行以下命令前将当前umask值改为0077,执行完后再恢复原umask值。
在远程登录时,建议在家目录下的.bashrc里修改umask值,并将操作命令放置在.bashrc的首行。然后执行:wq!命令保存文件并退出;执行source ~/.bashrc命令使其立即生效。
ssh-keygen -t rsa -b 3072在提示“Enter file in which to save the key”时直接回车选择默认选项即可。为了安全起见,建议在提示“Enter passphrase”时输入密钥密码(符合密码复杂度要求)。
Note
以上为示例,请注意SSH密钥和密钥密码在使用和保管过程中的风险,特别是密钥未加密时的风险,用户应按照所在组织的安全策略进行相关配置,如口令复杂度要求、安全配置(协议、加密套件、密钥长度、是否允许使用ssh-keygen等)。
-
执行以下命令将管理服务器的公钥拷贝到其他待升级设备上。
ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@<ip>其中<user>替换为登录的账号,<ip>替换为待升级设备服务器的IP。后续在inventory_file文件中配置时,需与当前步骤配置的用户名和IP保持一致。
-
验证管理服务器是否可以正常登录其他待升级设备。
ssh <user>@<ip>其中<user>替换为登录的账号,<ip>替换为待升级设备服务器的IP。
-
退出登录。
exit
-
-
在管理服务器上,设置SSH代理管理SSH密钥,避免在MindCluster Ascend Deployer工具批量升级过程中输入密钥密码。设置SSH代理命令如下:
-
开启ssh-agent的bash进程。
ssh-agent bash -
向ssh-agent添加私钥。
ssh-add ~/.ssh/id_rsa执行如上命令会提示“Enter passphrase for /root/.ssh/id_rsa:”,此时需要输入步骤1中设置的密钥密码。
Note
后续批量升级过程结束后,请执行exit退出ssh-agent的bash进程,避免安全风险。
-
配置服务器升级参数
配置批量待升级场景
批量升级NPU驱动固件、MAMI包、MCU固件、CANN软件包、MindCluster性能测试、MindCluster故障诊断、MindCluster集群调度、MindIE镜像和配置HCCN参数前需要参考以下操作完成配置。MindCluster Ascend Deployer工具支持升级的全部软件包请参见支持安装及升级的软件包。
当前支持以下2种配置方式。本章节主要指导批量升级的场景,单机升级可跳过。
-
登录MindCluster Ascend Deployer执行机。
-
在MindCluster Ascend Deployer执行机上配置待升级的其他设备的IP地址、用户名。
进入ascend-deployer/ascend_deployer目录,编辑inventory_file文件,在[worker]下面需注释或删除“localhost ansible_connection='local' ansible_ssh_user='root'”内容,按照表1,完成相关参数的配置,填写完成后执行:wq保存退出。
表 1 参数说明
参数 是否可选 说明 IP 必选 服务器的IP地址。 ansible_ssh_user 必选 SSH登录远程服务器的账号,需要为root账号。 ansible_ssh_pass 可选 SSH登录远程服务器账号的密码。
如果配置了SSH密钥认证方式且root用户可以登录,则无需配置。
npu_num 可选 设置NPU卡的数量,可核对识别到的NPU数量与规划NPU数量是否相符。 示例如下:
[worker] 10.125.45.171 ansible_ssh_user="root" ansible_ssh_pass="xxxxxx" #请替换为实际待升级设备的IP 10.125.45.172 ansible_ssh_user="root" ansible_ssh_pass="xxxxxx" #请替换为实际待升级设备的IP
Note
IP地址支持配置IPv4和IPv6两种类型,用户使用PuTTY等SSH客户端连接执行机的IP地址和inventory_file文件中配置的IP地址类型需要保持统一,均为IPv4或IPv6。
升级MindCluster集群调度前配置
批量升级MindCluster集群调度前需要参考以下操作完成配置。
当K8s集群规模比较大的时候,可进行分批部署。分批部署时,除按照本章节进行inventory_file配置外,第二批及以后场景需将SCALE参数设置为true。
MindCluster Ascend Deployer工具支持升级的全部软件包请参见支持安装及升级场景。
- 使用MindCluster Ascend Deployer升级MindCluster集群调度时,请同样使用MindCluster Ascend Deployer升级其软件依赖。
- 使用MindCluster Ascend Deployer升级MindCluster集群调度时,建议选择worker节点作为执行机。
- 升级MindCluster场景时,请确保系统中Docker容器、文件系统或根目录的磁盘空间,在已用空间基础上额外使用18G(MindCluster镜像和训练推理镜像预估值)后,剩余可用空间大于30%。
- 升级MindCluster时,不同操作系统节点间组建集群可能会导致升级失败。
- 已完成参数面网络配置。执行集群训练前,训练节点须进行hccn_tool网络配置,参考步骤1仅修改配置hccn变量区域。
- 请确保集群所有服务器已配置DNS,所有待升级设备的DNS建议保持一致。若未配置DNS,请参考配置DNS完成DNS的配置。
-
登录MindCluster Ascend Deployer执行机。
-
在MindCluster Ascend Deployer执行机上配置待升级设备的IP地址、用户名。
进入ascend-deployer/ascend_deployer目录,编辑inventory_file文件,添加完成后执行:wq保存退出。
-
按照表1要求完成master、worker、other_build_image(可选)、npu_node(可选)的变量配置。
Note
- 如果K8s集群中存在与master节点架构不一致的服务器,并且该节点(或多个异构节点)会部署MindCluster集群调度时,需在inventory_file文件中配置other_build_image。详细配置方法请参见配置other_build_image。
- 在向K8s集群应用MindCluster集群调度配置时,需要关注集群中不同的NPU硬件形态,通过设置npu_node配置不同硬件的特征服务器信息,每种硬件各填写任意一个特征服务器的信息。若不配置npu_node,则默认为inventory_file中worker下面配置的首节点的NPU硬件类型。npu_node需在worker组,可仅填写IP。worker组的参数会根据IP对应覆盖npu_node参数。
- 当一台服务器既为master节点也作为worker节点时,需要在master和worker节点下均填写该服务器信息。其他服务器按照所属节点角色填写至对应组中。
表 1 参数说明
参数 是否可选 说明 IP 必选 服务器的IP地址,支持动态输入多个IP地址。参数说明如下: - index:服务器在IP段中的序号,Int类型,默认为1,如1.1.1.1-1.1.1.3 set_hostname="master-{index}",那1.1.1.1对应的set_hostname=master-1。
- step_len:IP跳位步长,末尾IP若不在步长内也会保留。如设置1.1.1.1-1.1.1.6 step_len=2,则输出1.1.1.1,1.1.1.3,1.1.1.5,1.1.1.6。
- 在批量输入的配置{}中,支持解析参数,包含数据运算、转型等,解析后输出字符串类型。如1.1.1.1-1.1.1.3 set_hostname="master-{str(index+20)+'x'}",则解析后的主机信息为1.1.1.1 set_hostname="master-21x" ...。
- IP段输入参数暂仅支持python3。
- 当为IPv6时,不支持将IP作为动态参数填入。
ansible_ssh_user 必选 SSH登录远程服务器的账号,需要为root账号。 ansible_ssh_pass 可选 SSH登录远程服务器账号的密码。
如果配置了SSH密钥认证方式且root用户可以登录,则无需配置。
ansible_ssh_port 可选 SSH连接的端口。
使用默认值22端口时无需配置。
如果使用了非默认的其他端口,则需要配置。
set_hostname 可选。 设置节点在K8s集群中的节点名,建议用“master-1”或“worker-1”的格式,按照顺序填充。
如果已有K8s集群,则该名字需要为节点在K8s中的名字,必须配置为小写,不可随意填写。
若set_hostname与K8s节点名称一致时可不填写;如不一致则需要填写set_hostname。
Note
- 配置master节点的主机为K8s的默认控制节点。
- master个数必须为奇数。
-
在[all:vars]配置字段下完成全局变量配置。
表 2 参数说明
参数 是否可选 说明 SCALE 可选 用于决定是否进行分批部署的可选参数。
默认值为false。
当K8s集群规模比较大的时候,可进行分批部署。第二批及之后场景需设置此参数值为true。
分批部署时,整个集群的MindCluster集群调度组件的版本要求保持一致。
RUNNER_IP 可选 可配置为MindCluster Ascend Deployer执行机的IP地址,请注意该IP需与其他待升级设备互通。建议在执行机含有多网段多个本机IP时配置该字段。 示例如下:
[master] xx.xxx.xx.x1 ansible_ssh_user="root" ansible_ssh_pass="xxxxxxx" set_hostname="master-1" #请替换为实际待升级设备的IP [worker] xx.xxx.xx.x1-xx.xxx.xx.x3 ansible_ssh_user="root" ansible_ssh_pass="xxxxxxx" xx.xxx.xx.x5-xx.xxx.xx.x9 ansible_ssh_user="root" ansible_ssh_pass="xxxxxxx" set_hostname="worker-{ip}-{index}" step_len=2 [npu_node] xx.xxx.xx.x3 ansible_ssh_user="root" ansible_ssh_pass="xxxxxxx" set_hostname="worker-1" #npu_node用于设置不同硬件的特征服务器信息,每种硬件各填写任意一个特征服务器的信息 xx.xxx.xx.x4 ansible_ssh_user="root" ansible_ssh_pass="xxxxxxx" set_hostname="worker-2"
-
执行升级命令
使用MindCluster Ascend Deployer工具升级前,请确保MindCluster Ascend Deployer执行机的硬盘存储空间在16G以上。
- 已完成软件包的下载。
- 升级用户为root用户,且具有install.sh的可执行权限。
-
以软件包的升级用户登录待升级设备。
-
执行升级命令。
-
使用Pip方式安装MindCluster Ascend Deployer时,在本机任意路径使用ascend-deployer命令进行升级。
ascend-deployer --upgrade=<package_name_1>,<package_name_2> -
通过下载zip包解压使用MindCluster Ascend Deployer工具时,需进入ascend_deployer目录,使用bash install.sh命令升级。
bash install.sh --upgrade=<package_name_1>,<package_name_2>
命令示例如表1所示。
<package_name_x>可选范围参见支持安装及升级场景或通过执行bash install.sh --help查看全部可用参数。
请按照“NPU>CANN、MindCluster(性能测试,故障诊断,集群调度)>MCU>ubengine(可选)”的顺序进行升级,升级时resources目录下的CANN包版本需和NPU配套。
Note
执行升级命令时MindCluster Ascend Deployer工具会默认检查环境是否满足升级的要求,若出现检查报错信息,请根据其信息评估是否使用--skip_check跳过检查继续升级。如示例所示。
bash install.sh --upgrade=<package_name_1>,<package_name_2> --skip_check表 1 升级命令示例
安装类型 升级命令 NPU驱动和固件(右侧命令任选其一执行) bash install.sh --upgrade=npu
bash install.sh --upgrade=driver,firmware
MCU固件 bash install.sh --upgrade=mcu
CANN软件(训练&推理&开发调试场景) bash install.sh --upgrade=kernels,toolkit
CANN软件(边缘推理场景) bash install.sh --upgrade=nnrt,kernels
CANN软件(训练&推理场景) bash install.sh --upgrade=nnae,kernels
MindCluster集群调度 bash install.sh --upgrade=ascend-device-plugin,ascend-docker-runtime,noded,npu-exporter,volcano,ascend-operator,clusterd,resilience-controller
MindCluster性能测试 bash install.sh --upgrade=toolbox
MindCluster故障诊断 bash install.sh --upgrade=fault-diag
MAMI包修复UB链路 bash install.sh --upgrade=ubengine
Note
- 安装上述软件包的详细约束请参见表1。
- <package_name_x>的全部可选参数详见支持安装及升级的软件包。
-
-
(可选)涉及升级CANN和MindCluster性能测试时,用户需签署华为企业业务最终用户许可协议(EULA)后进入升级流程,根据回显页面执行y或Y确认协议,输入其他任意字符为拒绝协议,确认接受协议后自动开始升级。
若当前语言环境不满足要求,可以执行如下命令配置系统的默认语言环境。
-
配置为中文
export LANG=zh_CN.UTF-8 -
配置为英文
export LANG=en_US.UTF-8
-
-
(可选)涉及到升级驱动固件时,建议升级完成后立即重启。
单机升级时重启请执行reboot命令。批量升级则执行以下命令重启所有设备。
-
如果MindCluster Ascend Deployer工具是部署在某一台待升级设备上,需要先在“inventory_file”屏蔽本机IP地址,如下所示,否则执行4.b时可能还未发送重启命令到其他服务器,本机就已重启,导致其他服务器无法重启。如果MindCluster Ascend Deployer工具是部署在通用服务器可以跳过本步骤。
#本机IP address ansible_ssh_user="root" # 屏蔽本机IP
-
ansible -i inventory_file all -m shell -a 'reboot' -
其他待升级设备重启后,请在“inventory_file”中解除屏蔽的本机IP,然后执行reboot命令重启本机。
-
检查升级结果
通过MindCluster Ascend Deployer工具升级完成后,可以执行如下操作检查各组件的版本及能否正常工作。
<target>可选范围可通过执行bash install.sh --help查看或参考install参数说明。
bash install.sh --test=<target>
检查已安装的全量组件及版本信息。
bash install.sh --test=all //测试已安装的全量组件及版本信息。
回显信息如下所示。
task info:Generate the test report
[===================================================]
{'xx.xx.xx.xx': {'driver': ['OK', '26.0.RC1'], 'ubengine': ['not installed', ''], 'firmware': ['OK', '9.0.0.0.203'], 'mcu': {'npu_id_0': '24.15.30', 'npu_id_1': '24.15.30', 'npu_id_2': '24.15.30', 'npu_id_3': '24.15.30', 'npu_id_4': '24.15.30', 'npu_id_5': '24.15.30', 'npu_id_6': '24.15.30', 'npu_id_7': '24.15.30'}, 'toolbox': ['OK', '26.0.0'], 'mindspore': ['not installed', ''], 'pytorch': ['not installed', ''], 'tensorflow': ['not installed', ''], 'nnae': ['OK', '9.0.0'], 'nnrt': ['OK', '9.0.0'], 'toolkit': ['OK', '9.0.0'], 'fault-diag': ['OK', '26.0.0'], 'mindie_image': ['not installed', '']}}
localhost.localdomain: xx.xx.xx.xx: {'ascend-operator': ['OK', 'v26.0.0'], 'clusterd': ['OK', 'v26.0.0'], 'resilience-controller': ['not installed', ''], 'volcano': ['OK', 'v1.9.0'], 'ascend-device-plugin': ['OK', 'v26.0.0'], 'noded': ['not installed', ''], 'npu-exporter': ['not installed', ''], 'ascend-docker-runtime': ['not installed', '']}
npu-clusters
------------+--------------+------------------+--------------
npu | driver | firmware | ubengine
------------+--------------+------------------+----------------
xx.xx.xx.xx | OK, 26.0.RC1 | OK, 9.0.0.0.203 | not installed
------------+--------------+------------------+--------------
mcu-version
------------+----------+----------+----------+----------+----------+----------+----------+---------
ip | npu_id_0 | npu_id_1 | npu_id_2 | npu_id_3 | npu_id_4 | npu_id_5 | npu_id_6 | npu_id_7
------------+----------+----------+----------+----------+----------+----------+----------+---------
xx.xx.xx.xx | 24.15.30 | 24.15.30 | 24.15.30 | 24.15.30 | 24.15.30 | 24.15.30 | 24.15.30 | 24.15.30
------------+----------+----------+----------+----------+----------+----------+----------+---------
cann-clusters
------------+------------+------------+------------+-----------+--------------
cann | toolbox | nnae | nnrt | toolkit | mindie_image
------------+------------+------------+------------+-----------+--------------
xx.xx.xx.xx | OK, 26.0.0 | OK, 9.0.0 | OK, 9.0.0 | OK, 9.0.0 | not installed
------------+------------+------------+------------+-----------+--------------
pypkg-clusters
------------+---------------+---------------+---------------+------------
pypkg | mindspore | tensorflow | pytorch | fault-diag
------------+---------------+---------------+---------------+------------
xx.xx.xx.xx | not installed | not installed | not installed | OK, 26.0.0
------------+---------------+---------------+---------------+------------
dl-clusters(master-node)
-----------------------------------+-----------------+--------------+------------+----------------------
master-node | ascend-operator | clusterd | volcano | resilience-controller
-----------------------------------+-----------------+----------+------------+--------------------------
localhost.localdomain: xx.xx.xx.xx | OK, v26.0.0 | OK, v26.0.0 | OK, v1.9.0 | not installed
-----------------------------------+-----------------+--------------+------------+----------------------
dl-clusters(worker-node)
-----------------------------------+----------------------+---------------+--------------
worker-node | ascend-device-plugin | noded | npu-exporter
-----------------------------------+----------------------+---------------+--------------
localhost.localdomain: xx.xx.xx.xx | OK, v26.0.0 | not installed | not installed
-----------------------------------+----------------------+---------------+--------------
dl-clusters(worker-node-physical)
-----------------------------------+----------------------
worker-node | ascend-docker-runtime
-----------------------------------+----------------------
localhost.localdomain: xx.xx.xx.xx | not installed
-----------------------------------+----------------------
=> localhost
ascend deployer processed success
run cmd: --test=all successfully
检查NPU固件与驱动、UB互联、CANN软件、MindCluster组件(性能测试、故障诊断)
可执行如下命令查询已安装软件及版本信息。
bash install.sh --test=toolbox //测试toolbox是否正常
-
方式一:执行如下命令检查已安装的MindCluster集群调度及版本信息。示例如下。
bash install.sh --test=clusterd -
方式二:安装MindCluster集群调度后,可进入/ascend_deployer/report目录查看报告文件“report.json”或“report.csv”查看安装结果及节点状态。
可执行如下命令查询MCU固件信息。
bash install.sh --test=mcu
