基础环境搭建
1. 准备服务器
在华为云 ECS 服务申请如下配置
- 实例类型:AI加速型ai1s
- 规格名称:ai1s.large.4
- 操作系统:Ubuntu 18.04
2. 安装驱动
卸载旧驱动,服务器自带驱动较老,需更新
1
2
3
4
5
6
7
8
cd /usr/local/Ascend/opp/aicpu/script
./uninstall.sh
cd /usr/local/Ascend/ascend-toolkit/latest/toolkit/script
./uninstall.sh
cd /usr/local/Ascend/driver/script
./uninstall.sh
安装最新驱动,在官网下载最新 NPU 驱动,型号为 Atlas 300I 推理卡(型号:3010)
1
2
3
4
5
6
7
8
9
10
# 添加执行权限
chmod u+x A300-3010-npu-driver_6.0.0_linux-x86_64.run
# 安装驱动
./A300-3010-npu-driver_6.0.0_linux-x86_64.run --full
# 显示 NPU 加速卡信息
npu-smi info
# 若能正常显示两块 Ascend 310,则安装成功
3. 安装开发套件
安装 Anaconda
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 下载安装包
wget https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-x86_64.sh
# 添加可执行权限
chmod u+x Anaconda3-2023.03-1-Linux-x86_64.sh
# 执行安装,安装过程中选择执行 conda init
./Anaconda3-2023.03-1-Linux-x86_64.sh
# 更新 conda
conda update -n base -c defaults conda
# 重新打开终端进入base环境,并创建虚拟环境
conda create -n onnxruntime python=3.8
# 激活环境
conda activate onnxruntime
安装依赖软件
1
2
# 安装依赖软件
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 libopenblas-dev
安装 CANN 开发套件,在官网选择合适版本
1
2
3
4
5
6
7
8
# 下载安装包
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Florence-ASL/Florence-ASL%20V100R001C30SPC702/Ascend-cann-toolkit_6.3.RC2.alpha002_linux-x86_64.run
# 添加可执行权限
chmod u+x Ascend-cann-toolkit_6.3.RC2.alpha002_linux-x86_64.run
# 安装
./Ascend-cann-toolkit_6.3.RC2.alpha002_linux-x86_64.run --install
项目编译
1. 配置编译环境
安装 cmake-3.26 或更高版本
1
python3 -m pip install cmake
升级 gcc 和 g++ 版本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 添加 PPA 源
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
# 安装高版本
sudo apt-get install gcc-11 # 大版本号即可
sudo apt-get install g++-11
# 删除原链接
cd /usr/bin
rm /usr/bin/gcc
rm /usr/bin/g++
# 添加软连接
ln -s gcc-11 gcc
ln -s g++-11 g++
安装 Python 依赖库
1
conda install attrs numpy decorator sympy cffi pyyaml pathlib2 psutil protobuf scipy requests
添加 Ascend 相关环境变量
1
source /usr/local/Ascend/ascend-toolkit/set_env.sh
2. 编译构建
1
2
3
4
5
6
# 克隆项目
git clone --recursive https://github.com/Microsoft/onnxruntime.git
cd onnxruntime
# 编译
./build.sh --allow_running_as_root --config RelWithDebInfo --build_shared_lib --parallel --use_cann --build_wheel
若想在后台运行编译过程
1
2
3
4
5
# 后台编译
setsid ./build.sh --allow_running_as_root --config RelWithDebInfo --build_shared_lib --parallel --use_cann --build_wheel &>../build.log &
# 实时监控日志
tail -f ../build.log
若需要部署应用,可以将编译后的动态链接库和头文件进行安装
1
2
3
4
5
# 安装
make -C build/Linux/RelWithDebInfo/ install
# 卸载(不删除文件夹)
cat install_manifest.txt | sudo xargs rm