机器学习边缘产品评测:问推理性能哪家强?
本文来自一家美国公司的blog:
题目为:
https://tryolabs.com/blog/machine-learning-on-edge-devices-benchmark-report/
为什么要进行边缘计算?
人类正在产生和收集比以往更多的数据。我们口袋中的设备可以帮助创建大量数据,例如照片、gps坐标、音频以及我们有意识和无意识地显示的各种个人信息。
此外,我们不仅会出于个人原因生成数据,而且还会从交通和出行控制系统、视频监视设备、卫星、智能汽车以及无数种智能设备中收集我们不了解的数据。
这种趋势一直存在,并将继续呈指数增长。就数据点而言,国际数据公司(IDC)预测,全球数据的总和将从2019年的33兆字节(ZB)增长到2025年的175 ZB,年增长率为61%。
当我们一直在处理数据时,首先是在数据中心,然后是在云中,这些解决方案不适合处理海量数据的高要求任务。网络容量和速度达到极限,需要新的解决方案。这是边缘计算和边缘设备时代的开始。
在本报告中,我们将使用不同的框架和模型对五个新颖的边缘设备进行基准测试,以查看哪种组合效果最好。特别是,我们将重点关注边缘机器学习的性能结果。
什么是边缘计算?
边缘计算包括将数据处理任务委派给网络边缘上尽可能靠近数据源的设备。这使得能够以非常高的速度进行实时数据处理,这对于具有机器学习功能的复杂物联网解决方案来说是必须的。最重要的是,它减轻了网络限制,降低了能耗,提高了安全性,并改善了数据保密性。
在这种新范式下,针对边缘机器学习进行了优化的专用硬件和软件库的组合产生了可大规模部署的尖端应用程序和产品。
构建这些惊人的应用程序所面临的最大挑战是音频,视频和图像处理任务。事实证明,深度学习技术在克服这些困难方面非常成功。
在边缘实现深度学习
例如,让我们以自动驾驶汽车为例。在这里,您需要快速而一致地分析传入的数据,以破译周围的环境并在几毫秒内采取行动。解决该时间限制的原因是我们不能依靠云来处理数据流,而必须在本地进行处理的原因。
在本地执行此操作的缺点是硬件不像云中的超级计算机那样强大,并且我们不能在准确性或速度上妥协。
解决方案是使用更强大,更高效的硬件,或减少复杂程度的深度神经网络。为了获得最佳结果,必须在两者之间取得平衡。
因此,真正的问题是:
为了确定两者的最佳组合,我们将几种最先进的边缘设备与不同的深度神经网络模型进行了比较。
对新型边缘设备进行基准测试
基于我们认为是最具创新性的用例,我们着手通过一次图像分类任务实时测量推理吞吐量,从而获得近似的每秒帧数。
为此,我们评估了ImagenetV2特定子集的所有类别的top-1推理准确性,并将其与某些ConvNets模型进行了比较,并在可能的情况下使用了不同的框架和优化的版本。
硬件加速器
在过去几年中,尽管已投入大量精力来改进现有的边缘硬件,但我们还是选择在这些新产品上进行试验链:
- 英伟达Jetson Nano
- Google Coral开发委员会
- 英特尔神经计算棒
- Raspberry Pi(上限参考)
- 2080ti NVIDIA GPU(下限参考)
我们包括了Raspberry Pi和Nvidia 2080ti,以便能够将经过测试的硬件与知名系统(一种基于云和一种基于边缘)进行比较。
在Tryolabs,我们设计和训练了我们自己的深度学习模型。因此,我们拥有大量的计算能力。因此,我们使用了它。为了在推理时间上设置此下限,我们在2080ti NVIDIA GPU上进行了测试。但是,由于仅将其用作参考点,因此我们使用基本模型运行了测试,没有进行任何优化。
在上限方面,我们选择了最受欢迎的单板计算机:Raspberry Pi 3B。
神经网络模型
我们希望在此基准测试中包含两个主要网络:古老的,知名的,经验丰富的Resnet-50和Google今年发布的新型EfficientNets。
对于所有基准,我们使用可在不同框架下运行的公开可用的预训练模型。关于Nvidia Jetson,我们尝试了TensorRT优化。对于Raspberry,我们使用了Tensor Flow和PyTorch变体。对于珊瑚设备,我们实现了S,M和L EfficientNets模型的Edge TPU引擎版本;最后,对于英特尔设备,我们使用了由OpenVINO Toolkit 编译的Resnet-50 。
数据集
由于所有模型都是在ImageNet数据集上训练的,因此我们使用ImageNet V2匹配频率。它包含10,000个类别的10,000张图像。
我们对每个图像进行一次推理,保存推理时间,然后找到平均值。我们计算了所有测试的前1位准确性,以及某些模型的前5位准确性。
Top-1准确性:这是常规准确性,这意味着模型的答案(概率最高的答案)必须等于确切的预期答案。
前5个准确性:表示模型的前5个最高概率答案中的任何一个都必须与预期答案匹配。
比较结果时要记住的一点是:对于快速的设备模型组合,我们运行了包含整个数据集的测试,而对于慢速的组合,我们仅使用了部分数据集。
结果与分析
下面的仪表板显示了从实验中获得的指标。由于模型和设备之间的推断时间差异很大,因此参数以对数刻度显示。
推理时间赢家#1:Jetson Nano
在推理时间方面,赢家是Jetson NANO结合RESNET-50,TensorRT和PyTorch。它完成了2.67毫秒,即每秒375帧。
这个结果令人惊讶,因为它比NVIDIA公布的推理率高出10倍。结果的差异很可能与NVIDIA使用TensorFlow而不是PyTorch有关。
推理时间赢家#2:Coral Dev 板
第二名是Coral Dev的组合。董事会与EfficientNet-S 。它完成了5.42毫秒,即每秒185帧。
这些结果相当于Google承诺的5.5毫秒和每秒182帧。
尽管此组合的速度很高,但准确性却不高。我们无法获取Google用于准确性报告的确切验证集,但是一个假设是,他们对图像预处理转换的使用方式与我们不同。由于量化的8位模型对图像预处理非常敏感,因此这可能会对结果产生重大影响。
准确性获胜者:Jetson Nano
就准确性而言,最佳结果来自Jetson Nano与TF-TRT和EfficentNet-B3的结合,其准确性超过85%。但是,这些结果是相对的,因为我们使用比其他模型更大的数据集训练了一些模型。
我们可以看到,当向模型提供较小的数据集时,准确率较高;而在使用整个数据集时,准确率较低。这是因为我们没有对较小的数据集进行随机排序,因此图像没有得到足够的平衡。
硬件加速器的可用性
关于这些设备的可用性,开发人员将注意到一些主要差异。
Jetson NANO是最灵活的,当它来选择和使用预编译模型和框架。英特尔记忆棒排名第二,因为它们提供了良好的库,许多模型和出色的项目。此外,第一版和第二版之间的棍棒已经大大改进。唯一的缺点是它们的庞大库OpenVINO仅在Ubuntu 16.04上受支持,而更高版本的Linux OS不支持。
与Jetson和Intel记忆棒相比,Coral设备存在一些局限性。如果要在其上运行非官方模型,则必须将它们转换为TensorFlow Lite,然后对Edge TPU进行量化和编译。根据模型,此转换可能不可行。不过,我们希望此后代的Google设备会有所改进。
结论
这里提出的研究基于我们对为深度学习算法设计的最新边缘计算设备的探索。
我们发现Jetson Nano和Coral Dev开发板在推理时间方面表现很好。
在方面的准确性,该杰特森纳米再次取得了很大成绩,但结果是相对的。
鉴于Jetson Nano的整体性能,它无疑是我们的赢家。?
但是,必须指出的是,由于设计不同,我们无法使用相同的型号测试Jetson Nano和Coral。我们相信,根据要完成的特定任务,每种设备都会有自己的最佳情况。
我们鼓励您执行与您的特定任务有关的详细基准测试,并在下面的评论部分中分享您的结果和结论。感兴趣的进一步研究可能包括利用量化感知训练来设计和训练自己的模型。
该博客文章是与Tryolabs的全栈开发人员Guillermo Ripa合作编写的。