Google Coral Edge TPU与 英伟达 Jetson Nano:快速深刻了解Edge AI 边缘人工智能的性能。后端
最近我一直在阅读,测试和写一些关于边缘计算的内容,主要关注边缘AI。 最近很酷的新硬件上架,我渴望比较新平台的性能,甚至测试它们与高性能系统的对比。性能
硬件学习
我感兴趣的主要设备是新的英伟达 Jetson Nano(128CUDA)和Google Coral Edge TPU(USB加速器),我还将测试i7-7700K + GTX1080(2560CUDA),Raspberry Pi 3B +,以及我本身的老主力,一个2014年的macbook pro,包含一个i7-4870HQ(没有支持CUDA的内核)。测试
软件优化
我将使用MobileNetV2做为分类器,在imagenet数据集上进行预训练。我直接从Keras使用这个模型,我使用TensorFlow后端。使用GPU的浮点权重,以及CPU和Coral Edge TPU的8位量化tflite版本。人工智能
首先,加载喜鹊的模型和图像。而后我执行1个预测做为预热(由于我注意到第一个预测老是比下一个预测慢不少)。我让它睡了1秒,因此全部线程确定都完成了。而后脚本为它运行,并对同一图像进行250次分类。经过对全部分类使用相同的图像,咱们确保在整个测试过程当中它将保持接近数据总线。毕竟,咱们对推理速度感兴趣,而不是更快地加载随机数据的能力。线程
使用CPU的量化tflite模型得分是不一样的,但它彷佛老是返回与其余人相同的预测,因此我想这在模型中是奇怪的,我很肯定它不会影响性能。设计
如今,由于不一样平台的结果是如此不一样,因此很难想象,因此这里有一些图表,选择你喜欢的...blog
分析开发
第一张图中有3个条形图跳入视图。 (是的,第一张图,线性刻度fps,是我最喜欢的,由于它显示了高性能结果的差别)在这3个柱中,其中2个是由Google Coral Edge TPU USB加速器实现的,第3个是由英特尔i7-7700K辅助的全面NVIDIA GTX1080。
看得更近,你会看到GTX1080实际上被Coral击败了。让它下沉几秒钟,而后准备被吹走,由于GTX1080最大功率为180W,与Coral2.5W相比绝对是巨大的。
打击太大??好的,让咱们继续:
接下来咱们看到的是,英伟达 Jetson Nano的得分并不高。虽然它有一个支持CUDA的GPU,但实际上并不比我原来的i7-4870HQ快得多。但这是一个问题,“不是更快”,它仍然比50W,四核,超线程CPU更快。几年前,真的,但仍然。 Jetson Nano历来没有消耗过超过12.5W的短时间平均值,由于这就是个人动力。功耗下降75%,性能提高10%。
很明显,它自己的Raspberry Pi并非什么使人印象深入的东西,不是浮点模型,对量化模型来讲仍然没有任何用处。可是,嘿,不管如何我准备好了文件,它可以运行测试,因此更多的老是更好吗?而且仍然有点有趣,由于它显示了Pi中的ARM Cortex A53与Jetson Nano中的A57之间的差别。
英伟达 Jetson Nano
所以,Jetson Nano并无使用MobileNetV2分类器提供使人印象深入的FPS费率,但正如我已经说过的那样,这并不意味着它不是一个颇有用的工程。 它很便宜,它不须要大量的能量来运行,也许最重要的属性是它运行TensorFlow-gpu(或任何其余ML平台),就像你之前一直使用的任何其余机器同样。
只要您的脚本没有深刻到CPU体系结构中,您就能够运行与i7 + CUDA GPU彻底相同的脚本,也能够进行培训! 我仍然以为NVIDIA应该使用TensorFlow预加载L4T,但我会尽可能再也不愤怒。 毕竟,他们对如何安装它有一个很好的解释(不要被愚弄,不支持TensorFlow 1.12,只有1.13.1)。
Google Coral Edge TPU
好吧,我很是喜欢设计精良,效率高的电子设备,因此我可能不是很客观。 可是这件事......这是绝对美丽的事情!
Edge TPU就是咱们所说的“ASIC”(专用集成电路),这意味着它具备FET等小型电子部件和直接在硅层上烧制的容量的组合,这样它就能够彻底实现 它须要作的是加快推理。
推断,是的,Edge TPU没法执行向后传播。
这背后的逻辑听起来比如今更复杂。 (实际上建立硬件并使其工做,是彻底不一样的事情,并且很是很是复杂。但逻辑功能要简单得多)。 若是你真的对它的工做方式感兴趣,能够查看“数字电路”和“FPGA”,你可能会找到足够的信息让你在接下来的几个月里忙碌起来。 有时开始时比较复杂,但真的颇有趣!
但这正是为何Coral在比较性能/瓦特数时处于如此不一样的缘由,它是一堆电子设备,旨在完成所需的按位操做,基本上没有任何开销。
为何GPU没有8位模型?
GPU本质上被设计为细粒度并行浮点计算器。所以,使用浮动正是它所创造的,以及它的优势。 Edge TPU设计用于执行8位操做,而且CPU具备比彻底位宽浮点数更快的8位内容更快的方法,由于它们在不少状况下必须处理这个问题。
为什么选择MobileNetV2?
我能够给你不少理由,为何MobileNetV2是一个很好的模型,但主要缘由是,它是谷歌为Edge TPU提供的预编译模型之一。
Edge TPU还有哪些其余产品?
它曾经是不一样版本的MobileNet和Inception,但截至上周末,谷歌推出了一个更新,容许咱们编译自定义TensorFlow Lite模型。但限制是,而且可能永远是TensorFlow Lite模型。这与Jetson Nano不一样,那个东西能够运行任何你想象的东西。
Raspberry Pi + Coral与其余相比
为何链接到Raspberry Pi时Coral看起来要慢得多?答案很简单直接:Raspberry Pi只有USB 2.0端口,其他的都有USB 3.0端口。并且因为咱们能够看到i7-7700K在Coral和Jetson Nano上的速度更快,但仍然没有获得Coral开发板在NVIDIA测试时的分数,咱们能够得出结论,瓶颈是数据速率,不是Edge TPU。
我以为这对我来讲已经足够长了,也许对你来讲也是如此。 我对Google Coral Edge TPU的强大功能感到很是震惊。 但对我来讲,最有趣的设置是NVIDIA Jetson Nano与Coral USB加速器的结合。 我确定会使用这种设置,感受就像是一个梦想。
说到Google Coral的开发板Dev Board,以及Edge TPU,那就顺便提一下基于Coral Dev Board开发的Model Play。它由国内团队研发,是面向全球 AI 开发者的 AI 模型共享市场。Model Play 不只为全球开发者提供了 AI 模型展现交流的平台,更能搭配含 Edge TPU 的 Coral Dev Board 进行使用,加速 ML 推理,经过手机实时预览模型运行效果,助力 AI 由原型向产品拓展。
开发者既能发布本身训练的 AI 模型,也能够订阅并下载本身感兴趣的模型,用于再训练和拓展本身的 AI 创意,实现想法-原型-产品的过程。Model Play 中还预置了各类经常使用 AI 模型,例如 MobileNetV一、InceptionV2 等,并支持可再训练模型的提交发布,方便用户在本身业务数据上优化微调。
就如谷歌在今年的I/O大会上,号召开发者们,共同为开发社区作出贡献。与此同时,Model Play团队也正在向全球开发者发出了AI模型召集令,征集基于 TensorFlow、可在 Google Coral Dev Board 上运行的深度学习模型,以鼓励更多开发者们参与活动,与全球千万 AI 开发者,分享创意和想法。