登录注册   忘记密码

人工智能会干掉芯片工程师吗?

最近,来自清华大学等单位的研究团队发表了使用基于强化学习人工智能做自动化毫米波电路(论文中的例子是滤波器)的设计。根据论文结果,使用人工智能算法实现的滤波器设计能达到和真人工程师相近的指标,而有趣的是人工智能算法得到的滤波器的形状则较为不规则(下图中的a和d是真人工程师的设计,b和e是人工智能算法的设计)。

微信图片_20190212100226.jpg

相关报道得到了电路设计领域的关注,不少朋友对于算法能自动设计出指标和真人设计接近的滤波器表示惊讶,并希望未来能有更多这样基于人工智能的自动化算法来加速电路设计。


在笔者看来,这样的强化学习人工智能算法用于滤波器设计确实是一种学术上的突破,而在未来我们可望看到更多这样的突破。另一方面,事实上人工智能已经在EDA领域得到了高度重视,甚至我们目前已经在用的一些工具中已经在算法上加入了人工智能的成分。但是,我们同时也认为,人工智能离真正自动设计中等规模以上的复杂电路还有很长的路要走,未来人工智能在EDA领域主要还是以辅助工程师设计,简化流程以及提高设计质量为主。


人工智能的本质

要理解人工智能对于EDA的影响,我们首先要理解这一波人工智能算法的本质。这一波人工智能算法归根到底是基于大数据挖掘的机器学习算法,能够从海量数据中把握高维数据之间的统计规律,并根据该统计规律来实现更多的应用。


实际上,人工智能最擅长的其实是和高维数据相关的分析和优化的任务。什么是“高维数据”?用简单一点的方式来解释,可以大致理解为“受很多种因素影响的变量”。


举例来说,如果我们把“用户购买某款网红口红的概率”作为一个变量,那么我们会发现该变量会与用户的性别、年龄、学历、收入、居住地、是否喜欢网购等大量因素有关,把所有这些相关因素组成一个向量,就是一个高维数据。人类天生很难定量处理这种高维数据,所以往往要降维处理,例如根据数据总结出“满足女性,年龄20-25,大学以上学历,月收入5000以上,居住在二线以上城市,喜欢网购这些条件的人最可能买这款网红口红”,但这远远做不到定量,因为变量和影响因素之间的关系人类难以找到一个拟合的数量关系。


例如用户A年龄为26(超出前述20-25范围),但是对网购有远超常人热情的女性,虽然没有落在前述规律的范围里,但是甚至会比落在前述规律范围里的人有更大的可能去买该款口红。但是如果用机器学习就能找出变量与各个影响因素之间的拟合数量关系,这样对于用户A的例子,虽然其年龄项的得分略低,但是其网购热情得分极高,因此其购买口红倾向的总分也会较高,系统就可以顺利将其归纳为该口红的潜在消费者。


如果我们看前面人工智能设计滤波器的例子,也能看到类似的情况。滤波器的走线事实上是一个高维数据,因为每一个像素点都存在自由度让工程师去决定走线要不要覆盖到这里。对于人类工程师来说,由于难以处理这么高的数据维度,所以设计的时候会采取降维的方法,即以画直线为主,可调整的变量简化到了直线的粗细、直线之间的间距以及直线的数量等等。而人工智能则不受数据维度的限制,因此会探索出更自由的设计模式,相应地其设计结果在人类看起来也会显得更不规则——因为一旦按照规则,就意味着数据维度的降低。


当然,这一代的人工智能虽然具有处理高维数据的强大能力,与此同时也有很强的局限性,即缺乏抽象推理、因果归因和归纳的能力,同时其生成的能力也偏弱。另外,由于人工智能是基于大数据的数据挖掘,因此在数据量不够大的时候,就难以工作。因此,人工智能目前还没发学习到一套抽象的、普适性较强的设计方法,也就限制了其自动完成复杂设计的能力。


人工智能在电路设计中的应用

根据之前的分析,我们可以发现人工智能对于电路设计最适合的应用是对于高维数据空间的探索,包括拥有海量影响因素导致人类设计师难以把握的问题,以及启发式的优化问题。


机器学习和人工智能在EDA领域最普遍的应用例子就是数字电路后端的布局布线。数字电路的布局布线属于典型的启发式(heuristic)探索问题,即由于变量空间过大,难以找到全局最优解,因此实际的方法都是从一个试探型的初始解开始,慢慢探索尝试,最终收敛到一个较好的解上面。对于数字后端布局布线流程比较熟悉的朋友们一定会知道通常布线流程会包括trial route、global route、detailed route以及反复的incremental optimization,这也就是一个典型的通过启发式算法找到较优解的流程。


对于较大的设计,布线算法的每一步都要跑非常久(数小时到数天),但是最后又不一定会真正收敛到较好的解,有时候甚至会出现跑optimization结果反而变差的现象,这其实也是传统的启发式算法的典型现象,因为启发式算法的探索只是大概率会得到更好的解,但是不能保证每次探索都能找到更好的解。


那么机器学习和人工智能如何帮助布局布线呢?


事实上,这里的机器学习的帮助主要来自于从大数据中的学习能力。传统的启发式算法本质上并未考虑算法应用的具体语境,每次在探索的过程中理论上会以等概率去探索各种方向。虽然在长达数十年的工程实践中,人们会在布线的启发式算法中加入各种优化,但是人类工程师对于布线这个高维度的复杂问题的把握程度毕竟有限。举例来说,当运行布线的时候发现本地布线非常拥挤,而右边若干距离的地方布线较为宽松,那么应该把多少本地走线移动到右边?


如果移动过少难以完全缓解布线拥挤问题,而移动过多无非就是把本地的拥挤移动到了右边,也并非最优。这种变量维度过高的问题对于人类是很难把握的,而机器学习则可以从大量布局布线的实际案例中去学习如何最优化启发式算法的探索过程,从而使布线过程优化结果更好,同时也能减少探索次数,也就是减低了算法运行时间。Cadence在去年宣布已经在布局布线引擎中加入了机器学习的元素,其结果是能够将运行结果的total negative slack改善15%,这可以说是一个很不错的起步。


在布局布线领域,人工智能的另一个重要应用就是能为流程加入预测能力,从而减少迭代次数。众所周知,数字电路布局布线是一个反复迭代的过程,流程前后的环节会互相影响。布局的过程会影响布线的结果,而如果布线的结果太差又会导致工程师去再次优化布局以获得改善。这样的反复迭代流程显然会对设计时间带来影响,那么能否在布局的时候就去预测其对于布线的影响,从而不要等到真的布线结果出来之后再去优化布局呢?


之前也有不少尝试,而使用机器学习通过学习大量的布局和布线拥挤程度之间的关系去做预测可以大大提升预测的精准度,从而减少迭代次数。在ISSCC 2017,台积电的研发副总裁Cliff Hou就在其演讲中重点介绍了这种基于机器学习的后端设计方法,并认为它将会为未来的集成电路研发带来更多效率提升。


人工智能与电路设计师

在之前的分析中,我们可以看到目前人工智能的主要优势还是在于高维数据的处理和定量统计分析能力。这一波的人工智能在抽象推理方面仍然较弱,因此难以全面胜任复杂的设计任务。我们人类在处理复杂设计的任务时,普遍的方法是将其降维处理,分解成多个较简单的子任务并分而治之,当子任务全部都完成时复杂的设计任务自然就完成了。而人工智能目前尚缺乏这种自适应将复杂任务分而治之的分解能力。


如果说这种从复杂的客观中抽象出简单的规律的能力称之为“降维”,而从复杂世界中把握高维数据之间的复杂关系的能力就可以说是“升维”了。人类的降维能力较强,而人工智能的升维能力较强,因此人类与人工智能最好的合作方法就是人类负责降维,抽象出设计框架,并将复杂的设计分解成较简单的子任务,而人工智能则在每个子任务中充分探索高维设计空间,帮助完成最优化设计。


从这种意义上来说,人工智能在短期内并不会替代真人工程师,而是会在设计流程中帮助提升效率,减少算法和设计流程层面上不必要的迭代,而这一切对于真人设计师来说都是好事。因此,我们认为,人工智能将会是电路工程师的好朋友。

您的评论:

0

用户评价

  • 暂无评论