如何做好购物网站,东莞网推广网站建设,深圳建筑工程公司排名,湖南网站制作公司记录为centos7的4090开发机离线编译onnxruntime的过程#xff0c;因为在离线的环境#xff0c;所以踩了很多坑。
https://onnxruntime.ai/docs/execution-providers/TensorRT-ExecutionProvider.html 这里根据官网的推荐安装1.15 版本的onnx 因为离线环境#xff0c;所以很…记录为centos7的4090开发机离线编译onnxruntime的过程因为在离线的环境所以踩了很多坑。
https://onnxruntime.ai/docs/execution-providers/TensorRT-ExecutionProvider.html 这里根据官网的推荐安装1.15 版本的onnx 因为离线环境所以很多都是要自己手动编译安装的 onnx 源码 1.51 cmake 3.26.6 (本地环境的3.16不可以) Python 3.8.12 cuda 11.8 cudnn 8.97.29 patch 2.7.6 TensorRT 8.6.1.6 gcc11(要求gcc7)
patch是onnx给他的某些依赖库打补丁用的centos中yum install patch即可这里本地只能自己编译 python是因为系统自带的python只有可执行文件编译过程需要头文件和python的库文件
压缩包安装路径的截图如下 对应的环境变量设置如下 export PATH/home/users/zyx/cmake26_install/bin:$PATH
export PATH/home/users/zyx/python3.8/bin:$PATH
export LD_LIBRARY_PATH/home/users/zyx/python3.8/lib:$LD_LIBRARY_PATH
export C_INCLUDE_PATH/home/users/zyx/python3.8/include:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH/home/users/zyx/python3.8/include:$CPLUS_INCLUDE_PATH
export TENSORRT_ROOT/home/users/zyx/TensorRT-8.6.1.6
export CUDA_HOME$CUDA_HOME:/home/users/zyx/cuda_11.8
export PATH/home/users/zyx/cuda_11.8/bin:$PATH
export LD_LIBRARY_PATH$LD_LIBRARY_PATH:/home/users/zyx/cuda_11.8/lib64export CMAKE_C_COMPILER/usr/local/gcc-11.4/bin/gcc
export CMAKE_CXX_COMPILER/usr/local/gcc-11.4/bin/g
export PATH/usr/local/gcc-11.4/bin:$PATH
export CC/usr/local/gcc-11.4/bin/gcc
export CXX/usr/local/gcc-11.4/bin/g
export LD_LIBRARY_PATH/usr/local/gcc-11.4/lib64:$LD_LIBRARY_PATH#export PATH/usr/local/gcc-5.4.0/bin:$PATH
#export CC/usr/local/gcc-5.4.0/bin/gcc
#export CXX/usr/local/gcc-5.4.0/bin/g
export PATH/home/users/zyx/patch-install/bin:$PATH
export CMAKE_CXX_FLAGS-Wno-errorexport CXXFLAGS-mavx512f # 这里的编译并没有用到,设置指令集相关的
export CFLAGS-mavx512f # 这里的编译并没有用到,设置指令集相关的设置好代理下载代码–recursive 带着他的子module
git clone -b v1.15.1 https://github.com/microsoft/onnxruntime --recursive这里使用如下的指令开启cuda开启tensorRT构建python的onnxruntime安装包release模式
./build.sh \
--parallel 8 \
--use_cuda \
--skip_tests \
--use_cuda --cuda_version11.8 \
--cudnn_home /home/users/zyx/cuda_11.8/lib64 \
--cuda_home /home/users/zyx/cuda_11.8/ \
--use_tensorrt --tensorrt_home /home/users/zyx/TensorRT-8.6.1.6 \
--build_shared_lib --build_wheel \
--config Release因为最开始没有看官网的推荐版本兼容配置使用onnx1.8 搭配 TensorRT 8.6.1.6报错
TENSORRT_LIBRARY_MYELIN tensorrt版本不匹配
https://github.com/onnx/onnx-tensorrt/issues/355
patch报错 /bin/sh: Patch_EXECUTABLE-NOTFOUND: command not found 原因是/usr/bin/patch缺少 这个可执行文件联网可直接install或者自己编译
…/protobuf-build/protoc-3.21.12.0: /usr/local/gcc-5.4.0/lib64/libstdc.so.6: version GLIBCXX_3.4.29’ not found (required by …/protobuf-build/protoc-3.21.12.0)
cmake报错GILBC因为没有把gcc14的库路径指定连接 不需要升级gcc这里只是因为没有加入LD_LIBRARY_PATH
export LD_LIBRARY_PATH/usr/local/gcc-11.4/lib64:$LD_LIBRARY_PATHerror: ‘virtual void nvinfer1::IGpuAllocator::free(void*)’ is deprecated [-Werrordeprecated-declarations]
error: ‘IPluginV2’ is deprecated [-Werrordeprecated-declarations]
耗时最久的报错因为trt源码的某些函数已经废弃而编译目标时候把废弃当作错误 解决办法就是手动修改cmake下图可以看到对应编译失败的目标文件名字全局找到对应的cmake
给对应的目标文件的编译选项都忽略废弃报错
修改之后编译就没问题了后面打包制作python包安装对应的两个包就好 ModuleNotFoundError: No module named ‘packaging’ No module named ‘wheel’
编译成功如下
在 onnxruntime/build/Linux/Release/dist 下有onnxruntime_gpu-1.15.1-cp38-cp38-linux_x86_64.whl包直接安装即可
pip3 install onnxruntime_gpu-1.15.1-cp38-cp38-linux_x86_64.whl 之后python中可以导入成功安装。
因为-Werrordeprecated-declarations 这个问题尝试过更高版本的onnx对应的报错和解决方法如下不再继续深入研究其他版本。
1.16.2版本 cpu部分指令集开发机链接器太旧
1.16.1版本 [Build] Eigen hash mismatch https://github.com/microsoft/onnxruntime/issues/18286