AI推理卡/tensorRT c++

news2024/11/23 20:57:16

#####AI 推理卡:我的需求是x86上Nvidia显卡训练好的模型 用在AI推理卡上进行推理###

AI 推理卡

环境配置

安装ubuntu系统、AI推理卡环境

1,安装ubuntu20.04.4  过程忽略,网上教程很多。

2,ubuntu20.04.4设置root登录,参考 Ubuntu系统设置默认用户为root并自动登录(详解)_偷心的小白的博客-CSDN博客_ubuntu默认root登录

3,ubuntu20.04.4网络配置

发现可以连接内网,但连接不了外网。通过ifconfig 先查到我的网卡名称,我的是enp6s0。看大家说要编辑/etc/systemd/resolved.conf 文件,增加 DNS=114.114.114.114 以及 DNS=8.8.8.8然而并无作用。我的做法是 修改/etc/netplan/ 下面的 .yaml文件,下图是原本的样子:

 通过上面的命令可以看到这台电脑的内网IP是10.10.XXXXX9/24,于是我将yaml文件修改为下面的样子,即addresses改成这台机器的内网IP,网关大家可以通过 route 命令查看,然后填在下方即可:

 改完 netplan apply 一下,不放心再重启一次即可看到 ping 内网以及外网均OK了。

4,设置远程(这步可以不做,我是想通过远程操作这台主机,因为声音太吵了)

我按照Ubuntu20.04桌面共享-爱码网 ubuntu20.10设置桌面共享的三种方式_xingyu97的博客-CSDN博客_ubuntu桌面共享 这些流程操作发现sharing--Screen Sharing的使能按钮打不开,无法打到On状态:

究其原因是蓝色处的网络没正确自动显示,导致使用VNC Viewer连接时显示“The connection was refused by the computer”。查了下按照大家说的将下面设置为自动:

然后并不起作用。后面找了很久xorg - Ubuntu 18.04.1 LTS Can't Enable Screen Sharing - Ask Ubuntu 终于找到这个解决办法:

cd /etc/NetworkManager
save NetworkManager.conf to NetworkManager.orig (as a backup)
sudo vi NetworkManager.conf
Change managed=false to managed=true

sudo service network-manager restart
cd /etc/netplan
sudo vi xxxxxxxxxx.yaml

Change renderer under networt from networkd to NetworkManager like below:

renderer: NetworkManager

save
sudo netplan apply
I had then to restart the computer for this to be effective.Then you can go to Settings » Sharing » Screen Sharing and set it to On

 可以看到现在已经可以正常开启。重启后,开机时会出现下图红色的部分failed,不用在意。通过VNC Viewer连接大家可以看到已经连接上了这台主机:如果出现下面的提示,则直接sudo gsettings set org.gnome.Vino require-encryption false  即可:

Unable to connect to VNC Server using your chosen security
setting. Either upgrade VNC Server to a more recent version from
RealVNC, or select a weaker level of encryption.

5,python安装

网上教程很多,如下python2和python3都安装了:

6,固件与驱动的安装大家根据官方文档《NPU驱动和固件安装指南》进行即可,参考网址华为 Atlas 300I Pro 配置手册、产品文档、PDF - 华为即可,大家可以直接将技术文档都下载下来。安装完毕后大家可以 npu-smi info -t board -i NPU ID 命令查询是可以看到的:

由图可知我安装的驱动是22.0.2.3,固件是1.82.22.5.220,处理器是310P3即710

7,CANN软件包

参考步骤5中给出的链接文档《CANN软件安装指南》安装完毕(CANN已经涵盖了引擎nnrt,故不用另外装),如下所示:

所以对于我的需求而言,不用另外安装其他CANN相关的软件包。这个set_env.sh里是配置环境变量,所以一定要运行生效哦。不过我的这个版本里面没有配置ATC:

所以要增加ATC的环境变量如下所示:使其生效,即将source /home/.../set_env.sh 添加到Home/.bashrc的最后一行,再source一下即可。然后在终端输入 atc 就会显示:ATC start working now,please wait for a moment 证明环境生效

8,安装opencv

安装opencv依赖库(可选,也可以先不装)

 已知模型推理

使用的是华为提供的模型,参考网址昇腾社区-官网丨昇腾万里 让智能无所不及 或者按照昇腾社区-官网丨昇腾万里 让智能无所不及 按照这个步骤进行,模型的数据集需要我们自己下载,大家可以在ImageNet Object Localization Challenge | Kaggle kaggle上下载相关的数据集。这个网站要注册,我就直接在 百度网盘 请输入提取码  提取码:ux59  这里下载的Imagenet2012 Jpeg格式数据集ILSVRC2012_img_val和Label文件ILSVRC2012_devkit_t12。下完数据集与标签后,看到 ATC ShuffleNetv1(FP16) :昇腾社区-官网丨昇腾万里 让智能无所不及和  ATC Inceptionv4(FP16):昇腾社区-官网丨昇腾万里 让智能无所不及 这两个模型推理都是用的Imagenet2012这个数据集。按照刚刚给的模型链接下的步骤操作后,报拼写错误如下所示:

终于知道原因了,原来刚刚官网下载的模型解压后有空格,所以另外保证总路径没有空格即可:

 可以看到模型转换成功了。但下一步build.sh失败,哪怕我将include路径也添加到环境变量中:所以干脆在cmake文件中将绝对路径加进去:

终于成功。

参考网址:GitHub - Ascend/samples samples: CANN Samples - Gitee.com  昇腾社区-官网丨昇腾万里 让智能无所不及 samples: CANN Samples

########################以下是TensorRT###########################

tensorRT

首先阅读了大神的一些文章:

https://blog.csdn.net/weixin_45252450/article/details/123777166

https://zhuanlan.zhihu.com/p/547970261 了解tensorRT
https://zhuanlan.zhihu.com/p/547966550 了解tensorRT
https://zhuanlan.zhihu.com/p/555827562 tensorRT生态链

https://zhuanlan.zhihu.com/p/408220584 tensorRT C++部署
https://zhuanlan.zhihu.com/p/344810135 tensorRT C++部署
https://zhuanlan.zhihu.com/p/555829505 tensorRT runtime c++ API,反序列化引擎进行推理
https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html#perform_inference_c
https://zhuanlan.zhihu.com/p/553367059 tensorRT性能分析与性能优化方法

https://zhuanlan.zhihu.com/p/552537009 在tensorRT中使用DLA(固定层加速引擎)
https://zhuanlan.zhihu.com/p/551268145 tensorRT自定义层
https://zhuanlan.zhihu.com/p/481960581 tensorRT动态batch
https://zhuanlan.zhihu.com/p/407563724 YOLOX网络的序列化 C++

tensorRT不能直接跨平台/显卡/tensorrt版本,如果序列化生成engine的平台/显卡/tensorrt版本与反序列化加载engine并进行推理的平台/显卡/tensorrt相同,则没问题;否则要在后者中重新序列化一次。

https://blog.csdn.net/wq_0708/article/details/121248152
https://blog.csdn.net/u013230291/article/details/119183416
https://blog.csdn.net/weixin_46659749/article/details/119980122

https://blog.csdn.net/qq_42944019/article/details/126857775

https://zhuanlan.zhihu.com/p/358135157 从论文复现网络

看过上面大神的文章后,知道我要做的就是如下图红色步骤:

然后我可能是在Jetson AGX Xavier服务器上实现,关于这个服务器可以Jetson AGX Xavier - 随笔分类 - 格格_gloria - 博客园 https://blog.csdn.net/huiyuanliyan/category_8689841.html 通过这两个大神的博客了解下。

~~~~~~~~~~~~~~~~~~~~~~ Jetson AGX Xavier安装CUDA~~~~~~~~~~~~~~~~~~~~~

使用JetPack SDK Manager刷机(通过另一台正常的ubuntu系统作为host,给这个Jetson平台刷系统)部分忽略,因为我拿到手时这台机已刷完ubuntu 18.04.6系统了。

然后我原本准备按之前我的记录ubuntu下tensorflow 2.0/2.5 c++动态库编译gpu版本_元气少女缘结神的博客-CSDN博客_ubuntu 查看c++版本给这台机装TF-GPU C++,发现不行,因为装CUDA时需要查看兼容性如下Release Notes :: CUDA Toolkit Documentation :可以看到要与系统内核匹配

 而通过命令uname -a 可以看到Jetson平台的kernel并不是x86_64而是 linux ubuntu 4.9.140-tegra,所以就不能按上面的平常的步骤去安装CUDA了。

~~~~~~~~~~~~~~~~~~Jetson AGX Xavier安装TF C++~~~~~~~~~~~~~~~~~~~~~~~~

参考Nvidia Jetson Xavier配置tensorflow1.13.1 C++ API_清~的博客-CSDN博客 来尝试:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

入门系列 - Git基本操作

本篇文章,是基于我自用Linux系统中的自定义文件夹“test_rep”,当做示例演示 具体Git仓库的目录在:/usr/local/git/test_rep Git基本操作 之前我们已经创建了 Git 版本库了,下一步我们将进行一些 Git 的基本操作。 有关 Git 版本…

微服务框架 SpringCloud微服务架构 28 数据同步 28.3 声明队列和交换机

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构28 数据同步28.3 声明队列和交换机28.3.1 直接开干28 数据同步 28.3 声明…

【Mybatis】一级缓存和二级缓存

【Mybatis】一级缓存和二级缓存(一)为什么需要缓存(二)一级缓存(在SqlSession上缓存)【1】示例代码【2】增删改操作会刷新一级缓存【3】一级缓存流程总结(1)一级缓存简介&#xff08…

多点DMALL冲刺港股:年亏损超9亿 腾讯IDG金蝶是股东

雷递网 雷建平 12月8日多点数智有限公司(简称:“多点数智”)日前递交招股书,准备在港交所上市。年亏损超9亿多点DMALL成立于2015年,为本地零售业提供基于云的一站式端到端的数字零售SaaS平台。多点DMALL提供的服务包括…

搜索是过拟合的生成;生成是欠拟合的搜索

神经搜索的最大竞争者可能来自于一种甚至不需要向量嵌入作为中间表示的技术 —— 一种直接返回你想要的结果的端到端技术。"那么,谁将是神经搜索最大的竞争对手?"本文作者:肖涵,Jina AI 创始人兼 CEO 谁将是神经搜索最大…

Redis框架(二):SpringDataRedis入门和序列化方式解决内存占用问题

SpringDataRedis入门和序列化方式解决内存占用问题基本介绍实例Demo自定义RedisTemplate序列化自定义的RestTemplate的内存占用问题StringRedisTemplate解决内存占用问题总结SpringCloud章节复习已经过去,新的章节Redis开始了,这个章节中将会回顾Redis 主…

c#入门-可选参数,不定长参数

可选参数 声明可选参数 函数的参数在声明时,可以同时为其赋值一个常量。 但是所有这样的参数,需要在所有必填参数的后面。 void Any(int i 10) {Console.WriteLine(i); }使用可选参数 稍后,在调用函数时,你可以不填可选参数。…

1 - 线程池的基础用法

参考:线程池的基本用法 - 简书 1、为什么要用线程池? 在java中,开启线程的方式一般分为以下三种: a. 继承Thread,实现其run方法; b. 实现Runnabler接口,通过Thread来实现线程; …

法的概念与大纲

一、法的概念 法是由国家制定或认可并由国家强制力保证实施的,反映特定物质生活条件所决定的统治阶级意志,以权利和义务为内容,以确认、保护和发展对统治阶级有利的社会关系和社会秩序为目的的规范系统。 二、法的特征 规范性 国家意志性 权…

微信恢复大师花了200多,套路一环接一环!

数据恢复本是一个科技进步的体现,让误操作导致的重要数据可以找回来。但是近年来数据恢复跟诈骗挂钩,数据恢复本是利好的事情,为什么会跟诈骗挂钩。究竟是什么原因呢?最近小编发现,百度推荐词出现:“微信恢…

Neural Network-神经网络算法本质

1. Word2vec~single CBOW算法推导BP word2vec主要实现方式有:skip-gram和CBOW。 CBOW的目的是根据上下文contextual words来预测当前中心词的概率,且上下文所有单词对当前中心词出现的概率影响权重是一样的,如在袋子中取词,取出…

痞子衡嵌入式:国内外串行NOR Flash厂商官网Cross Reference功能使用体验

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家讲的是国内外串行NOR Flash厂商官网Cross Reference功能。 串行 NOR Flash 是一个相对发展稳定的市场,目前全球市场约 90% 的份额被中国的三家厂商(Winbond华邦/MXIC旺宏/GigaDevice兆…

Java入门教程(26)——继承

文章目录1.继承的作用2.继承的关键字3.继承的特点4.实例5.instanceof 运算符继承是面向对象三大特征之一,继承可以让我们减少代码量,实现类的复用1.继承的作用 代码复用,更加容易实现类的扩展方便建模 2.继承的关键字 extends,…

网站都变灰了,几行代码可以实现

前言 这两天,我们经常逛的好多网站、app首页都变灰了,原因大家应该都知道了 网站变灰 ①B站 ②爱奇艺 ③ 腾讯视频 ④ csdn ⑤百度 怎么实现的呢? 难道这些网站开发商在网站开发的时候都准备一套灰色主题的UI么? 好奇心…

端水or信仰?ChatGPT“点评”Web3未来

近日,OpenAI发布了人工智能聊天机器人模型 ChatGPT,产品自11月30日发布到现在仅一周时间,就积累了上百万用户,广受大家好评。有人让它写代码,有人拿高考题目考验它,这些“难题”似乎都难不倒它,…

vue3 教程(上)

学 vue3 通过官方文档更详细,不过阅读本博客,可以更容易理解,且帮你速成! 官方文档(记得将API风格偏好切换为 组合式 否则你学的是vue2) https://cn.vuejs.org/guide/introduction.html 学习前的准备 创建…

[synchronized ]关键字详解

目录 1.synchronized 特性 1.1互斥性 1.2内存刷新 1.3可重入 2.Java 标准库中的线程安全类 3.死锁问题 3.1 一个线程,一把锁 3.2 两个线程,两把锁 3.3 多个线程,多把锁 4.死锁的条件 1.synchronized 特性 1.1互斥性 synchronized 关键字会起到互斥效果,当某个线程执…

【C语言】字符串函数(一)

目录 一、strlen函数(计算字符串长度) 1、strlen函数的用途 2、strlen函数的使用 3、strlen函数的模拟实现 二、strcpy函数(字符串拷贝) 1、strcpy函数的用途 2、strcpy函数的使用 3、strcpy函数的模拟实现 三、strcat函数(字符串追加) 1、strcat函数的用途 2、strcat函数的使用…

【JavaSE】接口剩余内容

目录 1、接口使用实例 📕逐步分析学生数组排序的写法 ✨思路: ✨代码实现 ✨弊端 📕、改进 改进思路: 代码实现: 2、Cloneable接口和深拷贝 2.1、cloneable接口的作用 2.2、深拷贝和浅拷贝 2.2.1、浅拷贝 …

yum安装openldap2.4.44,并配置增量复制(Delta-syncrepl)环境

本文是在centos7环境下通过yum安装openldap2.4.44,并配置增量复制(Delta-syncrepl)环境 官网对于增量复制介绍:https://www.openldap.org/doc/admin24/replication.html#Delta-syncrepl%20replication Delta-syncrepl 是 syncrep…