离线编译 onnxruntime-with-tensortRT

记录为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(要求gcc>7)

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/lib64

export 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-error"

export 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_version=11.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_PATH

error: ‘virtual void nvinfer1::IGpuAllocator::free(void*)’ is deprecated [-Werror=deprecated-declarations]

error: ‘IPluginV2’ is deprecated [-Werror=deprecated-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中可以导入,成功安装。
在这里插入图片描述

因为-Werror=deprecated-declarations 这个问题,尝试过更高版本的onnx,对应的报错和解决方法如下,不再继续深入研究其他版本。

1.16.2版本
cpu部分指令集,开发机链接器太旧
在这里插入图片描述

1.16.1版本
[Build] Eigen hash mismatch
https://github.com/microsoft/onnxruntime/issues/18286
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/345206.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中国大模型迎来“95后” 百度奖学金发掘百位“未来AI技术领袖”

在人工智能掀起的科技革命和产业变革浪潮下,大模型成为最受关注的研究领域。1月22日,第十一届百度奖学金颁奖典礼在北京举行,来自全球顶尖高校及科研机构的10位“未来AI技术领袖”脱颖而出,他们平均年龄仅27岁,其中8人…

关于Redis的最常见的十道面试题-分布式锁和布隆过滤器

面试题一:有序集合在日常工作中的使用场景有哪些? 有序集合在工作中的应用场景有很多,例如“ 排行榜:可以将用户的得分作为有序集合的分支,用户的ID作为成员,通过有序集合的排名功能可以得到用户的排名信…

OpenCV第 2 课 OpenCV 环境搭建

文章目录 第 2 课 OpenCV 环境搭建1.安装 Numpy2.从 Ubuntu 存储库安装 OpenCV3.验证 OpenCV 安装 第 2 课 OpenCV 环境搭建 1.安装 Numpy 每一张图像都有很多个像素点,这也导致了程序中会涉及大量的数组处理。Numpy 是一个 Python 的拓展库,它对多维数…

MySQL怎么根据当前时间获取连续十二个月统计数据

需求 在某些业务场景中,需要后台获取连续十二个月的统计数据,如下图: 解决方式 1、创建一张临时表,在表中插入序号数据 该表的最大数量决定统计返回的最大条数 CREATE TABLE sys_redundancy (id bigint(22) NOT NULL AUTO_I…

YOLOv7调用摄像头检测报错解决

yolov7detect.py文件调用本地摄像头,把source参数设为0 parser.add_argument(--source, typestr, default0, helpsource) # file/folder, 0 for webcam 报错:cv2.error: OpenCV(3.4.2) 一堆地址:The function is not implemented. Rebuild the library…

【数据分析】matplotlib、numpy、pandas速通

教程链接:【python教程】数据分析——numpy、pandas、matplotlib 资料:https://github.com/TheisTrue/DataAnalysis 1 matplotlib 官网链接:可查询各种图的使用及代码 对比常用统计图 1.1 折线图 (1)引入 from …

时间序列大模型:TimeGPT

论文:https://arxiv.org/pdf/2310.03589.pdf TimeGPT,这是第一个用于时间序列的基础模型,能够为训练期间未见过的多样化数据集生成准确的预测。 大规模时间序列模型通过利用当代深度学习进步的能力,使精确预测和减少不确定性成为…

力扣hot100 排序链表 归并排序 递归

Problem: 148. 排序链表 👩‍🏫 参考 💖 归并排序(递归) ⏰ 时间复杂度: O ( n ) O(n) O(n) 🌎 空间复杂度: O ( n ) O(n) O(n) /*** Definition for singly-linked list.* public class ListNode {*…

【Go学习】Ginkgo测试框架学习实践 + 问题记录 + 怎么解决(0)

1、ginkgo测试框架介绍:https://onsi.github.io/ginkgo/ 2、重点是学习实践 问题记录 怎么解决 3、送福利:国内好用的ChatGpt有很多,比如:天工、文心一言、讯飞星火、通义万相等 1. 安装 xxxmacdeMacBook-Pro-3  /Volumes/mac…

Linux驱动程序

驱动程序框架: dev_t dev_num; struct file_operations fops {.open //define function.read //define function.write //define function };struct cdev dev;demo_init() { MKDEV(); cdev_init(); cdev_add(); register_chrdev_region(); //class_create(); //device…

opendds之GUID理解

在opendds的调试日志中大量充斥各种entity的guid&#xff0c;如下所示&#xff1a; (838182|838209) DataLink::release_reservations() - releasing association local: 0103bab5.84e0eba6.ca269681.01000004(b02bd8da) <--> with remote 0103bab5.84e0eba6.a56d6aff.01…

自定义错误页面在Spring Boot中的实现

引言 在SpringBoot中&#xff0c;常用的异常处理有两种&#xff1a;一种是 BasicErrorController&#xff0c;另一种是 ControllerAdvice。BasicErrorController 用于处理非Controller抛出的异常&#xff0c;而ControllerAdvice 用于处理Controller抛出的异常&#xff0c;对于…

2024 年 7 个 Web 前端开发趋势

希腊哲学家赫拉克利特认为&#xff0c;变化是生命中唯一不变的东西。这句话适用于我们的个人生活、行业和职业领域。 尤其是前端开发领域&#xff0c;新技术、开发趋势、库和框架不断涌现&#xff0c;变化并不陌生。最近发生的一些事件正在改变开发人员构建网站和 Web 应用的方…

【前端web入门第一天】01 开发环境、HTML基本语法文本标签

文章目录: 1. 准备开发环境 1.1 vs Code基本使用 2.HTML文本标签 2.1 标签语法2.2 HTML基本骨架2.3 标签的关系2.4 注释2.5 标题标签2.6 段落标签2.7 换行与水平线标签2.8 文本格式化标签 1. 准备开发环境 VSCode与谷歌浏览器离线版,安装包评论区自提. VSCode默认安装位置:C…

动态IP与静态IP有何区别?怎么使用选择?

动态代理IP和静态代理IP在跨境业务中具有非常广泛的实用性&#xff0c;但仍然有非常多小白选手并不清楚什么场景适合用哪一类IP&#xff0c;哪一中代理IP类型更适合你&#xff1f;其实他们各有其优点和缺点&#xff0c;为了使您的网络营销、社媒推广、跨境电商运营、网络抓取尽…

【AI视野·今日NLP 自然语言处理论文速览 第七十五期】Thu, 11 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Thu, 11 Jan 2024 Totally 36 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Leveraging Print Debugging to Improve Code Generation in Large Language Models Authors Xueyu Hu, Kun K…

跟着我学Python进阶篇:04. 错误和异常

往期文章 跟着我学Python基础篇&#xff1a;01.初露端倪 跟着我学Python基础篇&#xff1a;02.数字与字符串编程 跟着我学Python基础篇&#xff1a;03.选择结构 跟着我学Python基础篇&#xff1a;04.循环 跟着我学Python基础篇&#xff1a;05.函数 跟着我学Python基础篇&#…

03 SpringBoot实战 -微头条之首页门户模块(跳转某页面自动展示所有信息+根据hid查询文章全文并用乐观锁修改阅读量)

1.1 自动展示所有信息 需求描述: 进入新闻首页portal/findAllType, 自动返回所有栏目名称和id 接口描述 url地址&#xff1a;portal/findAllTypes 请求方式&#xff1a;get 请求参数&#xff1a;无 响应数据&#xff1a; 成功 {"code":"200","mes…

SPE单对以太网线束测试

根据IEC63171-1&#xff0c;严格执行此标准&#xff0c;进行测试&#xff1a; 两端压接的LC端子&#xff0c;有人会有疑问为什么以上测试参数的DC LOOP电阻&#xff0c;那么高&#xff0c;今天就此来探讨一下&#xff1a; 1&#xff0c;没有2m的线做基准测试&#xff1b; 2&a…

Win11在某些时候想要关闭windows安全中心应该怎么做,安装navicat事例

比如在安装navicat时&#xff0c;需要注册&#xff0c;注册机被删&#xff0c;就是windows安全中心干的&#xff0c;所以要想办法&#xff0c;不让他把注册机删掉&#xff0c;那么这里有一个比较巧妙的办法&#xff0c;就使用排除项&#xff0c;关闭 实时保护&#xff0c; 添…