先決條件 | ETRecord - ExecuTorch 記錄¶
概觀¶
ETRecord
旨在成為使用者預先產生的除錯產物 (當他們匯出模型以在 ExecuTorch 上執行時)。粗略地類比傳統的軟體開發,ETRecord
可以被視為帶有除錯符號的二進位檔案,用於 GNU 除錯器 (gdb) 中的除錯。預期使用者會將其提供給 ExecuTorch 開發者工具,以便他們除錯和視覺化模型。
ETRecord
包含許多元件,例如
帶有除錯句柄的 Edge 方言圖
委派除錯句柄映射
ETRecord
物件本身旨在對使用者是不透明的,他們不應直接存取其中的任何元件。應將其提供給 Inspector API,以便將來自運行時的效能和除錯資料連結回 Python 原始碼。
產生 ETRecord
¶
使用者應使用以下 API 來產生 ETRecord
檔案。他們需要提供 Edge Dialect 程式 (由呼叫 to_edge()
傳回)、ExecuTorch 程式 (由呼叫 to_executorch()
傳回),以及他們有興趣透過我們的工具使用的可選模型。
警告
使用者應對 to_edge()
的輸出進行深拷貝 (deepcopy),並將深拷貝傳遞給 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 字典中的所有圖模組、存在於 edge dialect program 物件中的圖模組,以及存在於 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() 的輸出。
- 傳回
None
使用 ETRecord
¶
將 ETRecord
作為可選參數傳遞到 Inspector API 中,以存取此資料並進行執行後分析。