diff --git a/README.md b/README.md index 2ec57bbf2e55fe7e61edf4da212cbb944cb62c42..21a23782642198379056b3063c8e01c0dc1783ca 100644 --- a/README.md +++ b/README.md @@ -40,3 +40,10 @@ You can open this in the browser and browse to "Getting Started" section. [here](https://drive.google.com/file/d/1Z84z-nsv_nbrr8t9i28UoxSJg-Sd_Ddu/view?usp=sharing). In either case, there should be a `model_params/` folder at the root of repo after extraction. + +## Binary Tuning Support for HPVM + +This branch (`hpvm`) contains experimental support for tuning with HPVM binary. +See `examples/tune_hpvm_bin.py` for an example tuning session using such a binary file. + +TODO: attach a frontend-generated binary as an actual example. diff --git a/examples/tune_hpvm_bin.py b/examples/tune_hpvm_bin.py new file mode 100644 index 0000000000000000000000000000000000000000..7fcfed3ee52688cb220c47adbc927341820e457b --- /dev/null +++ b/examples/tune_hpvm_bin.py @@ -0,0 +1,21 @@ +import site +from pathlib import Path + +site.addsitedir(Path(__file__).parent.parent.absolute().as_posix()) +from predtuner import PipedBinaryApp, config_pylogger + +# Set up logger to put log file in /tmp +msg_logger = config_pylogger(output_dir="/tmp", verbose=True) + +# TODO: fill in these 2 paths: +binary_file = "" +metadata_file = "" +# Create a "piped binary application" +app = PipedBinaryApp("TestBinaryApp", binary_file, metadata_file) +# Start tuning -- see tune_vgg16_cifar10.py for more details on the options +tuner = app.get_tuner() +tuner.tune(100, 3.0, 3.0, True, 50, cost_model="cost_linear") +tuner.dump_configs("configs.json") +fig = tuner.plot_configs(show_qos_loss=True) +fig.savefig("configs.png", dpi=300) +app.dump_hpvm_configs(tuner.best_configs, "hpvm_confs.txt") diff --git a/predtuner/__init__.py b/predtuner/__init__.py index c11d18f205241f54b32405475e6e19d22d85538a..babe3e013b099b78047d3cea48fea562ac834c8e 100644 --- a/predtuner/__init__.py +++ b/predtuner/__init__.py @@ -9,5 +9,6 @@ from .modeledapp import ( QoSModelP1, QoSModelP2, ) +from .pipedbin import PipedBinaryApp from .torchapp import TorchApp, TorchApproxKnob from .torchutil import accuracy