华为云AI开发平台ModelArts物理机环境配置_云淘科技

步骤1:配置超时参数

SSH登录到机器后,查看机器配置的超时参数:

echo $TMOUT

如果该值为300,则代表默认空闲等待5分钟后会断开连接,可以增大该参数延长空闲等待时间(若值已经为0可跳过该步骤)。修改方法如下:

vim /etc/profile 
# 在文件最后修改TMOUT值,由300改为0,0表示不会空闲断开
export TMOUT=0

执行命令使其在当前terminal生效:

TMOUT=0

步骤2:磁盘合并挂载

成功购买裸金属服务器后,服务器上可能会有多个未挂载的nvme磁盘。因此在首次配置环境前,需要完成磁盘合并挂载。此操作需要放在最开始完成,避免使用一段时间后再挂载会冲掉用户已存储的内容。

首先通过“lsblk”查看是否有3个7T的磁盘未挂载,如下图所示为未挂载。

图1 磁盘未挂载

若是下图所示,每个盘后已有MOUNTPOINT,则代表已经执行过挂载操作,可跳过此章节,只用直接在/home目录下创建自己的个人开发目录即可。

图2 磁盘已挂载

执行自动化挂载脚本,将“/dev/nvme0n1”挂载在“/home”下供每个开发者创建自己的家目录,另两个合并挂载到“/docker”下供容器使用(如果不单独给“/docker”分配较大空间,当多人共用创建多个容器实例时容易将根目录占满)。

cd /root/tools/
sh create_disk_partitions.sh

配置完成后,执行“df -h”可以看到新挂载的磁盘信息。

图3 查看新挂载的磁盘

磁盘合并挂载后,即可在“/home”下创建自己的工作目录,以自己的名字命名。

步骤3:(可选)安装固件和驱动

查看环境信息。查看当前拿到的机器的固件和驱动版本:

npu-smi info -t board -i 1 | egrep -i "software|firmware"

图4 查看固件和驱动版本

其中firmware代表固件版本,software代表驱动版本,当前昇腾商用发布的最新版本为上图所示的版本,可以不用执行本章节后续的固件驱动安装步骤。

如果机器上的版本不是所需的版本(例如需要换成社区最新调测版本),可以参考后续步骤进行操作。

查看机器操作系统版本,以及架构是aarch64还是x86_64,并从昇腾官网获取相关的固件驱动包。固件包名称为“Ascend-hdk-910b-npu-firmware_版本号.run”,驱动包名称为“Ascend-hdk-910b-npu-driver_版本号_linux-aarch64.run”,商用版是权限受控,仅华为工程师和渠道用户有权限下载,下载地址请见固件驱动包下载链接

arch
cat /etc/os-release

图5 查看机器操作系统版本及架构

下文均以适配EulerOS 2.0(SP10)和aarch64架构的包为例来进行讲解。

安装固件和驱动包。

首先检查npm-smi工具是否可以正常使用,该工具必须能正常使用才能继续后面的固件驱动安装,完整输出下图内容则为正常。

如果命令未按照下图完整输出(比如命令报错或只输出了上半部分没有展示下面的进程信息),则需要先尝试恢复npu-smi工具,将npu-smi恢复后,再进行新版本的固件驱动安装。

图6 检查npm-smi工具

工具检查正常后,进行固件和驱动安装。

固件和驱动安装时,注意安装顺序:

首次安装场景:硬件设备刚出厂时未安装驱动,或者硬件设备前期安装过驱动固件但是当前已卸载,上述场景属于首次安装场景,需按照“驱动->固件”的顺序安装驱动固件。
覆盖安装场景:硬件设备前期安装过驱动固件且未卸载,当前要再次安装驱动固q件,此场景属于覆盖安装场景,需按照“固件->驱动”的顺序安装固件驱动。

通常Snt9b出厂机器有预装固件驱动,因此本案例中是“覆盖安装场景”,注意:

如果新装的固件驱动比环境上已有的版本低,只要npu-smi工具可用,也是直接装新软件包即可,不用先卸载环境上已有的版本。
如果固件驱动安装失败,可先根据报错信息在开发者社区搜索解决方案。

安装命令如下:

安装固件,安装完后需要reboot重启机器:

chmod 700 *.run 
#  注意替换成实际的包名
./Ascend-hdk-910b-npu-firmware_6.4.12.1.241.run  --full
reboot

安装驱动,提示处输入“y”,安装完后直接生效不用重启机器:

# 注意替换成实际的包名
./Ascend-hdk-910b-npu-driver_23.0.rc2_linux-aarch64.run --full --install-for-all

安装完成后,检查固件和驱动版本,正常输出代表安装成功:

npu-smi info -t board -i 1 | egrep -i "software|firmware"

图7 检查固件和驱动版本

步骤4:安装docker环境

先执行“docker -v”检查机器是否已安装docker,若已安装,则可跳过此步骤。

安装docker命令如下:

yum install -y docker-engine.aarch64 docker-engine-selinux.noarch docker-runc.aarch64

使用docker -v检查是否安装成功:

图8 查看docker版本

配置IP转发,用于容器内的网络访问。执行下述命令查看net.ipv4.ip_forward配置项值,如果为1,可跳过此步骤。

sysctl -p | grep net.ipv4.ip_forward

如果不为1,进行配置:

sed -i 's/net\.ipv4\.ip_forward=0/net\.ipv4\.ip_forward=1/g' /etc/sysctl.conf 
sysctl -p | grep net.ipv4.ip_forward

查看环境是否已安装并配置Ascend-docker-runtime:

docker info |grep Runtime

如果输出的runtime为“ascend”,则代表已安装配置好,可跳过此步骤。

图9 Ascend-docker-runtime查询

若未安装,则点击链接下载社区版Ascend Docker Runtime,该软件包是昇腾提供的docker插件,在docker run时可以自动挂载昇腾driver等路径到容器,无需在启动容器时手工指定–device参数。下载好后将包上传到服务器并进行安装。

chmod 700 *.run
./Ascend-docker-runtime_5.0.RC2_linux-aarch64.run --install

关于Ascend Docker Runtime的更多使用指导,请参考Ascend Docker Runtime用户指南。

将新挂载的盘设置为docker容器使用路径。

编辑“/etc/docker/daemon.json”文件内容,如果文件不存在则新建即可。

vim /etc/docker/daemon.json

增加如下两项配置,注意insecure-registries行末尾增加一个逗号,保持json格式正确。其中“data_root”代表docker数据存储路径,“default-shm-size”代表容器启动默认分配的共享内容大小,不配置时默认为64M,可以根据需要改大,避免分布式训练时共享内存不足导致训练失败。

图10 docker配置

保存后,执行如下命令重启docker使配置生效:

systemctl daemon-reload && systemctl restart docker

步骤5:(可选)安装pip

执行如下命令检查是否已安装pip且pip源正常访问,如果能正常执行,可跳过此章节:

pip install numpy

若物理机上没有安装pip,可执行如下命令安装:

python -m ensurepip --upgrade
ln -s /usr/bin/pip3 /usr/bin/pip

配置pip源。

mkdir -p ~/.pip
vim ~/.pip/pip.conf

在“~/.pip/pip.conf”中写入如下内容:

[global]
index-url = http://mirrors.myhuaweicloud.com/pypi/web/simple
format = columns
[install]
trusted-host=mirrors.myhuaweicloud.com

步骤6:RoCE网络测试

安装cann-toolkit。

查看服务器是否已安装CANN Toolkit,如果显示有版本号则已安装:

cat /usr/local/Ascend/ascend-toolkit/latest/aarch64-linux/ascend_toolkit_install.info

如果未安装,则需要从官网下载相关软件包,其中社区版可以直接下载(下载地址),商用版是权限受控,仅华为工程师和渠道用户有权限下载(下载链接)。

安装CANN Toolkit,注意替换包名。

chmod 700 *.run
./Ascend-cann-toolkit_6.3.RC2_linux-aarch64.run --full --install-for-all

安装mpich-3.2.1.tar.gz。

点击此处下载,并执行以下命令安装:

mkdir -p /home/mpich
mv /root/mpich-3.2.1.tar.gz /home/
cd /home/;tar -zxvf mpich-3.2.1.tar.gz
cd /home/mpich-3.2.1
./configure --prefix=/home/mpich --disable-fortran
make && make install

设置环境变量和编译hccl算子。

export PATH=/home/mpich/bin:$PATH
cd /usr/local/Ascend/ascend-toolkit/latest/tools/hccl_test
export LD_LIBRARY_PATH=/home/mpich/lib/:/usr/local/Ascend/ascend-toolkit/latest/lib64:$LD_LIBRARY_PATH
make MPI_HOME=/home/mpich ASCEND_DIR=/usr/local/Ascend/ascend-toolkit/latest

算子编译完成后显示内容如下:

图11 算子编译完成

单机all_reduce_test。

进入hccl_test目录:

cd /usr/local/Ascend/ascend-toolkit/latest/tools/hccl_test

若是单机单卡,则执行:

mpirun -n 1 ./bin/all_reduce_test -b 8 -e 1024M -f 2 -p 8 

若是单机多卡,则执行:

mpirun -n 8 ./bin/all_reduce_test -b 8 -e 1024M -f 2 -p 8

图12 all_reduce_test

多机ROCE网卡带宽测试。

执行以下命令查看昇腾的RoCE IP:

cat /etc/hccn.conf

图13 查看昇腾的RoCE IP

RoCE测试。

在Session1:在接收端执行 -i 卡id。

hccn_tool -i 7 -roce_test reset
hccn_tool -i 7 -roce_test ib_send_bw -s 4096000 -n 1000 -tcp

在Session2:在发送端执行 -i 卡id,后面的ip为上一步接收端卡的ip。

cd /usr/local/Ascend/ascend-toolkit/latest/tools/hccl_test
hccn_tool -i 0 -roce_test reset
hccn_tool -i 0 -roce_test ib_send_bw -s 4096000 -n 1000 address 29.89.96.167 -tcp

RoCE测试结果如图:

图14 RoCE测试结果(接收端)

图15 RoCE测试结果(服务端)

当某网卡已经开始RoCE带宽测试时,再次启动任务会有如下报错:

图16 报错信息

需要执行下述命令后关闭roce_test任务后再启动任务。

hccn_tool -i 7 -roce_test reset

可执行如下命令查看网卡状态。

for i in {0..7};do hccn_tool -i ${i} -link -g;done

可执行如下命令查看单节点内网卡IP连通性。

for i in $(seq 0 7);do hccn_tool -i $i -net_health -g;done

父主题: NPU Snt9B裸金属服务器环境配置

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家