排解 GPU VM 問題

本頁說明如何解決在 Compute Engine 上執行的 VM 附加 GPU 時發生的問題。

如果您嘗試建立附加 GPU 的 VM 時發生錯誤,請參閱「排解資源可用性錯誤」和「排解建立及更新 VM 的問題」。

使用 NVIDIA DCGM 疑難排解 GPU VM 問題

NVIDIA Data Center GPU Manager (DCGM) 是一套工具,可用於管理及監控叢集環境中的 NVIDIA 資料中心 GPU。

如要使用 DCGM 排解 GPU 環境中的問題,請完成下列步驟:

  • 請確認您使用的是適用於 VM 所連結 GPU 型號的最新建議 NVIDIA 驅動程式。如要查看驅動程式版本,請參閱「建議使用的 NVIDIA 驅動程式版本」。
  • 請確認您已安裝最新版的 DCGM。如要安裝最新版本,請參閱「DCGM 安裝」一文。

診斷問題

執行dcgmi診斷指令時,診斷工具回報的問題會包含解決問題的後續步驟。下列範例顯示 dcgmi diag -r memory -j 指令的可執行輸出內容。

{
  ........
   "category":"Hardware",
   "tests":[
      {
         "name":"GPU Memory",
         "results":[
            {
               "gpu_id":"0",
               "info":"GPU 0 Allocated 23376170169
bytes (98.3%)",
               "status":"Fail",
               ""warnings":[
                  {
                     "warning":"Pending page
retirements together with a DBE were detected on GPU 0. Drain the GPU and reset it or reboot the node to resolve this issue.",
                     "error_id":83,
                     "error_category":10,
                     "error_severity":6
                  }
               ]
            }
  .........

從上述輸出片段中,您可以看到 GPU 0 有待處理的網頁停用作業,這是由無法復原的錯誤所導致。輸出內容提供專屬 error_id,以及有關偵錯問題的建議。 以這個範例輸出內容來說,建議您排空 GPU 並重新啟動 VM。在大多數情況下,按照輸出內容這個部分的指示操作,即可解決問題。

排解 A3 VM 的 GPU 效能問題

A3 機器系列可搭配 NVIDIA H200 或 H100 GPU。這個系列包括 A3 Ultra (H200)A3 Mega (H100)A3 High (H100)A3 Edge (H100) 機型。

找出故障節點

在多節點 GPU 叢集上進行大規模訓練或基準測試工作時,可能會停止回應或效能不佳。通常是因為一或多個節點效能不佳,導致整個作業變慢。本節說明如何執行 NCCL 基準測試或分析 NCCL 記錄,找出有問題的節點或主體機器。

執行 NCCL 基準測試

如要找出導致失敗的節點群組,請使用 NCCL 基準 (例如 all_reduce_perf) 系統性地測試叢集的子集。

  1. 如要識別節點集,請將節點分組為邏輯集,例如 Slurm 中的分割區
  2. 如要建立主機檔案,請為每個節點集分別建立主機檔案,並列出主機名稱和每個節點的 GPU 數量。您指定的時段數量取決於 A3 VM 類型的 GPU 數量。舉例來說,a3-highgpu-8g VM 有 8 個 GPU,因此您必須指定 slots=8
  3. 如要執行基準測試,請針對每個節點集個別執行 all_reduce_perf 基準測試。
    mpirun -x LD_LIBRARY_PATH --hostfile HOSTFILE_NAME -n TOTAL_PROCESSES \
        ./build/all_reduce_perf -b 1G -e 8G -f 2 -g NUM_GPUS_PER_NODE
              

    更改下列內容:

    • HOSTFILE_NAME:主機檔案的名稱,其中包含節點清單,以及節點集中每個節點的 GPU 數量。
    • TOTAL_PROCESSES:要在節點集的所有主機上啟動的 MPI 程序總數。
    • NUM_GPUS_PER_NODE:每個節點的 GPU 數量。所有 A3 機型的值都是 8
  4. 如要分析結果,如果工作停滯或在特定節點集上顯示的匯流排頻寬明顯較低 (busbw),則該節點集可能發生故障。
  5. 如要細分,如果節點集有問題,請將主機檔案分成兩半,然後重新測試,縮小二分搜尋範圍,直到找出有問題的個別節點為止。

分析 NCCL 記錄

如果基準測試方法無法找出節點,請分析詳細的 NCCL 記錄。

  1. 如要啟用偵錯記錄,請在您打算執行工作負載的殼層工作階段中,設定下列環境變數:
    export NCCL_DEBUG=INFO
            export NCCL_DEBUG_SUBSYS=INIT,NET,COLL
            export NCCL_DEBUG_FILE="LOG_DIRECTORY/nccl_log.%h.%p"
            

    LOG_DIRECTORY 替換為您要儲存記錄的目錄。

    設定 NCCL_DEBUG_FILE (含 %h%p) 會為每個程序建立專屬的非交錯記錄檔。

    如果您使用 mpirun 執行多節點工作負載,就必須使用 -x 旗標,將這些變數傳播至所有節點。例如:

    mpirun -x NCCL_DEBUG -x NCCL_DEBUG_SUBSYS -x NCCL_DEBUG_FILE ...
              
  2. 如要找出第一個錯誤,請使用下列指令,在所有記錄檔中找出最早的逾時或失敗事件:
    grep "NCCL WARN.*NET/FasTrak" LOG_DIRECTORY/* | sed 's/.*NET\/FasTrak\(.*\)/\1/g' \
      | sort | head -n 20
              

    LOG_DIRECTORY 替換為儲存記錄的目錄。

  3. 如要計算集體作業,落後節點完成的集體作業較少。計算可疑等級的 "opCount" 個項目:
    grep "opCount" LOG_DIRECTORY/nccl_log.HOSTNAME.PID | wc -l
              

    更改下列內容:

    • LOG_DIRECTORY:儲存記錄的目錄
    • HOSTNAME:節點的主機名稱
    • PID:NCCL 程序的程序 ID
  4. 如要在工作中止前收集更多記錄資料,請暫時增加資料傳輸逾時時間:
    export NCCL_FASTRAK_DATA_TRANSFER_TIMEOUT_MS=3600000
            

監控 GPU 熱節流

如果 A3 系列 VM 在負載下持續達到超過 87°C 的溫度,效能可能會下降。如要檢查叢集節點的 GPU 熱節流,請使用 nvidia-smidcgmi

使用 nvidia-smi

如要檢查節點上所有 GPU 的目前溫度和節流狀態,請執行下列指令:

nvidia-smi --query-gpu=timestamp,name,pci.bus_id,temperature.gpu,clocks_throttle_reasons.hw_slowdown --format=csv
    

在輸出內容中,clocks_throttle_reasons.hw_slowdown 資料欄中的 Active 值表示 GPU 因溫度過高而受到節流。

使用 dcgmi

NVIDIA Data Center GPU Manager (DCGM) 診斷套件包含熱違規檢查。如要執行第 1 級診斷,請執行下列指令:

dcgmi diag -r 1

如果「Thermal」部分顯示 WarnFail,表示測試期間發生熱能違規情形。如果熱能違規事項伴隨時脈節流,GPU 可能過熱,需要進一步調查。

建立支援紀錄

如果按照本頁面的指引操作後仍無法解決問題,請收集下列資訊並開啟客服案件

  • 專案 ID,以及叢集中所有執行個體的名稱或 ID 清單。
  • 透過疑難排解程序識別出的可疑節點清單
  • 完整、非交錯的 NCCL 記錄,並啟用偵錯設定。
  • 硬體健康狀態檢查的輸出內容 (dcgminvidia-smi)。
  • 失敗的確切基準或工作負載指令
  • 相關記錄檔,例如主機引擎和診斷記錄。如要收集這些資訊,請執行 gather-dcgm-logs.sh,這個檔案位於預設安裝位置的 /usr/local/dcgm/scripts 中。
  • NVIDIA 錯誤報告。執行 nvidia-bug-report.sh。如果是 Blackwell GPU,請按照「為 Blackwell GPU 產生 NVIDIA 錯誤報告」一文的說明操作。
  • 環境最近的任何變更詳情 (失敗前)。

查看 Xid 訊息

建立已附加 GPU 的 VM 後,您必須在 GPU VM 上安裝 NVIDIA 裝置驅動程式,應用程式才能存取 GPU。不過,有時這些驅動程式會傳回錯誤訊息。

Xid 訊息是 NVIDIA 驅動程式的錯誤報告,會列印至 Linux VM 的作業系統核心記錄或事件記錄。這些訊息會放在 /var/log/messages 檔案中。

如要進一步瞭解 Xid 訊息 (包括可能原因),請參閱 NVIDIA 說明文件

以下章節將提供指南,說明如何處理依最常見類型分組的 Xid 訊息:GPU 記憶體錯誤、GPU 系統處理器 (GSP) 錯誤,以及非法記憶體存取錯誤。

GPU 記憶體錯誤

GPU 記憶體是指 GPU 上可用的記憶體,可用於暫時儲存資料。GPU 記憶體受到錯誤修正碼 (ECC) 保護,可偵測及修正單一位元錯誤 (SBE),並偵測及回報雙位元錯誤 (DBE)。

在 NVIDIA A100 GPU 發布前,系統支援動態頁面淘汰。對於 NVIDIA A100 和後續 GPU 版本 (例如 NVIDIA H100),我們導入了列重新對應錯誤復原機制。ECC 預設為啟用。Google 強烈建議您保持啟用 ECC。

以下是常見的 GPU 記憶體錯誤和建議的解決方法。

Xid 錯誤訊息 解決方法
Xid 48: Double Bit ECC
  1. 停止工作負載。
  2. 刪除重新建立 VM。 如果錯誤仍未解決,請向 Cloud Customer Care 提交案件。
Xid 63: ECC page retirement or row remapping recording event
  1. 停止工作負載。
  2. 重設 GPU。
Xid 64: ECC page retirement or row remapper recording failure

訊息包含下列資訊:

Xid 64: All reserved rows for bank are remapped
  1. 停止工作負載。
  2. 刪除重新建立 VM。 如果錯誤仍未解決,請向 Cloud Customer Care 提交案件。

如果同時收到至少兩則下列 Xid 訊息:

  • Xid 48
  • Xid 63
  • Xid 64

訊息包含下列資訊:

Xid XX: row remap pending
  1. 停止工作負載。
  2. 重設 GPU。 重設 GPU 可讓列重對應和頁面淘汰程序完成,並修復 GPU。
Xid 92: High single-bit ECC error rate GPU 驅動程式修正可修正的錯誤後,就會傳回這則 Xid 訊息,且不應影響工作負載。這則 Xid 訊息僅供參考。您無須採取任何行動
Xid 94: Contained ECC error
  1. 停止工作負載。
  2. 重設 GPU。
Xid 95: Uncontained ECC error
  1. 停止工作負載。
  2. 重設 GPU。

GSP 錯誤

GPU 系統處理器 (GSP) 是在 GPU 上執行的微控制器,可處理部分低階硬體管理功能。

Xid 錯誤訊息 解決方法
Xid 119: GSP RPC timeout
  1. 停止工作負載。
  2. 刪除重新建立 VM。 如果錯誤仍未解決,請收集 NVIDIA 錯誤報告,並向 Cloud Customer Care 提出支援要求。
Xid 120: GSP error

違規存取記憶體錯誤

應用程式發生違規存取記憶體問題時,系統會傳回下列 Xid:

  • Xid 13: Graphics Engine Exception
  • Xid 31: GPU memory page fault

違規存取記憶體錯誤通常是因為工作負載嘗試存取已釋放或超出範圍的記憶體。這可能是因為無效指標取消參照,或是陣列超出界限等問題所致。

如要解決這個問題,請對應用程式進行偵錯。如要偵錯應用程式,可以使用 cuda-memcheckCUDA-GDB

在極少數情況下,硬體劣化可能會導致系統傳回非法記憶體存取錯誤。如要判斷問題是否出在硬體,請使用 NVIDIA Data Center GPU Manager (DCGM)。您可以執行 dcgmi diag -r 3dcgmi diag -r 4,以不同程度的測試涵蓋範圍和時間長度執行測試。如果發現問題與硬體有關,請向 Cloud Customer Care 提出案件。

其他常見的 Xid 錯誤訊息

Xid 錯誤訊息 解決方法
Xid 74: NVLINK error
  1. 停止工作負載。
  2. 重設 GPU。
Xid 79: GPU has fallen off the bus

這表示驅動程式無法與 GPU 通訊。

重新啟動 VM。
提及 0x02aXid 149,例如以下範例:
Xid (PCI:0000:c0:00): 149,NETIR_LINK_EVT Fatal XC0 i0 Link 04 (0x02a485c6 0x00000000 0x00000000 0x00000000 0x00000000 0x00000000)

這表示已知問題會影響 NVIDIA B200 GPU 的韌體

  1. 停止工作負載。
  2. 重設 GPU。

重設 GPU

某些問題可能需要重設 GPU 才能解決。如要重設 GPU,請完成下列步驟:

  • 如果是 N1、G2 和 A2 VM,請重新啟動 VM
  • 如果 G4 VM 連接的 GPU 不足一個,請刪除重新建立 VM
  • 如果是 A3 和 A4 VM,請執行 sudo nvidia-smi --gpu-reset
    • 對於大多數 Linux VM,nvidia-smi 可執行檔位於 /var/lib/nvidia/bin 目錄中。
    • 如果是 GKE 節點,nvidia-smi 可執行檔位於 /home/kubernetes/bin/nvidia 目錄中。
    • 如果您使用 GKE 節點,可以利用 gpu-reset-tool 自動重設節點上的所有 GPU。使用這項工具時,您只需指定目標節點名稱。

此外,每當您重設 VM重新啟動 VM 時,GPU 也會重設。

如果重設 GPU 後仍發生錯誤,請刪除重新建立 VM

如果刪除並重新建立後仍發生錯誤,請向 Cloud Customer Care 提交案件,將 VM 移至修復階段

後續步驟

詳閱 GPU 機型