CoMMA aktivieren, deaktivieren und konfigurieren

In diesem Leitfaden wird beschrieben, wie Sie die Bibliothek Collective Communication Analyzer (CoMMA) aktivieren, deaktivieren und verwalten. CoMMA erfasst NCCL-Telemetriedaten für Google 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 Images finden Sie unter Images, für die CoMMA aktiviert ist.

Installationsoptionen

Wenn Sie keines dieser Images verwenden und CoMMA installieren möchten, haben Sie folgende Möglichkeiten.

Installationsmethode Unterstützte Maschinentypen
NCCL/gIB-Image (empfohlen für neuere Maschinentypen) 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-Image

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

Sie können CoMMA-Binärdateien in einem eigenständigen Docker-Image abrufen. 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 Arbeitslastcontainer zu installieren. Der Container speichert die Binärdateien im Verzeichnis /artifacts.

So verwenden Sie das CoMMA-Installationsimage:

  1. Installieren Sie NCCL 2.23 oder höher.

  2. Installieren Sie CoMMA in Ihrer Arbeitslast, indem Sie das folgende Snippet zu Ihren initContainers 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/
    

Das YAML-Konfigurationssnippet gibt einen Container für die Installation von CoMMA an. Das Snippet gibt das Installationscontainer-Image, die Pull-Richtlinie und eine Volume-Bereitstellung für das Plug‑in an. Dieselbe Volume-Bereitstellung sollte in Ihrem Arbeitslastcontainer bereitgestellt werden, wobei LD_LIBRARY_PATH um <mount-path>/lib64 ergänzt wird. 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 angegebene 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 der Quelle erstellen möchten, installieren Sie die folgende Software:

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

So erstellen Sie aus der Quelle:

  1. Klonen Sie das Repository und seine Untermodule.

    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 unter target/release/libnccl_profiler.so.

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

    • Kopieren Sie die kompilierte Datei libnccl_profiler.so in ein Verzeichnis in Ihrem LD_LIBRARY_PATH. Benennen Sie sie 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

Prüfen Sie in den NCCL-Logs, ob NCCL die CoMMA-Bibliotheken lädt:

  1. Aktivieren Sie das NCCL-Debug-Logging. Aktivieren Sie das Logging, indem Sie die NCCL_DEBUG=INFO Umgebungsvariable festlegen. Sie können auch eine detailliertere Debug-Ebene angeben. Weitere Debug-Optionen finden Sie im NCCL_DEBUG Abschnitt in der NVIDIA-Dokumentation.
  2. Geben Sie das Subsystem INIT für das Debugging an. Geben Sie INIT an, indem Sie die NCCL_DEBUG_SUBSYS=INIT Umgebungsvariable festlegen. Sie können auch andere Subsysteme angeben. Weitere Subsystemoptionen finden Sie im NCCL_DEBUG_SUBSYS Abschnitt.
  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. Legen Sie dazu vor dem Ausführen Ihrer Arbeitslasten die CoMMA-Umgebungsvariable NCCL_TELEMETRY_MODE=0 fest. Informationen zum Festlegen von CoMMA-Umgebungsvariablen finden Sie unter Umgebungsvariablen festlegen.

So aktivieren Sie CoMMA nach dem Deaktivieren wieder:

  1. Legen Sie für die Umgebungsvariable NCCL_TELEMETRY_MODE 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 unter NCCL_TELEMETRY_MODE in der Konfigurationsoptionen Tabelle.

  2. Prüfen Sie, ob CoMMA funktioniert.

CoMMA-NCCL-Telemetriedaten konfigurieren und ansehen

Wenn CoMMA in Ihrer Umgebung aktiviert ist, können Sie den Typ der Telemetriedaten konfigurieren, die erfasst werden. Legen Sie dazu den Detaillierungsgrad der Daten fest. 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 erfassten Daten prüfen, um zu bestätigen, dass sie den Sicherheitsrichtlinien Ihres Unternehmens entsprechen, oder sie mit Ihren eigenen Tools zur Analyse von NCCL-Telemetriedaten analysieren. Exportieren Sie dazu die Rohdaten in eine lokale Datei.

Detaillierungsgrad der Daten festlegen

CoMMA erfasst NCCL-Telemetriedaten auf verschiedenen Detaillierungsebenen. Konfigurieren Sie die Detaillierungsebene mit 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 detailliertere Ebenen der Datenerfassung aktivieren möchten, legen Sie die folgenden Umgebungsvariablen fest:
    • Legen Sie NCCL_PROFILER_TRACK_PROXYOP=true fest, um die Abschlusszeit für Proxyvorgänge zu erfassen.
    • Legen Sie NCCL_PROFILER_TRACK_STEPS=true fest, um die Zeit zu erfassen, die für jeden Netzwerk-E/A-Vorgang aufgewendet wird. Diese Einstellung bietet die höchste Detaillierungsebene.

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 für NCCL_TELEMETRY_MODE entweder 1 oder 4 fest. Informationen zur Umgebungsvariablen 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 Ereignis-Traces 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 Zusammenfassungsstatistiken 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 Umgebungsvariable festlegen.

CoMMA-Umgebungsvariablen festlegen

Wenn Sie für eine CoMMA-Umgebungsvariable einen Wert festlegen möchten, der nicht dem Standardwert entspricht, 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 pro Sitzung erhalten. Wenn die Umgebungsvariablen dauerhaft gelten sollen, 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. Sie können Umgebungsvariablen so festlegen:

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) die Aggregation von Netzwerk-Chunk-Vorgängen. true
NCCL_PROFILER_GPUVIZ_LIB Gibt den Pfad zu libGPUViz.so an, einer Bibliothek, die NCCL-Telemetriedaten in Google Cloud Dienste hochlädt. Diese Bibliothek umschließt die API für die Agentenkommunikation. Die API für die Agentenkommunikation ist die Schnittstelle, die von Agenten wie Prozessen die in Ihrem Gastbetriebssystem ausgeführt werden, verwendet wird, um sichere und zuverlässige Verbindungen mit Google Cloud Diensten herzustellen.

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

NCCL_PROFILER_LATENCY_FILE Gibt die Pfadvorlage für die Datei mit den Latenz-Traces 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 zur Binärdatei des Profiler-Plug‑ins an.

Wenn Sie diese Einstellung nicht angeben, sucht NCCL in libnccl-profiler.so nach LD_LIBRARY_PATH.
NCCL_PROFILER_SUMMARY_FILE Gibt den Pfad für die aggregierte Zusammenfassungsdatei 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 Zusammenfassungsberichte 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 Punkt-zu-Punkt-Kommunikation. true
NCCL_PROFILER_TRACK_PROXYOP Aktiviert (true) oder deaktiviert (false) das Tracking und die Berichterstellung für Proxyvorgänge. false
NCCL_PROFILER_TRACK_STEPS Aktiviert (true) oder deaktiviert (false) das Tracking und die Berichterstellung für Netzwerk-Chunk-Vorgänge. false
NCCL_PROFILER_HEARTBEAT Aktiviert (true) oder deaktiviert (false) einen Mechanismus für die regelmäßige Berichterstellung von Heartbeat-Telemetriedaten. true
NCCL_PROFILER_HEARTBEAT_UPLOAD_INTERVAL Gibt das Intervall für den Mechanismus zur Berichterstellung von Heartbeat-Telemetriedaten an. Beispiel: 10s, 1m. Unterstützt d, h, m, s, ms, us, ns 10s
NCCL_TELEMETRY_MODE Steuert den Exportspeicherort der NCCL-Telemetriedaten. Folgende Optionen sind verfügbar:

Wert Beschreibung
0 Deaktiviert die Erfassung von NCCL-Telemetriedaten.
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-Telemetriedaten sowohl in eine lokale Datei als auch in Google-Dienste.
3

Nächste Schritte