ExecuTorch 中的記憶體規劃檢查¶
在 ExecuTorch 的記憶體規劃 (Memory Planning) 階段之後,記憶體分配資訊會儲存在ExportedProgram 的節點上。這裡,我們介紹一個用於檢查記憶體分配和視覺化所有活躍張量物件的工具。
用法¶
使用者在呼叫 to_executorch() 後應新增此程式碼,它將把儲存在節點上的記憶體分配資訊寫入檔案路徑 “memory_profile.json”。該檔案與 Chrome trace viewer 相容;有關解釋結果的更多資訊,請參閱下文。
from executorch.util.activation_memory_profiler import generate_memory_trace
generate_memory_trace(
executorch_program_manager=prog,
chrome_trace_filename="memory_profile.json",
enable_memory_offsets=True,
)
prog是ExecuTorchProgramManager的一個例項,由 to_executorch() 返回。將
enable_memory_offsets設定為True以顯示每個張量在記憶體空間中的位置。
Chrome 跟蹤¶
開啟一個 Chrome 瀏覽器標籤頁並導航到 chrome://tracing/。上傳生成的 .json 檔案以檢視。例如 MobileNet V2 模型

請注意,由於我們在此複用 Chrome trace 工具,因此在此上下文中的座標軸可能與您之前遇到的其他 Chrome trace 圖表具有不同的含義
水平軸雖然標記為秒 (s),但實際代表兆位元組 (MBs)。
垂直軸具有兩層層次結構。第一層,“pid”,代表記憶體空間。對於 CPU,所有內容都分配在一個“空間”中;其他後端可能具有多個。在第二層,每一行代表一個時間步。由於節點將按順序執行,每個節點代表一個時間步,因此行數與節點數相同。