ExecuTorch 对 Ethos-U85 的支持
在快速发展的机器学习领域,PyTorch 凭借其灵活性和全面的生态系统,已成为领先的模型开发框架。 Arm 与 Meta 合作,在 ExecuTorch 中引入了对 Arm 平台的支持,这进一步简化了流程,使得在边缘设备上部署 PyTorch 模型变得无缝。
Arm Ethos-U85 NPU 是性能最高的 Ethos NPU,旨在满足在边缘运行高级 AI 推理工作负载(包括像 LLM 这样的基于 Transformer 的网络)日益增长的需求。Arm 提供围绕 Ethos-U 的参考设计,包括 Corstone-320 物联网参考设计平台,以加速和简化芯片开发周期。该参考设计平台包含许多组件,其中包括一个固定虚拟平台 (FVP),它可以模拟整个系统,从而为 Ethos-U85 实现尖端的嵌入式软件开发和神经网络部署。
如今,Arm 通过在 Ethos-U85 上支持 ExecuTorch beta 版本,正在扩展对构建物联网边缘应用的开发者的支持。利用 ExecuTorch,开发者现在可以高效地将其原生开发的 PyTorch 模型落地,从而实现基于 Arm 构建的智能且响应迅速的物联网解决方案。
随着这个软件包的可用,成千上万希望创建边缘 AI 应用的开发者可以在平台上市前数月就开始他们的模型和应用开发。
在 Ethos-U85 上开始使用 ExecuTorch
ExecuTorch 公共 GitHub 仓库中提供了一个完整的开发环境。这提供了一个集成且经过测试的开发流程,包含所有必要的组件。
三个简单的步骤是:
然后,您可以在此流程的基础上进一步构建,以编译和运行模型,并从 Ethos-U85 驱动程序捕获运行时行为,例如周期计数信息。
为了方便最终用户,我们还在 ExecuTorch 仓库中添加了脚本
- 设置 ExecuTorch
- setup.sh: 下载必要的软件。
- run.sh: 在 Corstone-320 FVP 上编译和运行模型
要构建其他模型,您可以使用预编译脚本 aot_arm_compiler.py,该脚本将 PyTorch 程序 (nn.module) 转换为 ExecuTorch 程序 (.pte flatbuffer 文件)。要编写使用 ExecuTorch 的自定义应用程序,您可以遵循示例 executor_runner 应用程序中的应用流程。
我们支持大约 40 个核心 ATen 算子,并且已经支持 Mobilenetv2 等模型的端到端部署。正在进行的进一步支持算子的工作将使每周能支持更多 PyTorch 模型。
随着更多功能的添加,将通过 pytorch.org 上 Ethos-U 的教程材料进行演示
此部署流程的详细工作原理
利用 ExecuTorch 的可扩展性以及 Arm 的张量算子集架构 (TOSA) 的表达能力,我们在 ExecuTorch 中实现了对 Ethos-U 的支持。Ethos-U 编译器 Vela 已通过 TOSA 前端得到增强,从而可以为 Ethos-U 系列中的所有产品编译模型。将这些组件结合到连贯的工作流中涉及以下步骤。
- 将 PyTorch 模型转换为可部署的 ExecuTorch 程序 (AOT 流程)
- 将 ExecuTorch 程序编译成可执行文件,该文件可以部署在 Corstone-320 上 (运行时流程)
ExecuTorch 预编译 (AOT) 流程
该过程首先使用 PyTorch dynamo 导出流程将 PyTorch 模型转换为量化的 TOSA 表示。这使我们能够利用 Vela 编译器 TOSA 前端生成一组 Ethos-U 机器指令,称为命令流。命令流被打包到 ExecuTorch 程序中,由 flatbuffer 文件 (.pte) 表示。该文件包含 ExecuTorch 运行时使用 Ethos-U 硬件执行推理所需的一切。
ExecuTorch 运行时流程
ExecuTorch 运行时用 C/C++ 编写,旨在支持多个后端。我们已将其扩展以包括对 Ethos-U 设备驱动程序的支持。遵循此流程将生成一个自包含的已编译可执行文件。在 Corstone-320 FVP 上部署可执行文件非常简单,只需在调用 FVP 时使用适当的标志即可。
Ethos-U85 和 Corstone-320
Ethos-U 系列 NPU 为边缘 AI 提供了高性能和高能效的解决方案。Ethos-U55(也受 ExecuTorch 支持)广泛部署在许多 Cortex-M 异构系统中,而 Ethos-U65 将 Ethos-U 系列的应用范围扩展到基于 Cortex-A 的系统,并提高了性能。
Ethos-U85 进一步扩展了 Ethos-U 产品线,通过使用基于 Transformer 的网络支持边缘上的当前和未来工作负载。与前代产品相比,Ethos-U85 的性能提升了 4 倍,能效提高了 20%,在流行网络上的利用率高达 85%。Ethos-U85 的显著特点包括:
- 从 128 到 2048 MACs/cycle 的配置,在 1GHz 下提供高达 4 TOP/s 的性能
- 兼容基于 Cortex-A 和 Cortex-M 的系统
- 通过对 TOSA 的支持实现对主要神经网络的原生支持
- 对所有主要神经网络的完全硬件加速
- 如需完整功能列表,请参阅Ethos-U85 技术概述
Ethos-U85 的典型计算子系统设计
下一步
我们每周都会增加新的算子支持,扩展 ExecuTorch 核心 ATen 算子的覆盖范围,并使更广泛的模型能够在 Ethos-U 上运行。我们正在进行的努力专注于提高性能,以确保模型在 Ethos-U 上尽可能优化地运行。
ExecuTorch delegate 框架支持将 Ethos-U 不支持的算子回退到在 CPU 上使用参考内核实现运行。我们将努力使用 CMSIS-NN 在 Cortex-M CPU 上实现最佳性能,为回退算子提供最佳支持,并确保没有 Ethos-U 功能的设备获得最佳性能。
上述包含 Corstone-320 FVP 的软件包是简化应用开发的更多步骤,因此请尽管查看代码和构建过程,并向我们发送反馈。同时,我们将忙于进行每周发布,以启用更多功能、支持更多模型,并从硬件中提取最大性能。