ExecuTorch 和 TOSA 确保 PyTorch 在 Arm 平台上顺利运行
发布时间:2023-11-02

作者:Arm 工程部应用机器学习总监 Robert Elliott


Arm® 携手 Meta 在 ExecuTorch[1] 中引入了对 Arm 平台的支持[2],ExecuTorch 是一个全新的端到端解决方案,为 PyTorch 实现设备上的人工智能 (AI)。


与多数企业一样,Arm 极力支持高效、简洁的 AI 开发流程,并努力确保各种最新发布、性能卓越的 PyTorch 模型能在 Arm 的平台上顺利运行。


虽然历来 PyTorch 都是许多研究团队搭建新神经网络的首选平台,但要将这些工作负载转换为可在 Arm 平台上高效运行的负载,却是一个高强度的手动流程。受限于将网络导出的工作流程,以及各种机器学习 (ML) 运算的长尾碎片效应,导致了将其部署到系统资源相对有限的嵌入式系统的难度。


随着 Meta 发布了以 PyTorch 2.0[3] 这一重大发展为基础的 ExecuTorch 代码库,使得先进的神经网络能在更大范围内(从服务器领域的 Arm CPU,到移动领域的 CPU 和 GPU,再到嵌入式应用中的 Cortex®-M 微处理器和 Ethos™-U NPU),更易于捕捉和调试运行。 



我们与 Meta 紧密合作,基于我们在 TOSA(用于捕获神经网络)[4]和 Ethos NPU[5](用于加速移动平台和嵌入式平台上的关键 ML 工作负载)方面的巨大投入,推动 ExecuTorch 初步展开对采用 Arm 架构芯片的支持。 



近期,我们发布了 ExecuTorch 的 TOSA 编译流程和运行时代理[6],并为 Ethos-U55 提供了原型支持,使图形能从 PyTorch python 环境直接导出到支持 Ethos-U 的平台,如 Arm Corstone™-300[7]。 


我们期待着这项工作的持续开展,以便在一系列的 ML 用例中实现高效的输出路径。 


这对开发者意味着什么?


对典型的 PyTorch 用户来说,这意味着可以将少量但不断增加的神经网络作为独立模型捕获,并在采用基于 Cortex-M 和 Ethos-U 的平台上高效运行。 


这由三个主要部分组成:

1)可将神经网络作为独立文件捕获的提前流程。下图是简化的导出视图。有关更多信息,详见导出至 ExecuTorch 文档[8]。 



2)设备上的 ExecuTorch 运行时可将工作分派给 Cortex-M 和 Ethos-U。



3)ExecuTorch API 提供了部分代理图形和全套 CPU 运算符的功能,允许逐步将负载分流到 Ethos-U。这对于神经网络的开发及其向边缘设备的过渡非常有利。


例如,TOSA/Ethos-U55 流程不需要一次性编译整个图形,可以逐步增加支持。这对于处理大型复杂图形尤其有用。

这种灵活性对 PyTorch 的用户也有直接的好处。利用一致的 ExecuTorch API,用户可以编译和部署模型,而在底层,图形的某些部分可以尽可能地指派给功能强大的 Ethos-U55 执行,而图形的其余部分仍然可以在 Arm CPU 上执行。这样可以快速迭代和覆盖模型,提高性能,而无需修改用户代码,从而提升开发者的体验。


上述流程的简单示例



它可以简单到只需在 python 中的现有 PyTorch 模型中添加少量行,就能以 .pte 文件的形式捕获模型的完整表示。

对新模型开发至关重要的是,这个流程的开发不仅适用于标准的神经网络,也适用于为处理其他工作负载而编写的自定义 torch.nn.Module。

有关在 Corstone-300 或其他支持 Ethos 的平台上部署此功能的详细示例和文档,可以参考此示例应用[9],它可以嵌入导出的 .pte 文件,并在 Ethos-U55 NPU 上执行。


量化


许多 Arm 平台需要通过量化来实现 Ethos 加速或新 CPU 指令的全部性能优势,因此我们也会努力引入符合 TOSA 标准的量化和图形消耗。借助 ExecuTorch EXIR 图形基础结构,我们能够轻松地解析整个量化图形,并读取所需的量化信息,以便在 TOSA 量化降低[10]的过程中计算重新缩放参数。 


在 PyTorch FX 图到 TOSA 的初始量化支持中,我们使用了新的 PyTorch 2 导出训练后量化 (PyTourch 2 Export Post-Training Quantization)[11] 来获取 MobileNetV2 的量化示例,其中涵盖了大多数常见运算符,例如 Add、Linear、Convolution 和 ReLU。由于其 API 非常简单,只需三至四行代码,就能使用从 XNNPACK 量化器子类化的 TOSA 量化流来实现量化步骤。为了支持更复杂的图形,还可以构建自定义量化器[12],以满足大多数神经网络模型的需要。  


这些图形自然会进入 Ethos-U 编译器[13],生成可在 Ethos-U 硬件上直接执行的模型。 


MobileNetV2 的简单示例 (PyTorch->TOSA->Vela) 显示了在符合 TOSA 标准的神经网络加速器硬件上运行 PyTorch 量化模型的可行性和简易性。在接下来的工作中,Arm、Meta 和广大的 PyTorch 社区将继续为从 PyTorch 到 TOSA 的运算符降低提供更多支持。与此同时,Arm 会继续开发支持 TOSA 的新流程,为添加新的编译目标提供可靠的方法。


下一步是什么?


Arm 期待与 Meta 密切合作,增加更多的神经网络和运算符,扩大对 ExecuTorch 全套功能的支持。我们期待在未来,可以通过 PyTorch 和 ExecuTorch 轻松开发出机器学习模型,让 TOSA 可以无缝部署到数十亿台基于 Arm 架构的设备上。


欢迎查看我们提供的演示[14],了解使用 PyTorch 和 ExecuTorch 通过 TOSA 将图表导出到 Arm 平台的可能性,并与我们分享您的想法。


文章来源公众号:Arm社区)


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


关于九游会J9电子

上海九游会J9电子技术有限公司是国内资深的研发工具软件提供商,公司成立于2009年,面向中国广大的制造业客户提供研发、设计、管理过程中使用的各种软件开发工具,致力于帮助客户提高研发管理效率、缩短产品设计周期,提升产品可靠性。

十多年来,先后与ARM、Altium、Ansys、QT、Green Hills、Minitab、EPLAN、QA Systems、OpenText、Visu-IT、HighTec、PLS、Ashling、MSC Software、Autodesk、Source Insight、IncrediBuild、Lauterbach、Adobe、Testplant、TeamEDA等多家全球知名公司建立战略合作伙伴关系,并作为他们在中国区的主要分销合作伙伴服务了数千家中国本土客户,为客户提供从芯片级开发工具、EDA设计工具、软件编译以及测试工具、结构设计工具、仿真工具、电气设计工具、以及嵌入式GUI工具等等。九游会J9电子凭借多年的经验积累,真正的帮助客户实现了让研发更简单、更可靠、更高效的目标。


欢迎关注“九游会J9电子”公众号

了解更多研发工具软件知识