更新时间:2024-04-30 GMT+08:00
分享

物理机环境配置

步骤1:配置超时参数

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

echo $TMOUT

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

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

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

TMOUT=0

步骤2:磁盘合并挂载

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

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

    图1 磁盘未挂载

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

    图2 磁盘已挂载

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

    cd /root/tools/
    sh create_disk_partitions.sh

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

    图3 查看新挂载的磁盘

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

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

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

    npu-smi info -t board -i 1 | egrep -i "software|firmware"
    图4 查看固件和驱动版本

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

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

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

    arch
    cat /etc/os-release
    图5 查看机器操作系统版本及架构

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

  3. 安装固件和驱动包。

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

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

      图6 检查npm-smi工具
    2. 工具检查正常后,进行固件和驱动安装。
      固件和驱动安装时,注意安装顺序:
      • 首次安装场景:硬件设备刚出厂时未安装驱动,或者硬件设备前期安装过驱动固件但是当前已卸载,上述场景属于首次安装场景,需按照“驱动->固件”的顺序安装驱动固件。
      • 覆盖安装场景:硬件设备前期安装过驱动固件且未卸载,当前要再次安装驱动固件,此场景属于覆盖安装场景,需按照“固件->驱动”的顺序安装固件驱动。

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

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

      安装命令如下:

      1. 安装固件,安装完后需要reboot重启机器:
        chmod 700 *.run 
        #  注意替换成实际的包名
        ./Ascend-hdk-型号-npu-firmware_版本号.run  --full
        reboot
      2. 安装驱动,提示处输入“y”,安装完后直接生效不用重启机器:
        # 注意替换成实际的包名
        ./Ascend-hdk-型号-npu-driver_版本号_linux-aarch64.run --full --install-for-all
      3. 安装完成后,检查固件和驱动版本,正常输出代表安装成功:
        npu-smi info -t board -i 1 | egrep -i "software|firmware"
        图7 检查固件和驱动版本

步骤4:安装docker环境

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

    安装docker命令如下:
    yum install -y docker-engine.aarch64 docker-engine-selinux.noarch docker-runc.aarch64
    使用docker -v检查是否安装成功:
    图8 查看docker版本

  2. 配置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

  3. 查看环境是否已安装并配置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-hdk-型号-npu-driver_版本号_linux-aarch64.run --install

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

  4. 将新挂载的盘设置为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

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

    pip install numpy

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

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

  3. 配置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网络测试

  1. 安装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

  2. 安装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

  3. 设置环境变量和编译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 算子编译完成

  4. 单机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

  5. 多机ROCE网卡带宽测试。

    1. 执行以下命令查看昇腾的RoCE IP:
      cat /etc/hccn.conf
      图13 查看昇腾的RoCE IP

    2. 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 192.168.100.18 -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

分享:

    相关文档

    相关产品