【被迫尝试】在Jetpack5.0.1版本上下载Onnxruntime1.12.0源码编译生成wheel文件安装(Cuda11.4+TensorRT8.4)

编译出来的文件

编译出来的文件我上传了,cuda11.4+tensorrt8.4应该可以直接装。没设置积分,不保证jetson系列都能用哈,但是理论上是可以的

背景

之前说jetpack4.6.2的tensorrt不支持16G版本的NX,最近看到nvidia论坛有官方回复说可以试试jetpack5.0.1,咱就下下来试试呗。结果嘛,捏麻麻地,感觉还没写好就发了,所有东西装好之后风扇驱动没了,风扇直接拉满,吵死个人。但这还能接受吧。对我来说最顶的是在jetson zoo下载的python3.8版本的onnxruntime-gpu1.11.0,识别不到cuda,显示找不到cuda10.2。。。但是jetpack5.0.1里面的cuda是11.4,那明摆着找不到。行吧,那先只能自己在设备上下源码build了。痛苦面具

参考

onnx官方参考

尝试过程

  1. 参考他的流程,先
    git clone --recursive https://github.com/microsoft/onnxruntime
    但是国内属实慢啊,我找到个最近有拷过来的
    git clone --recursive https://gitee.com/paddle-mirror/onnxruntime
    刚开始一看速度起飞,然后看着下完一段之后发现里面链接到别的工程的文件夹还是得从git下载。。。mmp,行吧,我想了想,那就在电脑上先下完本体,然后再科学上网接着下呗,最后再拷jetson上。拷过去之后会报错需要解决,如果自己能在jetson上科学上网建议直接在它上面下载。下载速度相对不那么折磨
  2. 下载的同时其实还可以看看cmake是不是合适,按照他的说法cmake要大于等于3.18,我看了下我的3.16,行吧,还得装上cmake。我在这边下了个3.22版本,然后照着install文档的说法
 cmake . 
 make      
 make install

慢的一批,建议和下载一起搞,中途好像还跳出来个要我下载openssl,那就

sudo apt-get install libssl-dev

+++++ 这边添加一步,根据后面实际情况,我们还需要装个abceil-cpp,不然后面会在build的时候再下载,根本下不动,直接裂开。

我是在这个地方下载下来然后经典操作一气呵成

mkdir build
cd build
cmake ..
make      
make install
  1. 这一步我不确定有没有问题哈。因为我们现在jetson5.0.1的tensorrt是8.4的,onnx-tensorrt也需要对应8.4的版本,所以再下载一下onnx-tensorrt对应的8.4版本,cd到onnxruntime/cmake/external/onnx-tensorrt路径,
git clone --recursive -b 8.4-EA https://github.com/onnx/onnx-tensorrt.git

可以看到其实重复下了一些东西,让人烦躁

  1. 然后我就把东西压缩放jetson里面再重新解压,接着照着文档敲:
 export CUDACXX="/usr/local/cuda/bin/nvcc"
  1. 然后接着血压升高的就来了,输入:
 ./build.sh --config Release --update --build --parallel --build_wheel \
 --use_tensorrt --cuda_home /usr/local/cuda-11.4 --cudnn_home /usr/lib/aarch64-linux-gnu \
 --tensorrt_home /usr/lib/aarch64-linux-gnu

一顿报这种错误:

fatal: unsafe repository ('/home/ubuntu/Documents/onnxruntime/cmake/external/onnx-tensorrt/third_party/onnx' is owned by someone else)
To add an exception for this directory, call:

	git config --global --add safe.directory /home/ubuntu/Documents/onnxruntime/cmake/external/onnx-tensorrt/third_party/onnx

行吧,照着敲呗。原先以为只要敲一个,没想到要敲一堆,所以如果可以的话还是直接在jetson这边下。
中间蹦出个checkout错误,应该就是我后面重下了onnx-tensorrt的问题,行吧,网上找了个解决方法,我稀里糊涂过去了,不知道是它把我这部分清了重下了还是check了一下。
然后一堆config之后终于可以开始了,build到现在63%还没报错,嗨呀下班了,开溜 build两个小时才70%,我直接开溜,第二天来看build完成了,然后在文件夹里搜出来一个whl文件,装这个就可以了。

测试

就拿之前自己测试用的onnx代码接着跑,纯onnx可以调cuda库了,跑起来速度和之前差不多,tensorrt目前来看也跑起来了,那也算是没白费一番功夫。

猜你喜欢

转载自blog.csdn.net/weixin_42492254/article/details/124951234