专栏名称: AI科技评论
「AI科技评论」是国内顶尖人工智能媒体和产业服务平台,专注全球 AI 业界、学术和开发三大方向的深度报道。
目录
相关文章推荐
51好读  ›  专栏  ›  AI科技评论

丛京生院士:可定制计算的设计自动化 | ASP-DAC 2020 主旨演讲

AI科技评论  · 公众号  · AI  · 2020-03-07 14:10

正文

请到「今天看啥」查看全文


我们的解决方法很简单:知道了CPU在这方面的不足,那我们就把关键的计算任务交给可定制计算加速器[8]。这样的架构就和以前的单一机器或者单一芯片的计算架构不一样。为什么这是合理的呢?如果你仅有有限的计算资源,通用计算架构是一种非常好的做法。我可以问问大家第一台计算机里有多少真空管,或者第一块集成电路上有多少晶体管。其实这个数字不是很多。ENIAC大约有6万个真空管,第一块微处理器更少,只有2200来个晶体管。就这么点资源你没有办法同时执行所有指令。唯一的办法就是走一条流水线然后复用资源——这是那个年代的限制。当今我们的限制不一样了,你口袋里的手机里就有十亿量级以上的晶体管。但你不能让所有的晶体管都运转起来,不然手机的电池很快就撑不住了。所以当代的限制从资源的限制变成了功耗的限制。
打个比方,一个三人的公司可能不太需要定制化,因为每个员工都非常了解另外两个员工做的事情并会帮忙解决。但是像微软这样有几万员工的大公司就需要定制化精细化分工。我们的社会就是一个定制化的社会,不同的人做着不同的职业。你生病了不会去找律师,一定是去找医生。找医生时一定是去找了解你疾病的专门科室的医生。我们的大脑有1千亿个类似晶体管的结构,这些神经元也是有具体分工的。我问了很多神经学专家他们之中没有人告诉我大脑里有流水线。大脑不同部分的神经元有着不同的功能,有的管说话,有的管认字。我把大脑里这些不同的模块也叫做加速器。
可定制计算的做法有两种。富人有富人的做法,穷人有穷人的做法。像Google这样的巨头可以为机器学习设计专门的TPU。TPU可能是AI应用中第一块专门的ASIC,这是一个非常了不起的成就。和通用CPU相比,TPU可以达到100倍以上的性能提升。但试问有多少公司能像Google一样做出巨额投资并且等上18个月来换取一块TPU。我个人认为Google的做法并不是一个普适方案。
我对于第二种低成本的做法抱有更大的兴趣。这种做法就是利用FPGA来替代专用芯片。我在提交给NSF的提案中就使用这种做法。我相信很多人在学校里都学过或者用过FPGA。现在的FPGA已经方便到你可以把FPGA的开发板插进你的电脑主板上直接使用。FPGA的关键所在就是它的逻辑单元(Logic Block)可以实现任何k-输入布尔表达式。实现这个功能听起来很玄但其实很简单。k-输入布尔表达式有2^k大小的真值表。放2^k个SRAM来存真值表的每个值就可以了。当然别忘了放一些可编程的逻辑互联模块把所有的逻辑单元连起来。
FPGA有多种不同的方式与服务器进行连接[9]。最简单的方式是将单块FPGA直接插在PCI-E上。也有将多块FPGA连在总线上的方法。有HARP这种考虑到内存一致性的插板方式,Intel的FPGA则是可以放在QPI总线上。总的来说把FPGA和通用CPU连在一起工作并不是一件很难的事情。在UCLA我们很早就已经把FPGA放进了计算集群(Cluster)里。微软是在数据中心使用FPGA的领航者。早在2014年他们就把FPGA插进了服务器并且用于Bing的搜索服务。之后微软的架构可以将所有的FPGA连到同一块交换机,并且再和上层交换机进行交互。这样使海量FPGA执行大规模的AI计算成为了可能。亚马逊的AWS现在也有了F1专门为FPGA加速提供服务。我在UCLA教课时就要求学生使用亚马逊F1来完成他们的FPGA加速作业。
我们可以看到,把FPGA放进当下各种规模的计算机系统已经不成问题。那对于一个开发人员来说剩下的问题在哪呢?我觉得最大的问题在于:有这么一个超强的计算器件,你可以利用它得到非常好的结果,但是你不知道怎么去编程来驾驭这个怪物。特别是FPGA这样的异构计算器件对于一个软件工程师而言完全是陌生的。
大约在15年前,我们开始了一项新的工作叫做高层次综合(High-Level Synthesis,HLS) [10]。软件工程师可能没有办法直接设计硬件电路,但是他们会写C代码。我们的工作可以帮助他们将C代码自动转换成对应的电路描述。这项工作我认为我们做的比较成功。当时LLVM编译架构刚刚问世不久,我们觉得它有很好的中间表示,于是立刻在它上面进行开发。用户的代码经过LLVM-IR优化之后直接通过我们自己拓展的后端生成硬件描述。我们将这项工作成功转化成了商业产品AutoPilot,并在2006年成立了AutoESL公司。在2011年, 赛灵思(Xilinx)收购了AutoESL,并把AutoPilot改名成为了大家熟知的Vivado HLS。也许你们中的一些人用过Xilinx Vivado HLS,这其实是一项从UCLA开始,并从AutoESL成长起来的产品。赛灵思在收购AutoESL之前对我们的高层次综合工具做了大量评估。他们通过对比大量已有的手工设计来检验高层次综合是否能得到令人信服的结果。实际评估后赛灵思发现我们的高层次综合工具做出来的结果在维持最优的时钟周期的同时,还可以有更低的资源消耗。
高层次综合是电子设计自动化的一项非常令人激动的进步, 因为它使得从C语言到硬件电路成为了可能。赛灵思在收购我们的工具之后也维护的很好。现在我的课上学生可以选择使用HLS来设计电路,学生们的反馈也很好。在Google搜索”Vivado HLS”的科研文章可以搜到超过4000篇。它在工业界有着数以万计的用户。






请到「今天看啥」查看全文