在 ExecuTorch 中進行記憶體規劃檢查¶
在 ExecuTorch 的記憶體規劃步驟之後,記憶體分配資訊會儲存在 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 Trace¶
開啟一個 Chrome 瀏覽器分頁,並導覽至 chrome://tracing/。上傳產生的 .json
檔案以檢視。範例:MobileNet V2 模型
請注意,由於我們正在重新利用 Chrome trace 工具,因此與您之前可能遇到的其他 Chrome trace 圖表相比,此處的軸可能具有不同的含義。
水平軸,儘管標記為秒 (s),但實際上代表兆位元組 (MBs)。
垂直軸具有 2 層的層級結構。第一層 "pid" 代表記憶體空間。對於 CPU,所有內容都分配在一個「空間」上;其他後端可能有多個。在第二層中,每一列代表一個時間步。由於節點將依序執行,因此每個節點代表一個時間步,因此您將擁有與列數一樣多的節點。