啟用、停用及設定 CoMMA

本指南說明如何啟用、停用及管理集體通訊分析器 (CoMMA) 程式庫。CoMMA 會收集Google Cloud 服務的 NCCL 遙測資料。如要進一步瞭解 CoMMA,請參閱「Collective Communication Analyzer (CoMMA)」。

啟用 CoMMA

如果您使用的映像檔包含 NCCL gIB 外掛程式,系統會預先安裝並啟用 CoMMA。如需這類圖片的清單,請參閱「已啟用 CoMMA 的圖片」。

安裝選項

如果您未使用上述任一映像檔,但想安裝 CoMMA,請採用下列其中一種方法。

安裝方法 支援的機型
NCCL Google 基礎架構套件 (gIB) 映像檔 (建議用於較新的機器類型) A4X Max、A4X、A4 High 和 A3 Ultra
CoMMA 安裝程式映像檔 A4X、A4 High 和 A3 Ultra
從來源建構 (舊版機器類型必須使用) A3 Mega、A3 High、A3 Edge、A2 Ultra、A2 Standard,以及連接 GPU 的 N1

安裝 CoMMA

如要安裝 CoMMA,請選取下列任一選項:

NCCL gIB 圖片

如要使用 NCCL gIB 映像檔安裝 CoMMA,請執行下列指令。

docker run --rm --name nccl-gib-installer
 --volume /usr/local/gib:/var/lib/gib \
 us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/nccl-plugin-gib install \
 --install-nccl

CoMMA 安裝程式圖片

您可以在獨立 Docker 映像檔中取得 CoMMA 二進位檔。您可以使用 CoMMA Docker 映像檔 us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/comma-installer,將 CoMMA 二進位檔安裝到工作負載容器中。initContainers容器會將二進位檔儲存在 /artifacts 目錄中。

如要使用 CoMMA 安裝程式映像檔,請完成下列步驟:

  1. 安裝 NCCL 2.23 以上版本

  2. 將下列程式碼片段新增至 initContainers,即可將 CoMMA 安裝至工作負載:

    - name: profiler-plugin-installer
      image: us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/comma-installer:latest
      imagePullPolicy: Always
      volumeMounts:
      - name: nccl-plugin-volume
        mountPath: /usr/local/nccl-plugin
      command:
        - /bin/sh
        - -c
        - |
          set -ex
          rm -rf /usr/local/nccl-plugin/lib64/libnccl-profiler.so
          cp /artifacts/libnccl_profiler.so /usr/local/nccl-plugin/lib64/libnccl-profiler.so
    
          # GPUViz is a dependency of telemetry insights such as straggler detection
          rm -rf /usr/local/nccl-plugin/lib64/libGPUViz.so
          cp /artifacts/libGPUViz.so /usr/local/nccl-plugin/lib64/
    

YAML 設定程式碼片段會指定用於安裝 CoMMA 的容器。 程式碼片段會指定安裝程式容器映像檔、提取政策,以及外掛程式的磁碟區掛接。相同的磁碟區掛接點應掛接到工作負載容器,並在 LD_LIBRARY_PATH 中加入 <mount-path>/lib64command 區段會執行 Shell 指令碼,移除所有現有的剖析器程式庫。接著,它會將新的剖析器程式庫複製到指定的外掛程式目錄。這個指令碼可確保安裝正確版本的分析器外掛程式,並準備好供您使用。

從來源建立資料庫

如要從來源建構 CoMMA 程式庫,請安裝下列軟體:

  • Rust 程式設計語言,編譯器和 Cargo 都需要這個語言。這可以透過 rustup 或系統套件安裝
  • Libclang-dev,這需要 bindgen
  • CMake 3.10 以上版本

如要從來源建構,請完成下列步驟:

  1. 複製存放區及其子模組。

    git clone --recurse-submodules https://github.com/google/CoMMA
  2. 使用 Cargo 編譯二進位檔。

    cargo build --release

    Cargo 會將二進位檔儲存在 target/release/libnccl_profiler.so 中。

  3. 使用下列其中一種方法,啟用 NCCL 來載入 CoMMA 程式庫:

    • 將編譯後的 libnccl_profiler.so 複製到 LD_LIBRARY_PATH 中的目錄。重新命名為 libnccl-profiler.so (請使用連字號,而非底線)。
    • 或者,您也可以設定 NCCL_PROFILER_PLUGIN 環境變數,指定 .so 檔案的路徑。

確認安裝或啟用

如要確認 NCCL 是否載入 CoMMA 程式庫,請查看 NCCL 記錄:

  1. 啟用 NCCL 偵錯記錄功能。設定 NCCL_DEBUG=INFO 環境變數,啟用記錄功能。您也可以指定更詳細的偵錯層級。 如需更多偵錯選項,請參閱 NVIDIA 說明文件中的 NCCL_DEBUG 部分。
  2. 指定要偵錯的 INIT 子系統。設定 NCCL_DEBUG_SUBSYS=INIT 環境變數,指定 INIT。您也可以指定其他子系統。如需更多子系統選項,請參閱 NCCL_DEBUG_SUBSYS 一節。
  3. 在 NCCL 記錄中找出類似下列內容的行: NCCL INFO PROFILER/Plugin: Plugin name set by env to PATH_TO_PROFILER_PLUGIN

停用 CoMMA

如果已安裝 CoMMA,請在執行工作負載前設定 NCCL_TELEMETRY_MODE=0 CoMMA 環境變數,防止 CoMMA 收集 NCCL 遙測資料。如要設定 CoMMA 環境變數,請參閱「設定環境變數」。

如要重新啟用 CoMMA,請按照下列步驟操作:

  1. NCCL_TELEMETRY_MODE 環境變數設為非零值;舉例來說,如要使用預設模式,請指定 NCCL_TELEMETRY_MODE=3

    如要查看完整選項清單,請參閱「設定選項」表格中的 NCCL_TELEMETRY_MODE

  2. 確認 CoMMA 正常運作

設定及查看 CoMMA NCCL 遙測資料

如果環境中已啟用 CoMMA,您可以設定資料精細程度,藉此設定 CoMMA 收集的遙測資料類型。本節說明如何設定資料精細度和可用選項。

您也可以查看 CoMMA 收集的資料,確認資料是否符合貴機構的安全性政策,或使用自己的 NCCL 遙測分析工具分析資料。如要這麼做,請將原始資料匯出至本機檔案。

設定資料精細程度

CoMMA 會在不同精細程度層級收集 NCCL 遙測資料。使用環境變數設定精細度層級。 如要設定 CoMMA 環境變數,請參閱「設定環境變數」。

  • 預設行為:根據預設,CoMMA 會追蹤 NCCL 作業,包括集合和對等互連作業、這些作業的中繼資料,以及完成時間。這項工具會使用下列環境變數:
    • NCCL_PROFILER_TRACK_NCCLOP=true
    • NCCL_PROFILER_AGGREGATE_STEPS=true
    • NCCL_PROFILER_TRACK_INTERPROCESS_PROXYOP=true
  • 如要啟用更精細的資料收集層級,請設定下列環境變數:
    • 設定 NCCL_PROFILER_TRACK_PROXYOP=true,追蹤 Proxy 作業的完成時間。
    • 設定 NCCL_PROFILER_TRACK_STEPS=true,追蹤每項網路 I/O 作業所花費的時間。這項設定可提供最精細的資料。

如要查看完整的環境變數清單,請參閱「設定選項」。

將資料匯出至本機檔案

將原始資料匯出至本機檔案,即可查看。如要將資料匯出至本機檔案並查看輸出內容,請按照下列步驟操作:

  1. NCCL_TELEMETRY_MODE 設為 14。如要瞭解 NCCL_TELEMETRY_MODE 環境變數,請參閱「設定選項」。
  2. 設定下列其中一個匯出路徑:

    • NCCL_PROFILER_LATENCY_FILE=PATH 設為 export,即可將詳細的事件追蹤記錄匯出至本機檔案。將 PATH 替換為路徑,例如 /tmp/latency-%p.txt
    • 設定 NCCL_PROFILER_SUMMARY_FILE=PATH 匯出匯總摘要統計資料。將 PATH 替換為路徑,例如 /tmp/summary-%p.txt

      系統會將 %p 替換為程序 ID。

  3. 查看輸出內容。原始輸出內容為 JSON 檔案。

設定選項

以下各節會彙整您可為 CoMMA 設定的所有環境變數。並說明如何設定任何環境變數。

設定 CoMMA 環境變數

如要將 CoMMA 環境變數設為非預設值,請設定環境變數。您可以在指令列中為運算執行個體設定環境變數,也可以將環境變數新增至啟動指令碼。如果您在指令列設定環境變數,該值只會在每個工作階段中保留。如要將環境變數設為無法變更,請將變數放入 ~/.bashrc 檔案、~/.profile 或作業系統使用的任何啟動檔案。詳情請參閱作業系統的說明文件。

您必須在工作負載啟動前設定 CoMMA 環境變數,因為工作負載會在 NCCL 初始化期間讀取這些變數。您可以按照下列方式設定環境變數:

export ENVIRONMENT_VARIABLE=VALUE

更改下列內容:

  • ENVIRONMENT_VARIABLE:要設定的環境變數,例如 NCCL_TELEMETRY_MODE
  • VALUE:環境變數的值,例如 0

CoMMA 環境變數

本節列出可為 CoMMA 設定的環境變數及其預設值。

名稱 說明 預設
NCCL_PROFILER_AGGREGATE_STEPS 啟用 (true) 或停用 (false) 匯總網路區塊作業。 true
NCCL_PROFILER_GPUVIZ_LIB 指定 libGPUViz.so 的路徑,這個程式庫會將 NCCL 遙測資料上傳至 Google Cloud 服務。這個程式庫會包裝 Agent Communication API。代理程式通訊 API 是代理程式 (例如在客體作業系統中執行的程序) 用來與 Google Cloud 服務建立安全可靠連線的介面。

如果您使用 NCCL gIB 映像檔做為安裝程式,或使用任何綁定 NCCL gIB 外掛程式的映像檔,就不需要設定這個環境變數。

NCCL_PROFILER_LATENCY_FILE 指定延遲追蹤記錄檔的路徑範本。例如:/tmp/latency-%p.txt。系統會將名稱中的 %p 替換為程序 ID (pid)。

如要停用以檔案為基礎的匯出功能,請取消設定這個變數。
NCCL_PROFILER_PLUGIN 指定剖析器外掛程式二進位檔的路徑。

如果未指定這項設定,NCCL 會在 LD_LIBRARY_PATH 中尋找 libnccl-profiler.so
NCCL_PROFILER_SUMMARY_FILE 指定匯總摘要檔案的路徑。例如:/tmp/summary-%p.txt。系統會將名稱中的 %p 替換為程序 ID (pid)。

如要停用以檔案為準的匯出功能,請取消設定這個變數。
NCCL_PROFILER_SUMMARY_INTERVAL 指定摘要報表的間隔。例如:10s1m。支援 dhmsmsusns 1m
NCCL_PROFILER_TRACK_INTERPROCESS_PROXYOP 啟用 (true) 或停用 (false) 監控程序間 NCCL 代理程式作業。 true
NCCL_PROFILER_TRACK_NCCLOP 啟用 (true) 或停用 (false) NCCL 作業的追蹤和報表功能,包括集體和點對點通訊。 true
NCCL_PROFILER_TRACK_PROXYOP 啟用 (true) 或停用 (false) 追蹤及回報 Proxy 作業。 false
NCCL_PROFILER_TRACK_STEPS 啟用 (true) 或停用 (false) 追蹤及回報網路區塊作業。 false
NCCL_TELEMETRY_MODE 控制 NCCL 遙測資料的匯出位置。 可用的選項包括:

說明
0 停用 NCCL 遙測資料收集功能。
1 將 NCCL 遙測資料匯出至本機檔案。使用這個方法時,Google 無法取得 NCCL 遙測資料。
3 將 NCCL 遙測資料匯出至 Google 服務。
4 將 NCCL 遙測資料匯出至本機檔案和 Google 服務。
3

後續步驟