雷锋网按:本文根据陈云霁研究员今天上午在 CNCC 2016 上所做的大会特邀报告《 神经网络处理器 》编辑整理而来,在未改变其原意的基础上略作了删减。
陈云霁,男,1983 年生,江西南昌人,中国科学院计算技术研究所研究员,博士生导师,CCF 会员,曾获 2014 年度“CCF 青年科学家奖”。同时,他担任了中国科学院脑科学卓越中心特聘研究员,以及中国科学院大学岗位教授。目前他带领其实验室,研制寒武纪系列深度学习处理器。
他在包括 ISCA、HPCA、MICRO、ASPLOS、ICSE、ISSCC、Hot Chips、IJCAI、FPGA、SPAA、IEEE Micro 以及 8 种IEEE/ACM Trans. 在内的学术会议及期刊上发表论文 60 余篇,其中包括 ASPLOS'14 和 MICRO'14 的最佳论文奖(亚洲迄今仅有的两次获计算机体系结构顶级国际会议最佳论文),相关工作入选了 CACM 评选的研究亮点,
陈云霁获得了中国青年科技奖、首届国家自然科学基金“优秀青年基金”、首届国家万人计划“青年拔尖人才”和中国计算机学会青年科学家奖,入选 2015 年度《麻省理工科技评论》35 岁以下的全球最佳 35 名创新人士。他还作为负责人带领科研团队获得了全国“青年文明号”和中央国家机关“青年文明号”的称号。
以深度学习为代表的人工神经网络是最重要的人工智能方法之一,在云端和终端都有非常广泛的应用(例如广告推荐、自动翻译、语音识别、图像识别等)。然而传统的 CPU 和 GPU 芯片在进行神经网络处理时遇到了严重的性能和能耗瓶颈。
“我们报告的题目是《神经网络处理器》,说白了,就是要做智能处理。”
智能是一个非常广阔的范畴,包括知觉、记忆、学习、语言、思维和问题解决等,是人类最主要的日常脑力活动。近年来,智能已经变得越来越重要,这主要是因为计算机的使命有了很大变化。
在二三十年前,计算机的主要使命主要是科学家和工程师等少数人计算用的工具,但现在的情况就不同了,它通过手机这样的终端载体进入了每个普通人的日常生活中。在这种情况下,它就有义务帮人们去解决每个普通人日常生活中最经常碰到的问题。
现在大部分人已经不再从事体力劳动了,更多时候碰到的都是相对比较简单的脑力活动,所以说我们看到计算机的任务就已经发生了变化,它需要把我们从日常简单的脑力活动中解放出来。
所以我们现在看到,各种平台上已经有各种各样的智能处理任务。比如说在超级计算机上面做商业分析或者药物研制,比如说在数据中心上面去做广告推荐或自动翻译,还有包括智能手机或者各种智能安防摄像头上去做图像识别、语音识别等等,以及现在非常热门的自动辅助驾驶和更高的消费类电子。这些背后的核心的技术都是在做智能的处理。
| 人工神经网络
提到智能处理,可能我们就不得不提下这个神经网络。相对来说,这是目前在人工智能领域用途最广泛、可能也是最重要的技术,或者至少是之一。人工神经网络的提出其实非常早,两位提出者甚至都不能称为计算机科学家,而应该是心理学家或者逻辑学家,他们在 1943 年就提出了这个思想。
其实当时最初的思想就是希望从大脑得到一些借鉴,因为大脑是我们迄今为止所知的最智能的物体。大脑中存在千亿个神经元细胞,如果把神经元连接认为是突触的话,那么存在百万亿个突触。因此,最早就是希望能把大脑中神经元和突触数字化抽象出来,这样的数字化网络某种程度上可能就继承了人脑对信息的处理能力。
上图显示了一个最简单的人工神经网络,只有一个神经元,但是已经可以做一些比较有意思的处理了,比如说分类器,可以判断这究竟是我方的飞机还是敌方的飞机。
这是一个神经元能做的,那么很多个神经元在一起能做什么呢?其实就是我们现在所说的深度学习,说白了就是一种多层、大规模的人工神经网络。
下面这个图可能是一个卷积神经网络的示意图,这是现在用途比较广的一种深度学习的技术,里面有很多层。比如,微软亚洲研究院去年做的已经有上百层,甚至数百层了。但是里面各层之间却是有共性的,比如说卷积、Pooling 、全连接的分类器等等。
如果上面说的比较抽象的话,那么这边给大家一个具体的例子。
第一层(Layer 1)对局部特征进行抽象;
第二层(Layer 2)对比较复杂、比较大的特征进行抽象;
第三层(Layer 3)对比较大范围的特征进行抽象;
……
那么一层层抽象后,我们就能得到比较复杂的信息。
深度学习在图像识别方面有非常广泛的应用,比如 MNIST 图像识别,就像大家寄快递时,只要扫一扫邮政编码就能知道需要寄到哪里;那么在人脸识别领域也有非常多的课题组取得了很多成绩,包括中科院计算所、香港中文大学等等;在语音识别方面,科大讯飞也有非常深入的研究和非常好用的产品。
除了上面提到的和自然语言理解,重点说说策略分析。
大家都很关注 AlphaGo,其实就下围棋本身而言并没有什么值得惊讶的。大家都有一个共识,任何有规则的游戏,最后人工智能都会比人类做得好。Deepmind 团队其实在 2013、2014 年的时候,就已经有很多雏形的技术,所以才被谷歌收购。2014 年的时候 Deepmind 引起大家关注,是因为它提出了“深度学习 + 增强学习”的框架,可以学会打很多种小游戏(小霸王游戏机上那些)。那是一共学会了四十多种小游戏,其中二十多种超过了人类的纪录。
所以当它把这个技术运用到围棋上,并以 4 : 1 战胜人类大师李世石,应该说是“出乎意料,情理之中”。最近听说一个消息,Deepmind 团队正在尝试把这个框架放到星际争霸上,这是一款著名的策略类游戏,如果可以打败人类玩家,说明未来在决策方面也可以给人提供很多帮助,类似充当部队中参谋长的角色。
| 为什么需要神经网络处理器
之所以需要神经网络处理器,主要有两点原因:
神经网络是处理智能处理迄今最好的方法;
但是,通用 CPU/GPU 处理神经网络效率低下。
所以如果要用 CPU/GPU 搭建一个拥有人脑规模突触的神经网络可能需要用一个电站来给它供电了。所以从高性能计算机方面来看,这也是不可行的。
那么从其他领域也可以得到一些借鉴。
比如说 GPU,上个世纪九十年代,可能大家都自己攒过电脑,那时候我们一般都是用通用 CPU,但随着视频、游戏等对图形处理的要求越来越高,才逐渐出现专门的 GPU,并形成了一个巨大的市场。这并不是说 CPU 无法处理这个问题,而是会很麻烦、特别耗电、特别慢。
再比如说 DSP,也是类似的情况,信号处理应用非常广阔,每个手机中都会使用到,CPU 不是不能处理,但是也不太合适,所以出现了专用的 DSP。
那么未来进入智能时代是大家的共识,用于智能处理的专用芯片的市场不会亚于 GPU 和 DSP。自然而然的结果意味着也许未来每台计算机都可能需要一个专门的芯片,比如深度学习处理器。
| “寒武纪”系列的诞生和发展
计算所是这个领域的先行者,在智能计算机领域积累了丰硕的成果,因此寒武纪的学术渊源非常深厚:
中科院计算所陈云霁研究员:寒武纪首席科学家,师从国产芯片“龙芯”之父胡伟武研究员。
中科院计算所陈天石副研究员:寒武纪创始人兼 CEO,师从人工智能专家陈国良、姚新教授。
另外还联合了法国的 Oliver Temam 教授,他也是神经网络处理器领域的专家。
可以说,寒武纪系列开创了深度学习处理器的方向,并在过去几年取得了一些列丰硕成果:
| DianNao —— 电脑
为什么取名叫做“DianNao”(电脑)呢?这里还有一个有趣的故事。
原本也是准备按照惯例取个英文名,但是法国的合作伙伴,也就是之前提到的 Oliver 教授提出不如取个中文名,因为这在外国看来是外文,显得比较特别,于是这样命名了世界上首个深度学习处理器。
用于神经网络的芯片其实在上世纪八十年代,包括英特尔、摩托罗拉等科技巨头就开始了相关工作。那时的神经网络规模比较小,算法上有个神经元就在芯片上加个神经元,算法上有个突触就在芯片上加个突触。然后用电脑一连,就可以工作了。
但是,当我们面对深度学习时,传统的方法无法应对如此大规模的神经网络,可能有几十亿、上百亿的神经元。如果每个神经元要做一次乘法的话,没有哪个芯片可能放下那么多的乘法器。即使我们能够放下这么多的硬件突触,访存带宽也无法供应数据,这是一直以来的瓶颈。
而且另一个观察发现:把数据从内存搬到硬件运算单元甚至比运算本事更耗费能量。
那么我们应该如何做呢?
根据我们的策略,需要解决两个矛盾:
算法是多变的,而芯片则是不变的;
算法的规模是无限的,而硬件运算单元则是有限的。
所以,要用有限的、固定的硬件处理无限、多变的算法,就提出了硬件运算单元的分时复用方法。
| DaDianNao —— 大电脑
“DaDianNao”与“DianNao”的思路正好相反,“DianNao”是通过硬件的时分复用解决大规模神经网络的计算问题,而“DaDianNao”是从超级计算机的角度来想的,一个超级计算机中可能有很多芯片,每个芯片又可以放下很多核。那么一个芯片可能无法放下一个大的神经网络,很多个芯片也许就能放下了,那么整个模型就能放在芯片上,好处在于就不需要内存了,这就绕过了一直以来的访存的瓶颈,性能由此可以大幅提升。
| PuDianNao —— 普电脑
机器学习的算法很多,根本原因是数据和问题的多样性。不可能通过一种算法解决所有问题,如果没有通用性,芯片未来的应用。
因此,“PuDianNao”的设计思路就是实现足够的通用性,支持主流机器学习算法的高效运算。
主要干两件事情:
寻找各种机器学习算法中最耗时/最普遍的运算操作集合;
研究各种机器学习算法的局部性,降低各算法的访存需求。
那么通过研究上面五种主要的算法行为,最后的结论就是:
需要支持 5 种主要的运算,包括向量内积、向量距离、计数、非线性函数、排序。
归纳总结了数据的局部特征
| ShiDianNao —— 视电脑
“ShiDianNao”是去年的最新成果,我们希望把处理器集成在摄像头中,好处在于在 Sensor(传感器)采集的时候可以直接对图像进行流式的识别处理,消除了对图像的读写操作。另外用比较小的卷积神经网络在芯片上处理,这就消除了对模型的读写操作。因此可以提升性能,降低能耗。
| 总结与展望
寒武纪迄今取得了三大技术突破:
突破了内存带宽的主要性能瓶颈,通过 EDRAM 技术及多芯片互联,保证神经网络模型完整放于片上,完全无需访问内存;
突破了片上通讯导致的延迟和功耗,分成的每块内部包含运算部件、神经元数据、突触数据,可以减少 90% 以上片上通讯时间;
突破了机器学习算法、变种众多的困难,采用可编程 VLIM 处理其结构以及灵活的运算部件,支持几乎所有现有的主流机器学习算法。
陈云霁研究员为代表的寒武纪团队未来的梦想就是将代表性智能算法的处理速度和性能功耗比提高一万倍。这里代表性的智能算法不仅仅是深度学习,还包括其他机器学习的方法。
我们知道谷歌大脑用了 1.6 万个 CPU,如果可以实现提升一万倍的水平,那么相当于可以把谷歌大脑装进我们每个人的手机里。这样的手机可以帮助我们在本地实时地完成各种图像、语音和文本的理解识别。
更重要的是,具备实施训练的能力以后,就可以不断通过观察人、社会和自然界的行为提升能力,成为生活中人们离不开的助理。