CoMMA aktivieren, deaktivieren und konfigurieren

In diesem Leitfaden wird beschrieben, wie Sie die CoMMA-Bibliothek (Collective Communication Analyzer) aktivieren, deaktivieren und verwalten. CoMMA erfasst NCCL-Telemetriedaten fürGoogle Cloud -Dienste. Weitere Informationen zu CoMMA finden Sie unter Collective Communication Analyzer (CoMMA).

CoMMA aktivieren

CoMMA ist vorinstalliert und aktiviert, wenn Sie Images verwenden, die das NCCL-gIB-Plug-in enthalten. Eine Liste dieser Bilder finden Sie unter Bilder, für die CoMMA aktiviert ist.

Installationsoptionen

Wenn Sie keines dieser Bilder verwenden und CoMMA installieren möchten, verwenden Sie eine der folgenden Methoden.

Installationsmethode Unterstützte Maschinentypen
NCCL Google Infrastructure Bundle (gIB) image (Recommended for newer machine types) A4X Max, A4X, A4 High und A3 Ultra
CoMMA-Installationsimage A4X, A4 High und A3 Ultra
Aus Quelle erstellen (erforderlich für ältere Maschinentypen) A3 Mega, A3 High, A3 Edge, A2 Ultra, A2 Standard und N1 mit angehängten GPUs

CoMMA installieren

Wählen Sie eine der folgenden Optionen aus, um CoMMA zu installieren:

NCCL gIB-Bild

Führen Sie den folgenden Befehl aus, um CoMMA mit dem NCCL-gIB-Image zu installieren.

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-Installations-Image

Sie können CoMMA-Binärdateien in einem eigenständigen Docker-Image erhalten. Sie können das CoMMA-Docker-Image us-docker.pkg.dev/gce-ai-infra/gpudirect-gib/comma-installer als initContainers verwenden, um CoMMA-Binärdateien in Ihrem Arbeitslast-Container zu installieren. Im Container werden die Binärdateien im Verzeichnis /artifacts gespeichert.

So verwenden Sie das CoMMA-Installationsimage:

  1. Installieren Sie NCCL 2.23 oder höher.

  2. Installieren Sie CoMMA in Ihrer Arbeitslast, indem Sie Ihrer initContainers das folgende Snippet hinzufügen:

    - 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/
    

Im YAML-Konfigurations-Snippet wird ein Container für die Installation von CoMMA angegeben. Das Snippet gibt das Installer-Container-Image, die zugehörige Pull-Richtlinie und eine Volume-Bereitstellung für das Plug‑in an. Dasselbe Volume sollte in Ihrem Arbeitslastcontainer mit <mount-path>/lib64, das zu LD_LIBRARY_PATH hinzugefügt wird, bereitgestellt werden. Im Abschnitt command wird ein Shell-Skript ausgeführt, um alle vorhandenen Profiler-Bibliotheken zu entfernen. Anschließend wird die neue Profiler-Bibliothek in das dafür vorgesehene Plug-in-Verzeichnis kopiert. Das Skript sorgt dafür, dass die richtige Version des Profiler-Plug-ins installiert und einsatzbereit ist.

Aus Quelle erstellen

Wenn Sie die CoMMA-Bibliothek aus dem Quellcode erstellen möchten, installieren Sie die folgende Software:

  • Rust-Programmiersprache, die für den Compiler und Cargo erforderlich ist. Dies kann mit rustup oder Systempaketen installiert werden.
  • Libclang-dev, für die bindgen erforderlich ist.
  • CMake-Version 3.10 oder höher

So erstellen Sie die Anwendung aus dem Quellcode:

  1. Klonen Sie das Repository und seine Submodule.

    git clone --recurse-submodules https://github.com/google/CoMMA
  2. Kompilieren Sie die Binärdateien mit Cargo.

    cargo build --release

    Cargo speichert die Binärdatei in target/release/libnccl_profiler.so.

  3. Aktivieren Sie NCCL, um die CoMMA-Bibliotheken mit einer der folgenden Methoden zu laden:

    • Kopieren Sie die kompilierte libnccl_profiler.so in ein Verzeichnis in Ihrem LD_LIBRARY_PATH. Benennen Sie es in libnccl-profiler.so um (verwenden Sie einen Bindestrich anstelle eines Unterstrichs).
    • Alternativ können Sie die Umgebungsvariable NCCL_PROFILER_PLUGIN festlegen, um den Pfad der Datei .so anzugeben.

Installation oder Aktivierung prüfen

So prüfen Sie, ob NCCL die CoMMA-Bibliotheken lädt:

  1. Aktivieren Sie das NCCL-Debug-Logging. Aktivieren Sie das Logging, indem Sie die Umgebungsvariable NCCL_DEBUG=INFO festlegen. Sie können auch eine detailliertere Debugging-Stufe angeben. Weitere Debugging-Optionen finden Sie in der NVIDIA-Dokumentation im Abschnitt NCCL_DEBUG.
  2. Geben Sie das INIT-Subsystem für das Debugging an. Geben Sie INIT an, indem Sie die Umgebungsvariable NCCL_DEBUG_SUBSYS=INIT festlegen. Sie können auch andere Subsysteme angeben. Weitere Optionen für das Subsystem finden Sie im Abschnitt NCCL_DEBUG_SUBSYS.
  3. Suchen Sie im NCCL-Log nach einer Zeile, die der folgenden ähnelt: NCCL INFO PROFILER/Plugin: Plugin name set by env to PATH_TO_PROFILER_PLUGIN

CoMMA deaktivieren

Wenn CoMMA bereits installiert ist, können Sie verhindern, dass NCCL-Telemetriedaten erfasst werden, indem Sie die CoMMA-Umgebungsvariable NCCL_TELEMETRY_MODE=0 festlegen, bevor Sie Ihre Arbeitslasten ausführen. Informationen zum Festlegen von CoMMA-Umgebungsvariablen finden Sie unter Umgebungsvariablen festlegen.

So aktivieren Sie CoMMA wieder, nachdem Sie es deaktiviert haben:

  1. Legen Sie die Umgebungsvariable NCCL_TELEMETRY_MODE auf einen Wert ungleich null fest. Wenn Sie beispielsweise den Standardmodus verwenden möchten, geben Sie NCCL_TELEMETRY_MODE=3 an.

    Eine vollständige Liste der Optionen finden Sie in der Tabelle Konfigurationsoptionen unter NCCL_TELEMETRY_MODE.

  2. Prüfen, ob CoMMA funktioniert

CoMMA NCCL-Telemetrie konfigurieren und ansehen

Wenn CoMMA in Ihrer Umgebung aktiviert ist, können Sie den Typ der Telemetriedaten konfigurieren, die erhoben werden, indem Sie den Detaillierungsgrad der Daten festlegen. In diesem Abschnitt wird beschrieben, wie Sie den Detaillierungsgrad der Daten festlegen und welche Optionen verfügbar sind.

Sie können auch die von CoMMA erhobenen Daten prüfen, um zu sehen, ob sie den Sicherheitsrichtlinien Ihrer Organisation entsprechen, oder sie mit Ihren eigenen NCCL-Telemetrieanalysetools analysieren. Dazu müssen Sie die Rohdaten in eine lokale Datei exportieren.

Detaillierungsgrad der Daten festlegen

CoMMA erfasst NCCL-Telemetriedaten mit unterschiedlichem Detaillierungsgrad. Konfigurieren Sie die Granularitätsebene mithilfe von Umgebungsvariablen. Informationen zum Festlegen von CoMMA-Umgebungsvariablen finden Sie unter Umgebungsvariablen festlegen.

  • Standardverhalten: Standardmäßig erfasst CoMMA NCCL-Vorgänge, einschließlich kollektiver und Peer-to-Peer-Vorgänge, die Metadaten dieser Vorgänge und die Abschlusszeiten. Dabei werden die folgenden Umgebungsvariablen verwendet:
    • NCCL_PROFILER_TRACK_NCCLOP=true
    • NCCL_PROFILER_AGGREGATE_STEPS=true
    • NCCL_PROFILER_TRACK_INTERPROCESS_PROXYOP=true
  • Wenn Sie eine detailliertere Datenerfassung aktivieren möchten, legen Sie die folgenden Umgebungsvariablen fest:
    • Sie können die Abschlusszeit für Proxyvorgänge erfassen, indem Sie NCCL_PROFILER_TRACK_PROXYOP=true festlegen.
    • Sie können die für jeden Netzwerk-E/A-Vorgang aufgewendete Zeit erfassen, indem Sie NCCL_PROFILER_TRACK_STEPS=true festlegen. Diese Einstellung bietet die höchste Detaillierung.

Eine vollständige Liste der Umgebungsvariablen finden Sie unter Konfigurationsoptionen.

Daten in eine lokale Datei exportieren

Exportieren Sie die Rohdaten in eine lokale Datei, um sie anzusehen. So exportieren Sie die Daten in eine lokale Datei und sehen sich die Ausgabe an:

  1. Legen Sie NCCL_TELEMETRY_MODE auf 1 oder 4 fest. Weitere Informationen zur Umgebungsvariable NCCL_TELEMETRY_MODE finden Sie unter Konfigurationsoptionen.
  2. Legen Sie einen der folgenden Exportpfade fest:

    • Legen Sie NCCL_PROFILER_LATENCY_FILE=PATH fest, um detaillierte Ereignistraces in eine lokale Datei zu exportieren. Ersetzen Sie PATH durch einen Pfad wie /tmp/latency-%p.txt.
    • Legen Sie NCCL_PROFILER_SUMMARY_FILE=PATH fest, um aggregierte zusammenfassende Statistiken zu exportieren. Ersetzen Sie PATH durch einen Pfad wie /tmp/summary-%p.txt.

      Das System ersetzt %p durch die Prozess-ID.

  3. Sehen Sie sich die Ausgabe an. Die Rohausgabe ist eine JSON-Datei.

Konfigurationsoptionen

In den folgenden Abschnitten werden alle Umgebungsvariablen zusammengefasst, die Sie für CoMMA konfigurieren können. Außerdem wird erklärt, wie Sie eine beliebige Umgebungsvariable festlegen.

CoMMA-Umgebungsvariablen festlegen

Wenn Sie eine CoMMA-Umgebungsvariable auf einen anderen als den Standardwert festlegen möchten, legen Sie Umgebungsvariablen fest. Sie können Umgebungsvariablen in der Befehlszeile für die Compute-Instanz festlegen oder sie einem Startskript hinzufügen. Wenn Sie die Umgebungsvariablen in der Befehlszeile festlegen, bleibt der Wert nur für die jeweilige Sitzung erhalten. Damit die Umgebungsvariablen dauerhaft gelten, fügen Sie sie in die Datei ~/.bashrc, ~/.profile oder in die Startdatei ein, die von Ihrem Betriebssystem verwendet wird. Weitere Informationen finden Sie in der Dokumentation Ihres Betriebssystems.

Sie müssen CoMMA-Umgebungsvariablen festlegen, bevor Ihre Arbeitslast gestartet wird, da die Arbeitslast die Variablen während der NCCL-Initialisierung liest. Umgebungsvariablen können folgendermaßen festgelegt werden:

export ENVIRONMENT_VARIABLE=VALUE

Ersetzen Sie Folgendes:

  • ENVIRONMENT_VARIABLE: Die Umgebungsvariable, die Sie festlegen möchten, z. B. NCCL_TELEMETRY_MODE.
  • VALUE: Der Wert für die Umgebungsvariable, z. B. 0.

CoMMA-Umgebungsvariablen

In diesem Abschnitt werden die Umgebungsvariablen aufgeführt, die Sie für CoMMA festlegen können, sowie ihre Standardwerte.

Name Beschreibung Standard
NCCL_PROFILER_AGGREGATE_STEPS Aktiviert (true) oder deaktiviert (false) das Aggregieren von Netzwerk-Chunk-Vorgängen. true
NCCL_PROFILER_GPUVIZ_LIB Gibt den Pfad zu libGPUViz.so an, einer Bibliothek, die NCCL-Telemetrie zu Google Cloud -Diensten hochlädt. Diese Bibliothek umschließt die API für die Agent-Kommunikation. Die Agent Communication API ist die Schnittstelle, die von Agents wie Prozessen, die in Ihrem Gastbetriebssystem ausgeführt werden, verwendet wird, um sichere und zuverlässige Verbindungen zu Google Cloud Diensten herzustellen.

Wenn Sie ein NCCL-gIB-Image als Installationsprogramm verwenden oder eines der Images verwenden, in denen das NCCL-gIB-Plug-in enthalten ist, müssen Sie diese Umgebungsvariable nicht festlegen.

NCCL_PROFILER_LATENCY_FILE Gibt die Pfadvorlage für die Datei mit dem Latenz-Trace an. Beispiel: /tmp/latency-%p.txt. Das System ersetzt %p im Namen durch die Prozess-ID (pid).

Wenn Sie den dateibasierten Export deaktivieren möchten, heben Sie die Festlegung dieser Variablen auf.
NCCL_PROFILER_PLUGIN Gibt den Pfad zum Binärprogramm des Profiler-Plug-ins an.

Wenn Sie diese Einstellung nicht angeben, sucht NCCL nach libnccl-profiler.so im LD_LIBRARY_PATH.
NCCL_PROFILER_SUMMARY_FILE Gibt den Pfad für die zusammengefasste Übersichtsdatei an. Beispiel: /tmp/summary-%p.txt. Das System ersetzt %p im Namen durch die Prozess-ID (pid).

Wenn Sie den dateibasierten Export deaktivieren möchten, heben Sie die Festlegung dieser Variablen auf.
NCCL_PROFILER_SUMMARY_INTERVAL Gibt das Intervall für die Zusammenfassungsberichterstellung an. Beispiel: 10s, 1m. Unterstützt d, h, m, s, ms, us, ns 1m
NCCL_PROFILER_TRACK_INTERPROCESS_PROXYOP Aktiviert (true) oder deaktiviert (false) die Überwachung von NCCL-Proxyvorgängen zwischen Prozessen. true
NCCL_PROFILER_TRACK_NCCLOP Aktiviert (true) oder deaktiviert (false) das Tracking und die Berichterstellung für NCCL-Vorgänge, einschließlich kollektiver und Point-to-Point-Kommunikation. true
NCCL_PROFILER_TRACK_PROXYOP Aktiviert (true) oder deaktiviert (false) das Tracking und die Berichterstellung von Proxyvorgängen. false
NCCL_PROFILER_TRACK_STEPS Aktiviert (true) oder deaktiviert (false) das Tracking und die Berichterstellung von Netzwerk-Chunk-Vorgängen. false
NCCL_TELEMETRY_MODE Steuert den Exportspeicherort der NCCL-Telemetriedaten. Folgende Optionen sind verfügbar:

Wert Beschreibung
0 Deaktiviert die NCCL-Telemetrie.
1 Exportiert NCCL-Telemetriedaten in eine lokale Datei. Bei dieser Methode sind NCCL-Telemetriedaten für Google nicht verfügbar.
3 Exportiert NCCL-Telemetriedaten in Google-Dienste.
4 Exportiert NCCL-Telemetrie sowohl in eine lokale Datei als auch in Google-Dienste.
3

Nächste Schritte