commit | b235539ce2e5c6e5fddd1ad77638f433f5ac8689 | [log] [tgz] |
---|---|---|
author | Yundi Qian <yundi@google.com> | Wed Jun 16 22:44:02 2021 +0000 |
committer | Yundi Qian <yundi@google.com> | Wed Jun 16 22:44:02 2021 +0000 |
tree | 4cbf897817969af49794811c8f1872e927f41118 | |
parent | 345011d3ca8c4c2ca10a68a4086de50c65148020 [diff] |
two changes: 1) a python script to combine multiple training corpus into one; 2) push Colibrow's PR (https://github.com/google/ml-compiler-opt/pull/8). Thanks, Colibrow!
MLGO is a framework for integrating ML techniques systematically in LLVM. It replaces human-crafted optimization heuristics in LLVM with machine learned models. Our pioneering project is on the inlining-for-size optimization in LLVM.
We currently use two different ML algorithms: Policy Gradient and Evolution Strategies, to train the inlining-for-size model, and achieve up to 7% size reduction, when compared to state of the art LLVM -Oz. The compiler components are available in the main LLVM repository. This repository contains the training infrastructure and related tools for MLGO.
Currently we only support training inlining-for-size policy with Policy Gradient. We are working on:
Check out this demo for an end-to-end demonstration of how to train your own inlining-for-size policy from the scratch with Policy Gradient.
For more details about MLGO, please refer to our paper MLGO: a Machine Learning Guided Compiler Optimizations Framework.
Currently, the assumption for the is:
Training assumes a clang build with ML ‘development-mode’. Please refer to:
The model training - specific prerequisites are:
pip3 install --user -r requirements.txt
Where requirements.txt
is provided in the root of the repository.
Optionally, to run tests (run_tests.sh), you also need:
sudo apt-get install virtualenv
Note that the same tensorflow package is also needed for building the ‘release’ mode for LLVM.