先决条件 | ETRecord - ExecuTorch Record¶
概述¶
ETRecord
旨在成为用户在导出模型以在 ExecuTorch 上运行之前预先生成的调试工件。与传统的软件开发做一个粗略类比,ETRecord
可以被视为用于 GNU 调试器 (gdb) 进行调试的、包含调试符号的二进制文件。用户预计会将此提供给 ExecuTorch 开发者工具,以便他们调试和可视化模型。
ETRecord
包含多种组件,例如
带有调试句柄的 Edge dialect 图
Delegate 调试句柄映射
ETRecord
对象本身对用户来说是不可见的,用户不应直接访问其中的任何组件。应将其提供给 检查器 API,以便将来自运行时的性能和调试数据链接回 Python 源代码。
生成 ETRecord
¶
用户应使用以下 API 生成 ETRecord
文件。用户需要提供 Edge Dialect 程序(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 dialect 程序对象中存在的图模块,以及 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() 的输出。
- 返回
无