异构加速平台Heterogeneity-Aware Lowering and Optimization (HALO)简介

简介: HALO是异基于编译器的异构加速平台。它通过称为开放深度学习 API ( ODLA )的抽象、可扩展接口来利用针对深度学习领域的异构计算能力。HALO 提供统一的 Ahead-Of-Time 编译解决方案,自动为云、边缘和物联网场景量身定制。

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 许可下获得许可


相关文章
|
机器学习/深度学习 存储 人工智能
摆脱 AI 生产“小作坊”:如何基于 Kubernetes 构建云原生 AI 平台
本文将介绍和梳理我们对云原生 AI 这个新领域的思考和定位,介绍云原生 AI 套件产品的核心场景、架构和主要能力。
摆脱 AI 生产“小作坊”:如何基于 Kubernetes 构建云原生 AI 平台
|
机器学习/深度学习 人工智能 API
大模型推理服务全景图
推理性能的提升涉及底层硬件、模型层,以及其他各个软件中间件层的相互协同,因此了解大模型技术架构的全局视角,有助于我们对推理性能的优化方案进行评估和选型。
2045 89
|
机器学习/深度学习 安全 Java
Java 大视界 -- Java 大数据在智能金融反洗钱监测与交易异常分析中的应用(224)
本文探讨 Java 大数据在智能金融反洗钱监测与交易异常分析中的应用,介绍其在数据处理、机器学习建模、实战案例及安全隐私等方面的技术方案与挑战,展现 Java 在金融风控中的强大能力。
|
存储 缓存 人工智能
【AI系统】GPU 工作原理
本文详细解析了AI计算体系中的GPU工作原理,重点介绍了GPU与CPU在架构上的差异,强调了GPU在并行计算方面的优势。文章通过$AX+Y$的例子,展示了GPU如何通过并行和并发提高计算效率,并深入探讨了GPU的缓存机制及线程原理,解释了GPU如何通过大量线程和Warp来掩盖延迟问题,实现高效计算。
1538 0
|
Java 应用服务中间件
IDEA Error:(7, 26) java: 程序包javax.servlet.http不存在
IDEA Error:(7, 26) java: 程序包javax.servlet.http不存在
3593 0
IDEA Error:(7, 26) java: 程序包javax.servlet.http不存在
|
人工智能 Serverless API
云原生应用开发平台CAP评测
CAP(Cloud Application Platform)是阿里云提供的一站式应用开发及管理平台,集成了Serverless计算、AI应用模板、先进开发者工具和企业级应用管理功能。本文结合官方文档与实际操作,全面评测了CAP的产品优势、实际操作体验及性能表现,展示了其在降低成本、提高开发效率和灵活性方面的卓越能力。
|
人工智能 自然语言处理 BI
蓝凌aiKM,双能驱动场景变革:蓝凌知识管理平台和通义千问共建实践
蓝凌aiKM通过双能驱动场景变革,结合蓝凌知识管理平台与通义千问大模型,助力企业构建智能“大脑”。aiKM不仅提升知识管理效率,还赋能业务场景,如新人培训、营销支持和流程优化。蓝博士产品整合专属内容与大模型能力,提供智能搜索、问答及推荐服务,帮助企业高效利用私域知识资产,推动数字化转型。蓝凌在AI时代致力于激活企业新生产力,打造知识护城河,成为核心竞争力。
763 0
|
SQL 关系型数据库 MySQL
实时计算 Flink版操作报错之遇到错误导致cdc同步失败,多次重启也不行,只能重新启动任务从最新的消费,是什么情况
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
SQL Oracle 关系型数据库
ORA-01033: ORACLE initialization or shutdown in progress的两种解决方法
ORA-01033: ORACLE initialization or shutdown in progress通常是由于ORACLE数据库文件损坏引起的,以下是出现的问题及解决方法: 现象一: sysdba可以登录,但是在使用中就出现“数据库未打开,仅允许在固定表/视图中查询”,而normal用户无法登录使用,出现ORA-01033: ORACLE initialization or shutdown in progress 的错误。
2690 0