先决条件 | ETRecord - ExecuTorch 记录¶
概述¶
ETRecord
旨在作为用户提前生成(导出模型以在 ExecuTorch 上运行时)的调试工件。为了与传统软件开发进行粗略类比,ETRecord
可以被视为使用调试符号构建的二进制文件,该文件用于在 GNU Debugger (gdb) 中进行调试。用户应将此提供给 ExecuTorch 开发者工具,以便他们调试和可视化模型。
ETRecord
包含许多组件,例如:
带有调试句柄的 Edge 语言图
Delegate 调试句柄映射
ETRecord
对象本身对用户来说是不可见的,用户不应直接访问其中的任何组件。应将其提供给 Inspector API,以便将来自运行时的数据(性能和调试数据)链接回 Python 源代码。
生成 ETRecord
¶
用户应使用以下 API 来生成 ETRecord
文件。他们需要提供 Edge 语言程序(通过调用 to_edge()
返回)、ExecuTorch 程序(通过调用 to_executorch()
返回)以及可选的、他们有兴趣通过我们的工具处理的模型。
警告
用户应深度复制 to_edge()
的输出,并将深度副本传递给 generate_etrecord
API。这是必需的,因为后续调用 to_executorch()
会进行就地修改,在此过程中会丢失调试数据。
- executorch.devtools.etrecord._etrecord.generate_etrecord(et_record, edge_dialect_program, executorch_program, export_modules=None)[源码]¶
从给定对象生成 ETRecord,将其序列化并保存到指定路径。将序列化到 ETRecord 的对象包括 export_modules 字典中的所有图模块、Edge 语言程序对象中的图模块,以及 ExecuTorch 程序对象中的图模块(这是最接近设备上实际运行的图模块表示)。除了所有图模块外,我们还序列化程序缓冲区,用户可以将其提供给 ExecuTorch 运行时以运行模型,以及用于开发者工具使用的调试句柄映射。
- 参数
et_record – 保存 ETRecord 文件的路径。
edge_dialect_program – 此模型由 to_edge() 调用返回的 EdgeProgramManager。
executorch_program – 此模型由 to_executorch() 调用返回的 ExecuTorch 程序,或此模型的 BundledProgram。
[可选] (export_modules) – OSS 用户应忽略。一个图模块字典,其中键是用户提供的名称,值是相应的导出模块。导出的图模块可以是 torch.export() 或 exir.to_edge() 的输出。
- 返回
无
使用 ETRecord
¶
将 ETRecord
作为可选参数传递给 Inspector API,以访问此数据并进行运行后分析。