AI和软硬件协同设计助力下 集成电路设计业也将迎来新机遇
近日在南京举办的中国集成电路设计业2019年会即ICCAD2019上,新思科技中国董事长兼全球资深副总裁葛群做题为《致新致远,共思同行》的主题演讲,以下为他的演讲实录:
今天我们是来到了南京,南京六朝古都,非常有历史感的地方,所以开始我们谈一下芯片的历史。这是上世纪80年代,当时还是比较先进的控制器,大概集成了2000个晶体管,过了30年以后,同样的面积下,我们集成了20亿个晶体管,增加了38万倍,符合了我们摩尔定律的要求。真正让芯片发生如此巨大变化的,有这些奇迹发生的背后,是我们一代又一代芯片人的努力,我今天演讲开始,稍微简单介绍一下我们回顾一下芯片人背后所做的事情,从一个例子,一个缩影。
陈博士,1985年的时候,当时在英特尔刚刚博士毕业,在英特尔接待了来自于中国航空部的部长,跟他介绍了当时在英特尔,当时最先进的人工智能技术,就是语音识别。从那个时候起,我们陈博士开始对中国这个国家发生了浓厚的兴趣,1985年到1995年之间多次访问和考察,最后1995年在中国成立了自己的中国公司。
但他最担心中国的芯片产业,最缺人才,所以当公司成立第二年,他就把全套的芯片设计软件,当时最是先进的,捐献给清华大学,希望和清华大学一起共同培养中国集成电路人才的发展。自从中国的909工程以后,中国的芯片产业进入了高速发展的轨道,拉开了整个快速发展的序幕。之后我们有大批国外企业家、先锋者,当时成立的华虹国际等,都为今天集成电路生产奠定了扎实的基础。
后来小陈博士变成了陈博士,他在中国越干越觉得不过瘾,他在2012年决定在美国本土之外,建立全球最大的研发中心,同时我们这个时期,我们中国的集成电路产业又进入了更多元化的发展,我们公司企业产品越来越多样化,同时一些企业的产品也在国际世界上崭露头角,甚至有一些产品能够三分天下等等。
陈博士那个时候不断在思考,我能够为中国产业做一些什么呢?除了技术方面,有一件事情是和南京相关的,2017年为了帮助更好的服务于中国的芯片企业,它在南京成立了区域总部,能够用人民币的方式服务于我们中国的企业,让他们更容易获得技术和获得相关支持。中国中央人民政府为了表彰陈博士,颁发了“中国人民友谊奖”,感谢他过去二十几年,为中国产业做出的服务。大家可以记得我们陈博士的标志性微笑,他就开心想到中国集成电路产业的希望,同时他在构思下一步他能为中国产业做一些什么,所以所以他在2019年和清华大学,再从事20年所说的事情,他们成立了中国清华和新思科技的联合智能实验室,进一步推动人工智能和芯片在未来的高速发展。
陈博士就是新思科技的联合CEO,为什么讲陈博士在中国25年的历史和渊源呢?我们作为行业的后继者,我们看到的是以陈博士为代表的中国芯片行业人的缩影,是他们在过去二十几年、十几年的坚持,才有今天中国集成电路产业的巨大发展。我们作为后继者,希望能够坚持他们的坚持,继续推动中国集成电路继续前进,我们也希望能够学习他们过去25年所得到的经验、教训,他们所面对机遇和挑战的一些收获,让我们面对未来,更多的不确定性,更多的技术和挑战。
在过去25年,我们最早工艺不断推进摩尔定律的演进,从我们手工画一个单元,到利用先进的EDA工具做更好的设计,刚才台积电的罗总提到未来软硬件协同设计是芯片设计的重要趋势,我们在芯片设计的同时,开发对应的软件和系统应用,以及在未来我们结合AI和EDA,云和EDA的发展使我们芯片设计自动化效率更高。
整个芯片发展,刚才提到是绝对离不开人才,微电子和芯片产业依靠不单单是微电子专业,也依靠于电动工程、计算机学、物理、材料等,希望这方面不同人才,共同努力,才能推动芯片产业不断的往前走。事实上,我们为了驱动芯片的高速发展,2018年工信部做了IC产业的人才调查,为了达到原来既定2025年芯片发展的目标和要求,我们行业还缺乏30-40万的缺口,所以我们欢迎更多人能够投入到欣欣向荣的行业当中。
我们得到的一些经验,是感谢这个行业的投资人,是他们具有非常远见的眼光,勇气和坚定,华杉资本等,使我们产业过去几年得到更多资金支持,让他们快速支持。在2014年,中国大基金的注入,使这个行业的发展更有活力,也使得今年有一批芯片企业成功进入到科创板和主板,这边我们特别感谢以丁总为领导的国家大基金,当然我们非常开心看到上个月国家大基金二期宣布了,我感觉未来我们集成电路产业是非常值得期待的。
芯片是刚才前面几位专家和领导提到的,芯片是未来整个产业发展,尤其是工业发展的基石,我们作为芯片人一直以芯片为自豪,是他让整个社会,工业化变成电子化、智能化,同时新兴的应用也带来芯片更大的发展空间。
所以我们举几个例子,一个是整个云端的市场,芯片市场有50亿美金,以及大家讨论的物联网市场带来了640亿美金的空间,这些都是在我们芯片企业,努力推动产业的发展。当然产业的形式就像刚才刘总提到,会遇到更多挑战,无论应用端还是工艺端。
我们举两个例子看,以AI来看。AI的发展,我们知道数据越来越多,我们算法越来越复杂,要求芯片算力越来越大,我们将来一个AI芯片希望在不同场景下支持不同的算法,所以对于可重构的AI芯片的呼声越来越大,在智能汽车方面,现在一个高端的智能汽车所搭载的软件代码量已经超过一亿行,已经超过了互联网软件甚至小型飞机。同时我们未来希望的自动驾驶汽车,他们所需要运算量已经超过了每秒十万亿次的浮点预算,相当于每天带着四百台16寸家用电脑,一起旅行。我想我们自动驾驶是更强算力的芯片。同时,提到了我们整个安全方面,曾经对全球16家汽车厂商做过一个调查,关于如何防护黑客以及数据安全保护。基本上所有汽车厂商都没有对此有非常好的应对方法,所以我们在不断推进芯片高速发展的同时,我们希望研究更多的算法和架构,让汽车更安全,而不是变成非常不可信的出行工具,这是应用端,对我们芯片提出更高的要求。
另一方面,我们看工艺对整个芯片提出更大的挑战。先看我们逻辑工艺,根据摩尔定律我们不断往下说,现在讨论比较多是5纳米,还有3纳米,进入5纳米以后,设计者面对的挑战越来越多,设计规则从5纳米到3纳米就有了一倍成长,我们设计师是面对指数级的挑战,更多电子效应,5纳米,他们扩散器在不同VT之间不再是分开的,是连续在一起,不同VT之间有更多的漏电流,所以我们工具设计者如何布局布先,这也是更新的挑战。同时,我们在追求更低成本,更密的情况下,如何达到功耗和性能提升,如何取舍,也是我们芯片设计者面临的挑战。我想这是更加具体的一些表示我们就不再赘述了。
我们除了平面工艺不断扩展,我们也慢慢从平面往数字方向走,看三维的IC或者三维更多整合,刚才罗总说三维分装,在两维上我们希望有更多的拓展,找到新的材料,或者是用像碳纳米管,不断延伸两维的生命周期,继续延续我们摩尔定律的有效性。
除了普通的逻辑工艺。我们更多像高铁、电力传输以及目前的5G,在这些领域,现在也在做比较多的研究,他们能在工艺电子以及高铁上提高更多能,让设计者更多发挥芯片对应用带来的性能。最近非常值得可喜的是中科院的沈阳研究所,刚刚发布了用硅和碳墨烯以及铬形成的管,很或解决了未来微波、5G以及6G的通讯。这些不同领域的挑战,我们科学家一直用孜孜不倦的精神突破界限。
我们刚才讲了很多挑战,那我们如何面对这些挑战呢?科学家脚步是不会停止的,接下来希望做一些抛砖引玉,分享一下我们怎么解决这些问题,让芯片产业不断往前走。
刚才提到整个工艺和设计的结合,过去看这是非常传统的芯片研发周期,最早才俩选择以及配方设定,到最后做出工艺器件交给设计者,他们做出单元库等,整个周期从工艺最早研发开始,材料选择开始,到最后芯片设计大概要五到八年的时间,到现在先进工艺可能时间更长,我们如何知道在最早的材料选择和配方选择时候,对我最后的设计优化能带来多大的贡献?比如我们设计是针对什么?低功耗?几年以后才能知道,所以我们一直想要破解,在这方面做出贡献。我们和先进的生产商合作,更早建立更精确,更完整的模型,让我们工艺设计师可以考虑到芯片设计所需要的要求,在早期做到融合设计,让工艺能够更早为我们设计做优化,这个成果我们已经应用到和IBM的合作,利用这样的技术极大缩短了整个工艺研发的周期,至少缩短了12个月。这当中也是融合了很多不同学科,包括物理学、电子学等,值得我们更多的探索,同时应用在其他的领域。
第二分享EDA方面。刚刚提到5纳米以下,设计师和设计者面对的挑战非常多,针对不同的挑战,我们要使用不同的算法,这些算法是不是完全统一到同一个方向呢?不尽然。有的算法会降低功耗,要牺牲相关速率,有一些算法要跑得更快,如何双让算法互相兼容,走向共同的目标呢?我们也希望找到一些方法,让算法在更早期的时候融合,所以我们提出了一个“共同引擎”的概念,所有EDA从前到后我们使用同样的引擎,同样的数据结构,使得我们EDA设计流程,从开始就能往同个方向优化,重新利用工艺给设计者带来最佳的效果。
刚才动画没有看到,其实一般的芯片设计,从前到后一定会经历两个重大的不确定性,前端到后端,通过技术,我们可以极大降低不确定性,同时把设计周期大大缩短。我们看一些比较直观的图片,上面的图是没有采用Fusion技术之前,不同计算单元线非常长,非常密,要花更多功耗,也不一定跑得更快,采用Fusion以后,我们技术联线都是在局部,它可以用更低的功耗,更小的成本,跑得更快,这是对整个芯片,让我们工程师更好面对未来挑战。
看一下具体数据。虚线是目前比较标准的行业水平利用了FusionCompiler技术,无论技术和面积上都有非常大的提升,这是Fusion给我们的启发,如何用融合的技术,用不同的引擎和设计结构,让我们的芯片设计变得更加容易,只有有这样的好处,这样的数字结构之后,我们能够让AI融入,这是目前大家都希望这件事情帮助芯片设计变得更容易,更快。
刚才讲的是如何面对工艺上的挑战,另一方面我们如何面对应用带来的挑战呢?刚才我们反复强调软硬件结合,我们其中一个应用领域是AI,我们两年前全球成立中国的AI加速器,这个AI加速器不单单是为我们研究更快的AI加速器,更重要的是我们希望能够早期把AI算法和硬件做更早的优化和深度的融合,我们也和AI的MLPer联盟,推动人工智能性能测试标准制定,中国企业成功利用我们的技术,降低了30%的预算时间。
这是我们把整个软硬件协同设计的想法,应该到了AI领域,下面这个领域是我们把整个软硬件协同设计的方式,带入了汽车电子,尤其是未来的智能汽车设计,未来智能汽车的驾舱是非常复杂的系统,涉及到人工驾驶、人工处理以及智能传感等等。过往传统的方法是把芯片设计,拿到芯片以后再做对应的软件和系统开发,这个周期大概至少三到五年时间,才有机会做一台智能汽车出来。现在我们采用早期的软硬件协同方法学,我们重新定义了未来智能汽车研发流程,让我们汽车设计者,能够在芯片出来之前,基于虚拟芯片,进行相关智能驾舱的设计,我们国内第一大汽车供应商已经用这个方法迅速应用到智能加舱,整个研发周期提高了12个月。
同时我们专家担任学校校外教授、导师,帮助产业培育更多人才。新思从过去25年切换到新的篇章,我们老陈博士宣布的美国本土之外,建立最大的海外研发中心,这个研发中心终于花了几年功夫建设完成,明年1月份正式启用,这是6万方的研发中心,成为美国本土之外,成立最大的海外研发中心,这个研发花了几年的功夫建设完成。这个研发中心持续我们除了美国之外,最大的自己购并并行建设的研发中心,为中国产业做出更多贡献。
我们也相信中国有足够大的市场,有足够聪明的人才和工程师,中国也势必能做出自己的EDA,我们新思愿意与开放的心态,和中国产业一起,为产业做出更多贡献,我们也会坚持我们过去25年的坚持,和合作伙伴一起共建未来,合作未来。
软硬件协同设计
软硬件设计一般都是一个完整的系统。软件部分包含操作系统等完整的嵌入式系统。硬件部分包含一个soc。但是,我们在开发过程中,一般都是集中在自己的算法的软硬件实现,其它部分不需要修改。因此我我们说的软硬件设计更多是自己算法的软硬件设计。以nvdla为例,这是个IP,嵌入到soc中。我们能探索的设计空间是nvdla的设计空间,而不是soc的设计空间,所以设计空间是分层次的。我们设计空间探索,也是分层次的。ip层次,soc层次。总结,软硬件设计空间探索,在ip层次更多的是空间大小,在soc层次是优化结果。传统上,soc的架构探索工具,pa足够了。ip的架构探索实际是可以更多的忽略外部复杂的环境,提供本身的设计空间。在pa中,ip只是一个元件而已。在ip的空间探索中,外部总线,memory性能可以作为假定,不需要真是的总线memory。如果把ip的架构探索放到pa中,就把多层次问题合并,使问题变复杂。最后强调,开发工具和开发ip要分清。
杜克大学陈怡然:高效人工智能系统的软硬件协同设计
不久之前,机器之心AI科技年会在线上召开。杜克大学电子计算机工程系教授陈怡然发表了主题演讲《高效人工智能系统的软硬件协同设计》。演讲视频回顾:https://www.bilibili.com/video/BV1yP4y1T7hq?spm_id_from=333.999.0.0以下为陈怡然在机器之心AI科技年会上的演讲内容,机器之心做了不改变原意的编辑。我经常用这张图,来源于大概32年前的一本书《TheAgeOFIntelligentMachines》,作者是Kurzweil博士,他当时就预言了未来人工智能所需要的算力发展。我们对这张图做了些延伸,单个器件上大概能够集成多少计算能力。过去100年,计算能力几乎呈指数增长趋势,到现在,比如今天英伟达发布会最新GPU的计算,包括上周苹果发布的GPU芯片,基本上可以带来超过一个人脑级别的计算能力,为我们带来了非常大的可能。人工智能计算平台分很多种,从大家比较熟悉的GPU、FPGA、ASIC到新型架构,实际都遵循了一个原则:要么更高效,要么更专业需要更长时间,要么更灵活,不可能在多个维度达到统一,永远存在一个设计上的矛盾。比如,在GPU上算力最高,功耗也最高。FPGA上会实现一些非常容易可重构的计算,但能效比可能不是那么好。ASIC能效比非常好,但需要更长的开发周期,基本上是对特定应用做设计,当出货量比较小的时候,不是特别有效。大家比较熟悉冯·诺伊曼瓶颈,实际上是说计算能力可以通过不断增加计算单元来实现,但最后瓶颈在于能不能把数据及时给到计算单元。过去四五十年,片上计算能力和片外数据通过存储带宽提供给片上的能力差距越来越大,也带来了“内存墙”的概念。当然,实际具体设计中,比如不能及时挪走产生的热量、不能无限制增大使用频率等,(这些)都迫使我们寻找新的计算设计。现在比较热门的是近存或存内计算设计,想法也非常简单,既然瓶颈来源于数据间流动,尤其是存储空间到计算空间的流动,能不能想一些办法让计算跟存储发生在同一个地方?这实际上正好和冯诺依曼体系相对,后者是将两者分开,这个要合在一起。为什么可以这么做?因为新型计算,比如神经网络或图计算,经常有一方不变,另外一方不断变化的情况。比如A乘上B,A不断变化而B不变,这种情况下,可以在存储B的地方进行计算,不需要把数据挪来挪去。大家进行了非常多尝试,比如用DRAM来做计存。最近,阿里好像也写了一篇文章讲了存内计算,把存储器设计成可以有计算单元,直接在里面进行相应计算,这都是一些有益的尝试。与在从外面拿到数据过来进行计算相比,这个计算能效强几千倍,是非常有希望的未来发展方向。我们今天讲的一些内容与这些相关,包括存内计算深度学习加速器、模型方面的优化,分布式训练系统以及一些涉及神经网络架构设计自动化方面的操作。当你看到存内计算时,第一个想法是把神经网络参数存到一个地方,数据进到这个地方后直接进行计算,避免数据搬运。一个比较常见的场景是,把这些参数存在一个特殊纳米芯片上,(纳米芯片里的)一些器件上的阻值可以通过电流或电压变化(而变化,进而可以被用)来进行编程,表现一个参数。当涉及一个比较大的矩阵形式,所有输入跟所有输出可以在某些交叉节点上进行连接,非常像一个矩阵在神经网络里面的状态,所有输入相当于一个向量,向量乘以矩阵可以看做所有电压进行输入,电压经过电流产生一个合并的电流就是他们所有统计的和。这就以一个非常高效的方式实现了向量跟矩阵的相乘。过去十几年,我们在杜克做了大量相关尝试,并设计了一些芯片。2019年我们在VLSI发了一篇文章,可以用新型存储器和传统CMOS进行连接,集成之后可以将比如卷积神经网络整个映射到这样一个矩阵状态里,同时可以选择精度,进行精度和能效之间的权衡(tradoff)。相比传统CMOS设计,性能最后可以得到几十倍的提高。今年在ISSCC上我们也有另外一个工作,主要是我们毕业的学生燕博南在北大的一个课题小组工作,这个设计思想还可以放到传统SRAM。这个设计的一个特别之处在于,传统设计通过电阻进行参数表达,实际上是一种模拟计算方式。换句话说,组织上连续态表达一个参数,这就需要模拟到数字的转换,数模转换非常昂贵。而我们在ISSCC上的工作:ADC-LessSRAM实际上是一个二值的整数表达,比如零和一,这就有可能去掉数模转换,直接实现数字状态下的计算。这是当时实现的一个技术突破。可以看到下面这张图DigitalCIM(最右边,ThisWork),能效大概可以达到27.4(TOPS/W,8比特状态下),已经超过原先其他所有设计,整个density非常高,在28纳米工艺情况下,每平方毫米上差不多有上兆的晶体管。除了电路,还要有架构跟编译器之间的支持才能够实现整个计算系统的设计。2014-2015年之前,我们就开始做相关设计,比如设计编译器,找到可以用来加速的程序的一部分,同时在片上通过一些方式连接各种各样的阵列,把大的网络分成小的网络,或在不同网络层(layer)之间进行数值的转换。比较值得一提的是,我们经常会在一个大的网络里遇到很多阵列,至少存在两种网络并行计算的方式——数字并行和模型并行。所谓数字并行,是指有很多输入(input),些数据可以被并行的分到不同运算单元(PE)里面去。对于模型并行来说也是一样,大的模型可以被分块进行计算。但是,这两种并行的方式并不排他。即使对于一个Layer来说,当你把这一个layer映射到不同PE上,在每个PE仍可能采用不同的并行方式。比如下图用黑点和白点来表达,大部分并行方式是通过模型并行的方式来操作,也有少部分是数字并行。为什么会这样?因为只有集成不同并行的分布方式,才能使得在整个算力全部被表达的情况下,所有数字跟数字正好达到一个稳态平衡,整体能效最高。如果是单一表达,有的地方就空了或者算得比较慢,拖累了整个计算。这是2019年发表的文章HyPar。2020年我们发现一个新问题,我们实际上没有太考虑卷积网络本身的表达,而你经常会在卷积层里一个层一个层地去计算,会有一些中间结果,直到最后才会被用到。这样一来会产生第三种并行方式,就是Tensor并行的方式,比如下图这种,输入和输出各有三种并行的可能。3乘以3,总共有9种表达方式。如果考虑到每个PE都有9种方式进行表达,就没有办法通过人工方式进行优化,必须通过自动化方式(比如线性规划)完成整个系统的表达。同时,你也不可能逐个去找这些表达方式,需要一些的层次化的方式。比如,先有些大的区分,再由小的区分一直到最后单个表达。如果用三种颜色来做表达,会发现即使在一个层次的映射下也有不同PE有不同运行表达来满足整体上数据流动的最优。这样,能效就能再推进一倍。同样的思路不仅仅可以用到深度学习里面。深度学习只是一个图计算特例。而任何可用图方式来表达数据流动的计算都是图计算,深度学习虽然很丰富但仍然只是图计算的一种特殊表达。所以,你可以用存内计算方式来进行图计算。这是我们另外一个HPCA2018上的工作。我们发现是图计算,尤其是深度优先或者网络优先搜索这类算法,可以把他们在矩阵上的表达,用图计算的方式来实现。相对于在传统CPU平台上的计算,能效会有上百倍提高。讲完整个架构设计,在算法上如何继续优化计算能效?下一个例子是结构稀疏化。稀疏化早就被熟知,当神经网络的一些权重很小或者近乎于零,无论输入多大,对输出没有影响,这个时候,你根本不需要算结果,直接丢掉这个结果(其实是零)就可以了。2016年以前,所有针对神经网络的稀疏化操作基本都是非结构稀疏化,只要你看到一个零,就把它去掉。这就带来一个问题——所有数据在计算机存储的时候有一个locality(局域性),因为有时域跟空域的局域性,当用到一个数,基本上会有一个预期,这个数字会不断被用到,或者存储在其周围的数也会在未来被不断用到。当你把很多零去掉后,会产生很多洞。当你找到一个数之后,会期待下一个数,但你根本没有存。整个缓存会陷入一个状态:不断到很远地方把数字弄过来,结果你发现这不是需要的,然后继续去找。怎么解决这个问题?做稀疏化的时候,仍然希望把去掉的这些零或者计算,以某种局域性来做表达,比如整行或者整列全部去掉。这样就可以在满足存储局域性的前提下,仍然达到计算优化。说起来容易,关键是怎么做?我们2016年NeurIPS有篇文章讲了结构稀疏化,这篇文章后来也变得很有名。(文章讲的是)基本上可以找到这些参数,对应了某种存储结构,这种结构使得这些数以一块一块方式进行存储。这样在清零时,把整个行或者列全部清零,仍然能够在满足优化条件的前提下同时满足局域性。这个可以用在CNN、LSTM、RNN甚至一些更复杂计算。这项技术现在基本上已经是神经网络优化的一个标配。另一个常用的神经网络优化是量化.网络训练需要高精度,但推理时并不需要高精度。这就产生了一个很有趣的事情:究竟什么样的精度,优化是最好的,而且这个精度用什么方式去表达。传统上,大家可以逐个去找最佳结果。比如,一个bit、两个bit、四个bit......去找就对了。但你会发现,还要考虑到这个bit怎么在存储进行表达。比如,对这个layer来讲,当有某个bit于所有数字来说都是零,那就不需要存这一整个bit。举个例子,只要保证你只要这四个bit里的第二个和第四个存在,而不是每个都需要,这就丰富了整个精度的优化。这也是我们第一次将结构稀疏化运用到bit水平的稀疏化研究上。我们用GroupLASSO的方式,把数据表达里面整个column或者整个结构为零的bit全部去掉,这样就极大降低存储成本。这是我们2021年的一篇文章。再往下就是训练,这是一个很复杂的事情。我们经常教学生lossfunction要趋近于饱和。但在公司,永远不可能有足够的算力让你算到饱和,基本上给你一百台机器训练24小时,无论你训练成什么样,你都得结束,这使得训练本身要非常高效。传统上我们采取分布式服务器的做法,把模型复制很多遍,但每个复制的模型只用一部分数据来训练。那么怎么保证最后得到的结果考虑到所有的数据?你就需要把这些神经网络在训练中禅城的梯度送到参数服务器里面,做平均之后再发回去来更新本地的神经网络。这就产生了一个问题:当节点服务器特别多的时候,最后整个系统就完全的被梯度传输产生的数据流所占据。怎么办?我们后来发现,当参数足够多的情况下,产生的梯度会满足某一个分布,根本不需要传输原始数据,只需要算分布的一些参数和一些诸如数据多还是少之类的,把他们传过去,就可以完全在另外一端复制这个分布,得到相应结果。我们在手机端就完成了这样一个操作,联合很多手机进行训练,同时还可以做推理。做推理的时候,我们采取了聚类的方式,将那些非零的数字尽量以行列变换的方式调整到一块儿,然后发到手机上集中进行计算,减少手机间的通信,提高运算效率。我们曾经跟一家公司做测试,在全球找了几千个CDN网络服务器,搞了一个StyleTransfer(风格转换)应用,通过分布计算跟表达完成整个计算,效果非常好。基本上可以即时通过手机跟服务器联动,完成整个训练和推理。刚才讲了这么多,实际上有一个问题:所有这些东西都需要一些非常有经验、非常贵的工程师来设计相应的神经网络。这也是现在神经网络落地成本中非常大的一部分。我们可以通过自动化方式,比如增强学习、优化方式来优化整个神经网络,因为可以将它模拟成某种优化过程,但这些传统的优化过程非常昂贵。我们曾经想通过图表达的方式来做这个。通过一个有向图而且是一个没有环路的有向图来表达深度神经网络架构,它有很多个cell,不同cell叠加在一起完成整个神经网络架构。我们要找的是这个cell里面的拓扑结构,来看最后这个神经网络设计是否满足要求。这就是一个对拓扑结构比较敏感的研究。另外,你会发现:当做这些事情的时候,拓扑结构比较相似的神经网络的准确度也都差不多,有相关性,相关系数虽然不是1,但基本上也是一个比较高的数。因此,可以通过架构预测这样一个架构是不是可以满足我们的性能要求,这种预测可以指引完成整个神经网络架构的搜索。这是一些具体结果。我们把一些离散态的架构或者拓扑结构映射到连续态的空间里,产生向量之间的夹角(相似性)作为一个性能的关键表达,可以通过这样方式预测得到优化是什么样的,不断接近优化结果。显然,这个方式是跟人的设计是相反的,人不是这么设计神经网络的。人是看哪里有小模型能不能满足要求,满足不了再往上加。我们也做过这样的尝试,叫Automatednetworkdepthdiscovery,设计一些规则,使得你可以从最小网络不断往上加,每个层里加不同layer,或者加很多层,看到什么样架构最后满足这个要求。当然,你要设计一些具体规则或者做一些尝试。这些尝试还挺有意思。最后你总能优化到设计平衡前沿面的某一个点上,但没有办法固定优化到某一个点,你只能到这个前沿面上的某个点,慢慢让它自由流动。我们还是没有足够的理解,使得我们完全可以控制优化的方向跟范围。所以,这个工作还需要更深一步研究,我们只是证明了可行性,但没有对规则的完备性做更多研究。最后,硬件跟软件协同设计,有很多参数需要考虑,包括软硬协同、具体电路跟架构设计、以及算法本身针对硬件的优化。我们团队内部做了很多年的积累,从2012年开始研究神经网络在不同硬件上的表达,到后来做架构设计、分布式设计,到自动化设计等,做了非常多的尝试。大概看到了如何从一个最简单的表达,一直最后只需到按一个钮,完成了AI软硬件结合的建设。谢谢大家!