美国工程院院士丛京生:人工智能时代,让芯片设计定制化-创新-知识分子

美国工程院院士丛京生:人工智能时代,让芯片设计定制化

2018/09/19
导读
在中国工程院信息与电子工程学部主办、亚洲超算协会和浪潮集团联合协办的2018人工智能计算大会上,丛京生发表“可定制计算与AI”的演讲。

 m/11/zsfz1537303946.3708402.jpg

  

在中国工程院信息与电子工程学部主办、亚洲超算协会和浪潮集团联合协办的2018人工智能计算大会上,丛京生发表“可定制计算与AI”的演讲。


讲者 | 丛京生(美国工程院院士,加州大学洛杉矶分校教授)

整理 | 邸利会


  

 

AI无处不在,现在可以看到各种各样的AI产品,在这边也看到AI支持的语音识别和同声翻译,王恩东院士讲到AI三次革命,我有幸看到两次革命,第一次80年代末,AI有很多有效的进展,我校杨教授的一篇文章,80年代末的时候可以认识数字了,这个很重要,因为在美国送信要写邮政编码,可以自动识别把信分开,他当时做的神经网络有很多是现有神经网络的基础,包括用全机的这些工作,这些工作中断了不少时间,AI并没有那么风风火火,到了2010年来做图像识别和VGG,很多发展都是在最近五到八年发生的。

 

为什么有30年的停滞,直到最近才有大的发展,我个人看AI的基本算法没有太大的变化,推动AI的发展有两个因素,一是因为互联网的产生,互联网产生之后有了大数据,各个地方的工作者可以把大量数据传上来,比如用图像识别的例子,已经有1400万个图像在里面,做语音和视频的也非常多,这在80年代是完全不可能的,没有大量数据推动AI发展。

 

第二,计算使AI无所不在,当时大家用到的计算机是英特尔的383,每秒钟执行200万到300万指令,当Alexnet产生的时候英特尔的CPU已经发展到多核,在一秒有一千亿到两千亿的运算。再往下是用到GPU又把这个能力提高了十倍到上百倍。因为有这些计算能力的提高让今天的AI到了无处不在的地方。

 

我今天的主题是强调可定制化计算,因为我觉得下面计算的瓶颈是能耗和能效的问题

 

90年代的时候买机器要看主频的速度,浪潮的机器是两百兆还是五百兆的,到上年十年大家就不只看主频了,因为主频到两到四个核的时候基本停止了,当集中起来的时候芯片就烧掉了,把主群停下来做并行计算,但是这个也很快不能往下做了,你可以上上千个或者上万个,但是不能同时打开,否则芯片还是会烧掉。

 

十年前有一个方案,计算的下一个方向是可定制化,我的体系结构要为你做的应用来调整定制,所以我们很有幸的在2008年给美国自然基金会送了一个提案,可定制计算,有一千万美元,我们后面若干年的工作做这方面的研究。

 

我自己关注可定制化是15年前,我一个同事给我看了这个表,他举了一个例子,用加密算法,可以用一个芯片来做,这个芯片的效率定义成一,第二个用了一个低功耗的arm processor来做,他的效率差了85倍,用英特尔的CPU做,效率差800倍,最后一个就很离谱了,如果你写JAVA在嵌入式处理器上做呢,我一看可定制的专用和通用差的这么大,我们一定要用上。我们做的更多的是FPGA。你可能说这个例子太古老了,是15年前的了。那斯坦福教授在不到十年前做了一个实验,做了视觉图像处理很常见的例子,他把处理器各种各样的优化用上了,之后还是通用计算和专用计算之间差了50倍,这就是我们想弥补的差距。

 

我们说以后的计算不要用通用的处理器,通用处理器尽量用各种各样的加速器,加速器是专用定制计算,大多数计算在加速器上,处理器只是协调你计算的过程,这其实跟现有的技术有非常大的区别,学计算机的知道,冯诺伊曼体系结构是一个非常漂亮,优雅的体系结构,它有一个共用的数据通道,再加上控制逻辑,各种各样的指令都可以执行。

 

这么一个体系结构为什么走了四五十年,因为我觉得他解决了当时的一个瓶颈,咱们的计算能力非常有限,有不少年轻的同事们我问一下,大家知道第一个电子计算机里面有多少个电子管?有六万多个电子管,第一个集成电路处理器里有多少晶体管,只有2200个,相比之下,你花了几千块钱买了一个智能手机,华为或者苹果,里面有多少晶体管,里面有了三四十亿个晶体管,所以今天我们有足够多的计算元件,恰恰卡在能耗上,我不能把它全用起来。

 

在今天的环境下用处理器的好处是每一个处理器的效率都非常高,但是他覆盖的工作量是非常有限。人脑其实很了不起,咱们干这么多事情,我在这儿讲话,你们在学习,每天用的功耗只是20瓦的功耗,非常有效,可是大脑里面,我也问过很多神经系的专家,没有一个数据通道,没有执行各种各样的指令,他是特别的区域,有的区域负责语言处理,有的区域负责思维,有的区域负责运动,这使他的神经网络大大的定制化了,而且专用化了,效率大大提高。

 

再看社会的发展,更先进、更文明的社会分工更仔细,你生病了以后不会看律师,你肯定会找医生,你要想学AI就要到这个会场上,找到计算机的工程师。

 

这里可能需要解释一下为什么冯诺伊曼体系结构、基于指令的计算不那么有效,因为当时元件很有限,有一个公用的数据通道,为了各种各样的指令,比如你做加法,先要把加法指令从内存拿来这是一步,要看是什么指令,是加法还是乘法,还是比较,这又是一步,然后两个数据加的时候还没有算出来,还要在那儿等,这叫scheduling, 调度,等七八步以后最后才是做加法,这是它的效率为什么不高。今天如果我做了专用的计算器,我就是加乘,完全为你量身订作的电路。

 

可定制计算怎么为AI起到作用

 

我的报告有两部分,第一,可定制计算怎么为AI起到作用我们设计一个专用的芯片来为AI这个确实是有人再做的。可能最为人知的例子就是,谷歌做的GPU芯片,他做了两款,2014年和2017年各发布了一款,他的数据比最好的CPU提高了几十倍的效率。

 

但是这有一个问题,谷歌团队非常大,你今天要想做一个芯片,没有几千万美元做不出来,有多少公司有几千万美元的资历做一个芯片,而且你怎么保证做完了以后卖出去,有几亿美元的收入才能把成本拿回来,很多人没有这个信心,而且设计周期特别长,即时是谷歌,也设计了12个月到24个月。24个月以后,AI的很多算法就有比较大的变化了,这是一个非常尴尬的问题,需要解决。

 

我的工作是想让AI芯片的设计民主化,大家在座的每一位都可以设计我们通过一个可编程的逻辑电路来做,就叫FPGA,它里面每个逻辑可以定义做加法乘法或者与或门,它的互联也非常灵活,可以告诉它直走还是往上往下或者分叉,所以通过configure logic, interconnect, 这些你可以做出各种各样专用的电路,而且你花几百块钱买这个FPGA放在办公桌上,想设计一个电路就可以设计一个电路,一秒钟以内就可以刷新变成另外一个电路,今天可以做压缩,明天可以做人脸识别,后天做语音识别。

 

今天在浪潮可以买到这样的机器,买一个一般的服务器插一个FPGA的卡,我们跟工业界的朋友都有合作,IBM、英特尔,最后一个是英特尔把CPU和FPGA放在同一个电脑上,你插进去这里又有CPU又有FPGA。

 

在UCLA,我们通过这种芯片搭了各种各样的系统,比如左边的那个是2013年做的,通过FPGA做的小的数据中心,FPGA低功耗,而且特别有效,每个只有两瓦,七八个集中起来也不过几十瓦,没有风扇,完全听不到声音;右边这个是高性能计算的集群,里面上千个核,每个服务器都接了一个FPGA。这都可以做到,难在哪里,给浪潮打个电话把机器买了没有问题,问题是怎么编程序,这是比较重要的问题。

 

这些工作我们做了以后,业界也很关注,亚马逊把FPGA放在他的云计算平台里,他做完了以后阿里和华为都把FPGA加进来了,微软也做了不少先驱的工作和国内的百度,微软把每个服务器接到数据中心的网络之前都经过一个FPGA,结果有成千上万的FPGA连在一起,变成非常强大的微软的大脑,所有的FPGA可以编程,变成各种各样的逻辑。他去年显示了一下他们在做AI方面的工作,还是很惊人的,他们做了上百倍的提高,虽说是可编成的逻辑,在这个延迟方面比TPU还是有更高的提升,这个大家可以看一下他们的论文。(微软有一个采访讲,为什么数据中心用FPGA)

 

我们在UCLA和北大的组做了深度学习用FPGA加速的第一篇论文,2014年做的工作,2015年初发表的,这篇论文是我职业生涯中引用率发展最快的论文,第一年出来就有20篇,两年之后就有几百篇,今年还没过完,已经接近两百篇了,所以可见大家用FPGA实现深度学习有多大的兴趣。

 

但是其实,做起来很不容易,我们在这边有好几年的尝试,有什么难度?第一,今天深度学习的网络越来越深,刚才讲到精确度一直在提高,现在的错误率不到5%,这是什么概念,人的错误率在图片识别上大概有5%左右,它超过人眼的识别率了,但是为了达到这个精确度,有了一百多层的神经网络。

 

我们做了一个统计,我们在《自然Electronics》里发表的论文,我们有一个大胆的预言,神经网络的参数是指数型的增长,中间这条线,很熟悉的从Lenet,AlexNet,VGG上去之后也是指数级的增长,横轴是年代,纵轴是参数,是指数型增长的,是log的。上面是工业界用到神经网络的数字,发展的更快。最底下的线是最近做的压缩的工作,使神经网络的大小有几十百甚至上百倍的压缩,压缩完了以后,它的发展趋势还是指数型的,所以这个对计算能力的要求非常大。

 

第二,用了服务器的就知道,买服务器不光调计算能力主频能力,还要调带宽,能存储数据和处理数据都需要带到计算器里,再拿出来,他的要求很不一样,比如你看神经网络,其中有几个部分,一个是做卷积,最后要全连接的层来做分类。卷积用了99%的计算,基本通讯要求不是很强,但看他的通讯要求卷积不到20%,但是最后的要80%。要设计一个加速器又能做卷积,又能做全连接的层,还是很有挑战的。

 

第三,Abstraction Gap,昨天有一个训练营,有上千人参加,你们怎么写神经网络,基本用caffe、Tensorflow很高层的描述性的工具来写,但是你要在变成C程序在机器上跑起来,要上百行才能实现出来,要想把一个电路实现出来就更了不起了,要上万行的原代码才可以实现,我们一直在做一个自动的编译器,从高层下来。

 

我给大家介绍一下2016年的工作,显示了我们可以做的能力,刚才讲了卷积神经网络和全连接层这两个有很不一样的计算特征,我们有一个通用的计算表示,第二,我们有一个软件可定义的加速器,这个加速器可以使我们或者优化计算能力,或者优化通讯能力。第三,加上新的层次,这个层次是让你可以从最高层的描述做,比如Tensorflow、Caffe,这个也可以交流一下,我们一个是在学术界,有一个技术公司都可以提供这个服务。

 

要把它的性能做好挺不容易的,仔细看一下谷歌的TPU,它里面的加速器用到一个微处理的结构,叫做脉冲阵列。脉冲阵列有什么好处呢?就是数据来了以后,做计算做处理,处理完了把它只给我的邻居,不用传的很远,这样做下去。为什么要这样呢?如果大家一直在做电路设计,就知道,今天的电路已经到了这个程度,计算可以很快,但把数据从一个节点传到另外一个节点是计算的几倍了。我要把数据传输的能耗或者延迟缩短,那我就做的很好,任何一个计算来了之后能不能用脉冲阵列做出来,这是很难的问题。

 

这个图是英特尔的同事做的,他们做了几个脉冲阵列,手工做的,几个月到十几个月,非常繁琐,有各种各样优化的条件,比如考虑延时、能效等。我们在UCLA两年前做一个自动编译器,给我任何一个C程序,就判定能不能用脉冲阵列做出来,如果能就生成出来了。

 

这个需要的数学还比较多一点,我用了一个多面体的模型,Polyhedral模型,任何一个程序来了,需要加速,基本都是有多层循环,就可以映射到一个多维的空间,节点需要自己去做,多维空间节点,然后变成一个三维空间的表达,我需要做的是把三维空间的数据流变成一个二维的或者一维的脉冲阵列。变的时候考虑两点,第一,哪个计算在哪个脉冲阵列里做,第二,决定什么时候做,这也很重要,因为计算是有一定相关性的,有时候这一步做完了之后才能做下一步,因为第一步的数据要被第二步用到,这都可以用数学表达式描述出来,然后需要解一个高维的优化上的问题。你的逻辑可能很复杂,我们需要通过几步,而且你的数据进来只能在边缘,不能在里面。比如这个矩阵乘法是我们做神经网络非常重要的计算单元,我们看下来可以淘汰出各种各样的实现,归纳出五个脉冲阵列实现,你选哪个看你的计算要求,做卷积更有意思,我们可以自动生成15个候选阵列,具体选哪个看你的应用。MIT发表的结果是我们这里面的第五个,UCLA和北大也有,是第七个,另外几个也很好,我们可以自动生成,而且可以给你看到每一个节点的特有的有效性。其实,你不一定只在一个FPGA上,我们搭了一个原型,可以有多个FPGA在里面,有很大的神经网络。

 

这是第一部分,我们做了这个工作就是让你从很高层次的描述,通过一个中间的表达语言,然后到各种各有的可以很优化的微处理的结构,比如脉冲阵列,并行计算的架构等,我们的目标是希望把芯片设计民主化,在座的每一位都可以做需要定制的芯片,在FPGA上跑起来。

 

AI的发展对可定制化计算也有很大的帮助

 

大家知道很大的一个突破,就是两三年前,阿尔法狗把世界围棋冠军打败了。我看到这个消息以后还是很震撼,它都把九段的围棋冠军打败了,咱们能不能用AI的办法,把电路设计师打败是我们做的工作,用AI技术帮助你设计芯片,来自动化。可芯片设计比下围棋难多了,围棋的规则是固定的,要是换另外一个游戏就玩不了,电路是五花八门的,大家的想象力非常丰富,所以这一点是完全不一样的地方。那你说这个电路能设计出来吗,我相信经过二三十年的努力我们有了非常长足的进展。

 

我1992年的一个工作就是,你给我任何一个布尔电路,我可以生成最快的FPGA,叫做FlowMap,今天所有的FPGA工作里都用我们这个算法。那你要问,布尔电路从哪来,不用手写,只要写一个C程序,我们就可以优化成很好的布尔电路,这叫高层综合。我们做了一个研究上的示范性的工作,后来有一个小型的技术转让公司,后来就被全球最大的FPGA厂商买下来了。如果你在谷歌里搜索一下,光是论文用到HLS(High-level synthesis)的就有两千五百多篇了。

 

但是直接拿来用还是有问题的,写一段基因分析的C程序,它马上给你一个电路,但是往往这个效果不是很好,要慢有上百倍,因为很多微处理结构没有考虑到。我们的研究生也是写C程序,但是他加了各种各样的代码,指挥定义高层综合怎么生成体系结构,首先要考虑要做到有并行,考虑数据能重用,还要考虑到做流水,把这些都加上之后,确实可以做出来有十倍的加速,但是这个过程不是所有的IT工作者都能做的,因为你要对体系结构非常清楚。

 

为了把这个事情简单化,我们又开发了一个软件,一开始也是在学校里开发的,英特尔、百度、华为都是使用者,这样写一个C程序,就生成了加速器和CPU可以协同工作,像我讲到的各种各样的优化都在里面了。

 

更重要的是,现在我们加到人工智能的因素,刚才讲到怎么定义各种各样的微处理架构,把读数据、计算和存数据并行,这些体系结构的搜索可以用AI的办法做下来。我们做的结果跟手工优化已经很接近了,有一两个例子做的更好,通过这种工具,我希望大家都可以很简单的用上高级的软件做可定制计算。最后举个例子,在座很多人知道大数据处理有效的计算平台Spark,Spark程序可以翻译成C程序,但如果简单的翻译就慢了几百倍,但是用到优化平台提高了十倍。

 

我的演讲就到这里,希望大家记几个点:一,深度学习从大数据和大计算来完成的。二,神经网络的复杂性增长的非常之快,我觉得可定制计算一定需要达到人工智能所需要计算能力;最后,人工智能反过来给我们不少新的提示,怎么来自动设计我们的加速器。感谢实验室很多的研究生、博士后和合作者,包括给我们提供赞助的伙伴。


参与讨论
0 条评论
评论
暂无评论内容
知识分子是由饶毅、鲁白、谢宇三位学者创办的移动新媒体平台,致力于关注科学、人文、思想。
订阅Newsletter

我们会定期将电子期刊发送到您的邮箱

GO