|
2 e, Y' H' V) [5 y/ n; x0 D# R
【新智元导读】Google Coral Edge TPU和NVIDIA Jetson Nano大比拼!本文从分别对两款最新推出的EdgeAI芯片做了对比,分析了二者各自的优劣势。* l- F8 ^1 @ E! G# }. t
6 [) ?: X' @2 ^+ w% ]: t边缘智能被称作是人工智能的最后一公里。/ |1 T" W3 s/ o" n: p
% [0 s7 B2 F3 A
Google刚刚在3月份推出了Coral Edge TPU,是一款售价不到1000元人民币的开发板(Coral Dev Board),由Edge TPU模块和 Baseboard 组成。参数如下:
+ Y. E E2 @: d0 `- g9 X
+ L2 w4 }& s# i) k+ r! E u
( e9 K) y- ? ~英伟达同样在上个月发布了最新的NVIDIA Jetson Nano,Jetson Nano是一款类似于树莓派的嵌入式电脑设备,其搭载了四核Cortex-A57处理器,GPU则是拥有128个NVIDIA CUDA核心的NVIDIA麦克斯韦架构显卡,内存4GB LPDDR4,存储则为16GB eMMC 5.1,支持4K 60Hz视频解码。
P8 t6 q! p# P7 B, M目前位置并没有太多关于这两款产品的评测报告。今天新智元为大家带来一篇由网友Sam Sterckval对两款产品的评测,除此以外他还测试了i7-7700K + GTX1080(2560CUDA),Raspberry Pi 3B +,以及一个2014年的MacBook pro包含一个i7-4870HQ(没有支持CUDA的内核)。& L( Q# m9 D; x* F7 {- @
Sam使用MobileNetV2作为分类器,在imagenet数据集上进行预训练,直接从Keras使用这个模型,后端则使用TensorFlow。使用GPU的浮点权重,以及CPU和Coral Edge TPU的8bit量化tflite版本。" C- D* J7 [+ H, E% z
首先,加载模型以及一张喜鹊图像。先执行1个预测作为预热,Sam发现第一个预测总是比随后的预测更能说明问题。然后Sleep 1秒,确保所有的线程的活动都终止,然后对同一图像进行250次分类。4 k. K, M* z1 B* ] |5 K' h

7 Q* K9 M5 J5 @; |9 C对所有分类使用相同的图像,能够确保在整个测试过程中保持接近的数据总线。3 K4 G% L4 ]5 J+ ]% v
8 m2 \4 J$ \. V
对比结果 先来看最终的结果:" c. D+ x* F' `* A" e- Z
: n& S$ A/ j, D7 O( d
线性刻度,FPS $ _1 O1 j! X/ q" S2 z: L
对数刻度,FPS% Q; G: j; i& S: D7 D4 |
* x% m }. ~ x; f% w4 X4 N

8 P3 |5 y1 x; S线性刻度,推理时间(250x)
! I/ k' o0 A6 }: d: {+ ?. s
9 T$ B$ a5 a1 SSam发现使用CPU的量化tflite模型得分是不同的,但似乎它总是返回与其它产品相同的预测结果,他怀疑模型有点奇怪,但能确保它不会影响性能。8 M3 A" O+ \$ e/ Z; I
对比分析 第一个柱状图中我们可以看到有3个比较突出的数据,其中两个2个是由Google Coral Edge TPU USB加速器实现的,第3个是由英特尔i7-7700K辅助NVIDIA GTX1080实现。
% Y% N) x. c" H我们再仔细对比一下就会发现,GTX1080实际上完全无法跟Google的Coral对飚。要知道GTX1080的最大功率为180W,而Coral Edge TPU只有2.5W。
/ U9 }/ s! h1 E- {- @: {! uNVIDIA Jetson Nano的得分并不高。虽然它有一个支持CUDA的GPU,但实际上并没比那台2014年MBP的i7-4870HQ快太多,但毕竟还是比这款四核,超线程的CPU要快。
5 e" Q+ m5 z+ o( j" p5 J" o0 k$ r然而相比i7 50W的能耗,Jetson Nano平均能耗始终保持在12.5W,也就是说功耗降低75%,性能提升了10%。
$ ^- _) B$ Y. n! l& UNVIDIA Jetson Nano
6 w; }( b, Q5 [- v; |; S# I& c尽管Jetson Nano并没有在MobileNetV2分类器中表现出令人印象深刻的FPS率,但它的优势非常明显:
0 Y$ |# k$ c, v# |& K- ?+ J它很便宜,能耗低,更重要的是,它运行TensorFlow-gpu或任何其他ML平台的操作,和我们平时使用的其他设备一样。只要我们的脚本没有深入到CPU体系结构中,就可以运行与i7 + CUDA GPU完全相同的脚本,也可以进行训练!Sam强烈希望NVIDIA应该使用TensorFlow预加载L4T。
h4 `9 w* `9 N8 u
( @4 q# C* Y }( K6 K. R1 _0 RGoogle Coral Edge TPU
' t h1 N+ ]! ^8 v1 T! gSam毫不掩饰的表达了他对Google Coral Edge TPU的精心设计以及高效率的喜爱。下图我们可以对比Edge TPU有多小。8 p2 k% k% W. T& B9 z L5 u
, k4 W% O% M9 w- L
Penny for scale,来源:谷歌
) g2 i; [1 v( c) y. B0 y7 Y) E2 D4 I2 g. ]3 [5 a* \
Edge TPU就是所谓的“ASIC”(专用集成电路),这意味着它具有FET等小型电子部件,以及能够直接在硅层上烧制,这样它就可以加快在特定场景下的推力速度。但Edge TPU无法执行反向传播。; P" N$ P: _2 O% [" _' W
. K: x) R: V3 f2 c' u9 \
Google Coral Edge TPU USB加速器
B0 _2 t! y. Y6 T3 P) Y" A, T5 i3 _1 U( M. U
下图显示了Edge TPU的基本原理。( _6 u d- E/ r, F2 o3 i3 U
w2 a" P' M2 O
像MobileNetV2这样的网络主要由后面带有激活层的卷积组成。公式如下:1 D! I9 Z: `+ j$ |+ q2 |

: Q1 x5 e& M$ V卷积
: Z1 G. G, e$ q* c/ w# w
1 P2 N4 f6 Y9 a' G. z! o( i这意味着将图像的每个元素(像素)与内核的每个像素相乘,然后将这些结果相加,以创建新的“图像”(特征图)。这正是Edge TPU的主要工作。将所有内容同时相乘,然后以疯狂的速度添加所有内容。这背后没有CPU,只要你将数据泵入左边的缓冲区就可以了。
/ L+ O3 B4 M8 \* Y {; n8 Y我们看到Coral在性能/瓦特的对比中,差异如此大的原因,它是一堆电子设备,旨在完成所需的按位操作,基本上没有任何开销。+ N ?: |. N9 o% l
总结 为什么GPU没有8位模型?! L }* M3 O) ^& q, X' y4 Y7 k+ O g' d
GPU本质上被设计为细粒度并行浮点计算器。而Edge TPU设计用于执行8位操作,并且CPU具有比完全位宽浮点数更快的8位内容更快的方法,因为它们在很多情况下必须处理这个问题。
8 U v1 a. N% f为何选择MobileNetV2?
1 [( d- `1 V3 J2 `; a主要原因是,MobileNetV2是谷歌为Edge TPU提供的预编译模型之一。! E( l% p$ b( @
Edge TPU还有哪些其他产品?
& A9 ]4 q2 T% L它曾经是不同版本的MobileNet和Inception,截至上周末,谷歌推出了一个更新,允许我们编译自定义TensorFlow Lite模型。但仅限于TensorFlow Lite模型。而反观Jetson Nano就没有这方面的限制。9 @3 }% P% L8 ^# |/ F: B& y
Raspberry Pi + Coral与其他人相比
! J6 a3 B6 t. N) u, q! P- o. L& V为什么连接到Raspberry Pi时Coral看起来要慢得多?因为Raspberry Pi只有USB 2.0端口。2 `; t# L' H% c: Q6 U/ r* z
i7-7700K在Coral和Jetson Nano上的速度都会更快一些,但仍然无法和后两者比肩。因此推测瓶颈是数据速率,不是Edge TPU。
) ^: R0 g7 t, B: Y5 f$ Z
4 S5 e6 r! ?0 q
4 d2 H6 ~3 |: d/ r' N【加入社群】 n7 Q8 N& m0 N, F, G

0 z4 x+ n9 d, f5 Z
" s) I" t! p1 K& L+ ?! o* F, R来源:http://www.yidianzixun.com/article/0Lt3VMHK: m: e$ B; l: B! X$ ^
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|