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:
Installieren Sie CoMMA in Ihrer Arbeitslast, indem Sie Ihrer
initContainersdas 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 diebindgenerforderlich ist.CMake-Version 3.10 oder höher
So erstellen Sie die Anwendung aus dem Quellcode:
Klonen Sie das Repository und seine Submodule.
git clone --recurse-submodules https://github.com/google/CoMMA
Kompilieren Sie die Binärdateien mit Cargo.
cargo build --release
Cargo speichert die Binärdatei in
target/release/libnccl_profiler.so.Aktivieren Sie NCCL, um die CoMMA-Bibliotheken mit einer der folgenden Methoden zu laden:
- Kopieren Sie die kompilierte
libnccl_profiler.soin ein Verzeichnis in IhremLD_LIBRARY_PATH. Benennen Sie es inlibnccl-profiler.soum (verwenden Sie einen Bindestrich anstelle eines Unterstrichs). - Alternativ können Sie die Umgebungsvariable
NCCL_PROFILER_PLUGINfestlegen, um den Pfad der Datei.soanzugeben.
- Kopieren Sie die kompilierte
Installation oder Aktivierung prüfen
So prüfen Sie, ob NCCL die CoMMA-Bibliotheken lädt:
- Aktivieren Sie das NCCL-Debug-Logging. Aktivieren Sie das Logging, indem Sie die Umgebungsvariable
NCCL_DEBUG=INFOfestlegen. Sie können auch eine detailliertere Debugging-Stufe angeben. Weitere Debugging-Optionen finden Sie in der NVIDIA-Dokumentation im AbschnittNCCL_DEBUG. - Geben Sie das
INIT-Subsystem für das Debugging an. Geben SieINITan, indem Sie die UmgebungsvariableNCCL_DEBUG_SUBSYS=INITfestlegen. Sie können auch andere Subsysteme angeben. Weitere Optionen für das Subsystem finden Sie im AbschnittNCCL_DEBUG_SUBSYS. - 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:
Legen Sie die Umgebungsvariable
NCCL_TELEMETRY_MODEauf einen Wert ungleich null fest. Wenn Sie beispielsweise den Standardmodus verwenden möchten, geben SieNCCL_TELEMETRY_MODE=3an.Eine vollständige Liste der Optionen finden Sie in der Tabelle Konfigurationsoptionen unter
NCCL_TELEMETRY_MODE.
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=trueNCCL_PROFILER_AGGREGATE_STEPS=trueNCCL_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=truefestlegen. - Sie können die für jeden Netzwerk-E/A-Vorgang aufgewendete Zeit erfassen, indem Sie
NCCL_PROFILER_TRACK_STEPS=truefestlegen. Diese Einstellung bietet die höchste Detaillierung.
- Sie können die Abschlusszeit für Proxyvorgänge erfassen, indem Sie
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:
- Legen Sie
NCCL_TELEMETRY_MODEauf1oder4fest. Weitere Informationen zur UmgebungsvariableNCCL_TELEMETRY_MODEfinden Sie unter Konfigurationsoptionen. Legen Sie einen der folgenden Exportpfade fest:
- Legen Sie
NCCL_PROFILER_LATENCY_FILE=PATHfest, um detaillierte Ereignistraces in eine lokale Datei zu exportieren. Ersetzen SiePATHdurch einen Pfad wie/tmp/latency-%p.txt. Legen Sie
NCCL_PROFILER_SUMMARY_FILE=PATHfest, um aggregierte zusammenfassende Statistiken zu exportieren. Ersetzen SiePATHdurch einen Pfad wie/tmp/summary-%p.txt.Das System ersetzt
%pdurch die Prozess-ID.
- Legen Sie
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:
|
3 |
Nächste Schritte
- Informationen zur Fehlerbehebung bei CoMMA
- Informationen zum Erkennen und Beheben von Straggler-Problemen