由罗伯特·埃利奥特、弗雷德里克·诺特松和马克·夸特曼著

支持 Ethos-U85 的 ExecuTorch

在机器学习快速发展的领域中,PyTorch 凭借其灵活性和全面的生态系统,已成为模型开发的领先框架。Arm 与 Meta 合作,在 ExecuTorch 中引入了对 Arm 平台的支持,这进一步简化了这一过程,使得在边缘设备上部署 PyTorch 模型变得无缝。

Arm Ethos-U85 NPU 是性能最高的 Ethos NPU,满足了对在边缘运行高级 AI 推理工作负载不断增长的需求,包括基于 transformer 的网络如LLMs。Arm 为 Ethos-U 提供参考设计,包括 Corstone-320 物联网参考设计平台,以加速和简化芯片开发周期。该参考设计平台包括许多项目,其中之一是一个固定虚拟平台(FVP),它模拟整个系统,使边缘嵌入式软件开发和神经网络部署成为 Ethos-U85 的尖端技术。

今天,Arm 正在扩展对开发物联网边缘应用开发者的支持,通过支持 Ethos-U85 上的 ExecuTorch 测试版。借助 ExecuTorch,开发者现在可以高效地将本地开发的 PyTorch 模型部署,以实现基于 Arm 的智能和响应迅速的物联网解决方案。

随着这个包的推出,数千名希望创建边缘 AI 应用程序的开发者可以在平台上市前数月开始他们的模型和应用开发。

在 Ethos-U85 上开始使用 ExecuTorch

公共 ExecuTorch GitHub 仓库中提供了一个完整的开发环境。这提供了一个集成和测试的开发流程,包括所有必要的组件。

三步简单操作如下:

  1. 设置 ExecuTorch
  2. 设置 Arm Build 环境
  3. 在 arm_executor_runner 上编译和运行模型

您可以在此基础上构建编译和运行模型的流程,以捕获 Ethos-U85 驱动程序的运行时行为,例如周期计数信息。

为了使过程对最终用户更容易,我们还向 ExecuTorch 仓库添加了脚本:

  1. 设置 ExecuTorch
  2. setup.sh:下载必要的软件。
  3. 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 的 Tensor Operator Set 架构(TOSA)的表达性,我们已启用 Ethos-U 对 ExecuTorch 的支持。Ethos-U 编译器 Vela 已增强 TOSA 前端,使得可以为 Ethos-U 系列的所有产品编译模型。将这些组件整合成一个连贯的工作流程涉及以下步骤。

  1. 将 PyTorch 模型转换为可部署的 ExecuTorch 程序(AOT 流程)
  2. 将 ExecuTorch 程序编译成可执行文件,可在 Corstone-320 上部署(运行时流程)

ExecuTorch 预编译(AOT)流程

流程开始于将 PyTorch 模型转换为量化 TOSA 表示,使用 PyTorch dynamo 导出流程。这允许我们利用 Vela 编译器的 TOSA 前端生成 Ethos-U 机器指令集,称为命令流。该命令流被打包成一个 ExecuTorch 程序,以 flatbuffer 文件 (.pte) 的形式表示。此文件包含 ExecuTorch 运行时执行 Ethos-U 硬件推理所需的一切。

flow diagram

ExecuTorch 运行时流程

ExecuTorch 运行时是用 C/C++ 编写的,旨在支持多个后端。我们已将其扩展以包括对 Ethos-U 设备驱动程序的支持。遵循此流程将生成一个自包含的编译可执行文件。在 Corstone-320 FVP 上部署此可执行文件非常简单,只需在调用 FVP 时设置适当的标志即可。

flow diagram

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 个 MAC 配置,在 1GHz 频率下提供高达 4 TOP/s
  • 兼容基于 Cortex-A 和 Cortex-M 的系统
  • 原生支持主流神经网络,但支持 TOSA
  • 所有主流神经网络的全面硬件加速
  • 有关完整功能列表,请参阅 Ethos-U85 技术概述

A typical compute subsystem design with Ethos-U85

基于 Ethos-U85 的典型计算子系统设计

接下来是什么

我们每周都在添加新的算子支持,扩展 ExecuTorch 核心 ATen 算子覆盖范围,并使更多模型能够在 Ethos-U 上运行。我们持续努力优化性能,确保模型在 Ethos-U 上运行得尽可能优化。

ExecuTorch 代理框架支持在 Ethos-U 不支持的情况下,使用参考内核实现,在 CPU 上运行算子。我们将致力于使用 CMSIS-NN 在 Cortex-M CPU 上实现最佳性能,为回退算子提供最佳支持,并确保无 Ethos-U 能力的设备性能优化。

上述包含 Corstone-320 FVP 的包是简化应用开发的更多步骤,所以请继续,检查代码和构建过程,并给我们反馈。同时,我们将忙于每周发布,以启用更多功能、模型,并从硬件中提取最大性能。