深度学习框架PyTorch的ExecuTorch开发工具介绍¶
ExecuTorch的设计以生产力为核心目标之一,ExecuTorch开发工具通过提供全面的工具集,帮助用户对已导入到ExecuTorch的模型进行性能分析、调试和可视化。
开发者工具的所有组件均从零开始设计,在导出流程和运行时中实现了深度集成。这使我们能够提供独特的功能,例如将运行时中的算子执行链接回原始急切模型中该算子所源自的代码行。
开发者工具功能¶
ExecuTorch 开发者工具支持以下功能:
BundledProgram 是一个实用工具,用于导出与一组(代表性)输入和预期输出捆绑在一起的模型,以便在运行时用户可以验证实际输出确实与预期输出相同。
性能分析 模型,提供算子级别的性能统计细分
将算子性能统计链接回源代码和模块层级
模型加载与执行时间
委托集成 - 从委托后端呈现性能详情
将委托算子执行链接回其在边缘方言图中所代表的节点(进而链接回源代码和模块层级)
调试 - 中间输出与输出质量分析
内存分配洞察 - 可视化内存规划方式以及任意时间点所有活动张量的位置
可视化 - 即将推出
开发工具的基本组件¶
为了充分理解并利用本节中开发者工具的强大功能,将详细介绍支撑这些开发者工具的基础组件。
ETRecord¶
ETRecord(ExecuTorch 记录)是在导出过程中生成的产物,用于存储图及其他元数据。这些数据对于开发者工具至关重要,使其能够将来自运行时的性能/调试数据关联回急切模式模型的源代码。
若要粗略类比传统软件开发,ETRecord 可被视为带有调试符号的二进制文件,用于在 GNU 项目调试器(gdb)中进行调试。
更多详情请参阅 ETRecord 文档,了解如何生成和存储 ETRecord。
ETDump¶
ETDump(ExecuTorch 转储)是运行时在运行模型后生成的二进制数据块。与上文类似,若将其与传统软件开发进行粗略类比,ETDump 可被视为 ExecuTorch 的核心转储文件;但在此情况下,ETDump 中存储的是运行时在模型执行期间生成的所有性能和调试数据。
注意
如果您只关注查看原始性能数据,而无需链接回源代码及其他扩展功能,仅使用 ETDump 就足以利用开发者工具的基本功能。若要获得完整体验,建议用户同时生成 ETRecord。
有关如何从运行时生成和存储 ETDump 的更多详细信息,请参阅 ETDump 文档。
Inspector APIs¶
Inspector Python API 是开发者工具的主要用户入口。它们将源自 ETDump 和 ETRecord 的数据进行整合,通过易于使用的 API,为用户提供对运行时产生的所有性能和调试数据的访问权限,并支持回溯到急切模式(eager)模型的源代码及模块层级结构。
更多详细信息可以在 检查器 API 文档 中找到,了解如何使用检查器 API。