文章目录
平台硬件配置
- NPU: 8 × Ascend 910ProB 32G
- aarch64 (uname -m, ARM64位架构,ARMv8-a)
昇腾910B,对标NVDIA A100/A800 64G
Atlas 300系列, 对标NVDIA T4
基本指令
1. 显卡npu相关
1.1 显示npu
npu-smi info
显示npu类型为910ProB。
1.2 指定使用的npu
export ASCEND_RT_VISIBLE_DEVICES=0
1.3 显示0卡的利用率
npu-smi info -t usages -i 0
2. cpu相关
cat /proc/cpuinfo
CPU implementer
是 CPU 厂商,其中 0x48
对应的是华为海思。
3. python相关
服务器内支持一些python的基本指令,包含3.7的系统默认python。
4. 其他指令
4.1 网卡
ip addr
查看网卡的IP地址和路由
hccn_tool -i 3 -ip -g
操作记录
1. 长时间保持SSH会话连接不断开
使用SSH方式登录操作服务器,过一段时间不操作就会自动断开连接,比较麻烦。
操作方式
编辑/etc/ssh/sshd_config文件设置心跳,保持连接。添加配置项:
ClientAliveInterval 60
ClientAliveCountMax 10
- ClientAliveInterval 60 表示每60秒发送一次请求, 从而保持连接。
- ClientAliveCountMax 10 表示服务器发出请求后客户端没有响应的次数达到10次,就自动断开连接。则无响应的SSH客户端将在大约60x10=600秒后断开连接。
直接在配置文件中改就可以,不需要重新添加。默认为300和0。
按照上述设置,时间稍长也会断开,213服务器上的设置,可以按照这个值进行修改。
参考链接:https://support.huaweicloud.com/trouble-ecs/ecs_trouble_0306.html
2. 环境检查
检查NPU是否正常在位可执行lspci | grep d801命令
系统版本查看
uname -m && cat /etc/*release
aarch64的ARM架构,EulerOS系统与CentOS的操作相似,使用yum。
3. 驱动和固件安装
由于服务器执行npu-smi info
命令可以正常显示npu信息,故不需要安装驱动和固件。
如果不能正常显示,需要再昇腾社区的“固件与驱动”下载页面下载配套产品的固件驱动软件。
驱动安装方式如下
./Ascend-hdk-910-npu-driver_23.0.rc1_linux-x86-64.run --full --install-for-all
默认的安装路径在/usr/local/Ascend
,安装成功后会提示这样的回显信息
Driver package installed successfully!
4. docker安装
参考链接:https://www.hiascend.com/document/detail/zh/quick-installation/23.0.RC2/quickinstg/800_9010/quickinstg_800_9010_0035.html
由于服务器是EulerOS
系统,安装使用yum
而不是apt
。
安装docker
yum install -y docker
执行上述操作后,可以使用docker的命令。
如果没有启动,执行命令systemctl start docker
启动Docker。
docker version
执行docker version可以看到相应的版本信息。
5. docker获取
从AscendHub中的训练镜像选择pytorch-modelzoo。训练镜像中也包含基于TensorFlow和MX等框架的训练镜像,以及MindSpore镜像。
根据版本配套,选择最新的23.0.RC2-1.11.0,Pytorch版本1.11.0,CANN版本6.3.RC2。
在对应的镜像版本中,选择对应的版本进行下载,需要登录,登录后出现如下弹框进行镜像的拉取和构建。
通过登录、密码的输入后,便可docker pull进行镜像的拉取。
拉取成功后,获得一个12.6G的镜像。
6. 镜像使用
参考链接:https://www.hiascend.com/document/detail/zh/ModelZoo/Documentation/dit/dit_0004.html
由于使用的是npu,而非NVDIA的GPU,在容器的建立上,不能再使用--gpus all
的指令把显卡添加至镜像中,需要使用–device=/dev/davinci0 … 把每个训练卡添加至创建的容器内。指引中要手动输入每一张卡,不知道有没有类似all
的方式直接全部加入。
/dev/下确实存在davincic0-7的设备。
docker run -it -u root --name train_env_smw --shm-size=256g --device=/dev/davinci0 --device=/dev/davinci1 --device=/dev/davinci2 --device=/dev/davinci3 --device=/dev/davinci4 --device=/dev/davinci5 --device=/dev/davinci6 --device=/dev/davinci7 --device=/dev/davinci_manager --device=/dev/devmm_svm --device=/dev/hisi_hdc -v /usr/local/Ascend/driver:/usr/local/Ascend/driver -v /usr/local/Ascend/add-ons/:/usr/local/Ascend/add-ons/ -v /usr/local/sbin/:/usr/local/sbin/ -v /var/log/npu/conf/slog/slog.conf:/var/log/npu/conf/slog/slog.conf -v /var/log/npu/slog/:/var/log/npu/slog -v /var/log/npu/profiling/:/var/log/npu/profiling -v /var/log/npu/dump/:/var/log/npu/dump -v /var/log/npu/:/usr/slog -v /root:/home/data swr.cn-south-1.myhuaweicloud.com/ascendhub/pytorch-modelzoo:23.0.RC2-1.11.0 /bin/bash
容器内,默认/usr/local/python3.7.5/bin/pip
python环境使用python3.7.5,并且安装有torch、opencv等环境,但现有开源项目大多依赖于python3.8及以上,不考虑使用默认python环境进行环境搭建。
7. 容器内安装第三方依赖
容器内是Linux系统
apt-get update
apt-get install -y gcc g++ make cmake zlib1g zlib1g-dev openssl libsqlite3-dev libssl-dev libffi-dev unzip pciutils net-tools libblas-dev gfortran libblas3
8. 容器内安装miniconda及依赖环境
由于服务器的CPU是aarch64的架构,镜像内需要安装miniconda。【Anaconda只适用于X86的架构,而且一般在容器内也是优先安装miniconda】
https://docs.anaconda.com/miniconda/
miniconda包含支持aarch64架构的软件。
a. 获取Miniconda安装包,并进行安装
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh
# 防止环境变量冲突
unset PYTHONPATH
unset PYTHONHOME
rm -rf ~/.condarc # 如需重新安装
bash Miniconda3-latest-Linux-aarch64.sh -b -u -p /miniconda
b. Pytorch安装
https://repo.huaweicloud.com/kunpeng/archive/Ascend/PyTorch/
b.1 选择对应python版本的pytorch(aarch64),并进行安装
wget https://download.pytorch.org/whl/torch-1.11.0-cp38-cp38-manylinux2014_aarch64.whl
pip install torch-1.11.0-cp38-cp38-manylinux2014_aarch64.whl
b.2 安装昇腾提供的PyTorch适配插件torch_npu
参考链接https://www.hiascend.com/document/detail/zh/Pytorch/60RC1/configandinstg/instg/insg_0007.html#ZH-CN_TOPIC_0000001889768593__zh-cn_topic_0000001800921750_zh-cn_topic_0000001731730474_table32764194379
下载并安装对应版本的torch_npu
wget https://gitee.com/ascend/pytorch/releases/download/v6.0.rc1-pytorch1.11.0/torch_npu-1.11.0.post11-cp38-cp38-linux_aarch64.whl
pip install torch_npu-1.11.0.post11-cp38-cp38-linux_aarch64.whl
b.3 安装torchvision
pip install torchvision==0.12.0
b.4 验证Pytorch安装是否成功
python3 -c "import torch;import torch_npu;print(torch_npu.npu.is_available())"
返回True说明安装成功。显示ASCEND_HOME_PATH环境变量没有设置。
c. APEX混合精度模块安装(可选)
APEX混合精度模块是一个集优化性能、精度收敛于一身的综合优化库,可以提供不同场景下的混合精度训练支持。
apt-get install -y patch build-essential libbz2-dev libreadline-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev liblzma-dev m4 dos2unix libopenblas-dev git
gcc版本需要7.50以上,cmake版本需要3.12.0以上。容器内gcc版本满足要求,但cmake版本不满足要求,需要升级cmake版本。
下载cmake,解压,软链接,环境变量一气呵成。
wget https://cmake.org/files/v3.26/cmake-3.26.6-linux-aarch64.tar.gz
tar zxvf cmake-3.26.6-linux-aarch64.tar.gz
cd cmake-3.26.6-linux-aarch64/bin
ln cmake /usr/bin/cmake
vi ~/.bashrc
PATH=/opt/cmake-3.26.6-linux-aarch64/bin:$PATH
source ~/.bashrc
确保已安装PyTorch框架且setuptools版本小于等于65.7.0
pip install setuptools==65.7.0
获取昇腾适配的APEX源码,并进行编译。
git clone -b master https://gitee.com/ascend/apex.git
cd apex
bash scripts/build.sh --python=3.8
cd apex/dist/
pip install apex-0.1+ascend-cp38-cp38-linux_aarch64.whl
9. vscode连接华为服务器
使用最新高版本的vscode连接华为服务器,会出现你已连接到不受Visual Studio Code支持的OS 版本,较低版本的vscode连接华为服务器,可能会出现一直连接不上的问题。
原因是vscode更新到1.86版本后要求远程连接服务器的内核版本和库版本需要符合下面条件。
因此,将vscode版本更换为1.85版本最高效。更换后,可以正常使用。