基于onnxruntime的C++版本CPU/GPU源码编译
提示:基于onnxruntime的CPU/GPU源码编译,C++版本
前言
一、ONNX Runtime是什么?
ONNX Runtime是适用于Linux,Windows和Mac上ONNX格式的机器学习模型的高性能推理引擎.
二、为什么要用ONNX Runtime?
微软在开源中提供了大量框架和引擎。第一个是开放式神经网络交换(ONNX)运行时 https://github.com/microsoft/onnxruntime,这是一种用于ONNX格式的机器学习模型的高性能推理引擎。它从今天开始在GitHub上提供,可以自定义并直接集成到现有代码库中,或者从源代码编译,在Windows 10,Linux和各种其他操作系统上运行。
对于不熟悉的人来说,ONNX是一种与平台无关的深度学习模型,可以实现开源AI框架之间的互操作性,例如Google的TensorFlow,Microsoft的Cognitive Toolkit,Facebook的Caffe2和Apache的MXNet。微软,AWS和Facebook在大约于2017年9月联合宣布,它正在由亚马逊,Nvidia,英特尔和AMD等公司进行积极的开发。
也许更重要的是,它得到了更广泛的ONNX社区的支持。英特尔和微软正在合作将nGraph编译器集成为ONNX Runtime的执行提供程序。Nvidia正在帮助整合TensorRT; 高通公司表示支持。它可以在嵌入式设备,Windows和Linux上运行…它极大地简化了开发人员的生活。随着微软开发Azure机器学习服务 - 一个允许开发人员构建,培训和部署AI模型的云平台 - 一般可用并发布Azure认知服务语言理解API的容器化支持,ONNX的推出也随之而来。
一、源码地址
源码github地址.
https://github.com/microsoft/onnxruntime
本人github地址.
https://github.com/wyt95
二、步骤
1.基础环境搭建
- 基础编译环境:
-
Ubuntu18.04
-
cmake version 3.20.3
-
- python版本 > 3.5 ,建议直接最新源码下载编译
- 源码编译步骤:./configure;sudo make ; make install
- 编译完成后记得执行python3 -V看下版本信息对不对
- PS:如果要使用tesonrRT,建议下载python3.8,因为onnxruntime的tensorRt的编译需要下载tensorRt7.2.2.3,支持的python版本:2.7,3.4-3.8,目前暂不支持3.9以上
-
python3 numpy
pip3 install numpy即可
-
nvidia驱动
下载cuda11.0的版本时使用默认的cuda自带的驱动进行安装,见第二张图

-
CUDA以及cudnn版本
-
以上就是基础环境配置
2.源码编译
进入onnxruntime的代码目录
编译GPU,命令如下:
./build.sh --skip_tests --use_cuda --config Release --build_shared_lib --parallel --cuda_home /usr/local/cuda-11.0 --cudnn_home /usr/local/cuda-11.0
编译CPU,命令如下:
./build.sh --skip_tests --config Release --build_shared_lib
编译tensorrt,命令如下:
./build.sh --build_shared_lib --skip_tests --config Release --use_cuda --cudnn_home /usr/local/cuda/ --cuda_home /usr/local/cuda --use_tensorrt --tensorrt_home /home/TensorRT-7.2.2.3/
以下就是GPU版本编译完成后产生的libonnxruntime.so.1.8.0以及libonnxruntime.so
libonnxruntime.so是软连接到libonnxruntime.so.1.8.0上去的
- GPU版本的onnxruntime的库包含cuda的函数信息,CPU版本的库就不会存在cuda的函数信息
1.7.0版本是本人四月份编译的cpu的版本,大家可以自己编译之后比对下两者的函数包含信息
3.测试
- 需要这几个库放一起编译使用
4.注意事项
onnxruntime的GPU的版本经过本人一周反复测试,cuda、cudnn以及nvdia驱动的版本是强配套的
ps:期间因为版本没有完全配套导致环境乱了,重装环境了QAQ
总结
我也是第一次尝试,源码编译还是慢慢来吧,有什么问题可以直接私信讨论,或者下方评论留言







6414

被折叠的 条评论
为什么被折叠?



