云服务器内容精选

  • 步骤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 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
  • 步骤1:配置超时参数 SSH登录到机器后,查看机器配置的超时参数: echo $TMOUT 如果该值为300,则代表默认空闲等待5分钟后会断开连接,可以增大该参数延长空闲等待时间(若值已经为0可跳过该步骤)。修改方法如下: vim /etc/profile # 在文件最后修改TMOUT值,由300改为0,0表示不会空闲断开 export TMOUT=0 执行命令使其在当前terminal生效: TMOUT=0
  • 步骤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
  • 步骤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”下创建自己的工作目录,以自己的名字命名。
  • 步骤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-hdk-型号-npu-driver_版本号_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
  • 步骤6:git操作 git clone和git lfs下载大模型可以参考如下操作。 由于欧拉源上没有git-lfs包,所以需要从压缩包中解压使用,在浏览器中输入如下地址下载git-lfs压缩包并上传到服务器的/home目录下,该目录在容器启动时挂载到容器/home_host目录下,这样在容器中可以直接使用。 https://github.com/git-lfs/git-lfs/releases/download/v3.2.0/git-lfs-linux-arm64-v3.2.0.tar.gz 进入容器,执行安装git lfs命令。 cd /home_host tar -zxvf git-lfs-linux-arm64-v3.2.0.tar.gz cd git-lfs-3.2.0 sh install.sh 设置git配置去掉ssl校验。 git config --global http.sslVerify false git clone代码仓,以diffusers为例(注意替换用户个人开发目录)。 # git clone diffusers源码,-b参数可指定分支,注意替换用户个人开发目录 cd /home_host/用户个人目录 mkdir sd cd sd git clone https://github.com/huggingface/diffusers.git -b v0.11.1-patch git clone huggingface上的模型,以SD模型为例。如果下载时若出现“SSL_ERROR_SYSCALL”报错,多重试几次即可。另外由于网络限制以及文件较大,下载可能很慢需要数个小时,如果重试多次还是失败,建议直接从网站下载大文件后上传到服务器/home目录的个人开发目录中。如果下载时需要跳过大文件,可以设置GIT_LFS_SKIP_SMUDGE=1 git lfs install git clone https://huggingface.co/runwayml/stable-diffusion-v1-5 -b onnx 图5 代码下载成功
  • 步骤7:容器环境保存镜像 配置好环境后可以进行业务代码的开发调试。通常为了避免机器重启后环境丢失,建议将已经配好的环境保存成新的镜像,命令如下: # 查看需要保存为镜像的容器ID docker ps # 保存镜像 docker commit 容器ID 自定义镜像名:自定义镜像tag # 查看已保存的镜像 docker images # 如果需要将镜像分享给其他人在其他环境使用,可将镜像保存为本地文件,该命令耗时较久,保存完后ls可查看到文件 docker save -o 自定义名称.tar 镜像名:镜像tag # 其他机器上使用时加载文件,加载好后docker images即可查看到该镜像 docker load --input 自定义名称.tar 到此环境配置就结束了,后续可以根据相关的迁移指导书做业务迁移到昇腾的开发调测工作。
  • 步骤5:配置pip源和yum源 配置pip源 使用ModelArts提供的预置镜像中pip源已经直接配置好可用,如果用户使用自己的业务镜像,可参考步骤5:(可选)安装pip进行配置。 配置yum源 执行如下命令配置yum源: # 自动配置yum源 wget http://mirrors.myhuaweicloud.com/repo/mirrors_source.sh && bash mirrors_source.sh # 测试 yum update --allowerasing --skip-broken --nobest
  • 步骤4:(可选)安装MindSpore Lite 当前预置镜像中已安装MindSpore Lite,如果需要替换版本或者使用自己的未预置MindSpore Lite的镜像,可参考如下章节进行安装。 查看容器中是否已安装MS Lite,如果已经显示出mindspore-lite软件信息和版本号,则是已经安装好的: pip show mindspore-lite 如果未安装,则从官网下载包(下载链接),下载whl包和tar.gz包并执行安装,注意替换包名: pip install mindspore_lite-2.1.0-cp37-cp37m-linux_aarch64.whl mkdir -p /usr/local/mindspore-lite tar -zxvf mindspore-lite-2.1.0-linux-aarch64.tar.gz -C /usr/local/mindspore-lite --strip-components 1
  • 步骤1:准备业务基础镜像 当前推荐的开发模式是在物理机上启动自己的docker容器进行开发。容器镜像可以使用自己的实际业务镜像,也可以使用ModelArts提供的基础镜像,ModelArts提供两种基础镜像:Ascend+PyTorch镜像、Ascend+Mindspore镜像。 根据所需要的环境拉取镜像。 拉取Ascend+PyTorch镜像: # 配套Snt9b的容器镜像,包含pytorch 1.11 + mindspore-lite 2.2.0 + Ascend CANN Toolkit 7.0.1 docker pull swr.cn-southwest-2.myhuaweicloud.com/atelier/pytorch_1_11_ascend:pytorch_1.11.0-cann_7.0.1-py_3.9-euler_2.10.7-aarch64-snt9b-20231107190844-50a1a83 拉取Ascend+Mindspore镜像: # 配套Snt9b的容器镜像,包含mindspore 2.2.0 + mindspore-lite 2.2.0 + Ascend CANN Toolkit 7.0.1 docker pull swr.cn-southwest-2.myhuaweicloud.com/atelier/mindspore_2_2_ascend:mindspore_2.2.0-cann_7.0.1-py_3.9-euler_2.10.7-aarch64-snt9b-20231107190844-50a1a83 启动容器镜像,注意多人多容器共用机器时,需要将卡号做好预先分配,不能使用其他容器已使用的卡号: # 启动容器,请注意指定容器名称、镜像信息。ASCEND_VISIBLE_DEVICES指定容器要用的卡,0-1,3代表0 1 3这3块卡,-用于指定范围 # -v /home:/home_host是指将宿主机home目录挂载到容器home_host目录,建议在容器中使用该挂载目录进行代码和数据的存储以便持久化 docker run -itd --cap-add=SYS_PTRACE -e ASCEND_VISIBLE_DEVICES=0 -v /home:/home_host -p 51234:22 -u=0 --name 自定义容器名称 上一步拉取的镜像SWR地址 /bin/bash 进入容器: docker exec -ti 上一命令中的自定义容器名称 bash 进入conda环境: source /home/ma-user/.bashrc cd ~ 查看容器中可以使用的卡信息: npu-smi info 如果命令报如下错误,则代表容器启动时指定的“ASCEND_VISIBLE_DEVICES”卡号已被其他容器占用,此时需要重新选择卡号并重新启动新的容器。 图1 报错信息 npu-smi info检测正常后,可以执行一段命令进行简单的容器环境测试,能正常输出运算结果代表容器环境正常可用。 pytorch镜像测试: python3 -c "import torch;import torch_npu; a = torch.randn(3, 4).npu(); print(a + a);" mindspore镜像测试: # 由于mindspore的run_check程序当前未适配Snt9b,需要先设置2个环境变量才能测试 unset MS_GE_TRAIN unset MS_ENABLE_GE python -c "import mindspore;mindspore.set_context(device_target='Ascend');mindspore.run_check()" # 测试完需要恢复环境变量,实际跑训练业务的时候需要用到 export MS_GE_TRAIN=1 export MS_ENABLE_GE=1 图2 进入conda环境并进行测试
  • 步骤3:(可选)安装CANN Toolkit 当前ModelArts提供的预置镜像中已安装CANN Toolkit,如果需要替换版本或者使用自己的未预置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 如果已安装,但需要升级版本,注意替换包名: chmod 700 *.run ./Ascend-cann-toolkit_6.3.RC2_linux-aarch64.run --upgrade --install-for-all
  • 场景描述 本文旨在指导如何在Snt9b裸金属服务器上,进行磁盘合并挂载、安装docker等环境配置。在配置前请注意如下事项: 首次装机时需要配置存储、固件、驱动、网络访问等基础内容,这部分配置尽量稳定减少变化。 裸机上的开发形式建议开发者启动独立的Docker容器作为个人开发环境。Snt9b的裸机包含8卡算力资源,一般来说多人可以共用这个裸机完成开发与调测工作。多人使用为了避免冲突,建议各自在自己的docker容器中进行独立开发,并提前规划好每个人使用的具体卡号,避免相互影响。 ModelArts提供了标准化基础容器镜像,在容器镜像中已经预置了基础MindSpore或PyTorch框架和开发调测工具链,推荐用户直接使用该镜像,用户也可以使用自己的业务镜像或昇腾AscendHub提供的镜像。如果镜像中预置的软件版本不是您期望的版本,可以自行安装替换。 开发形式推荐通过容器中暴露的SSH端口以远程开发的模式(VSCode SSH Remote、 Xshell)连接到容器中进行开发,可以在容器中挂载宿主机的个人存储目录,用于存放代码和数据。 当前指导中很多操作步骤在最新发放的Snt9b裸机环境中已经预置,无需用户再手动配置,用户在操作中如发现某个步骤已有预置配置可直接跳过该步骤。 父主题: NPU Snt9B裸金属服务器环境配置