先決條件 | 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() 的輸出。
- 返回
無