123456

专栏|在U盘中运行深度神经网络?详解英特尔Movidius神经元计算棒

英特尔中国研究院人工智能 智东西专栏 英特尔中国研究院专栏2017/10/25

智东西(公众号:zhidxcom) 文 | 英特尔中国研究院 人工智能的热潮正在席卷各个行业,如何让各式各样的 […]

智东西(公众号:zhidxcom)
文 | 英特尔中国研究院

人工智能的热潮正在席卷各个行业,如何让各式各样的设备都智能化已成为研究热点。机器学习中最流行的深度学习通常需要较大的计算量,因此服务器加上高性能显卡成为最常见的选择。

不过,此类组合平台在功耗和体积上都存在较大限制,无法使用在终端设备或者物联网设备,如监控摄像头、无人机等。针对这种情况,比较可行的方法是将数据通过网络发送到云端服务器,但这会耗费大量网络流量和带宽,并且很难保证计算的实时性。另外一个方法是使用专用芯片或FPGA加速,在性能和功耗方面取得折中,但这种方法的开发门槛较高且周期长,部署的时候需要设计定制化的电路板和供电系统。

针对上述问题,英特尔给出了自己的方案——英特尔Movidius神经元计算棒!

一个小小的计算棒如何能加速客户端计算?让我们一起走进Movidius神经元计算棒,了解其基本结构、实用工具和编程方法,让大家能够更好地了解其在计算、开发、部署方面的特性。

Movidius神经网络加速芯片

640

Movidius神经网络加速芯片是整个技术的核心。Movidius提供代号为Myraid的VPU(Video Processing Units),当前正在推广是Myraid2 MA2X5X系列,其两款产品MA2150和MA2155的主要差异在于内存大小:前者为1G内存, 后者为4G内存。Myraid2提供大概1T Flops的计算能力,功耗均值约为1瓦。

640-1

640-2

Myraid2芯片结构如上图所示,2个轻量级CPU运行一个实时系统RTOS,管理各种外设,读取卷积神经网络模型。芯片的核心部件是向量计算单元(SHAVE),这种单元最多有12个,参与计算的SHAVE数量将会直接影响程序性能。橙色方块是一些图像处理专用加速器,如锐化、去噪、缩放等,这种加速器在目前的开发工具中尚无法使用,将在以后的版本中开放支持。

神经元计算棒

Movidius会为特定的客户提供开发板,但对普通用户而言,通用、简单的接口和封装往往更受欢迎。英特尔Movidius推出了基于Myraid2芯片的神经元计算棒,将所有的功能封装到了U盘大小的设备中,用户只需要将计算棒插入USB 2.0(推荐USB3.0)以上的接口中,即可享用机器学习的强大功能。

640-3

Movidius开发者套件SDK

Movidius开发套件可以从https://ncsforum.movidius.com 免费下载。开发套件主要包含了三部分:函数库、工具和开发实例,当前推荐的开发环境为Ubuntu 16.04,x86_64。为了支持更多IOT设备,Raspberry Pi也可以运行。

需要注意的是,Movidius™神经元计算棒主要是用于做深度学习的模型推理,而对模型的训练建议使用其他平台。

640-4

当用户考虑将已经训练好的模型在神经元计算棒上使用时,总是迫不及待想知道其性能,SDK中有一个非常有用的profiler工具可以把用户的模型加载到计算棒中,快速进行性能验证。在bin目录下的运行mvNCProfile.pyc,将模型作为参数输入,并用参数-s 来设定SHAVE的个数。SHAVE越多性能越好,最多为12个。

640-5

上图是验证Alexnet在Myraid2上使用12个SHAVE的性能,工具会给出模型中每层的运行时间和内存的消耗情况。当使用12个SHAVE时,Alexnet运行一次的时间为89.06 ms,而使用1个SHAVE时,其运行时间为281.06 ms。

目前Movidus开发套件支持C和Python3编程,在SDK中有很多例子,如常见的Alexnet, Googlenet, Squeezenet等都有实例,用户可以很快上手。如果单个计算棒的性能不够,还可以使用多个进行加速,取得线性加速比。

640-6

应用场景

Movidius计算平台帮助开发者快速构建神经网络加速器,推动人工智能的应用。目前已经在无人机、AR、机器人甚至是可穿戴设备上得到应用 。如大疆最新的无人机Spark采用了Myraid2芯片来加速图像处理算法,Google的Clips也采用Movidius 芯片来加速机器学习算法。下一代MyraidX芯片将会带来更强的计算能力和更低能耗比,为用户带来更多选择。

640-7

zhidx