本帖最后由 gwha2 于 2022-11-24 10:26 编辑
intel NUC12 蝰蛇峡谷入手已经有不短的时间了,不过在网上并没有看到蝰蛇峡谷的深度学习性能测试啊,因为这张卡单精度浮点还挺高,而且显存也大,所以我也挺想看看这张卡在深度学习上的表现
我之前就已经做过CUDA和ROCM的深度学习介绍,Nv和AMD两家对自己的深度学习平台都非常上心,而intel也是有自己的深度学习加速软件包的。作为最早推出神经网络加速棒的公司,intel在很早之前就推出了自己的OpenVINO加速包,这个工具可以适配所有的intel CPU GPU(iGPU) 和专门的VPU。而且面向全平台,除了unix内核的系统之外,还专门对win系统提供了支持
(世界名画,请选择你的英雄.jpg)
intel的OpenVINO对蝰蛇峡谷的12700H和Xe核显的肯定是支持的,毕竟CPU和iGPU这俩的支持已经做了很多年了,而蝰蛇峡谷的A770M作为intel自家在今年才推出的一张独立显卡,我还是挺好奇他是不是马上就支持了自家的OpenVINO的(毕竟某A自己的ROCM更新Navi支持都是6800XT才给,逊!),所以我最近就来尝试了一下intel的OpenVINO在自家独立显卡上的表现,顺便做个简单的教程,让有兴趣的朋友也来试试OpenVINO的神经网络加速
简介
NUC12蝰蛇峡谷是intel在12代中定位为enthusiast的主机,体积2.5L,小于绝大多数独显ITX,也是A770M第一次在NUC中出场
蝰蛇峡谷这IO也是完美继承了NUC的特性,非常充裕,正反两面各种接口,雷电、读卡器、2.5G网口,还有HDMI+2DP的视频接口
机器的散热也是非常不错的,单烤CPU的时候有80W的持续功耗,性能释放比笔记本要好不少
作为一个定位为enthusiast的PC,蝰蛇峡谷还专门给内置了一张ax1690i的无线网卡,属于第一梯队的WIFI6E网卡
CPUID信息,蝰蛇峡谷推出只有i7 12700H的版本,有可能是NUC12第一次出这个机型的原因,内存仍然是使用的SODIMM的DDR4,在配置成本方面做出了一定的让步
理论性能测试,A770M如果和Xe核显的构架能直接对比的话,那么按照流处理器的组数对比,单精度的比例应该是16/3,和实际测试的结果是相似的
A770M还加入了专门的光追单元,具有不错的光追性能
intel还提供了一个NUC software studio,可以用来管理NUC,空间占用小,功能相当完善,灯光和详细的性能调优全都可以通过它控制
OpenVINO搭建
说道深度学习,很多人都觉得是玄之又玄的东西,然而对于很多人来说,无非是针对某种输入输出的线性代数的组合罢了。而就在这其中,会涉及到非常庞大的矩阵乘法运算量,而CPU对这样的简单数值乘法并没有很好的办法并行处理,所以此时显卡或者神经网络加速VPU就登上了舞台,虽然他们每一个流处理器能针对的问题都不能太复杂,但是对于矩阵乘法中的数值乘法来说正好合适,而且在有独立显存的显卡上还能明显降低CPU的IO压力,因此一般在推理神经网络的时候我们都会选择显卡或者VPU
而三家硬件厂商所制定的标准都不尽相同,除了最著名的CUDA之外,AMD的ROCM基本上是本着替代CUDA的目的而设计的,所以能在某些场景中直接替换CUDA。但是intel的OpenVINO则是基本独立的生态,这是因为intel的神经网络加速棒起步很早而且是独立的硬件,而且作为神经网络加速的软件包,它的主要作用集中在推理,而不是训练,这和Nv的某些部署推理卡很像
随着硬件和软件的不断进化,OpenVINO在2022.1的时候也迎来一次大更新,同时也简化了大部分安装流程,目前的OpenVINO已经可以脱离独立安装包,就像cudatoolkit一样直接装入虚拟环境
OpenVINO的安装比较简单,我推荐使用python作为开发语言,因为C++版本的仍然是独立安装包,不如python虚拟环境方便。框架方面随便选择,对应的框架会影响虚拟环境中的支持,选择自己平时用的最多的开发框架就好了
官方教程里面使用的是默认Python作为管理工具,我建议是使用conda作为包管理工具,然后在conda环境里面使用pip安装(确信),并且切换到清华源,这样网速情况会好很多
OpenVINO的Python环境安装确实是三家当中最简单的,如果已经装好了了pycharm和conda的话,就只需要创建一个新环境和一条命令就能安装完成
OpenVINO模型转换+测试
作为一个独立的加速框架,OpenVINO使用的模型是IR模型,而不能直接使用其他框架的模型,因此在推理加速的时候需要对模型提前转化。如果想看比较详细原理的朋友可以直接查阅文档https://docs.openvino.ai/latest/index.html
我这里提供一个比较简明的方法来转化pytorch的模型,基本是按照文档上的方法转化而来的。首先我们看到默认的OpenVINO并没有提供mo的转化pytorch模型的方法,所以我们需要先把pytorch模型转化为onnx模型,然后再转化为一个ir模型
所以我们写一段简单的代码,这段代码就是将一个pytorch模型加载出来,然后用一个dummy模拟它的推理过程,然后用onnx保存这个一个过程。这样保存的模型对任意的torch模型都是适用的,只要我们对他有明确的定义,而且参数是我们想要的,其中的方法onnx都能识别出来。如果需要转换其他框架的模型,也可以在文档中找到对应的方法,我就不过多演示了
我这一次选用了一个非常常规的ResNet-50模型,采用最新的torchvision预训练参数,这样大家自己如果要对比的话也可以参考。现在这个模型的参数已经被保存到了onnx模型里面,我们可以利用OpenVINO预制的mo方法,把他轻松地转化为ir模型,格式为.xml
这样一个模型就能使用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和扩展的视觉传感器等等跟数据传入相关的设备
在小打小闹的开发部署当中,最常见的就是一个神经网络加速工具和一个视觉传感器比如intel realsense,然后联合到一起做一个人脸识别或者姿势识别,此时如果直接使用CPU进行推理,那视觉传感器在GUI上的反馈就会产生明显的延迟,使用体验急速下降
不过如果我们小小的修改一下使用的对象,把加速工具变成Xe核显,那么情况就会大为改观,此时Xe核显被占用满,但是CPU仅仅使用了20%,这些多出的部分就能被分给视觉传感器或者其他功能,不会导致流畅度下降。并且我们可以看到,Xe核显的神经网络推理速度是明显快于CPU的,达到了136FPS,而功耗远远低于纯CPU推理,也可以证明GPU加速的重要性
如果手中有一个intel 12代core的笔记本,那么刚才提到的CPU+Xe核显加速推理也是可以轻松实现的。而我们现在手中可是有intel最新科技Arc A770M显卡!如果使用独立显卡进行加速,那么速度会再上一个台阶
屏蔽Xe核显,然后直接使用A770M作为单独的神经网络加速工具,我们可以看到此时A770M的性能监测基本没有什么起伏,而显存占用能说明模型确实是导入了显卡当中,这和一般的显卡推理过程的性能需求时比较相似的。A770M的测试结果达到了828.7FPS,这个Throughput的性能明显远超CPU+Xe核显的总和,而且按照单精度浮点的量来计算,A770M仍然高于Xe核显的16/3倍,也说明A770M在神经网络加速方面应该是经过了单独优化的
之后又测试了一下小batchsize快速响应的throughput,成绩仍然超过了754FPS,有这个推理速度一般来说判别模型是完全没有问题的,即使模型的flops需求量增大,或者参数量膨胀,A770M的性能和显存应该都能轻松撑住这一类需求
关于视频编辑与渲染
除了深度学习推理之外,蝰蛇峡谷另一个非常生产力的功能就是A770M的编码解码功能,如果说蝰蛇峡谷给生产力能带来什么革命的话,那肯定就是他是人类有史以来第一块超大号视频解码器了。在PCMark10的测试小分中就能看出来,虽然办公软件和上网的得分和一般的12代笔记本没差啥,但是在视频+渲染和照片编辑这块得分直接飞天,差点有办公软件得分两倍高
最常见的视频编辑应用就是Pr,用A770M加速之后能明显加快导出时间,4K 60的视频10min的视频总共花了55min,剪辑的过程里即时回放也完全不会有卡顿,这个时间我觉得是受到了编码格式的影响,如果换H.265应该会更快效果更好。还有一个挺有吸引力的feature是A770M的AV1解码支持,这是目前最新的视频编解码格式
Vray渲染测试,相对而言更封闭一些,所以蝰蛇峡谷只有纯CPU的测试结果
cinebenchR20和R23其实就是cinema4D渲染器的测试工具之中的两个,不管是单核还是多核,蝰蛇峡谷的的得分都还不错
还有一个测试是D5渲染器,也是非常常见的渲染工具,自带的检测工具对A770M的评价是推荐等级以上,在测试中表现称得上还行,耗时14.5min,帧数13.58FPS,跟桌面的A770差别不是很大,不过感觉还是有不小的优化空间
总结
关于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,就正好能作为深度学习/视频创作生产力平台,更具吸引力
最后送上一张图,谢谢大家
|