記憶體檢視器工具

您可以使用記憶體檢視器,以視覺化方式呈現程式生命週期的記憶體用量。您可以深入瞭解記憶體用量達到最高點時的記憶體內容細節,包括對記憶體不足 (OOM) 情況進行偵錯。記憶體檢視器可讓您查看全域記憶體用量,以及計算作業是否即將耗盡記憶體。

記憶體檢視器顯示的所有資訊皆為靜態資訊,是從 XLA 編譯器取得;動態執行階段資訊則會顯示在記憶體設定檔工具中。

支援平台

TPU:支援

GPU:支援

記憶體檢視器元件

記憶體檢視器包含以下幾個重要元件:

  1. 使用者控制下拉式選單,可讓您自訂要視覺化呈現的資料:
    • 記憶體類型:支援的記憶體類型取決於加速器。對於 GPU,重點是高頻寬記憶體 (HBM);而對於 TPU,您還可以查看晶片上記憶體的用量,包括 VMEM、SMEM、CMEM、同步標記 (SFlag)、稀疏核心,以及主機記憶體。
    • 模組:這些是執行作業的 XLA 程式。頂層模組通常是良好的起點,標籤為「jit_train_step」或「jit_generate」。
  2. 文字總覽部分會提供概略資訊,例如程式所需的記憶體分配峰值、引數與暫存變數之間的分配方式等等。由於加速器支援的張量形狀受到限制,因此會產生填充所造成的額外負擔。如果這個邊距占總分配量的比例偏高,可能表示有最佳化機會。
  3. 「記憶體配置大小與程式順序」線性圖表會將記憶體用量與編譯器排定的程式點 (HLO 序列) 進行比較。
    • 請注意,x 軸「不是」時間。
    • 這張圖表特別強調程式中所選模組的記憶體使用率尖峰點。分析器和工具無法得知特定晶片/記憶體上模組的共存情形。編譯每個模組時,編譯器會在剖析資料中加上註解,指出總共配置的記憶體的「基準」起點 (由先前編譯的模組提供),並在發生進一步的配置和釋放時,從該點開始向上和向下計算。不過,執行前編譯的其他模組不會擷取任何未來的配置;請在偵錯 OOM 情況時留意這點。
  4. 頁面底部的緩衝區圖表會顯示尖峰使用程式點的記憶體用量細目 (如記憶體用量折線圖中的垂直線所示)。這裡有三張圖表,全部都顯示程式分配的整組緩衝區,但以三種不同的方式排序:

    • 依程式順序:在程式執行期間產生的順序,最舊的在左側顯示。
    • 依大小排序:對尖峰記憶體用量點影響最大的項目位於左側。
    • 根據所造成的填充額外負擔:從硬體角度來看,最「低效」的會顯示在左側。

      請注意,緩衝區的顏色沒有特定意義。

  5. 將滑鼠游標懸停在三個圖表中的任何一個緩衝區上,就會顯示兩個額外的畫面:

    • 記憶體用量折線圖上的疊加圖層,其顏色與緩衝區資訊卡相符,用來表示該緩衝區的生命週期,也就是水平長條,其左右邊緣分別代表程式順序中的分配和取消分配點。水平列的高度代表所選緩衝區相對於尖峰分配的相對大小。
    • 單獨的緩衝區詳細資訊卡 (通常位於左側),其中包含特定作業的詳細資料 (如適用)。一般資訊卡包含下列資訊:
      • 名稱:XLA 運算名稱,可在圖表檢視器或追蹤記錄檢視器中搜尋。
      • 大小:緩衝區分配大小 (含填充和不填充)。
      • 形狀:說明 N 維陣列的排名、大小及資料類型。
      • Framework op name:顯示與此分配相關聯的框架運算名稱。
      • 分配類型:將緩衝區分配分類為下列類型:參數、輸出、執行緒本機和暫時 (例如 fusion 內部的緩衝區分配)。