中星微NPU:中国芯任重而道远,媒体捧杀可以休矣!

2016-10-23 23:26:00 来源: 互联网

china0513-624x468

近日,中星微发布了一款用于嵌入式平台的“星光智能一号”NPU(神经网络处理器),相关报道迅速刷爆了各大新闻媒体和朋友圈。我们很高兴能见证中国集成电路设计领域的一大突破,然而看到各路媒体浮夸的报道我们却感觉如鲠在喉,不吐不快。半导体行业是一个需要苦练内功一步一个脚印的领域,扭曲事实随意夸大的报道不仅会造成业界浮躁的气氛,也是对真正踏实工作的从业者的不尊重。


“颠覆”二字要慎用

冯诺依曼架构是经典的计算机体系,指的是计算机CPU从内存取指令->读取运算所需数据->在CPU完成运算->将计算结果存回内存的程序执行过程。随着CPU速度越来越快,冯诺依曼架构遇到了内存带宽的瓶颈,即程序运行速度被内存速度所限制。目前也确实有许多学者试图打破冯诺依曼架构的瓶颈,例如使用忆阻器实现内存内运算以避免CPU和内存间的数据存取。

china0513-624x468

在目前阶段,超越冯诺依曼架构离实际应用还有一段距离。然而,一些媒体在对中星微NPU的报道中却这样写道:“中星微针对CNN算法和特点进行了专门设计,彻底颠覆了冯诺依曼架构,而采用全新的数据驱动并行运算架构,研发的数据流类型NPU极大提升了计算能力与功耗之比,擅长处理海量视频、图像类多媒体数据,能使人工智能在嵌入式机器视觉应用中大显身手。”

“数据流类型NPU”这个名词看上去特别高大上,而且“颠覆”了冯诺依曼架构,简直就是“下届图灵奖我拿定了”的感觉。要知道,连忆阻器的发明人,混沌系统祖师蔡少棠教授都没敢说自己的忆阻器能在现阶段颠覆冯诺依曼架构!那么,如此高大上的数据流NPU结构是如何“颠覆”冯诺依曼架构的呢?从中星微自己的宣传资料中可以看出点端倪(注:在中星微自己的宣传资料里面并没有看见“颠覆冯诺依曼”的说法):


china0513-624x468

中星微NPU的架构图


由图中可见,中星微的数据流类型NPU使用的是一种单指令流多数据流(single instruction multiple data, SIMD)的并行运算架构。并行运算结构根据指令流和数据流数目可以分成单指令流单数据流(SISD),单指令流多数据流(SIMD),多指令流单数据流(MISD)和多指令流多数据流(MIMD)。单指令流单数据流是最基本的计算模型,处理器一次读取一条指令并完成一个数据的运算。然而,在很多情形下不同的数据是可以并行运算的(例如两矢量相加,矢量的每个维度都可以并行运算互不干扰),为了提高效率SIMD应运而生,只要一条指令就可以完成多个数据流的并行运算。除了SISD和SIMD之外,并行运算结构中的MISD在计算机图形学的特征提取算法中非常有用,而MIMD往往用在多处理器计算机中。

china0513-624x468

SISD和SIMD的比较:矢量运算用SISD需要一个循环才能完成,而使用SIMD可以一条指令就可以调用多个运算单元并行完成运算,使得计算效率大大提升。


然而,使用SIMD并没有颠覆冯诺依曼架构。SIMD还是需要从内存中读取指令和数据,并且根据指令把数据分配到多个运算单元中完成并行运算,最后把运算结果再存回内存。可见,SIMD计算还是在冯诺依曼架构中完成的,根本谈不上颠覆。SIMD提出也不是新鲜事了,斯坦福大学的教授Michael Flynn教授早在上世纪60年代对并行运算分类时就使用了SIMD的概念。现代计算机里面的显卡就是使用大规模使用SIMD(可以有数千个核)进行运算的典型例子:在实现3D图形的渲染时,使用SIMD并行运算可以大大提升性能。而最近随着人工智能的发展,人们发现在深度神经网络中使用SIMD可以高效率地完成卷积运算。这也是为什么复杂的神经网络必须使用GPU等SIMD处理器完成运算。


china0513-624x468

当代GPU大规模使用SIMD,可以使用高达几千个核进行并行运算,然而使用SIMD并未颠覆冯诺依曼架构

综上所述,中星微的NPU使用SIMD是合理的选择,但是也谈不上“颠覆”冯诺依曼架构,因为该NPU实际上还是在使用冯诺依曼架构。


混淆概念不可取

中星微“星光智能一号”的主要应用是安防监控市场。报道中提到,“视频监控领域对智能识别有着强烈需求…此前的技术主要存在两方面局限,一是识别准确度不高;二是传统技术需要先把海量视频数据传到后台,再在后台进行识别,无法实时得到结果。而使用了深度学习的机器视觉,对人脸识别的准确率可达98%;在嵌入人工智能后,可以当场识别。”另外还举了周克华案的例子,“在几年前轰动全国的周克华案件中,案犯在南京被拍到,公安干警将视频信息拷贝分发给数千人的团队,对着每个摄像头进行比对,但周克华仍逃到重庆,直到再次作案后才被抓获。如果当时有‘星光智能一号’技术,罪犯走到哪里都会被智能识别,很快就会有线索传回来。”报道给人的感觉是,有了NPU就可以在摄像头内当场识别嫌疑人,当发现嫌疑人的时候立刻报警。

遗憾的是,目前的人工智能技术可以识别嫌疑人,但在嵌入式平台中基本不可能当场识别嫌疑人。我们先不谈人工智能,先谈谈“人工”。如果给我们的人民警察一张照片,让他辨别照片上面是不是有人,他一定能很快地辨别出来。然而,如果给他一张照片问他照片上是不是出现了目前正在通缉的犯人,那么他还需要把照片和通缉犯数据库里的所有照片都比对一遍才能下结论。人工智能也是一样,第一种“分辨照片上是不是有人”的工作在人工智能领域有个专门的名字叫做物体识别(object detection),目前使用深度学习已经可以把物体识别做到很高的正确率。几年前,Google做了一个项目是在Youtube识别含有猫的视频,就是在做物体识别。物体识别可以在嵌入式系统中实现,因为需要识别的物体种类往往是有限的而且是不变的,所以只需要一张固定的神经网络就可以实现。另一方面,人物识别(识别出相片中的人是谁)就要复杂一些。当使用人工智能去检测有没有发现嫌疑人时,需要首先提取画面中人物的特征,然后把这些特征和数据库中的各个嫌疑人一一比对,最后才能确定画面中有没有发现嫌疑人。由于嫌疑人数据库会随时更新,所以安防设备即使配备了NPU也必须连接到嫌疑人数据库后才能识别,当场识别嫌疑人并立刻报警在现阶段连人工都很难做到,更何况用人工智能实现。

那么NPU在安防设备中真的一无是处吗?也并非如此。首先,NPU的物体识别功能可以自动识别危险物体,如枪支或管制刀具,并且自动发出警报。这样安保人员的工作就轻松了很多,不用再一直高强度地盯着监视器画面。其次,NPU可以实现场景识别,当检测到特定场景(如打架,火灾)时及时发出警报。最后,在嫌疑人识别方面,摄像头内的NPU可以帮助提取画面特征,这样在云端服务器只需要做特征比对即可,省去了服务器做画面特征提取的计算负担。目前,人工智能硬件已经被广泛应用在安放领域,例如美国硅谷的许多公司都已经在使用安防机器人做巡逻。


china0513-624x468

美国KnightScope公司生产的K5机器人已经被广泛应用于巡逻


中国芯任重而道远

在过去的几年中,中国的芯片设计行业有了长足的进展,涌现了海思,展讯等国际知名企业。在人工智能芯片方面,也诞生了“寒武纪”等被国际认可的成果。然而,不可否认的是,中国在芯片设计方面离国际顶尖水平还有一定距离,尤其是在高性能处理器和可编程逻辑这类需要长期技术积累的领域。即使是在新兴的人工智能芯片领域,中国也缺乏Nvidia这样能够做超高性能云端人工智能加速芯片产品的厂商。中国芯的崛起任重而道远,需要踏踏实实一步一个脚印,同时媒体工作者还是需要提高自身姿势水平,不要“见得风,是得雨”,还中国半导体行业一个清净的氛围。


china0513-624x468

===

本文由 矽说 (微信号:silicon_talks) 授权原创转载,属于作者个人观点,不代表本公众号立场。

china0513-624x468
【关于转载】:转载仅限全文转载并完整保留文章标题及内容,不得删改、添加内容绕开原创保护,且文章开头必须注明:转自“半导体行业观察icbank”微信公众号。谢谢合作!
【关于投稿】:欢迎半导体精英投稿,一经录用将署名刊登,红包重谢!来稿邮件请在标题标明“投稿”,并在稿件中注明姓名、电话、单位和职务。欢迎添加我的个人微信号MooreRen001或发邮件到 jyzhang@moore.ren
china0513-624x468
点击阅读原文,推荐好友入职,领取最高10万推荐奖

责任编辑:mooreelite