NPUbench测试结果–英特尔Movidius 神经计算棒

图1:英特尔的Movidius 神经计算棒

英特尔的Movidius 神经计算棒(NCS,Neural Compute Stick )是一款基于USB接口的深度学习设备,它能为那些边缘设备提供神经网络任务加速功能,它的处理能力来自Movidius视觉处理单元(VPU),VPU仅需要1瓦特的功耗就能进行每秒万亿次浮点运算,并且NCS拥有12颗SHAVE处理核心用于加速神经网络任务。

我们把NPUbench部署在Movidius神经计算棒上,由于NCS支持的神经网络结构有限,NPUbench包含的部分神经网络模型无法运行在NCS上,因此我们还部署了其他的神经网络模型作为参考。

图2:英特尔Movidius 神经计算棒在使用不同SHAVE核时的前向时间
图3: 英特尔Movidius神经计算棒的前向时间组成(使用12颗SHAVE核)

NCS可以使用不同数量的SHAVE处理单元来运行神经网络任务,而使用SHAVE处理单元的数量会直接影响神经网络模型的表现,从图2我们可以看出在使用最多12个处理核心的时候,所有的网络模型都达到了最好的性能。而需要注意的是NCS在运行ResNet-152的时候最多只能使用四颗处理单元,从图中我们可以看到ResNet网络的表现对于SHAVE处理单元的数量十分敏感。ResNet-152网络大部分的运算操作都是卷积操作,随着使用处理单元数量的增加,该网络的前向性能表现几乎是以近两倍的趋势不断提升,同样对处理单元数量敏感的还有Inception-BN网络模型,而Inception-BN网络模型包含了69个卷积层,由图3我们可以看到Inception-BN超过83%的前向时间都用于处理卷积运算,它的网络深度仅次于ResNet-152,可见SHAVE处理单元对于卷积操作的运算时间有着十分直接的影响。

图4: 英特尔Movidius 神经计算棒的平均数据处理性能(使用12颗SHAVE核)
图5: 英特尔Movidius神经计算棒的功耗情况(使用12颗SHAVE核)

图4和图5分别是英特尔Movidius 神经计算棒在同时使用12颗SHAVE处理核心时的平均吞吐量组成情况以及功耗情况,从图中可以看到大多数的神经网络在执行全连接层的时候吞吐量最高,因为全连接在一个神经网络中更像是一个分类器,这种网络从用于将学习到的“分布式特征”映射到样本标记空间中,所以运行到这一层的时候会涉及到大量的数据处理操作,自然就会使得吞吐量增高,可见英特尔Movidius 神经计算棒在数据吞吐量方面还需优化。