先决条件 | ETRecord - ExecuTorch 记录¶
概述¶
ETRecord
旨在成为用户提前(当他们导出其模型以在 ExecuTorch 上运行时)生成的调试工件。为了与传统的软件开发进行粗略的类比,ETRecord
可以被认为是在 GNU 调试器 (gdb) 中用于调试的带有调试符号的二进制文件。预计用户将将其提供给 ExecuTorch 开发者工具,以便他们调试和可视化其模型。
ETRecord
包含许多组件,例如
具有调试句柄的边缘方言图
委托调试句柄映射
ETRecord
对象本身旨在对用户来说是不可见的,他们不应该直接访问其中的任何组件。它应该提供给 检查器 API 以将来自运行时的性能和调试数据链接回 Python 源代码。
生成 ETRecord
¶
用户应该使用以下 API 来生成 ETRecord
文件。他们需要提供边缘方言程序(由调用 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)[source]¶
从给定对象生成 ETRecord,将其序列化并保存到给定路径。将被序列化到 ETRecord 中的对象是 export_modules 字典中存在的所有图模块,边缘方言程序对象中存在的图模块,以及 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() 的输出。
- 返回值
无