Juan Pablo作者Panda编译

边缘深度学习设备基准评测:英伟达Jetson Nano胜出

边缘计算对势头正盛的物联网的发展至关重要。近日,机器学习数据科学咨询公司 Tryolabs 发布了一篇基准评测报告,测试比较了英伟达 Jetson Nano、谷歌 Coral 开发板(内置 Edge TPU)、英特尔神经计算棒这三款针对机器学习设计的边缘计算设备以及与不同的机器学习模型的组合。结果表明,无论是在推理时间还是准确度方面,英伟达的 Jetson Nano 都是当之无愧的赢家。另外他们也给出了在树莓派 3B 与英伟达 2080ti GPU 上的结果以供参考。

为什么需要边缘计算

人类产生和收集的数据超过了以往任何时候。我们口袋中的设备就能产生巨量数据,比如照片、GPS 坐标、音频以及我们有意无意泄漏的各种个人信息。

此外,我们不仅会产生与个人相关的数据,也会从很多其它地方收集未知的数据,比如交通和出行控制系统、视频监控单元、卫星、智能汽车以及其它不胜枚举的智能设备。

数据增长的趋势已然形成,并还将继续呈指数级发展。在数据点方面,国际数据咨询公司(IDC)预计世界数据总量将从 2019 年的 33 ZB 增长至 2025 的 175 ZB,年增长率 61%。

尽管我们一直在处理数据,起先是在数据中心,然后是在云中,但这些解决方案不适用于数据量很大的高要求的任务。网络的性能和速度不断推进新的极限,随之而来的是对新型解决方案的需求。现在正是边缘计算和边缘设备时代的起点。

本报告是对五种新型边缘设备的基准评测。我们使用了不同的框架和模型来测试哪些组合表现最佳。我们将重点关注边缘机器学习的性能结果。

什么是边缘计算

边缘计算包含把数据处理任务放至网络边缘的设备上,使其尽可能地靠近数据源。这种计算方式能以非常高的速度实现实时的数据处理,对很多具备机器学习能力的复杂物联网方案而言是必备能力。在此基础上,边缘计算能够缓解网络压力、降低能耗、提升安全性以及改善数据隐私。

使用这种新范式,针对边缘机器学习而优化的专用硬件和软件库组合到一起,能造就最前沿的应用和产品,进而实现大规模部署。

构建这类应用面临的最大难题源自音频、视频和图像处理任务。事实表明,深度学习技术在克服这些困难方面做得非常成功。

实现边缘深度学习

自动驾驶汽车为例。自动驾驶汽车需要快速且持续不断地分析传入的数据,以便能在数毫秒内解析周围的世界并采取行动。这种时间限制使得我们不能依靠云来处理数据流,而是必须在本地完成处理。

但在本地处理有个缺点:硬件没有云中的超级计算机那么强大,而我们又不能在准确度和速度上妥协。

解决这个问题的方案要么使用更强更高效的硬件,要么就不要使用那么复杂的深度神经网络。为了得到最佳结果,必须在两者之间找到平衡。

因此,真正要解答的问题是:

为了最大化深度学习算法的准确度和速度,我们应该组合使用哪款边缘硬件和哪种类型的网络?

在我们寻找两者的最佳组合的旅程中,我们将比较多种当前最佳的边缘设备与不同的深度神经网络模型的组合。

新型边缘设备基准测试

我们探讨的是最具创新性的用例。这里我们将通过一次一张的图像分类任务来测量实时的推理吞吐量,从而得到近似的每秒处理帧数。

我们的具体做法是在 ImagenetV2 数据集的一个特定子集上评估在所有类别上的 top-1 推理准确度,并将结果与某些卷积神经网络模型进行比较。我们还尽量实验了不同的框架和优化过的版本。

硬件加速器

尽管过去几年人们在提升现有边缘硬件方面做了很多工作,但我们选择拿下面这几种新型设备做实验:

  • 英伟达 Jetson Nano

  • 谷歌 Coral 开发板

  • 英特尔神经计算棒

  • 树莓派(参考上限)

  • 英伟达 2080ti GPU(参考下限)

实验将包含树莓派和英伟达 2080ti,以便将所测试硬件与广为人知的系统进行对比,其中树莓派是边缘设备,英伟达 2080ti GPU 常用在云中。

这个下限很简单,我们 Tryolabs 会设计和训练我们自己的深度学习模型。因此,我们有很多算力可用。所以我们当然也就用了。为了确定推理时间的下限,我们在一台英伟达 2080ti GPU 上运行了测试。但是,由于我们仅将其用作参考,所以我们只使用了未经优化的基本模型运行测试。

至于上限,我们选择了卫冕冠军:最流行的单板计算机:树莓派 3B。

神经网络模型

我们这次基准评测主要包含了两种网络:更古老一点的众所周知的 Resnet-50 和谷歌今年推出的全新的 EfficientNet

对于所有基准,我们都使用了公开可用的预训练模型,并且使用了不同的框架运行它们。对于英伟达 Jetson,我们尝试了 TensorRT 优化;对于树莓派,我们使用了 TensorFlow 和 PyTorch 变体;对于 Coral 设备,我们实现了 S、M 和 L 型 EfficientNet 模型的 Edge TPU 引擎版本;至于英特尔神经计算棒,我们使用的是用 OpenVINO 工具包编译的 Resnet-50。

数据集

由于所有模型都是在 ImageNet 数据集上训练的,所以我们使用了 ImageNet V2 MatchedFrequency。其中包含 10000 张图像,分为 1000 类。

我们在每张图像上运行一次推理,保存推理时间,然后求平均。我们计算了所有测试的 top-1 准确度以及特定模型的 top-5 准确度。

top-1 准确度:这是常规的准确度,即模型的答案(概率最高的答案)必须等同于确切的期望答案。

top-5 准确度:即模型的概率最高的前五个答案中任意一个与期望答案匹配。

要记住,在比较结果时,对于更快速的设备-模型组合,我们运行的测试囊括整个数据集,而对于速度更慢的组合我们仅使用了部分数据集。

结果与分析

下图展示了实验获得的指标。由于不同模型和设备在推理时间上有较大的差异,所以平均推理时间以对数形式展示。

推理时间第一名:Jetson Nano

在推理时间方面,组合使用 ResNet-50、TensorRT 和 PyTorch 的 Jetson Nano 获胜。该组合用 2.67 毫秒处理一张图像,即每秒处理 375 帧。

这个结果很让人惊讶,因为其超过英伟达公布的推理速度十倍之多。结果差异的原因很可能是英伟达使用的是 TensorFlow,而非 PyTorch。

推理时间第二名:Coral 开发板

排在第二的是与 EfficientNet-S 搭档的 Coral 开发板。其 5.42 秒完成一张图像处理,即每秒处理 185 帧。

这个结果与谷歌公布的速度差不多,即 5.5 毫秒完成一张,每秒处理 182 帧。

虽然这个组合速度挺高,但准确度却不好。我们没法得知谷歌报告准确度所使用的确切的验证集,但我们猜想他们使用的图像预处理变换方法与我们用的不一样。因为量化的 8 位模型对图像预处理非常敏感,这可能对结果产生很大影响。

准确度第一名:Jetson Nano

准确度方面,最佳结果来自 Jetson Nano 与 TF-TRT 和 EfficentNet-B3 的组合,其实现了 85% 的准确度。但是,这些结果是相对的,因为我们训练模型时,有的模型使用的数据集比其它模型更大一些。

可以看到,当我们向模型输入更小的数据集时,准确率会更高;而当使用完整数据集时,准确度更低。这个结果的原因是我们没有对更小的数据集进行随机排序,因此其中的图像没有实现合理的平衡。

硬件加速器的可用性

关于这些设备的可用性,开发者注意到一些重要的差异。

当涉及到选择和部署预编译的模型和框架时。Jetson 是最灵活的。英特尔神经计算棒紧随其后,因为其提供了很好的库、很多模型和很好的项目。此外,这款计算棒的第二代相比第一代有重大改进。唯一的缺点是他们那庞大的软件库 OpenVINO 仅支持在 Ubuntu 16.04,不支持更新的 Linux 操作系统版本。

相比于 Jetson 和英特尔计算棒,Coral 设备存在一些局限性。如果你想在上面运行非官方的模型,你必须将其转换到 TensorFlow Lite,然后再针对 Edge TPU 进行量化和编译。取决于模型的不同,这种转换有可能无法实现。尽管如此,我们预计谷歌今后会改进这款设备的未来版本。

总结

这里的研究基于我们对为深度学习算法设计的当前最佳边缘计算设备的探索。

我们发现 Jetson Nano 和 Coral 开发板在推理时间方面表现非常好。

而在准确度方面,Jetson Nano 表现也很出色,尽管这个结果是相对的。

从总体表现看,Jetson Nano 是当之无愧的赢家。

但是,必须指出,由于 Jetson Nano 和 Coral 的设计不同,我们没法在两者之上测试同样的模型。我们相信每种设备都有最适合自己的场景,这取决于所要完成的具体任务。

原文链接:https://tryolabs.com/blog/machine-learning-on-edge-devices-benchmark-report/

工程评测硬件Jetson英伟达边缘计算
相关数据
英特尔机构

英特尔是计算创新领域的全球领先厂商,致力于拓展科技疆界,让最精彩体验成为可能。英特尔创始于1968年,已拥有近半个世纪产品创新和引领市场的经验。英特尔1971年推出了世界上第一个微处理器,后来又促进了计算机和互联网的革命,改变了整个世界的进程。如今,英特尔正转型成为一家数据公司,制定了清晰的数据战略,凭借云和数据中心、物联网、存储、FPGA以及5G构成的增长良性循环,提供独到价值,驱动日益发展的智能互联世界。英特尔专注于技术创新,同时也积极支持中国的自主创新,与产业伙伴携手推动智能互联的发展。基于明确的数据战略和智能互联全栈实力,英特尔瞄准人工智能、无人驾驶、5G、精准医疗、体育等关键领域,与中国深度合作。面向未来,英特尔致力于做中国高价值合作伙伴,在新科技、新经济、新消费三个方面,着力驱动产业协同创新,为实体经济增值,促进消费升级。

https://www.intel.com/content/www/us/en/company-overview/company-overview.html
相关技术
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

数据科学技术

数据科学,又称资料科学,是一门利用数据学习知识的学科,其目标是通过从数据中提取出有价值的部分来生产数据产品。它结合了诸多领域中的理论和技术,包括应用数学、统计、模式识别、机器学习、数据可视化、数据仓库以及高性能计算。数据科学通过运用各种相关的数据来帮助非专业人士理解问题。

自动驾驶汽车技术

自动驾驶汽车,又称为无人驾驶汽车、电脑驾驶汽车或轮式移动机器人,是自动化载具的一种,具有传统汽车的运输能力。作为自动化载具,自动驾驶汽车不需要人为操作即能感测其环境及导航。

边缘计算技术

边缘运算(英语:Edge computing),又译为边缘计算,是一种分散式运算的架构,将应用程序、数据资料与服务的运算,由网络中心节点,移往网络逻辑上的边缘节点来处理。边缘运算将原本完全由中心节点处理大型服务加以分解,切割成更小与更容易管理的部分,分散到边缘节点去处理。边缘节点更接近于用户终端装置,可以加快资料的处理与传送速度,减少延迟。在这种架构下,资料的分析与知识的产生,更接近于数据资料的来源,因此更适合处理大数据。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

验证集技术

验证数据集是用于调整分类器超参数(即模型结构)的一组数据集,它有时也被称为开发集(dev set)。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

卷积神经网络技术

卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

操作系统技术

操作系统(英语:operating system,缩写作 OS)是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。

图像处理技术

图像处理是指对图像进行分析、加工和处理,使其满足视觉、心理或其他要求的技术。 图像处理是信号处理在图像领域上的一个应用。 目前大多数的图像均是以数字形式存储,因而图像处理很多情况下指数字图像处理。

图像分类技术

图像分类,根据各自在图像信息中所反映的不同特征,把不同类别的目标区分开来的图像处理方法。它利用计算机对图像进行定量分析,把图像或图像中的每个像元或区域划归为若干个类别中的某一种,以代替人的视觉判读。

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

推荐文章
暂无评论
暂无评论~