在快速发展的机器学习领域,PyTorch 凭借其灵活性和全面的生态系统,已成为模型开发的热门框架。Arm 与 Meta 合作在 ExecuTorch 中引入了对 Arm 平台的支持,进一步简化了模型算法开发过程,实现无缝在边缘侧设备上部署 PyTorch 模型。
ExecuTorch 对 Ethos-U85 的支持
高性能的 Arm Ethos-U85 NPU 可满足在边缘侧日益增长的运行先进人工智能 (AI) 推理工作负载的需求,包括诸如大语言模型等基于 Transformer 的网络。Arm 针对 Ethos-U 提供参考设计,如 Arm Corstone-320 物联网参考设计平台,以加速和简化芯片开发周期。参考设计平台中包含固定虚拟平台 (FVP) 等许多项目,FVP 可仿真整个系统,为 Ethos-U85 平台上进行前沿的嵌入式软件开发和神经网络部署提供支持。
Arm 通过在 Ethos-U85 上支持 ExecuTorch 测试版,为开发者构建物联网边缘侧应用提供了更多支持。开发者可以借助 ExecuTorch,高效地部署原生开发的 PyTorch 模型,基于 Arm 平台构建出智能且响应迅速的物联网解决方案。
随着该软件包的推出,想要创建边缘侧 AI 应用的开发者能够在平台上市前数月就开始模型和应用的软件开发工作。
在 Ethos-U85 上开始使用 ExecuTorch
ExecuTorch GitHub 公共代码仓库中提供了完整的开发环境。其中包含一个集成且经过测试的开发流程和所有必要组件。
三个简单的步骤如下所示:
- 设置 ExecuTorch
https://pytorch.org/executorc...
- 设置 Arm Build 环境
https://pytorch.org/executorc...
- 在 arm_executor_runner 上编译并运行模型
https://pytorch.org/executorc...
之后就可以在此流程的基础上编译和运行模型,从 Ethos-U85 驱动程序采集周期数信息等运行时行为。
为了让最终用户更轻松地完成此过程,Arm 还向 ExecuTorch 代码仓库贡献了脚本:
- 设置 ExecuTorch
- setup.sh:下载必要的软件
https://github.com/pytorch/ex...
- run.sh:在 Corstone-320 FVP 上编译并运行模型
https://github.com/pytorch/ex...
要构建其他模型,可使用提前编译器脚本 aot_arm_compiler.py,它能将 PyTorch 项目代码 (nn.module) 转换为 ExecuTorch 项目代码(.pte flatbuffer 文件)。
脚本链接:
https://github.com/pytorch/ex...
要编写使用 ExecuTorch 的自定义应用,可以按照示例 executor_runner 应用中的应用流程进行操作。
示例 executor_runner 应用链接:
https://github.com/pytorch/ex...
随着陆续支持更多算子,我们将能够支持更多的 PyTorch 模型。后续添加的更多功能,将通过 pytorch.org 上的 Ethos-U 教程材料进行演示。
Ethos-U 教程:
https://pytorch.org/executorc...
部署流程的详细工作原理
利用 ExecuTorch 的可扩展性和 Arm 的张量算子集架构 (TOSA) 的特性,Arm 在 ExecuTorch 中实现了 Ethos-U 支持。Ethos-U 编译器 Vela 已通过 TOSA 前端得到增强,可以为 Ethos-U 系列中的所有产品编译模型。
为了将这些组件整合为一个连贯的工作流程,需要遵循以下步骤:
- 将 PyTorch 模型转换为可部署的 ExecuTorch 程序(AOT 流程)
- 将 ExecuTorch 程序编译为可执行文件,以便部署在 Corstone-320 上(运行时流程)
ExecuTorch 的 AOT 流程
此过程首先使用 PyTorch 的 dynamo export 功能,将 PyTorch 模型转换为量化的 TOSA 表示。然后,就能利用 Vela 编译 TOSA 前端生成一组 Ethos-U 机器指令(称为命令流)。接着,命令流被捆绑到 Executorch 程序中,由 flatbuffer 文件 (.pte) 表示。该文件中包含了 ExecuTorch 运行时使用 Ethos-U 硬件执行推理所需的所有内容。
ExecuTorch 运行时流程
ExecuTorch 运行时以 C/C++ 编写,可支持多种后端。Arm 对 ExecuTorch 运行时进行了扩展,以包含对 Ethos-U 设备驱动程序的支持。按照此流程操作,将生成一个独立的经过编译的可执行文件。在 Corstone-320 FVP 上部署可执行文件非常简单,只需要在调用 FVP 时使用适当的标志即可。
Ethos-U85 和 Corstone-320
Ethos-U 系列 NPU 为边缘侧 AI 提供高性能、高能效的解决方案。Ethos-U55(同样受 ExecuTorch 支持)广泛应用于众多 Arm Cortex-M 异构系统,而 Ethos-U65 则将 Ethos-U 系列的适用性扩展到基于 Cortex-A 的系统,并提升了性能。
Ethos-U85 进一步扩展了 Ethos-U 产品线,支持当前以及未来更多使用 Transformer 神经网络架构的边缘侧工作负载。与前代产品相比,Ethos-U85 的性能提升了四倍,能效提高了 20%,在主流神经网络上的利用率高达 85%。
Ethos-U85 的显著特性包括:
- 配置范围从 128 到 2048 MAC/周期,在 1GHz 下可提供高达 4 TOP/s 的性能。
- 兼容基于 Cortex-A 和 Cortex-M 的系统。
- 通过支持 TOSA,对主要的神经网络提供原生支持。
- 可对主要的神经网络进行全面硬件加速。
完整列表请参阅 Ethos-U85 技术概述
https://developer.arm.com/doc...
未来规划
Arm 会陆续增加新的算子支持,扩展 ExecuTorch 核心 ATen 算子的覆盖范围,并支持更多模型在 Ethos-U 上运行。Arm 将持续专注于提高性能,以确保模型在 Ethos-U 上高效运行。
ExecuTorch 委托框架支持将 Ethos-U 不支持的算子回调到 CPU 上运行,使用参考内核执行。Arm 致力于使用 CMSIS-NN 在 Cortex-M CPU 上实现卓越性能,为回调算子提供更好的支持,并确保在没有 Ethos-U 功能的设备上也能实现良好性能。
上述的软件包和 Corstone-320 FVP 是 Arm 在简化应用开发道路上迈出的又一步,欢迎各位开发者继续探索代码和构建过程,并向 Arm 提供反馈意见。同时,Arm 也致力于支持更多特性和模型,并尽可能充分发挥硬件性能。
END
作者:Arm 工程部应用机器学习总监 Robert Elliott、Arm 工程部首席工程师 Fredrik Knutsson、Arm 物联网事业部技术管理总监 Mark Quartermain
文章来源:Arm社区
推荐阅读
- AI 如何应用于汽车?听听行业专家如何回答
- Arm Ethos-U85 NPU:利用小语言模型在边缘侧实现生成式 AI
- 在基于 Arm Neoverse 平台的处理器上实现更高效的生成式 AI
- 如何在 Arm Neoverse 平台上使用 Kleidi 技术加速 PyTorch 推理?
欢迎大家点赞留言,更多 Arm 技术文章动态请关注极术社区 Arm 技术专栏欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。