酶:LLVM IR的跨语言自动区分

2020-12-09 19:38:55

假设您是一位机器学习研究人员,试图建立一个可以帮助计划COVID-19大流行的模型。您想将疾病模拟器集成到模型中,但是它是用C ++编程语言编写的,而不是使用现有的机器学习工作流程(如PyTorch或TensorFlo w)编写的。

传统上,这意味着您将需要花费更多的时间来学习C ++并在其他框架中重写它,而不是实际构建模型来解决问题。

MIT CSAIL的一个团队最近开发了一个聪明的解决方法:名为Enzyme的编译器插件,该插件可让您将任意外来代码导入TensorFlow之类的系统中,而无需重写它。

研究人员说,Enzyme减少了将机器学习应用于新领域所需的工作量,并且几乎与所有使用LLVM框架的编程语言兼容,包括C,C ++,Rust,Swift和Julia(起源于MIT)。

“我们希望酶能推动一系列科学学科发展,并缩小机器学习与科学计算社区之间的鸿沟,”有关该系统的新论文的博士生William S. Moses说。 “通过允许这些小组共享工具并更轻松地进行互操作,酶可以在从公共卫生分析到气候模拟的许多领域中改进方法。”

酶解决了有关“自动区分”(AD)的特定问题,“ AD是一种采用计算机程序中实现的功能的派生类的算法”。 AD被用于基础机器学习实践(例如反向传播)以及科学计算的许多领域。

历史上一直认为,像AD这样的高性能工具仅在最高语言级别上才是可行的,但是Moses说Enzyme表明在较低级别上它是可能的。实际上,在较低级别上工作使系统能够在差异化之前运行优化,这使其执行程序的速度比现有工具快四倍。

在科学计算领域,Enzyme还去除了程序员讨厌的许多手动工作。 例如,如果您正在开发用于物理引擎的模拟器,则可以使用酶来计算以前必须手动完成的导数。 团队很高兴看到Enzyme已经受到全球编程社区的关注。 下一步,该团队计划改进Enzyme的界面并改进该插件,以便它可以立即使程序员将外部代码库导入其工作流中。 该团队将在本周的年度神经信息处理系统会议(NeurIPS)上作为重点演讲介绍该项目。 该项目得到了国防高级研究计划局(DARPA),能源部,洛斯阿拉莫斯国家实验室,美国国家科学基金会和美国空军研究实验室的部分支持。