魏少军是清华微纳电子系教授,在2019杭州云栖大会上,他分享了“人工智能时代中国芯片设计的应用之道”,以下是他的分享内容文字整理,经编辑。
现在每个人都在谈人工智能,我一直研究芯片的架构,所以对芯片架构情有独钟,当看到人工智能的时候,第一个想到的就是人工智能芯片的架构是什么?
回过头看,对深度神经网络的研究可以追溯到早期(上世纪80年代),诺贝尔生理学和医学奖获得者David Hunter Hubel发现了视觉神经、神经元、突触,他想象了突触和神经元之间是怎样连接的。
因此,找到了一种似乎看起来可行的,通过一个节点表示神经元,通过节点互联表示突触,并用其上的权重来表示突触的通与不通或半通,因此形成了所谓的人工神经网络,进一步形成了深度神经网络。
今天我们说“无产业不AI,无应用不AI,无芯片不AI”。ARM公司院士Rob Aitken曾谈到,从Cloud的Big ML到Edge的Medium ML再到物联设备的Little ML,大概各有两个数量级的差距,从10的8次方到10的12次方。另一个角度看,从实际现实的信号输入到云中的结构化数据,中间也需要大量的过程。因此可以看到,从云上的AI到应用上的AI可以说是无所不在,只是目前更多还是在考虑云上的AI。
乐观预测,到2025年的时候,深度学习芯片市场将达到663亿美元。2018年,主要是GPU占主导地位;到2025年的时候,以专用目标作为主要目的芯片数量会远远超过GPU等通用芯片。这至少说明了一件事,就是AI芯片到2025年将具备巨大的市场规模(600亿美元以上),全球现在芯片市场也就是4000多亿的规模,所以到2025年将有1/6由AI芯片主导,所以影响是非常大的。
人工神经元等神经网络的机理其实是加权和,也就是各种层次的加权和,这样的结构要去真正完成计算任务,就需要很好的训练(通过数据的训练),找到权重的数值,最终形成训练的结果,以指导最后的推理计算。这看起来好像很简单,但它孕育着巨大的问题,即它需要巨量的计算能力,也就是算力。不同的人工神经网络适配不同的应用,例如CNN卷积神经网络可用于视觉识别,FCN全连接神经网络可用于手写体识别,RNN循环神经网络可用于语音识别和翻译等。人工神经网络到目前为止有两个问题还没有解决:一是算法仍在不断演进,新算法层出不穷;二是一种算法对应一种应用,没有一个统一的算法。
如果要去设计AI芯片而且在一个芯片上能够实现多种不同的应用,显然是不可能的,因为每一个都要做大量的运算,所以一颗芯片能完成一种神经网络的运算已经不得了。例如:1997年到2007年的ANN神经网络只有三层、网络参数为1万、芯片运算量为20万次/秒;2012年的AlexNET神经网络为7层、网络参数为6000万、芯片运算量为10亿次/秒;2014年的GoogleLeNet神经网络为22层、网络参数为5000万、芯片运算量为15亿次/秒;2014年的VGG19神经网络为19层、网络参数为1.38亿、芯片运算量为196亿次/秒;2015年的ResNet神经网络为152层、网络参数为1.5亿、芯片运算量为113亿次/秒。
所以,一颗芯片对应一种应用,两种应用就是两颗芯片,N个应用就要N颗芯片,这是应该现代AI芯片设计的重大瓶颈。前段时间清华大学的施路平教授在《Nature》上发表了一篇封面文章,把类脑计算与深度神经网络合到一个芯片中,引起了《Nature》的高度重视。原因在于现在做芯片之难,除了本身的高计算量之外,把AI从云推向边缘时的能量效率也成为巨大的问题。
可以看到VGG19,大概需要196亿次的运算加上同时处理1.38亿的参数,如果不考虑能量效率的问题,手机大概算一次电就没了,所以肯定是不行的。
所以说AI芯片需要高能效的通用Deep Learning引擎,它确实需要一个全新的算法,传统的算法都不行。其实计算能力的提升并不复杂,人脑的计算能力其实非常有限,超算早已超过人脑,所以简单的追求人脑的计算能力不是目标。相反要看到,人脑和机器逻辑去比较,最重要的一点是人脑有140亿神经元,工作频率只有200Hz,传导速率以每秒钟120米的速度,由于人脑皮层有半米也就是1/4平方米,所以还是可以完成10的16次方运算。而人脑的重量为1.2-1.6公斤,而能量效率非常高(只耗20瓦),但机器以天河2号超级计算机为例堆积了很多芯片,可以实现10的34次方运算,代价是720平方米占地面积、5吨重量以及24兆瓦功耗。因此,在现实中,不可能每个人一天到晚背一个超算去工作。所以,一定要找到一种能够实现与人脑差不多能量效率的设计,当然现在不知道应该是什么样的设计。
总结一下AI芯片应该具备的基本要素:第一,可编程性,可适应算法的演进和应用的多样性;第二,架构的动态可变性,要适应不同的算法,实现高效计算;第三,要有高效的架构变换能力,变换时钟周期要很低,低开销、低延迟;第四,高计算效率,避免使用像指令这样的低效率架构;第五,高能量效率,达到10TOPS/W,某些应用的功耗要低于1mW,某些应用的速度要达到25F/s的识别速度;第六,低成本,要能进入家电和消费类电子产品;第七,体积小,要能够装载在移动设备上;第八,应用开发简便,不需要芯片设计方面的知识等。
因此,目前流行的CPU+软件、CPU+GPU、CPU+FPGA、CPU+ASIC的做法,均不是理想架构,可能需要一种全新的架构。
也正是因为如此,我们今天还没有真正实现人工智能,UC伯克利大学的Michael Jordan教授曾说过:今天所说的Artificial Intelligence其实不是AI,更多是Intelligence Augmentation或叫IA增强智能,也就是利用这些技术来帮助人类真正实现和加强智能能力,而离真正的AI还差很远。
去年3月9号,我在2018 GTIC会上提出了一个问题,当时问题的前半部分是:是否会出现类似通用CPU那样独立存在的“通用AI处理器”,如果存在的话,它的架构是怎样的?实际上我那时候心里是有一点点答案的,但我想听听世界上的大牛们是怎么说的,而当时问题的后半句没列出来,想问的是如果不存在的话,今天做AI芯片的公司将何去何从?
后半句问题今天已经有答案了,我认为是存在这样的一个通用AI芯片的,因为在过去一年当中看到太多的相关技术,给了我们很大的启示。问题是怎么去看待这样的AI芯片。
John L. Hennessy和David A. Patterson在图灵奖讲座《计算架构的新黄金时代:专用领域硬件/软件的联合设计、增强安全、开放指令集以及敏捷芯片开发》中有一个名言,叫AI等于Architecture+Intelligence,我觉得这句话还不能够很清晰地表达AI的意义,我更多认为AI等于Architecture+Innovation,也就是说要做AI的话,首先想到的是架构的创新,如果架构上不创新,按照现在的这种方式走下去,恐怕很难获得真正所需要的架构。
AI处理器现在有很多种架构,比如ASIP的Cambricon、RS Dataflow的Eyeriss、Systolic Array的TPU、Sparsity的SCNN、Flexible Bit的UNPU等,问题是这些是不是最理想的呢,现在需要认真思考一下。
为了做这个事情,我们花了一年时间做了一个路线图:横轴是Deep Learning的Algorithm算法,纵轴是Hardware Architecture硬件架构。沿着横轴有各种各样不同的DL Algorithm,可能还在不断地演进,称为“More Algorithm”;纵轴上看到有各种各样的Hardware Architecture,称为“More Architecture”,或者更时髦的词叫“More than Algorithm”。最重要的不在于这两点,实际上要看的是中间结果,中间结果是算法与硬件的Co-design。做芯片的人都知道,曾经非常崇敬Hardware和Software的Co-design,现在看来不行,而要从Algorithm入手,也就是说硬件和算法这两者要结合到一起。派生出不同的应用场景也是自然的,现在面临的是各种各样的Co-design、Co-optimization、Co-verification、Co-implementation,因此做芯片不再容易,而变得越来越复杂。
现在的实现是怎样的呢?可以分成三个阶段,当然还有第四个阶段叫AI Chip2.0。
第一个阶段,可称为AI Chip 0.5的早期阶段,那时候要实现AI应用没有任何的现成算法,所以把CPU、GPU、FPGA、DSP都拿来用了,当时关心的是能不能实现AI计算,只要能实现就好,而不关注Performance性能够不够,当然GPU的Performance最高,所以用GPU的最多。到了AI Chip 1.0阶段,开始出现像Google TPU、MIT Eyeriss等。这时候不仅仅关注了Performance,还关注了像Power Consumption、Energy等问题,都是与应用密切相关的问题。所以,要考虑一个新产品、新技术的落地,最简单的办法就是做一个专用的芯片。到了AI Chip 1.5阶段,开始发生变化了,有两个标志性的成果:一个是清华的Thinker,还有一个是Wave Computing的DPU,分别考虑的不仅仅是专用的领域,是半通用的Reconfigurable可配置的,同时能够把Training训练和Inference推理两个任务放在一起,就意味着在性能、能量、效率、功耗等之外又加了一个Flexibility,即灵活性。在这个过程中看到Reconfigurable和System是关注的重点。到这儿还是一个Semi-General,还不是一个真正意义上的通用芯片。通用AI芯片是什么呢?目前为止还没有看到,它应该是一个通用的、自适应的、智能化和智慧化的设计,其中Intelligent和Intelligence成为两个关键词。
早期的AI芯片更多在考虑训练,像云端更多是训练计算任务,因为云端的计算能力足够强,找到那些权重参数要花费很多的算力。后来要通向终端应用的话,要有Inference能力,未来的芯片应该不分Training与Inference,应该两个都包含在其中,因为有可能在终端也要做Training和Inference,最终能不能实现也要拭目以待。
我们看到从AI Chip 1.5阶段开始出现了一种新的架构,是可配置Reconfigurable的,其实这个技术早就出现了,它在1990年就出现了,中间经过了90年代的发展期,后来又高速发展,到现在为止人们突然发现它可以用来做AI芯片。Wave-Computing就是采用了这一结果,只是它用的是静态任务。
第二种称之为软件定义,可以把软件的可编程性和硬件的可编程性定义为两个轴,尝试着把现在已有的芯片往入四个象限,例如CPU、DSP等以软件编程为主的在第二象限中,第三象限有ASIC和SoC,第四象限是FPGA和EPLD,问题是第一象限是什么呢?并不知道第一象限是什么,这就找到了一个全新的路径,第一象限应该空间可以发掘。我们称第一象限为可重构计算的芯片或叫软件定义芯片,通过软件来定义硬件的架构和功能,而且是实时和动态的定义,这样就可以解决算法在不断演进、硬件功能不断变化,如何适应算法的变化和算法的选择。通过这种方式,清华也做了重要的尝试,比如Thinker,这是一系列可重构神经网络的计算架构,这个计算架构用的是一种与其它理论不太一样的思路,它具有跟ASIC差不多的性能,但具有CPU一样的灵活性。
去年年初,MIT Technology Review专门写了一篇评论文章,对清华的这颗芯片进行评论,认为中国取得了一个宏观级的成果,这颗芯片我们今年把它推向市场以后,也成立了一个公司,今年大概已经可以到千万美元的量级、几百万颗的订单了,一下获得了很好的机会。
为什么很好呢?因为它的能量效率极高,绝对功耗又极低,用它进行语音处理的时候只有200多个微瓦、0.2个毫瓦,一节电池可以用一年,用于人脸识别时大概6个毫秒可以识别一个人脸,而且同时可以识别很多的人脸,识别率高于人的识别,而每一个识别的功耗只有12毫瓦。
最后,一个更为理想化的想法是怎么能够让芯片变得更智慧一些,刚才信息化最终都想能够实现智慧化,什么叫做智慧化?需要具有自己学习的能力。人类通过接受教育、通过学习,变得与众不同。所以,学习和教育或者训练和推理,很可能起到重要的作用。设想一下,如果芯片也可以通过学习和接受教育,那是不是这颗芯片能变成越来越聪明呢,变得与其它的芯片不一样呢?如果能做到这一点,芯片的智慧化就至少有了一点点眉目。
我们给出一种可能的智慧芯片架构,大家可以看到它包含了可重构的内核加一个训练内核,同时有很多On Chip或On Device的Compiler软件,其它新设计包括Algorithm和Software的进化,当然最难的是怎样甄别软件和应用,这是可以实现的。经过时间的推移和技术的不断推进,相信这个问题可能可以实现的。
如果看架构的主要功能,可以看到三个红色的部分,现在看起来最难突破,也是最后才能突破的,也就是如何根据应用来定义一个或找到一个最适合的神经网络。通过应用定义的神经网络去找到对应的软件,这又是个难点。当然,怎样把数据抽取出来进行训练以及进行推理,这也很难。这个问题可能不是今天能解决掉的,但未来可能可以解决。
蓝色的硬件方面,至少知道该怎么做,从Reconfigurable Processor的角度是可以说清楚的,Training Engine只要性能足够高、能量效率足够高,也是可行的。
剩下绿色要解决的是比较难的。第一个叫On-Chip Compiler能不能做到,而且这个Compiler应该是具备一定智能化的Compiler,这个事情本身就是个难点。更难的是Software Evolution也就是软件的自演进,怎么能够让算法和软件自己演进,而不是简单的改参数,而甚至是自己编程,可以对架构进行变形,架构变形后再自动产生相应的算法,算法再产生软件,这样一个过程能否智能化?如果这个过程能够实现智能化,就认为向前迈了一大步。再把刚才红色的问题攻破以后,AI芯片就具备了初步的智慧功能,可以通过不断地训练和使用过程,不断地自我学习,变得越来越聪明,越来越适合应用。
设想一下,当有这样一颗芯片用在阿里云中,想换掉这颗芯片的难度都会变得非常大了,因为换掉它要付出巨大的代价,所有的训练和学习都浪费了,因此一定会想办法把“知识”传递下去。
这样的智慧芯片,除了刚才讲到的人工智能芯片所具有的特性之外,更重要的是以下三点:学习能力,接受教育,成长能力;算法、软件的自主演进能力;自主认知,自主判断,自主决策的能力。这三点都是难上加难,需要真正意义上花费大精力去实现。当时,讲技术、讲芯片、讲算法,再多也没用,应用是真正要解决的问题,AI芯片最大的障碍不是技术问题,是如何落地的问题。今天要甄别一个AI能不能有实际应用,真的很难。
列出一些应用来,它们可以用AI去实现,但十有八九不用AI也能完成,甚至完成的更好,这时候AI的压力就变得非常大。那么,到底哪些应用需要AI?需要AI帮忙解决什么样的问题?什么是AI的“杀手级”应用?以及什么样的AI应用是我们每天离不开的?如果把这些问题搞清楚,也许就知道如何去发展真正意义上可用的AI芯片了,那时候AI就真正的来临了。(文/宁川)