雲計算

異構加速平臺Heterogeneity-Aware Lowering and Optimization (HALO)簡介

Heterogeneity-Aware Lowering and Optimization (HALO)是異構計算加速度基於編譯器的技術平臺。

它通過稱為開放深度學習 API ( ODLA )的抽象、可擴展接口來利用針對深度學習領域的異構計算能力。HALO 提供統一的 Ahead-Of-Time 編譯解決方案,自動為雲、邊緣和物聯網場景量身定製。

HALO 支持多種編譯模式。在提前(AOT)編譯模式下,HALO 將 AI 模型編譯成用 ODLA API 編寫的 C/C++ 代碼。編譯後的模型可以在具有相應 ODLA 運行時庫的任何受支持平臺上運行。此外,HALO 能夠同時編譯主機和異構設備代碼。

下圖為整體編譯流程:

image.png

HALO 支持從以下框架編譯模型:

  • 咖啡
  • ONNX
  • TensorFlow
  • TFLite

很快將支持更多框架。

HALO 通過其HgAI SDK支持 阿里巴巴的第一款 AI 推理芯片Hanguang-800 NPU。含光800 NPU由阿里巴巴集團旗下企業T-Head Semiconductor Co., Ltd.(又名PingTouGe)設計。

image.png

通過針對各種異構加速器/運行時的 ODLA 運行時庫集支持廣泛的 ODLA 生態系統:

我們歡迎新的加速器平臺加入 ODLA 社區。

ODLA API 參考可以在這裡找到 ,詳細的編程指南即將推出...

夥伴

我們感謝以下合作伙伴對 ODLA 運行時的支持:

image.png

如何使用光環

要構建 HALO,請按照此處的說明進行操作。

使用 HALO 部署模型的工作流程包括:

  1. 使用 HALO 將模型文件編譯為基於 ODLA 的 C/C++ 源文件。
  2. 使用 C/C++ 編譯器將生成的 C/C++ 文件編譯為目標文件。
  3. 將目標文件、權重二進制文件和特定的 ODLA 運行時庫鏈接在一起。

一個簡單的例子

讓我們從一個基於TensorFlow Tutorial的 MNIST 的簡單示例開始 。下圖顯示了整體工作流程:

image.png

簡要說明:

HALO 生成 3 個文件:

  • mnist.h :應用程序要使用的頭文件。
  • mnist.cc :代表模型的 ODLA C++ 文件。
  • mnist.bin : ELF 格式的權重。

對於應用程序,推理被簡單地視為一個函數調用mnist()

請注意,出於可移植性的目的,即使輸出文件 model.cc 是 C++ 格式,HALO 也始終以 C 約定導出函數。

更詳細的解釋可以在這裡找到。示例代碼可以在這裡找到

有關所有命令行選項,請參閱HALO 選項列表

更多例子

貢獻

我們一直在尋求幫助以改進 HALO。有關更多詳細信息,請參閱貢獻指南。謝謝!

資源

執照

HALO 在Apache 2.0 許可下獲得許可

Leave a Reply

Your email address will not be published. Required fields are marked *