Heterogeneity-Aware Lowering and Optimization (HALO) is a heterogeneous computing acceleration platform based on the compiler technology. It exploits the heterogeneous computing power targeting the deep learning field through an abstract, extendable interface called Open Deep Learning API (ODLA). HALO provides a unified Ahead-Of-Time compilation solution, auto tailored for cloud, edge, and IoT scenarios.
HALO supports multiple compilation modes. Under the ahead-of-time (AOT) compilation mode, HALO compiles an AI model into the C/C++ code written in the ODLA APIs. The compiled model can be run on any supported platform with the corresponding ODLA runtime liibrary. Plus, HALO is able to compile both host and heterogeneous device code simultaneously. The picture below shows the overall compilation flow:
HALO has supported the compilation of models from the following frameworks:
More frameworks will be supported soon.
HALO supports Alibaba's first AI-inference chip: Hanguang-800 NPU via its HgAI SDK. Hanguang-800 NPU is designed by T-Head Semiconductor Co., Ltd. (also known as PingTouGe), a business entity of Alibaba Group.
A broad ODLA ecosystem is supported via the ODLA runtime library set targeting various heterogeneous accelerators/runtimes:
And we welcome new accelerator platforms to join in the ODLA community.
ODLA API Reference can be found here and detailed programming guide be coming soon...
We appreciate the support of ODLA runtimes from the following partners:
To build HALO, please follow the instructions here (查看中文).
The workflow of deploying models using HALO includes:
Let's start with a simple example of MNIST based on TensorFlow Tutorial. The diagram below shows the overall workflow:
Brief explanations:
HALO generates 3 files:
To application, the inference is simply viewed as a function call mnist()
.
Note that, for portability purpose, HALO always exports functions in the C convention even though the output file model.cc is in the C++ format.
More detailed explanations can be found here. Example code can be found here
Please refer to HALO options list for all command line options.
We're always looking for help to improve HALO. See the Contributing Guide for more details. Thank you!
HALO is licensed under the Apache 2.0 License