Heterogeneity-Aware Lowering and Optimization (HALO)是異構計算加速度基于編譯器的技術平台。
它通過稱為開放深度學習 API ( ODLA )的抽象、可擴充接口來利用針對深度學習領域的異構計算能力。HALO 提供統一的 Ahead-Of-Time 編譯解決方案,自動為雲、邊緣和物聯網場景量身定制。
HALO 支援多種編譯模式。在提前(AOT)編譯模式下,HALO 将 AI 模型編譯成用 ODLA API 編寫的 C/C++ 代碼。編譯後的模型可以在具有相應 ODLA 運作時庫的任何受支援平台上運作。此外,HALO 能夠同時編譯主機和異構裝置代碼。
下圖為整體編譯流程:

- 咖啡
- ONNX
- TensorFlow
- TFLite
很快将支援更多架構。
HALO 通過其
HgAI SDK支援
阿裡巴巴的第一款 AI 推理晶片:
Hanguang-800 NPU。含光800 NPU由阿裡巴巴集團旗下企業
T-Head Semiconductor Co., Ltd.(又名PingTouGe)設計。
通過針對各種異構加速器/運作時的 ODLA 運作時庫集支援廣泛的 ODLA 生态系統:
我們歡迎新的加速器平台加入 ODLA 社群。
ODLA API 參考可以在
這裡找到 ,詳細的程式設計指南即将推出...
https://github.com/alibaba/heterogeneity-aware-lowering-and-optimization/blob/master/README.md#partners 夥伴
我們感謝以下合作夥伴對 ODLA 運作時的支援:
如何使用光環
要建構 HALO,請按照
此處的說明進行操作。
使用 HALO 部署模型的工作流程包括:
- 使用 HALO 将模型檔案編譯為基于 ODLA 的 C/C++ 源檔案。
- 使用 C/C++ 編譯器将生成的 C/C++ 檔案編譯為目标檔案。
- 将目标檔案、權重二進制檔案和特定的 ODLA 運作時庫連結在一起。
https://github.com/alibaba/heterogeneity-aware-lowering-and-optimization/blob/master/README.md#a-simple-example 一個簡單的例子
讓我們從一個基于
TensorFlow Tutorial的 MNIST 的簡單示例開始 。下圖顯示了整體工作流程:
簡要說明:
HALO 生成 3 個檔案:
- mnist.h :應用程式要使用的頭檔案。
- mnist.cc :代表模型的 ODLA C++ 檔案。
- mnist.bin : ELF 格式的權重。
對于應用程式,推理被簡單地視為一個函數調用
mnist()
。
請注意,出于可移植性的目的,即使輸出檔案 model.cc 是 C++ 格式,HALO 也始終以 C 約定導出函數。
更詳細的解釋可以在
找到。示例代碼可以在
找到
https://github.com/alibaba/heterogeneity-aware-lowering-and-optimization/blob/master/models/vision/classification/mnist_simple有關所有指令行選項,請參閱
HALO 選項清單https://github.com/alibaba/heterogeneity-aware-lowering-and-optimization/blob/master/README.md#more-examples 更多例子
https://github.com/alibaba/heterogeneity-aware-lowering-and-optimization/blob/master/README.md#contributing 貢獻
我們一直在尋求幫助以改進 HALO。有關更多詳細資訊,請參閱
貢獻指南。謝謝!
https://github.com/alibaba/heterogeneity-aware-lowering-and-optimization/blob/master/README.md#resources 資源
https://github.com/alibaba/heterogeneity-aware-lowering-and-optimization/blob/master/README.md#license 執照
HALO 在
Apache 2.0 許可下獲得
許可