认识Movidius NCS

易心STEAM编程

    近来AI火红,其中一个推展大势则是将AI运算下放到局端(PC、笔电端),甚至是终端,也就是AI边缘运算的架构作法,而此作法的可行条件之一,即是需要有一套可加速运算的解决方案。本文将介绍目前相当突出的硬件加速装置 - IntelMovidius神经运算条(NCS),它仅有USB随身碟大小,却具有人工智能加速运算力。
    
    IntelMovidius神经运算条(NCS)
    NCS发展背景
    Apple与Google Android的争夺战
    当年Steve Jobs生前说:「Android是个错误,即便花尽Apple的600亿美元现金也要纠正这个错误。」此话一出,Apple对Android阵营展开长达数年的专利诉讼战,而Google为了护卫Android阵营,在2012年5月用了约125亿美元购并Motorola Mobility公司,以便取得手机相关技术专利抗衡Apple,Google在取得捍卫所需的专利后,于2014年将Motorola Mobility以29亿美元转售给Lenovo。
    Google虽将Motorola Mobility卖给Lenovo,却留下原本属于MotorolaMobility的ATAP(Advanced Technology and Projects)研究团队,成为Google本有的X研究团队外的另一组研究团队,当时该团队有两项重要研究案:一是模块化智能型手机研究案Ara,二是行动增强实境技术研究案Tango。ATAP后续也有开展其他研究案,例如穿戴式毫米波雷达技术研究案Soli,或同属终端使用者输入技术的Jacquard项目。
    Tango项目内容
    在此我们只讨论Tango项目,该项目透过平板计算机上配置的2D画面影像传感器(摄影机)、3D深度传感器(红外线投射、ToF影像感测),以及平板计算机内的图像处理器(VPU),就可以边走边感测,描绘出行经路线的空间,包含障碍物、高度、距离等,可用在各种应用,例如室内导览、沉浸式游戏等,后来Tango技术也不限于平板计算机,可进一步缩小到智能手机内使用。
    而在Tango项目的平板计算机中,其实用上两颗Movidius公司的Myriad 2芯片,此即是VPU。该芯片内已经用硬件电路方式实现类神经网络、人工智能等演算,加速对外界影像的视觉判别,后来该芯片也用于DJI的无人机上,好让无人机透过影像辨识,得以避障与降落。
    
    神经运算条内的Myriad 2芯片仅有钮扣电池般的大小
    知名品牌发展人工智能
    由于人工智能运算日益重要,2016年9月Intel并购了Movidius公司,2017年12月Google宣布Tango项目这个增强实境软件平台即将结束,并由新的增强实境软件平台ARCore接手,项目虽结束,但Google依然持续运用Myriad 2芯片(MA2450)。同为12月,Google发表AIYVision Kit的人工智能套件,套件内即有用及Myriad 2芯片。
    Intel也看好前端人工智能、类神经网络的运算应用,在买下Movidius后于2017年推出神经运算条棒NeuralCompute Stick,简称NCS(Movidius被购并前已展示过NCS的原型品,因购并案而延后正式发表)。NCS内用的也是Myriad 2芯片,但自成一套系统,并用USB接口与其他系统连接,NCS价格实惠仅79美元。除了USB版外,Intel也与台湾合作伙伴研阳(Aaeon)推出Mini-PCIe版的NCS,称为UP AI Core,费用降至69美元。
    NCS开发环境
    对NCS背景有些了解后,接着是着手于实务前的概念。在人工智能的开发上,Intel提出了一套架构(如下图):一开始先用运算力强悍的计算机来训练模型,再用NCS与一般笔电来进行型态化(Profiling)、调整(Tuning)、编译(Compile),最后再用笔电或者简单的单板计算机(例如树莓派)来进行原型品实作(Prototyping)。
    
    人工智能开发与应用程序图,包含建模、型态化、微调、编译、原型品等阶段
    由于NCS需要连接笔电或树莓派,因此对笔电、树莓派的系统环境也有所要求,NCS需要有安装Ubuntu 16.04版的Linux操作系统,如果笔电只有Windows操作系统,且嫌开机切换成Linux比较麻烦,可以用桌面版虚拟化软件(如VirtualBox)建立一个虚拟图像文件,以虚拟化方式执行Ubuntu 16.04,也是可行的。
    若为树莓派,则建议使用RPi 3Model B以上的规格,而后使用树莓派专用的DebianLinux操作系统Raspbian,且必须是Debian开发代号Stretch版以上的Raspbian才行,Debian Linux的Stretch版是在2017年6月提出,树莓派的Stretch版则在8月。
    连接NCS的注意事项
    另外要注意的是,Intel官网建议,连接NCS的系统最少要有1GB的内存,4GB的储存空间,以及USB 2.0的端口,最好可以是USB 3.0,以利大量数据传输。由此观之,树莓派的硬件资源与规格仅是勉强合格,但由于树莓派毕竟是创客圈最广泛流行的单板计算机,多数开发工具包仍会尽可能迎合支持树莓派,若期望有好一点的单板计算机,也可以用前述AAEON所推出的Up Square,该单板计算机有2~8GB内存,也有USB 3.0埠,并支持Ubuntu Linux。
    准备好这些后,NCS可支持的人工智能框架主要有二,一是Google提出的TensorFlow,二是柏克莱分校提出的Caffe,也兼容OpenVINO、Andorid的神经网络(Neural Networks, NN)API。
    很明显NCS无法与NVDIA的TeslaGPU比拼运算力,尚无法广泛支持各种框架,但NCS仅在1瓦用电下提供人工智能加速运算,已是难得可贵,毕竟TeslaGPU的功耗大多是数十、数百瓦。
    进一步的开发则需要安装NC SDK(软件开发工具包)到笔电内,SDK内提供mvNCCompile、mvNCProfile、mvNCCheck等工具,可以转换格式、统计神经网络各层的效能、比较网络推论运算后的结果等,另外也附有范例程序及应用程序编程接口(API),这些均到位后即可开始学习摸索NCS了。
    作者:陆向阳