#####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博客 来尝试: