Programming with neural surrogates of programs

Programming with neural surrogates of programs
复制标题

DOI:
10.1145/3486607.3486748
复制
发表时间:
2021-10
期刊:
Proceedings of the 2021 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software
影响因子:
--
通讯作者:
Alex Renda;Yi Ding;Michael Carbin
Alex Renda;Yi Ding;Michael Carbin
中科院分区:
其他
文献类型:
--
作者:
Alex Renda;Yi Ding;Michael Carbin

文献摘要

相似文献

代理,模仿程序行为的模型,形成了各种开发工作流的基础。我们研究了三种基于代理的设计模式,在大型CPU模拟器的案例研究中评估每一种模式。使用代理编译,程序员可以开发一个代理,它模仿程序的行为,以代替原始程序部署到最终用户。代理编译将CPU模拟器的速度提高了1.6倍。使用代理适应,程序员开发程序的代理,然后在不同的任务上重新训练该代理。替代自适应将模拟器的误差降低了50%。通过代理优化,程序员开发程序的代理,优化代理的输入参数,然后将优化的输入参数插回原始程序。替代优化找到的仿真参数,减少了5%的模拟器的误差相比,由专家设定的参数引起的误差。在本文中,我们正式代理为基础的设计模式的分类。我们进一步描述了这三种设计模式的编程方法。我们的工作建立了一个基础的新兴类的工作流程的基础上编程与代理程序。
Surrogates, models that mimic the behavior of programs, form the basis of a variety of development workflows. We study three surrogate-based design patterns, evaluating each in case studies on a large-scale CPU simulator. With surrogate compilation, programmers develop a surrogate that mimics the behavior of a program to deploy to end-users in place of the original program. Surrogate compilation accelerates the CPU simulator under study by 1.6×. With surrogate adaptation, programmers develop a surrogate of a program then retrain that surrogate on a different task. Surrogate adaptation decreases the simulator’s error by up to 50%. With surrogate optimization, programmers develop a surrogate of a program, optimize input parameters of the surrogate, then plug the optimized input parameters back into the original program. Surrogate optimization finds simulation parameters that decrease the simulator’s error by 5% compared to the error induced by expert-set parameters. In this paper we formalize this taxonomy of surrogate-based design patterns. We further describe the programming methodology common to all three design patterns. Our work builds a foundation for the emerging class of workflows based on programming with surrogates of programs.