ExecuTorch 开发者工具简介¶
ExecuTorch 在设计时将 生产力 作为其核心目标之一,而 ExecuTorch 开发者工具通过提供一套全面的工具,使用户能够剖析、调试和可视化已集成到 ExecuTorch 中的模型,从而实现这一目标。
开发者工具的所有组件都从头开始设计,并且与导出过程和运行时深度集成。这使我们能够提供独特的功能,例如将运行时中的算子执行链接回该算子源自的原始惰性模型中的代码行。
开发者工具功能¶
ExecuTorch 开发者工具支持以下功能:
BundledProgram 是一个实用工具,用于导出与一组样本(代表性)输入和预期输出捆绑的模型,以便在运行时用户可以验证实际输出是否与预期输出相同。
性能剖析,提供算子级别的性能统计数据细分
将算子性能统计数据链接回源代码和模块层次结构
模型加载和执行时间
委派集成 - 呈现来自委派后端(delegate backends)的性能详细信息
将委派算子执行链接回它们在边缘方言图(edge dialect graph)中表示的节点(随后链接回源代码和模块层次结构)
调试 - 中间输出和输出质量分析
数值差异检测 - 在 AOT(Ahead-Of-Time 编译)和运行时中间输出之间进行算子级别的数值差异检测,以简化数值调试和验证。
内存分配洞察 - 可视化内存是如何规划的,以及在任何给定时间点所有活动张量(live tensors)的位置
可视化 - 即将推出
开发者工具的基本组成部分¶
为了充分理解和利用本节中开发者工具的力量,将详细介绍驱动开发者工具的基本组成部分。
ETRecord¶
ETRecord (ExecuTorch Record) 是在导出过程中生成的一种构件(artifact),它存储了图和其他元数据,这些对于开发者工具能够将从运行时获取的性能/调试数据链接回惰性模型的源代码至关重要。
为了与传统软件开发进行粗略的等同,ETRecord 可以被认为是带有调试符号(debug symbols)构建的二进制文件,用于在 GNU Project Debugger (gdb) 中进行调试。
有关如何生成和存储 ETRecord 的更多详细信息,请参阅 ETRecord 文档。
ETDump¶
ETDump (ExecuTorch Dump) 是运行时在运行模型后生成的二进制大型对象(binary blob)。同样,为了与传统软件开发进行粗略的等同,ETDump 可以被认为是 ExecuTorch 的核心转储(coredump),但在 ETDump 中,我们存储了运行时在模型执行期间生成的所有性能和调试数据。
注意
如果您只关心查看原始性能数据而不链接回源代码和其他广泛的功能,ETDump 本身足以利用开发者工具的基本功能。为了获得完整的体验,建议用户也生成 ETRecord。
有关如何从运行时生成和存储 ETDump 的更多详细信息,请参阅 ETDump 文档。
Inspector APIs¶
Inspector Python API 是用户进入开发者工具的主要入口点。它们将从 ETDump 和 ETRecord 获取的数据结合起来,通过易于使用的 API,为用户提供对运行时获取的所有性能和调试数据的访问,以及链接回惰性模型源代码和模块层次结构的功能。
有关如何使用 Inspector API 的更多详细信息,请参阅 Inspector API 文档。