作者:@zhangsibo1129
本文介绍如何从0到1完成ONNXRuntime项目的编译。
华为云 ECS 服务器配置如下
1 2 3
| 实例类型:AI加速型ai1s 规格名称:ai1s.large.4 操作系统:Ubuntu 18.04
|
1.安装驱动
若驱动版本太老,卸载旧驱动
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
| # 添加执行权限 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
# 若能正常显示两块 Ascend 310,则安装成功 npu-smi info
|
2.安装开发套件
安装 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 3 4 5
| # 安装依赖依赖软件 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
# 安装 python 库 conda install attrs numpy decorator sympy cffi pyyaml pathlib2 psutil protobuf scipy requests
|
安装开发套件,在官网选择合适版本
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
|
3.项目编译
安装 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++
|
添加环境变量
1
| source /usr/local/Ascend/ascend-toolkit/set_env.sh
|
编译
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
| setsid ./build.sh --allow_running_as_root --config RelWithDebInfo --build_shared_lib --parallel --use_cann --build_wheel &>/root/Projects/build.log &
# 实时监控日志 tail -f ../build.log
|
若需要部署应用,可以将编译后的动态链接库和头文件进行安装
1 2 3 4 5
| # 安装 make -C build/Linux/RelWithDebInfo/ install
# 卸载(不删除文件夹) cat install_manifest.txt | sudo xargs rm
|