安装推理用ubuntu版docker
华为的atlas500自带的欧拉系统是一个裁剪系统,一般通过在其上运行官方的ubuntu docker,再在其上安装依赖并进行模型推理。
昇腾推理用镜像地址(安装无裁剪的ubuntu系统):
https://ascendhub.huawei.cn/#/detail/ascend-infer
使用前提
物理机上有Ascend 310芯片
物理机已安装对应CANN版本的驱动和固件
物理机已安装Docker,且Docker网络可用
使用npu-smi info命令查看硬件驱动版本,有:
找到对应的版本号:21.0.4.9
对应cann的版本为:5.0.4
选择对应docker:
下载需要凭证,需要登陆并注册一个账号
根据页面提示下载后:
镜像下载完成后,启动该ubuntu镜像,并将镜像中的部分目录挂载到宿主机上,便于镜像中的系统可以直接使用宿主机中的库。
在宿主机中特别创建目录,用于放置模型以供调用:
mkdir /home/test
然后编写下述脚本便于启动docker:
#!/bin/bash
docker_images=ascendhub.huawei.cn/public-ascendhub/ascend-infer:21.0.4-ubuntu18.04
model_dir=/home/test
docker run -it -u root --ulimit nofile=5000:5000 --ipc=host --net=host \
--device=/dev/davinci0 \
--device=/dev/davinci_manager \
--device=/dev/devmm_svm \
--device=/dev/hisi_hdc \
-v ${model_dir}:${model_dir} \
-v /usr/local/bin/:/usr/local/bin \
-v /home/data/miniD/driver:/usr/local/Ascend/driver \
-v /home/data/Ascend-DMI:/usr/local/Ascend/Ascend-DMI \
-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 ${docker_images} \
/bin/bash
由于设置了主机网络模式,不能进行容器的端口映射,所以将容器内的ssh服务端口改为16666,便于远程对外访问。
配置docker内的ssh服务
apt-get update
apt-get install sudo
sudo apt-get install wget
sudo ps -e|grep ssh
安装ssh服务
sudo apt-get install ssh
sudo apt-get install openssh-server
查看ssh的状态,没有返回说明没有启动
sudo ps -e|grep ssh
启动ssh
sudo service ssh start
更改ssh配置文件
vim /etc/ssh/sshd_config
填加以下内容:
Port 10002
PermitRootLogin yes #允许root用户使用ssh登录
重启ssh服务:
sudo service ssh restart
设置新密码:
passwd root
即完成了远程连接,在Atals MindStudio登陆时使用如图配置即可使用docker:
安装ubuntu系统中的依赖项:
检查root用户的umask
以root用户登录安装环境。
检查root用户的umask值。
umask
如果umask不等于0022,请执行如下操作配置,在该文件的最后一行添加umask 0022后保存。
在任意目录下执行如下命令,打开.bashrc文件:
vi ~/.bashrc
在文件最后一行后面添加umask 0022内容。
执行:wq!命令保存文件并退出。
执行source ~/.bashrc命令使其立即生效。
说明
依赖安装完成后,请用户恢复为原umask值(删除.bashrc文件中umask 0022一行)。基于安全考虑,建议用户将umask值改为0027。
补充:
在Ubuntu系统中,umask值是一个三位数字,用于设置新创建文件和目录的默认权限。它通过从默认权限掩码中减去指定的值来计算权限。
默认情况下,Ubuntu系统中的umask值为022,这意味着新创建的文件和目录将具有默认权限-rw-r–r--和drwxr-xr-x。这意味着所有者可以读取和写入文件,而其他用户只能读取文件。对于目录,所有者可以读取、写入和执行目录,而其他用户只能读取和执行目录。
安装依赖项
执行如下的安装命令:
sudo 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
安装python:
检查系统是否安装满足版本要求的Python开发环境(具体要求请参见依赖列表)。
执行命令python3 --version,如果返回信息满足Python版本要求,则直接进入下一步。
否则可参考如下方式安装python3.9.0。
使用wget下载python3.9源码包,可以下载到安装环境的任意目录,命令为:
wget https://www.python.org/ftp/python/3.9.0/Python-3.9.tgz
tar -zxvf Python-3.9.0.tgz
cd Python-3.9.0
./configure --prefix=/usr/local/python3.9.0 --enable-loadable-sqlite-extensions --enable-shared
make
sudo make install
设置Python3.9环境变量。
#用于设置python3.9库文件路径
export LD_LIBRARY_PATH=/usr/local/python3.9.0/lib:$LD_LIBRARY_PATH
#如果用户环境存在多个python3版本,则指定使用python3.9版本
export PATH=/usr/local/python3.9.0/bin:$PATH
通过以上export方式设置环境变量,该种方式设置的环境变量只在当前窗口有效。您也可以通过将以上命令写入~/.bashrc文件中,然后执行source /.bashrc命令,使上述环境变量永久生效。注意如果后续您有使用环境上其他Python版本的需求,则不建议将以上命令写入到/.bashrc文件中。
安装python依赖:
pip3 install --upgrade pip
pip3 install attrs
pip3 install numpy
pip3 install decorator
pip3 install sympy
pip3 install cffi
pip3 install pyyaml
pip3 install pathlib2
pip3 install psutil
pip3 install protobuf
pip3 install scipy
pip3 install requests
pip3 install absl-py
退出再次进入docker命令:
docker exec -it 97d /bin/bash
安装CANN
mkdir install
cd install/
wget wyl.obs.cn-east-317.qdrgznjszx.com/Ascend-cann-toolkit_5.0.4.6_linux-aarch64.run
ls
chmod +x *
ls
pip3 list
./Ascend-cann-toolkit_5.0.4.6_linux-aarch64.run --install
source /usr/local/Ascend/ascend-toolkit/set_env.sh
并且使用:
vim ~/.bashrc
source /usr/local/Ascend/ascend-toolkit/set_env.sh
将内容添加至bash内
具体来说,source命令会读取指定的Shell脚本文件,并将其中的命令和环境变量加载到当前Shell环境中,以便可以直接在命令行中执行这些命令或使用这些环境变量。
安装后运行脚本卸载:
/usr/local/Ascend/ascend-toolkit/5.0.4.6/arm64-linux/script/uninstall.sh
连接到CANN Setting
Ascend-cann-toolkit开发套件包的安装路径,默认为$HOME/Ascend/ascend-toolkit/{version}
#安装mxVision SDK软件包(需要python3.9的依赖)
wget wyl.obs.cn-east-317.qdrgznjszx.com/Ascend-mindxsdk-mxvision_2.0.4_linux-aarch64.run
./Ascend-mindxsdk-mxvision_2.0.4_linux-aarch64.run --install --install-path=/usr/local/mindsdk
#最后生效环境变量
.set_env.sh