安装与升级

安装MindCluster Ascend Deployer工具

离线安装

现场无连通外部网络的服务器,需要在PC上下载MindCluster Ascend Deployer工具。

PC上安装MindCluster Ascend Deployer工具的方式如下:

获取链接:MindCluster Ascend Deployer工具(建议下载最新版本工具zip包),下载后解压使用。

后续操作

下载软件

在线安装

现场能连通外部网络的情况下,可直接在服务器上下载MindCluster Ascend Deployer工具。当前支持以下2种安装方式。

在线安装(Pip)

安装前,请确保当前环境上Python版本大于等于3.6并已安装Pip3。

  1. root用户登录待安装MindCluster Ascend Deployer工具的服务器。

  2. 执行以下命令安装软件包。

    pip3 install ascend-deployer=={version}
    

    {version}表示软件包的版本。建议下载最新版本。

  3. 执行以下命令完成初始化。初始化后自动生成ascend-deployer目录,路径为$HOME/ascend-deployer。

    ascend-deployer -h
    

下载zip包解压使用

  1. 获取MindCluster Ascend Deployer工具(建议下载最新版本工具zip包)。

  2. root用户登录待安装MindCluster Ascend Deployer工具的服务器。

  3. 将zip包上传至待安装设备(Linux系统)$HOME目录。

  4. 解压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工具

下载软件包

  1. Windows环境需安装Python3,推荐使用Python3.7版本以上。下载链接:Python3.7.5。(如果已安装,请忽略。)

    请根据界面提示完成Python安装。注意安装时在“Advanced Options”界面勾选“Add Python to environment variables”,否则需手动添加环境变量。

  2. 进入解压后的ascend-deployer-{version}安装文件,进入ascend_deployer文件夹,双击运行start_download_ui.bat,进入“离线安装下载器”。

  3. 勾选待安装设备的OS和需要在线下载的软件包。

  4. (可选)单击“启用代理”,填写代理信息。

    在Windows10及以上版本操作系统上,用户可使用已配置的代理服务器进行软件下载。其他操作系统暂不支持此功能。

  5. (可选)用户可通过在UI中点击“刷新下载列表”按钮,刷新可下载的软件包列表。

  6. 单击“开始下载”。

    出现类似如下回显,表示下载完成。如图1所示。

    图 1 下载完成

  7. 然后将“ascend-deployer-{version}”整个目录压缩成zip包上传至执行机(用于部署MindCluster Ascend Deployer工具执行批量安装的服务器)任意目录。

  8. 在执行机上执行unzip ascend-deployer-{version}.zip命令解压获得“ascend-deployer-{version}”目录。

  9. 下载完成后,在~/.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
    

前提条件

下载方式一

使用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] 须知
  • 批量安装可能需要指定多个OS,其他情况下只需指定一个OS。
  • 下载OS依赖时,为了编译安装hccl-test工具,会自动下载MPI 3.2.1和Open MPI 4.1.5版本的软件包,安装时会根据已配置的待安装环境的IP类型,使用对应的依赖进行编译,IPv4格式时,安装MPI 3.2.1,IPv6格式时,安装Open MPI 4.1.5。
  • 进行批量部署,MindCluster Ascend Deployer工具所在服务器与待安装服务器的架构不相同时,--os-list参数须同时指定工具所在服务器的架构类型,保证当前架构存在nexus镜像。
必选
--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字段。

单机安装请跳过本步骤。

前提条件

已完成软件包的下载

配置SSH密钥认证

  1. 密钥认证设置。

    1. 在管理服务器(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等)。

    2. 执行以下命令将管理服务器的公钥拷贝到其他待安装设备上。

      ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@<ip>
      

      其中<user>替换为登录的账号,<ip>替换为待安装设备服务器的IP。后续在inventory_file文件中配置时,需与当前步骤配置的用户名和IP保持一致。

    3. 验证管理服务器是否可以正常登录其他待安装设备。

      ssh <user>@<ip>
      

      其中<user>替换为登录的账号,<ip>替换为待安装设备服务器的IP。

    4. 退出登录。

      exit
      
  2. 在管理服务器上,设置SSH代理管理SSH密钥,避免在MindCluster Ascend Deployer工具批量安装过程中输入密钥密码。设置SSH代理命令如下:

    1. 开启ssh-agent的bash进程。

      ssh-agent bash
      
    2. 向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种配置方式。

本章节主要指导批量安装的场景,单机安装可跳过。

编辑inventory_file文件

  1. 登录MindCluster Ascend Deployer执行机。

  2. 在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。

  3. 在[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间通信以实现网络模型参数的同步更新。

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 集群基础单元

  • 每台训练节点的8个NPU网口IP地址使用同一网段。
  • 如8个NPU网口统一使用10.20.0.x。

Atlas 800 训练服务器(型号:9000)

Atlas 800 训练服务器(型号:9010)

Atlas 900 PoD(型号:9000)

Atlas 900T PoD Lite

  • 每台训练节点上的8个NPU网口需要规划4个IP网段。
  • NPU0和NPU4为同一网段,同理NPU1和NPU5、NPU2和NPU6、NPU3和NPU7为同一网段。

Atlas 900 A3 SuperPoD 超节点

Atlas 800I A3 超节点服务器

  • 同一个NPU的2个chip需配置成不同网段的IP。
  • 当同一个NPU的2个chip配置成同网段IP时,会导致HCCN TOOL ping不通。
  • 配置IP时允许不同NPU配置为同一个IP,但此情况若连交换机,发送数据包会有异常。

操作步骤

  1. 进入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"
  2. 执行脚本对inventory_file进行检测。

    方式一:执行ascend-deployer.py文件,进行检测。

    ascend-deployer --hccn --check
    

    方式二:通过bash执行检测命令。

    bash install.sh --hccn --check
    
  3. 执行脚本完成配置。执行脚本时会默认在当前环境上安装ansible,若已安装ansible,则会跳过安装。

    • 方式一:执行ascend-deployer.py文件,调用hccn参数。

      ascend-deployer --hccn
      
    • 方式二:执行hccn脚本。

      bash install.sh --hccn
      
  4. (可选)如需查询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 A2 训练系列产品

Atlas 800T A2 训练服务器、Atlas 900 A2 PoD 集群基础单元、Atlas 200T A2 Box16 异构子框请参考《Ascend Training Solution 组网指南(Atlas A2训练产品)》中的“参数面网络配置示例”>“配置示例(选择对应的产品)”>“配置训练节点”,通过HCCN Tool配置NPU网口的device IP。

Atlas A3 训练系列产品

Atlas 900 A3 SuperPoD 超节点请参考《Ascend Training Solution 组网指南(Atlas A3训练产品)》中的“ROCE网口网络配置 > 配置示例(选择对应的示例类型)> 配置训练节点”,通过HCCN_Tool配置NPU网口的device IP。

安装MindCluster集群调度前配置

批量安装MindCluster集群调度前需要参考以下操作完成配置。

当Kubernetes集群规模比较大的时候,可进行分批部署。分批部署时,除按照本章节进行inventory_file配置外,第二批及以后场景需将SCALE参数设置为true,并将第一批已部署完成的worker节点信息删除或注释。

方式一:配置inventory_file文件

方式二:通过Excel表格配置服务器安装或升级的部署参数

使用约束

  • 集群已完成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的配置。

配置inventory_file文件

  1. 登录MindCluster Ascend Deployer执行机。

  2. 在MindCluster Ascend Deployer执行机上配置待安装设备的IP地址、用户名。

    进入ascend-deployer/ascend_deployer目录,编辑inventory_file文件,添加完成后执行:wq保存退出。

    1. 按照表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个数必须为奇数。
    2. 在[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实例。

配置参数填写示例如下,参数说明请参见表1表2

[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地址。参数说明如下:
  • 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端口时无需配置。

如果使用了非默认的其他端口,则需要配置。

表 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。仅支持选择以下其中一种取值:
  • 18000
  • 68000
  • 134000
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地址。参数说明如下:
  • 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端口时无需配置。

如果使用了非默认的其他端口,则需要配置。

表 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,如用户需自行创建可参考手动创建运行用户

安装步骤

  1. 以软件包的安装用户登录待安装设备。

  2. 执行安装命令。

    • 使用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

  3. (可选)涉及安装CANN和ToolBox时,用户需签署华为企业业务最终用户许可协议(EULA)后进入安装流程,根据回显页面执行y或Y确认协议,输入其他任意字符为拒绝协议,确认接受协议后自动开始安装。

    若当前语言环境不满足要求,可以执行如下命令配置系统的默认语言环境。

    • 配置为中文

      export LANG=zh_CN.UTF-8
      
    • 配置为英文

      export LANG=en_US.UTF-8
      
  4. (可选)涉及到安装驱动固件时,建议安装完成后立即重启。

    单机安装时重启请执行reboot命令。批量安装则执行以下命令重启所有设备。

    1. 如果MindCluster Ascend Deployer工具是部署在某一台待安装设备上,需要先在“inventory_file”屏蔽本机IP地址,如下所示,否则执行4.b时可能还未发送重启命令到其他服务器,本机就已重启,导致其他服务器无法重启。如果MindCluster Ascend Deployer工具是部署在通用服务器可以跳过本步骤。

       #本机IP address ansible_ssh_user="root" # 屏蔽本机IP
    2. 重启服务器。

      ansible -i inventory_file all -m shell -a 'reboot'
      
    3. 其他待安装设备重启后,请在“inventory_file”中解除屏蔽的本机IP,然后执行reboot命令重启本机。

  5. (可选)部署DeepSeek PD实例时,MindIE的部署脚本将存放在[master][0]节点的/root/.ascend_deployer/mindie_pd/kubernetes_deploy_scripts/路径中。

    1. 若重新拉起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
      
    2. 查看DeepSeek PD实例的状态,执行以下命令。

      kubectl get pod -A -owide | grep mindie # 将mindie替换成拉起服务时填写的job_id
      

      若pod状态显示为“Running”,即表示PD实例对应的pod节点已拉起,如下图所示。

    3. 执行如下命令进行一个问答测试,验证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. ...
      
    4. 若需要删除DeepSeek PD实例,需进入MindIE部署脚本存放路径后,执行以下命令。

      bash delete.sh mindie # 将mindie替换成拉起服务时填写的job_id
      
  6. (可选)Docker场景部署DeepSeek时,MindIE Server的配置文件将存放在/usr/local/Ascend/mindie/latest/mindie-service/conf/config.json路径中。

    1. 启动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
      
    2. 查看回显,出现“Daemon start success!”时表示服务拉起成功。

    3. 执行如下命令进行一个问答测试,验证推理服务是否正常。

      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. ...
      
    4. 若需要停止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框架

可执行如下命令查询已安装的AI框架信息。

bash install.sh   --test=mindspore                 //测试已安装的mindspore及版本信息。

检查MindCluster集群调度组件

方式一:执行如下命令检查已安装的MindCluster集群调度组件及版本信息。示例如下。

bash install.sh   --test=clusterd 

方式二:安装MindCluster集群调度后,可进入/ascend_deployer/report目录通过报告文件“report.json”或“report.csv”查看安装结果及节点状态。

检查MindIE容器版本信息

可执行如下命令检查MindIE容器的版本信息。

bash install.sh   --test=mindie_image

后续操作

配置环境变量

配置环境变量

当用户完成软件包的安装后,为保证软件的正常使用,需参考相关步骤完成环境变量的配置。

(可选)取消免密

建议安装完成后,根据实际使用场景,自行取消root用户登录和免密登录。

在Linux系统中,如果用户是通过ssh-keygen生成密钥实现的免密登录,可以执行如下步骤取消免密登录。

  1. 进入~/ssh目录。

    cd ~/.ssh
    
  2. 删除对应的公钥文件。

    rm authorized_keys
    

配置Python环境变量

在使用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

(可选)配置gcc环境变量

模型训练要求7.3.0版本及以上gcc(执行gcc --version命令查询),若低于7.3.0,用户可执行如下操作步骤,使用工具安装的7.3.0版本gcc。

  1. root用户登录服务器。

  2. 配置环境变量(以“/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}
    
  3. 执行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,则请用户跳过如下操作步骤。
    1. 在服务器任意目录下执行如下示例命令(以“/usr/local/gcc7.3.0”路径为例),根据gcc7.3.0文件夹实际路径建立软链接。

      ln -sf /usr/local/gcc7.3.0/bin/gcc /usr/bin/gcc
      
    2. 执行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文件方式设置永久环境变量,操作如下:

  1. 以运行用户在任意目录下执行vi ~/.bashrc命令,打开.bashrc文件,在文件最后一行后面添加上述内容。
  2. 执行:wq!命令保存文件并退出。
  3. 执行source ~/.bashrc命令使其立即生效。

(可选)配置device的网卡IP

当进行分布式训练时,需配置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字段。

单机升级请跳过本步骤。

前提条件

已完成软件包的下载

配置SSH密钥认证

  1. 密钥认证设置。

    1. 在管理服务器(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等)。

    2. 执行以下命令将管理服务器的公钥拷贝到其他待升级设备上。

      ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@<ip>
      

      其中<user>替换为登录的账号,<ip>替换为待升级设备服务器的IP。后续在inventory_file文件中配置时,需与当前步骤配置的用户名和IP保持一致。

    3. 验证管理服务器是否可以正常登录其他待升级设备。

      ssh <user>@<ip>
      

      其中<user>替换为登录的账号,<ip>替换为待升级设备服务器的IP。

    4. 退出登录。

      exit
      
  2. 在管理服务器上,设置SSH代理管理SSH密钥,避免在MindCluster Ascend Deployer工具批量升级过程中输入密钥密码。设置SSH代理命令如下:

    1. 开启ssh-agent的bash进程。

      ssh-agent bash
      
    2. 向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种配置方式。本章节主要指导批量升级的场景,单机升级可跳过。

编辑inventory_file文件

  1. 登录MindCluster Ascend Deployer执行机。

  2. 在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工具支持升级的全部软件包请参见支持安装及升级场景

方式一:配置inventory_file文件

方式二:通过Excel表格配置服务器安装或升级的部署参数

使用约束

  • 使用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的配置。

配置inventory_file文件

  1. 登录MindCluster Ascend Deployer执行机。

  2. 在MindCluster Ascend Deployer执行机上配置待升级设备的IP地址、用户名。

    进入ascend-deployer/ascend_deployer目录,编辑inventory_file文件,添加完成后执行:wq保存退出。

    1. 按照表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个数必须为奇数。
    2. 在[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的可执行权限。

升级步骤

  1. 以软件包的升级用户登录待升级设备。

  2. 执行升级命令。

    • 使用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

  3. (可选)涉及升级CANN和MindCluster性能测试时,用户需签署华为企业业务最终用户许可协议(EULA)后进入升级流程,根据回显页面执行y或Y确认协议,输入其他任意字符为拒绝协议,确认接受协议后自动开始升级。

    若当前语言环境不满足要求,可以执行如下命令配置系统的默认语言环境。

    • 配置为中文

      export LANG=zh_CN.UTF-8
      
    • 配置为英文

      export LANG=en_US.UTF-8
      
  4. (可选)涉及到升级驱动固件时,建议升级完成后立即重启。

    单机升级时重启请执行reboot命令。批量升级则执行以下命令重启所有设备。

    1. 如果MindCluster Ascend Deployer工具是部署在某一台待升级设备上,需要先在“inventory_file”屏蔽本机IP地址,如下所示,否则执行4.b时可能还未发送重启命令到其他服务器,本机就已重启,导致其他服务器无法重启。如果MindCluster Ascend Deployer工具是部署在通用服务器可以跳过本步骤。

       #本机IP address ansible_ssh_user="root" # 屏蔽本机IP
    2. 重启服务器。

      ansible -i inventory_file all -m shell -a 'reboot'
      
    3. 其他待升级设备重启后,请在“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集群调度组件

方式一:执行如下命令检查已安装的MindCluster集群调度及版本信息。示例如下。

bash install.sh --test=clusterd 

方式二:安装MindCluster集群调度后,可进入/ascend_deployer/report目录查看报告文件“report.json”或“report.csv”查看安装结果及节点状态。

检查MCU固件

可执行如下命令查询MCU固件信息。

bash install.sh --test=mcu