找回密码
 加入我们
搜索
      
查看: 20852|回复: 31

[电脑] intel OpenVINO深度学习框架搭建+蝰蛇峡谷A770M推理测试

[复制链接]
发表于 2022-11-24 10:26 | 显示全部楼层 |阅读模式
本帖最后由 gwha2 于 2022-11-24 10:26 编辑

intel NUC12 蝰蛇峡谷入手已经有不短的时间了,不过在网上并没有看到蝰蛇峡谷的深度学习性能测试啊,因为这张卡单精度浮点还挺高,而且显存也大,所以我也挺想看看这张卡在深度学习上的表现


我之前就已经做过CUDA和ROCM的深度学习介绍,Nv和AMD两家对自己的深度学习平台都非常上心,而intel也是有自己的深度学习加速软件包的。作为最早推出神经网络加速棒的公司,intel在很早之前就推出了自己的OpenVINO加速包,这个工具可以适配所有的intel CPU GPU(iGPU) 和专门的VPU。而且面向全平台,除了unix内核的系统之外,还专门对win系统提供了支持


(世界名画,请选择你的英雄.jpg)

_1.png


intel的OpenVINO对蝰蛇峡谷的12700H和Xe核显的肯定是支持的,毕竟CPU和iGPU这俩的支持已经做了很多年了,而蝰蛇峡谷的A770M作为intel自家在今年才推出的一张独立显卡,我还是挺好奇他是不是马上就支持了自家的OpenVINO的(毕竟某A自己的ROCM更新Navi支持都是6800XT才给,逊!),所以我最近就来尝试了一下intel的OpenVINO在自家独立显卡上的表现,顺便做个简单的教程,让有兴趣的朋友也来试试OpenVINO的神经网络加速


_1100.jpg


简介


NUC12蝰蛇峡谷是intel在12代中定位为enthusiast的主机,体积2.5L,小于绝大多数独显ITX,也是A770M第一次在NUC中出场


_1100a.jpg


蝰蛇峡谷这IO也是完美继承了NUC的特性,非常充裕,正反两面各种接口,雷电、读卡器、2.5G网口,还有HDMI+2DP的视频接口


_1190076.jpg


_1190077.jpg


机器的散热也是非常不错的,单烤CPU的时候有80W的持续功耗,性能释放比笔记本要好不少


_1190078.jpg


_1190083d.jpg


_1190095.jpg


作为一个定位为enthusiast的PC,蝰蛇峡谷还专门给内置了一张ax1690i的无线网卡,属于第一梯队的WIFI6E网卡


_1190096.jpg


CPUID信息,蝰蛇峡谷推出只有i7 12700H的版本,有可能是NUC12第一次出这个机型的原因,内存仍然是使用的SODIMM的DDR4,在配置成本方面做出了一定的让步


_1190096a.png


理论性能测试,A770M如果和Xe核显的构架能直接对比的话,那么按照流处理器的组数对比,单精度的比例应该是16/3,和实际测试的结果是相似的


_1190096b.png


屏幕截图 2022-09-27 133208.jpg


A770M还加入了专门的光追单元,具有不错的光追性能


屏幕截图 2022-09-27 133732.jpg


屏幕截图 2022-09-27 141206.jpg


intel还提供了一个NUC software studio,可以用来管理NUC,空间占用小,功能相当完善,灯光和详细的性能调优全都可以通过它控制


屏幕截图 2022-09-27 234338a.png


屏幕截图 2022-09-27 234338c.png


屏幕截图 2022-09-27 234338ca.png


屏幕截图 2022-09-27 234338cb.png


OpenVINO搭建


说道深度学习,很多人都觉得是玄之又玄的东西,然而对于很多人来说,无非是针对某种输入输出的线性代数的组合罢了。而就在这其中,会涉及到非常庞大的矩阵乘法运算量,而CPU对这样的简单数值乘法并没有很好的办法并行处理,所以此时显卡或者神经网络加速VPU就登上了舞台,虽然他们每一个流处理器能针对的问题都不能太复杂,但是对于矩阵乘法中的数值乘法来说正好合适,而且在有独立显存的显卡上还能明显降低CPU的IO压力,因此一般在推理神经网络的时候我们都会选择显卡或者VPU


而三家硬件厂商所制定的标准都不尽相同,除了最著名的CUDA之外,AMD的ROCM基本上是本着替代CUDA的目的而设计的,所以能在某些场景中直接替换CUDA。但是intel的OpenVINO则是基本独立的生态,这是因为intel的神经网络加速棒起步很早而且是独立的硬件,而且作为神经网络加速的软件包,它的主要作用集中在推理,而不是训练,这和Nv的某些部署推理卡很像


随着硬件和软件的不断进化,OpenVINO在2022.1的时候也迎来一次大更新,同时也简化了大部分安装流程,目前的OpenVINO已经可以脱离独立安装包,就像cudatoolkit一样直接装入虚拟环境


屏幕截图 2022-11-20 121844.png


OpenVINO的安装比较简单,我推荐使用python作为开发语言,因为C++版本的仍然是独立安装包,不如python虚拟环境方便。框架方面随便选择,对应的框架会影响虚拟环境中的支持,选择自己平时用的最多的开发框架就好了


屏幕截图 2022-11-20 122021.png


官方教程里面使用的是默认Python作为管理工具,我建议是使用conda作为包管理工具,然后在conda环境里面使用pip安装(确信),并且切换到清华源,这样网速情况会好很多


OpenVINO的Python环境安装确实是三家当中最简单的,如果已经装好了了pycharm和conda的话,就只需要创建一个新环境和一条命令就能安装完成


屏幕截图 2022-11-20 122047.png



OpenVINO模型转换+测试


作为一个独立的加速框架,OpenVINO使用的模型是IR模型,而不能直接使用其他框架的模型,因此在推理加速的时候需要对模型提前转化。如果想看比较详细原理的朋友可以直接查阅文档https://docs.openvino.ai/latest/index.html


我这里提供一个比较简明的方法来转化pytorch的模型,基本是按照文档上的方法转化而来的。首先我们看到默认的OpenVINO并没有提供mo的转化pytorch模型的方法,所以我们需要先把pytorch模型转化为onnx模型,然后再转化为一个ir模型


屏幕截图 2022-11-20 135028.png


所以我们写一段简单的代码,这段代码就是将一个pytorch模型加载出来,然后用一个dummy模拟它的推理过程,然后用onnx保存这个一个过程。这样保存的模型对任意的torch模型都是适用的,只要我们对他有明确的定义,而且参数是我们想要的,其中的方法onnx都能识别出来。如果需要转换其他框架的模型,也可以在文档中找到对应的方法,我就不过多演示了


屏幕截图 2022-11-20 140116.png


我这一次选用了一个非常常规的ResNet-50模型,采用最新的torchvision预训练参数,这样大家自己如果要对比的话也可以参考。现在这个模型的参数已经被保存到了onnx模型里面,我们可以利用OpenVINO预制的mo方法,把他轻松地转化为ir模型,格式为.xml


屏幕截图 2022-11-20 140148.png


屏幕截图 2022-11-20 140341.png


这样一个模型就能使用OpenVINO对他进行推理加速了。OpenVINO内置了一个benchmark方法,能使用一个转化好的IR模型对当前的硬件性能进行测试,这个测试其实就是模拟推理过程,测试在不同情况下的IO和Throughput情况


https://docs.openvino.ai/latest/openvino_inference_engine_tools_benchmark_tool_README.html#advanced-usage


首先来测试一下CPU的性能,可以看到Throughput的大小为107.6FPS,按照定义,OpenVINO加速之后,CPU每秒平均处理了107.6张标准的[1,3,224,224]的resnet50输入。但是我们也需要注意的是,此时的CPU被完全占满,这也是我们在模型部署时最不想看到的情况。因为除了推理,CPU还需要被用于一些其他功能,比如基础的IO和扩展的视觉传感器等等跟数据传入相关的设备


屏幕截图 2022-11-20 140530.png


在小打小闹的开发部署当中,最常见的就是一个神经网络加速工具和一个视觉传感器比如intel realsense,然后联合到一起做一个人脸识别或者姿势识别,此时如果直接使用CPU进行推理,那视觉传感器在GUI上的反馈就会产生明显的延迟,使用体验急速下降


不过如果我们小小的修改一下使用的对象,把加速工具变成Xe核显,那么情况就会大为改观,此时Xe核显被占用满,但是CPU仅仅使用了20%,这些多出的部分就能被分给视觉传感器或者其他功能,不会导致流畅度下降。并且我们可以看到,Xe核显的神经网络推理速度是明显快于CPU的,达到了136FPS,而功耗远远低于纯CPU推理,也可以证明GPU加速的重要性


屏幕截图 2022-11-20 140649.png


屏幕截图 2022-11-20 140817.png


如果手中有一个intel 12代core的笔记本,那么刚才提到的CPU+Xe核显加速推理也是可以轻松实现的。而我们现在手中可是有intel最新科技Arc A770M显卡!如果使用独立显卡进行加速,那么速度会再上一个台阶


屏幕截图 2022-11-20 141742.png


屏蔽Xe核显,然后直接使用A770M作为单独的神经网络加速工具,我们可以看到此时A770M的性能监测基本没有什么起伏,而显存占用能说明模型确实是导入了显卡当中,这和一般的显卡推理过程的性能需求时比较相似的。A770M的测试结果达到了828.7FPS,这个Throughput的性能明显远超CPU+Xe核显的总和,而且按照单精度浮点的量来计算,A770M仍然高于Xe核显的16/3倍,也说明A770M在神经网络加速方面应该是经过了单独优化的


屏幕截图 2022-11-20 141901.png


之后又测试了一下小batchsize快速响应的throughput,成绩仍然超过了754FPS,有这个推理速度一般来说判别模型是完全没有问题的,即使模型的flops需求量增大,或者参数量膨胀,A770M的性能和显存应该都能轻松撑住这一类需求


屏幕截图 2022-11-20 142157.png


屏幕截图 2022-11-20 142436.png


屏幕截图 2022-11-20 142733.png


关于视频编辑与渲染


除了深度学习推理之外,蝰蛇峡谷另一个非常生产力的功能就是A770M的编码解码功能,如果说蝰蛇峡谷给生产力能带来什么革命的话,那肯定就是他是人类有史以来第一块超大号视频解码器了。在PCMark10的测试小分中就能看出来,虽然办公软件和上网的得分和一般的12代笔记本没差啥,但是在视频+渲染和照片编辑这块得分直接飞天,差点有办公软件得分两倍高


屏幕截图 2022-11-20 142733a.png


最常见的视频编辑应用就是Pr,用A770M加速之后能明显加快导出时间,4K 60的视频10min的视频总共花了55min,剪辑的过程里即时回放也完全不会有卡顿,这个时间我觉得是受到了编码格式的影响,如果换H.265应该会更快效果更好。还有一个挺有吸引力的feature是A770M的AV1解码支持,这是目前最新的视频编解码格式


屏幕截图 2022-11-20 142733b.jpg


屏幕截图 2022-11-20 142733c.jpg


Vray渲染测试,相对而言更封闭一些,所以蝰蛇峡谷只有纯CPU的测试结果


屏幕截图 2022-11-20 150000.png


cinebenchR20和R23其实就是cinema4D渲染器的测试工具之中的两个,不管是单核还是多核,蝰蛇峡谷的的得分都还不错


屏幕截图 2022-11-20 161635.jpg


屏幕截图 2022-11-20 170113.jpg


还有一个测试是D5渲染器,也是非常常见的渲染工具,自带的检测工具对A770M的评价是推荐等级以上,在测试中表现称得上还行,耗时14.5min,帧数13.58FPS,跟桌面的A770差别不是很大,不过感觉还是有不小的优化空间


屏幕截图 2022-11-20 170113a.png


屏幕截图 2022-11-20 170113b.png


屏幕截图 2022-11-20 185332.jpg


屏幕截图 2022-11-20 190000.png


总结



关于OpenVINO,如果目的只是玩一玩深度学习模型,个人感觉OpenVINO确实非常便捷,只需要一个单独的虚拟环境和一行代码就能轻松安装,并且在WIN上也能轻松适配。OpenVINO的优势其实也包含他本身作为一个部署非常简单的推理加速框架,又能完美适配蝰蛇峡谷这个纯intel CPU +iGPU+GPU平台。很多场景下我们说到深度学习都会理解为模型训练,但实际上在部署中推理的性能需求远低于训练过程,OpenVINO配合A770M正好能把这张独显的推理性能发挥完善,成为具有推理优势的平台,这种情况下蝰蛇峡谷就不仅能作为一个生产力工具,而且能作为一个具有相当扩展性的深度学习部署终端,蝰蛇峡谷本身的IO优势在此时也能比较好的显现出来。要是能把NovelAI的生成模型转换成IR结构的,说不定还能见到蝰蛇上部署的AI绘画生成器!在OpenVINO 2022.2开始,这个框架的backward能力也得到了相当大的优化,所以也算是一个比较强的IR模型训练框架了


不过OpenVINO毕竟不能直接使用其他深度学习框架的模型,到IR模型的转换始终会给使用上带来一些麻烦,如果intel在独显完全铺开之后做一个类似于CUDA或者ROCM这类能直接和tf或者torch结合使用的计算构架,那就能让Arc独显的深度学习通用性再上一个台阶。届时蝰蛇峡谷这个规模的NUC,就正好能作为深度学习/视频创作生产力平台,更具吸引力



最后送上一张图,谢谢大家


在吗.jpg









评分

参与人数 4邪恶指数 +240 门户文章 +1 收起 理由
ilas + 200
nApoleon + 1
TernenceS + 20
hudizhoutube + 20

查看全部评分

发表于 2022-11-24 14:55 | 显示全部楼层
推理测试,电脑界的柯南
发表于 2022-11-24 15:16 | 显示全部楼层
骷髅越来越大了
发表于 2022-11-25 08:46 | 显示全部楼层
好文章,顶楼主。
 楼主| 发表于 2022-11-25 09:11 | 显示全部楼层

NUC EXTREME上的骷髅越来越小了
 楼主| 发表于 2022-11-25 09:12 | 显示全部楼层
reinhard_x 发表于 2022-11-24 14:55
推理测试,电脑界的柯南

GroundTruth只有1个!
发表于 2022-11-25 09:42 | 显示全部楼层
就算给我 也不知道能干点啥事
发表于 2022-11-25 09:56 | 显示全部楼层
最近好像conda清华源不是很稳定,昨天师妹用的时候一直连不上,后来换的北外源
发表于 2022-11-25 09:57 | 显示全部楼层
这个算不算性价比较高的设备
 楼主| 发表于 2022-11-25 10:36 | 显示全部楼层
s1mple 发表于 2022-11-25 09:56
最近好像conda清华源不是很稳定,昨天师妹用的时候一直连不上,后来换的北外源 ...

我最近一直用的pip,conda一直都有不稳定的情况,有时候速度下降很快
发表于 2022-11-25 10:52 | 显示全部楼层
好专业,学习了
发表于 2022-11-25 11:31 | 显示全部楼层
强悍精致的小机箱,学习了
发表于 2022-11-25 12:39 | 显示全部楼层
去年买mbp16就一直很期待ARM soc的表现,今年终于等到m1版本的pytorch感觉还是远程用cuda好
发表于 2022-11-25 14:02 | 显示全部楼层
很强,80瓦CPU释放,还没大atx电源大
发表于 2022-11-25 14:17 来自手机 | 显示全部楼层
s1mple 发表于 2022-11-25 09:56
最近好像conda清华源不是很稳定,昨天师妹用的时候一直连不上,后来换的北外源 ...

用阿里源
 楼主| 发表于 2022-11-25 14:37 | 显示全部楼层
coconutgallo 发表于 2022-11-25 12:39
去年买mbp16就一直很期待ARM soc的表现,今年终于等到m1版本的pytorch感觉还是远程用cuda好 ...

我的评价是:1!5!4!÷!
发表于 2022-11-25 14:49 | 显示全部楼层
强悍精致的小机箱
发表于 2022-11-25 15:19 | 显示全部楼层
想纠正一下
1. openVINO其实并不跟cuda和rocm对应,openVINO只是一个推理引擎,跟cuda生态里的tensorRT是对应关系。tensorRT底层使用了cuDNN,而openVINO底层则使用了oneAPI(oneDNN)
2. 770/xe的加速比大于16/3可能是因为推理跑在xe上大概率顶到了ddr内存的带宽上限,而770则拥有更大的算力/内存带宽,所以看上去加速比更大些
大佬勿喷~
发表于 2022-11-25 16:11 | 显示全部楼层
太长了
收藏下
一直对NUC感兴趣
就是没有下坑~
发表于 2022-11-25 16:40 | 显示全部楼层
这个骷髅比以前还小巧了吧
 楼主| 发表于 2022-11-25 17:13 | 显示全部楼层
skyfish 发表于 2022-11-25 15:19
想纠正一下
1. openVINO其实并不跟cuda和rocm对应,openVINO只是一个推理引擎,跟cuda生态里的tensorRT是对 ...

我比较支持第一观点,我后面也提到了openVINO他并不是像ROCM那样替代CUDA的一个加速框架,要是intel能搞出来一个的话就舒服很多,这样就能直接用torch或者tf了,而不是训练好了再转IR推理
第二个问题我感觉存疑,因为Xe的具体表现是占用100%而不是显存使用爆了,而且模型的导入应该是一开始就加载到了内存里面,后面的输入都是很小量的,更像是Xe没ML相关的单元所以在硬算
发表于 2022-11-25 18:05 | 显示全部楼层
gwha2 发表于 2022-11-25 17:13
我比较支持第一观点,我后面也提到了openVINO他并不是像ROCM那样替代CUDA的一个加速框架,要是intel能搞 ...

Xe没有tensorcore倒是有可能,这个没有仔细研究过,
第一点就等待Intel出tensorflow和pytorch的oneDNN后端了,看Intel OneAPI框图上是有的
发表于 2022-11-25 20:23 | 显示全部楼层
lz想问下。这种机器能拓展双网口嘛。拿来跑虚拟机玩。~
 楼主| 发表于 2022-11-25 20:37 | 显示全部楼层
izzue 发表于 2022-11-25 20:23
lz想问下。这种机器能拓展双网口嘛。拿来跑虚拟机玩。~

用雷电口就行
发表于 2022-11-26 16:50 来自手机 | 显示全部楼层
好详细的测评,强烈支持……虽然我看不懂
发表于 2022-11-26 22:47 | 显示全部楼层
gwha2 发表于 2022-11-25 17:13
我比较支持第一观点,我后面也提到了openVINO他并不是像ROCM那样替代CUDA的一个加速框架,要是intel能搞 ...

skyfish说的对,这个openvino就是一个inference engine,类似TRT。

你不用它也能加速,比如原生tf/pt + itex/ipex 也可以有不错的优化。没必要非用openvino。

另外这个nuc跑深度学习纯粹自讨没趣,不支持avx512,onednn的加速发挥不出来。至于用A770,只能说just for fun.
发表于 2022-11-26 22:48 | 显示全部楼层
skyfish 发表于 2022-11-25 18:05
Xe没有tensorcore倒是有可能,这个没有仔细研究过,
第一点就等待Intel出tensorflow和pytorch的oneDNN后 ...

Intel Extension for Tensorflow/Pytorch 了解一下。
发表于 2022-11-26 23:30 | 显示全部楼层
gtv 发表于 2022-11-26 22:48
Intel Extension for Tensorflow/Pytorch 了解一下。

chh遇到同行了,握手握手
发表于 2022-11-27 09:39 | 显示全部楼层
双十一买了前代幻影,,感觉对我来说够用了。。
发表于 2022-11-27 11:24 | 显示全部楼层
太硬核了,来学习下...

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

Archiver|手机版|小黑屋|Chiphell ( 沪ICP备12027953号-5 )沪公网备310112100042806 上海市互联网违法与不良信息举报中心

GMT+8, 2025-1-29 08:09 , Processed in 0.019713 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2007-2024 Chiphell.com All rights reserved.

快速回复 返回顶部 返回列表