【记】onnxruntime源码编译

前言

为了更好的学习研究onnxrumtime量化原理和实现方法,需要在调用onnxruntime时解读源码,而直接通过pip isntall onnxruntime 安装发行版会有部分内容是被封装的,所以需要源码编译安装onnxruntime并调用。

编译安装环境

ubuntu 20.04
cmake 3.30.5
onnxruntime 1.19.2
onnx 1.17.0
python 3.8.20
protobuf 5.29.4
numpy 1.24.4
packaging 25.0

第一步、下载/克隆onnxruntime-1.19.2源码

可以直接在github上下载源码包onnxruntime-1.19.2.zip,解压并进入源码目录

unzip /home/tipper/onnxruntime/onnxruntime-1.19.2.zip
cd /home/tipper/onnxruntime/onnxruntime-1.19.2

第二步、执行编译

根据onnxruntime官方指导手册进行编译

# 进入源码目录
cd /home/tipper/onnxruntime/onnxruntime-1.19.2
# 进入root用户
sudo su
# 执行编译指令
./build.sh --skip_tests --config Release --build_wheel --build_shared_lib --parallel 4 --enable_pybind --allow_running_as_root
报错一:当前目录不是git仓库,需要git初始化

在这里插入图片描述

git init 
报错二:在终端执行时可能会有部分依赖的压缩包无法下载的问题

在这里插入图片描述
解决方法:根据URL地址手动下载对应依赖的压缩包,并将源码目录下的dep.txt进行修改,URL从网址(https://)改为本地绝对路径(file:///),下面是abseil_cpp的示例,对于其他依赖包是一样的

abseil_cpp;https://github.com/abseil/abseil-cpp/archive/f46495ea96f68fc3f6c394f099b2992743f6ff7f.zip;0e2b6d1dc7f0a808d1e23f7dd985f7bc18d52cbc
修改为
abseil_cpp;file:///home/tipper/onnxruntime/deps_download/abseil-cpp-f46495ea96f68fc3f6c394f099b2992743f6ff7f.zip;0e2b6d1dc7f0a808d1e23f7dd985f7bc18d52cbc
完成编译

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第三步、安装

执行安装命令

编译后产物在build目录下,编译得到的轮子在build/Linux/Release/dist下,需要手动安装

cd /home/tipper/onnxruntime/onnxruntime-1.19.2/build/Linux/Release
sudo make install

pip install dist/onnxruntime-1.19.2-cp38-cp38-linux_x86_64.whl

在这里插入图片描述
在这里插入图片描述

安装完成

在这里插入图片描述

第四步、调用

在这里插入图片描述

### ONNX Runtime 环境配置教程 #### 准备工作 为了成功安装并使用ONNX Runtime,在开发环境中需预先准备一些工具和库。确保已安装Visual Studio 2019 或更高版本以及CMake构建系统[^1]。 #### 下载ONNX Runtime源码或二进制文件 可以从GitHub仓库获取最新的ONNX Runtime源代码来编译,也可以直接下载预编译好的Windows平台下的CPU/GPU版本的二进制包。 #### 安装依赖项 对于基于Visual Studio的项目来说,通过NuGet管理器添加`Microsoft.AI.MachineLearning`作为项目的依赖之一能够简化集成过程;而对于希望手动控制环境的人来说,则可能需要单独处理诸如Protobuf之类的外部依赖关系。 #### 编译设置(如果选择了从源码编译) 当决定自行编译时,建议按照官方文档中的指导完成必要的参数设定,并利用CMake生成适用于Visual Studio解决方案(.sln),之后再借助IDE内部功能来进行实际编译操作。 ```cmake # CMakeLists.txt 配置实例 set(ORT_BUILD_FLAGS "-DONNXRUNTIME_USE_CUDA=OFF") # 关闭CUDA支持, 如果不需要GPU加速的话 add_subdirectory(onnxruntime) ``` #### 创建测试工程验证安装成果 创建一个新的控制台应用程序或其他形式的应用程序以加载并调用ONNX模型进行预测是一个很好的方法去检验整个流程是否顺畅无阻。此时应该注意引入正确的头文件路径及链接相应的静态/动态库文件。 ```cpp // 测试.cpp 文件片段 #include "onnxruntime_cxx_api.h" using namespace Ort; ... SessionOptions session_options; session_options.SetIntraOpNumThreads(1); session_options.SetGraphOptimizationLevel(GraphOptimizationLevel::ORT_ENABLE_EXTENDED); Env env(ORT_LOGGING_LEVEL_WARNING, "test"); unique_ptr<Session> session(new Session(env, L"path_to_your_model.onnx", session_options)); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值