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

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

颠覆二字要慎用

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

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

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

中星微NPU的架构图

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

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

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

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

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

混淆概念不可取

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

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

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

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

中国芯任重而道远

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

入门NPU中国芯
相关数据
神经网络技术
Neural Network

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

深度神经网络技术
Deep neural network

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

嵌入式系统技术
Embedded system

嵌入式系统,是一种嵌入机械或电气系统内部、具有专一功能和实时计算性能的计算机系统。嵌入式系统常被用于高效控制许多常见设备,被嵌入的系统通常是包含数字硬件和机械部件的完整设备,例如汽车的防锁死刹车系统。

人脸识别技术
Facial recognition

广义的人脸识别实际包括构建人脸识别系统的一系列相关技术,包括人脸图像采集、人脸定位、人脸识别预处理、身份确认以及身份查找等;而狭义的人脸识别特指通过人脸进行身份确认或者身份查找的技术或系统。 人脸识别是一项热门的计算机技术研究领域,它属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。

逻辑技术
Logic

人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。

机器人学技术
Robotics

机器人学(Robotics)研究的是「机器人的设计、制造、运作和应用,以及控制它们的计算机系统、传感反馈和信息处理」 [25] 。 机器人可以分成两大类:固定机器人和移动机器人。固定机器人通常被用于工业生产(比如用于装配线)。常见的移动机器人应用有货运机器人、空中机器人和自动载具。机器人需要不同部件和系统的协作才能实现最优的作业。其中在硬件上包含传感器、反应器和控制器;另外还有能够实现感知能力的软件,比如定位、地图测绘和目标识别。之前章节中提及的技术都可以在机器人上得到应用和集成,这也是人工智能领域最早的终极目标之一。

深度学习技术
Deep learning

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

准确率技术
Accuracy

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

推荐文章