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:
Installieren Sie CoMMA in Ihrer Arbeitslast, indem Sie das folgende Snippet zu Ihren
initContainershinzufü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ürbindgenerforderlich ist.CMakeVersion 3.10 oder höher
So erstellen Sie aus der Quelle:
Klonen Sie das Repository und seine Untermodule.
git clone --recurse-submodules https://github.com/google/CoMMA
Kompilieren Sie die Binärdateien mit Cargo.
cargo build --release
Cargo speichert die Binärdatei unter
target/release/libnccl_profiler.so.Aktivieren Sie NCCL, um die CoMMA-Bibliotheken mit einer der folgenden Methoden zu laden:
- Kopieren Sie die kompilierte Datei
libnccl_profiler.soin ein Verzeichnis in IhremLD_LIBRARY_PATH. Benennen Sie sie 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 Datei
Installation oder Aktivierung prüfen
Prüfen Sie in den NCCL-Logs, ob NCCL die CoMMA-Bibliotheken lädt:
- Aktivieren Sie das NCCL-Debug-Logging. Aktivieren Sie das Logging, indem Sie die
NCCL_DEBUG=INFOUmgebungsvariable festlegen. Sie können auch eine detailliertere Debug-Ebene angeben. Weitere Debug-Optionen finden Sie imNCCL_DEBUGAbschnitt in der NVIDIA-Dokumentation. - Geben Sie das Subsystem
INITfür das Debugging an. Geben SieINITan, indem Sie dieNCCL_DEBUG_SUBSYS=INITUmgebungsvariable festlegen. Sie können auch andere Subsysteme angeben. Weitere Subsystemoptionen finden Sie imNCCL_DEBUG_SUBSYSAbschnitt. - 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:
Legen Sie für die Umgebungsvariable
NCCL_TELEMETRY_MODEeinen 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 unter
NCCL_TELEMETRY_MODEin der Konfigurationsoptionen Tabelle.
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=trueNCCL_PROFILER_AGGREGATE_STEPS=trueNCCL_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=truefest, um die Abschlusszeit für Proxyvorgänge zu erfassen. - Legen Sie
NCCL_PROFILER_TRACK_STEPS=truefest, um die Zeit zu erfassen, die für jeden Netzwerk-E/A-Vorgang aufgewendet wird. Diese Einstellung bietet die höchste Detaillierungsebene.
- Legen 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 für
NCCL_TELEMETRY_MODEentweder1oder4fest. Informationen zur UmgebungsvariablenNCCL_TELEMETRY_MODEfinden Sie unter Konfigurationsoptionen. Legen Sie einen der folgenden Exportpfade fest:
- Legen Sie
NCCL_PROFILER_LATENCY_FILE=PATHfest, um detaillierte Ereignis-Traces in eine lokale Datei zu exportieren. Ersetzen SiePATHdurch einen Pfad wie/tmp/latency-%p.txt. Legen Sie
NCCL_PROFILER_SUMMARY_FILE=PATHfest, um aggregierte Zusammenfassungsstatistiken 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 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:
|
3 |
Nächste Schritte
- Informationen zum Beheben von Problemen mit CoMMA.
- Informationen zum Erkennen und Beheben von Nachzüglern.
- Informationen zum Erkennen von nicht reagierenden Arbeitslasten.