This is a recap of a event that we did in Shanghai. The text is mainly in Chinese. If you need the details in
English, do let us know. Cheers!
English, do let us know. Cheers!
2014年3月29日在IC咖啡上海站讨论在FPGA设计里工程师与设计团队所面对的问题,及如何应用数据分析和机器学习演算法来解决。
【主讲人】
黄瀚华, 技术副总裁
张伟雄 Kirvy, 产品总裁
讲座分享内容:
一、机器学习:
· 定义:专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
· 机器学习技术很适合用在所谓的“大数据”应用,例如网络商家的商品推荐系统、石油开采的开采地点预测工具等。
· FPGA设计其实也包含了大数据的特征,所以时序、利用率、功耗方面的问题都能以机器学习技术来解决。
二、新的解决方案:
· 采用机器学习演算法,胜过现有的方法(例:尝试不同的“种子”)几倍。
· 流程:
(一)分析FPGA器件、设计项目、约束条件等输入参数,以及编译过程中所达到的时序频率、利用率和功耗等结果之间的相关性。
(二)推断对项目最有利的综合、布局布线设置参数。
(三)产生新的编译设置的组合。
(四)从结果中不断学习新的相关性,不断自我改良。
· 在无需要修改RTL代码的情况下解决问题,优化设计。
三、产品名:InTime
· 基于Xilinx和Altera的软件的一个优化插件。
· 可以帮助使用者解决一些原厂工具不能解决的优化问题。
· 寻求国内的合作伙伴。
近年来,机器学习技术在不同的领域开始逐渐地扮演越来越重要的角色。例如在亚马逊等网络商店的商品推荐系统中、石油公司的石油开采工程里,都采用了机器学习的原理和演算法。百度百科网站把机器学习形容为“专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。”的一门学问。 也“涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科, 是人工智能的核心。”
四、适合用机器学习来解决的问题有几个特征:
(一)大量的数据
(二)数据种类繁多
(三)有快速达到答案的需求
每一个FPGA设计其实都包含了许多相关的特征。
首先,因为编译过程的重复性大,一个设计能产生几十G,甚至几百G的数据,尤其是综合、布局布线中所产生的信息。
第二,能用来实现一个产品的设计,逻辑组合,目标器件,软件工具版本等等种类繁多。
第三,FPGA软件工具主要是以一种设计空间搜索的方式来达到时序、利用率上的答案。
虽然编译过程所需的时间可长达几个小时,甚至几天,但是其实工具每一分每一秒都在尽力地设法推断出好的结果来。
时序收敛上遇到困难时,身为FPGA工程师的我时常会试着使用”placement种子“来解决问题(相信同行的朋友也会有同感)。然而,种子是一套随机性的,几乎盲目性的设计空间搜索办法,不怎么可靠。除了尝试种子,另外一个方法恐怕就是修改RTL代码了。但是修改代码有可能会影响到其它模块,甚至整个产品的功能,危险性较大。这是一种常见的现象。如果有办法自动地分析数据,然后自动地归纳出对设计结果最有利的输入参数,FPGA设计团队将能大大提高设计流程的效率。机器学习不就是个好的解决方案吗?
为了回答这个问题,几年前我们开始研究编译过程中所产生出来的数据,和输入参数之间的相关性。我们从中发现到,不同的设计在不同的综合、布局布线条件下所产生出的结果居然有固定的概率分布。从概率论的角度来分析,如果能了解结果的分布,学习到什么样的编译条件组合能引起什么样的效果,那我们就能自动地调整FPGA原厂工具的综合、布局布线的选项,一步一步地把时序、利用率、功耗结果往好的方向移。初步测试的结果显示,这样子的机器学习应用模式能解决许多现有的技巧 (例如使用种子:图表A)所解决不了的问题。原厂工具的功能其实并不弱,只是工程团队都得全神贯注在设计上,没法花时间去了解工具。
图表A:单靠Placement种子无法解决问题。
Y轴:时序结果的积分;0表示成功地达到时序收敛。
X轴:1至100的Placement种子。
我们研发的结果是一种新的原厂工具的插件,叫InTime。它能够针对一个设计产生有利的综合、布局布线的选项组合,然后从编译结果中分辨,并学习到哪一些选项对设计有利,哪一些应该停止使用,在无需修改代码的情况下解决问题(图表B,C)。美国硅谷和国内的几家企业的FPGA团队已开始使用InTime。这次来访,目的是想在国内寻求多几位合作伙伴,一方面加深对设计团队所面对的问题的了解,另一方面继续推广InTime工具,并且协助改善FPGA设计的流程。
图表B:使用InTime第一回合,结果已胜过Placement种子。
不只时序成绩进步了,连利用率也减低
Y轴:时序结果的积分;0表示成功地达到时序收敛。
X轴:100个机器学习的编译选项组合(InTime产生的“策略”)。
图表C:基于第一回合的最好的策略,尝试Placement种子,成功地解决问题
Y轴:时序结果的积分;0表示成功地达到时序收敛
X轴:1至100的Placement种子。
如果第一回合的成绩不够好,不适合尝试种子,那就再产生策略运作。