MIT推出Ithemal,一种预测代码速度的新工具,它从纯文本中自动学习,无需手动添加特征时间,可以帮助程序员调优代码以提高性能。预测错误率甚至比英特尔自己的工具低50%。为了使代码尽可能快地运行,开发人员和编译器(将编程语言转换为机器可读代码的程序)经常使用通过模拟给定芯片架构来运行代码的性能模型。编译器使用此信息自动优化代码,开发人员使用此信息来解决运行代码的微处理器中的性能瓶颈。然而,机器代码的性能模型是由一小群专家编写的,没有经过适当的验证。因此,模拟的性能标准通常会偏离实际结果。现在,麻省理工学院的研究人员正着手解决这个问题。他们在去年6月的国际机器学习大会上提出了一种新的机器学习流水线,可以将上述模拟过程自动化,使过程更加方便快捷,更准确。根据研究人员的说法,Ithemal是一种神经网络模型,它以“基本块”(计算指令的基本摘要)形式的标记数据进行训练,以自动预测给定芯片执行以前看不见的基本块需要多长时间.Ithemal的性能比传统的手动调整模型准确得多。在去年11月的IEEE国际研讨会上,研究人员展示了各个领域的基本模块基准套件,包括机器学习、编译器、密码学和可用于验证性能模型的图形。他们将超过300,000个经过分析的块合并到一个名为BHive的开源数据集中。在评估过程中,Ithemal预测英特尔芯片运行代码的速度将超过英特尔构建自己的性能模型的速度。开发人员和编译器可以使用该工具生成在越来越多的多“黑盒”芯片设计上运行速度更快、效率更高的代码。现代计算机处理器的设计是不透明的,设计方案极其复杂,难以理解。如何编写代码以在这些处理器上实现最快的执行速度是一个很大的挑战。麻省理工学院助理教授兼人工智能实验室研究员迈克尔卡宾是该工具的作者之一,他说这是“对这些芯片的性能进行全面建模以提高代码效率的重要一步”。步。”最近,在12月举行的NeurIPS2019上,团队又提交了一篇论文,提出了一种自动生成编译器优化的新技术。具体来说,就是自动生成一个叫做Vemal的算法,将一些代码转换为向量,可以用来对于并行计算,实验表明Vemal优于业界常用的LLVM编译器中使用的手工制作的向量化算法。从数据中学习不需要技术文档。Carbin表示,手工设计性能模型可能是“一项黑科技”英特尔提供了3000多页详尽的文档来描述其芯片的架构。但目前只有少数专家能够构建性能模型来模拟代码在这些架构上的执行。Mendis说:“英特尔的文档既有错误又有错误且不完整,部分信息因涉及自主知识产权而被省略编辑。但是,如果您要利用数据,则无需了解文档。即使遗漏了一些东西,也可以直接从数据中学习到。为此,研究人员记录了给定微处理器平均需要多少个周期来计算基本块指令,这些指令本质上是启动、执行和关闭操作的序列,无需人工干预。自动化这个过程可以快速分析数以万计的基本指令块。专有领域架构:纯文本学习,无需手动添加特征在训练过程中,Ithemal模型分析数百万个自动划分的基本块,准确理解不同芯片架构进行计算重要的是,Ithemal以原始文本为输入,无需手动添加向输入数据添加特征。在测试中,可以将以前不可见的基本块和给定的芯片信息作为输入提供给Ithemal,Ithemal将生成一个数字,指示芯片执行该代码段的速度。研究人员发现,Ithemal的预测错误率(预测速度与实际速度的差异)比传统的手工模型低50%。此外,在一篇论文中,研究人员表明Ithemal的预测错误率为10%,而英特尔自己的性能预测模型在几个不同领域的各种基础模块上的预测错误率为20%。Mendis表示,目前这个工具可以让人们更容易快速了解任何新芯片架构的性能速度。例如,谷歌新推出的专用于神经网络的TPU。如果你想在一些新的架构上训练一个模型,你只需要从这个架构中收集数据。更多的数据,通过我们的profiler运行,并使用这些信息来训练Ithemal到“生成预测性能的模型。未来,研究人员正在研究如何使模型具有可解释性,”Mendis说。机器学习在很大程度上是一个黑匣子,并不清楚为什么特定模型会做出特定预测。“我们的模型表明,某个处理器执行一个基本块需要10个周期。现在我们正在研究模型做出这种预测的原因,”Carbin说。“对于像这样的工具,这已经是细粒度的,这很棒。”研究人员还希望通过Ithemal进一步提升Vemal的性能,让它自动获得更高的性能。
