Learning to Compile Programs to Neural Networks

Abstract

A neural surrogate is a neural network that mimics the behavior of a program. Neural surrogates of programs have been used to automatically tune program inputs, adapt programs to new settings, and accelerate computations. Neural surrogates have traditionally been developed by training on input-output examples for a single program. Language models present another approach wherein a model is trained on a single, large dataset then directly consumes program text, to act as a neural surrogate of the program. Having the language model as both the neural surrogate generator and the neural surrogate, however, poses a tradeoff of limited accuracy or excessive resource consumption. We present neural surrogate compilation, a technique for producing neural surrogates directly from program text without coupling neural surrogate generation and execution. We implement neural surrogate compilers using hypernetworks trained on a dataset of C programs and find they produce neural surrogates that are $1.91$-$9.50\times$ as data-efficient and train in $4.31$-$7.28\times$ fewer epochs than neural surrogates trained from scratch.

Cite

Text

Weber et al. "Learning to Compile Programs to Neural Networks." International Conference on Machine Learning, 2024.

Markdown

[Weber et al. "Learning to Compile Programs to Neural Networks." International Conference on Machine Learning, 2024.](https://mlanthology.org/icml/2024/weber2024icml-learning/)

BibTeX

@inproceedings{weber2024icml-learning,
  title     = {{Learning to Compile Programs to Neural Networks}},
  author    = {Weber, Logan and Michel, Jesse and Renda, Alex and Carbin, Michael},
  booktitle = {International Conference on Machine Learning},
  year      = {2024},
  pages     = {52428-52471},
  volume    = {235},
  url       = {https://mlanthology.org/icml/2024/weber2024icml-learning/}
}