Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hintergrund
In der heutigen Zeit entwickeln sich KI-Modelle weiter, um wesentlicher zu werden, was eine zunehmende Nachfrage nach erweiterter Hardware und einem Cluster von Computern für eine effiziente Modellschulung erfordert. HPC Pack kann die Modellschulung für Sie effektiv vereinfachen.
PyTorch Distributed Data Parallel (aka DDP)
Um verteilte Modellschulungen zu implementieren, ist es notwendig, ein verteiltes Schulungsframework zu verwenden. Die Wahl des Frameworks hängt von dem Modell ab, das zum Erstellen des Modells verwendet wird. In diesem Artikel leite ich Sie dazu, wie Sie mit PyTorch in HPC Pack fortfahren können.
PyTorch bietet verschiedene Methoden für verteilte Schulungen an. Unter diesen wird Distributed Data Parallel (DDP) aufgrund seiner Einfachheit und minimalen Codeänderungen, die von Ihrem aktuellen Einzelmaschinenschulungsmodell benötigt werden, weit bevorzugt.
Einrichten eines HPC Pack-Clusters für KI-Modellschulungen
Sie können einen HPC Pack-Cluster mit Ihren lokalen Computern oder virtuellen Computern (VMs) in Azure einrichten. Stellen Sie einfach sicher, dass diese Computer mit GPUs ausgestattet sind (in diesem Artikel verwenden wir Nvidia GPUs).
In der Regel kann eine GPU einen Prozess für eine verteilte Schulungsarbeit haben. Wenn Sie also über zwei Computer (auch als Knoten in einem Computercluster bezeichnet) verfügen, können Sie jeweils mit vier GPUs ausgestattet 2 * 4 erreichen, was 8 parallele Prozesse für eine einzelne Modellschulung entspricht. Diese Konfiguration kann die Schulungszeit möglicherweise auf etwa 1/8. im Vergleich zu einzelprozessschulungen reduzieren und dabei einige Mehraufwand für die Synchronisierung von Daten zwischen den Prozessen weglassen.
Erstellen eines HPC Pack-Clusters in der ARM-Vorlage
Der Einfachheit halber können Sie einen neuen HPC Pack-Cluster in Azure starten, in ARM-Vorlagen auf GitHub.
Wählen Sie die Vorlage "Single Head Node Cluster for Linux workloads" aus, und klicken Sie auf "Bereitstellen in Azure".
Und lesen Sie die Voraussetzungen, um ein Zertifikat für die Verwendung von HPC Pack zu erstellen und hochzuladen.
Bitte beachten Sie:
Sie sollten ein Computeknotenimage auswählen, das mit "HPC" gekennzeichnet ist. Dies gibt an, dass GPU-Treiber im Image vorinstalliert sind. Andernfalls wäre eine manuelle GPU-Treiberinstallation auf einem Computeknoten zu einem späteren Zeitpunkt erforderlich, was sich aufgrund der Komplexität der GPU-Treiberinstallation als schwierig erweisen könnte. Weitere Informationen zu HPC-Bildern finden Sie hier.
Sie sollten eine VM-Größe des Computeknotens mit GPU auswählen. Das ist VM-Größe der N-Serie.
auswählen
Installieren von PyTorch auf Computeknoten
Installieren Sie auf jedem Computeknoten PyTorch mit Befehl.
pip3 install torch torchvision torchaudio
Tipps: Sie können HPC Pack "Run Command" nutzen, um einen Befehl über eine Reihe von Clusterknoten parallel auszuführen.
Einrichten eines freigegebenen Verzeichnisses
Bevor Sie einen Schulungsauftrag ausführen können, benötigen Sie ein freigegebenes Verzeichnis, auf das von allen Computeknoten zugegriffen werden kann. Das Verzeichnis wird für Schulungscode und -daten verwendet (sowohl Eingabedatensatz als auch Ausgabe trainiertes Modell).
Sie können ein SMB-Freigabeverzeichnis auf einem Kopfknoten einrichten und dann auf jedem Computeknoten mit Cifs bereitstellen, wie hier:
Erstellen Sie auf einem Kopfknoten ein Verzeichnis
appunter%CCP_DATA%\SpoolDir, das standardmäßig bereits alsCcpSpoolDirvon HPC Pack freigegeben ist.Stellen Sie auf einem Computeknoten das
appVerzeichnis wiesudo mkdir /app sudo mount -t cifs //<your head node name>/CcpSpoolDir/app /app -o vers=2.1,domain=<hpc admin domain>,username=<hpc admin>,password=<your password>,dir_mode=0777,file_mode=0777ANMERKUNG:
- Die option
passwordkann in einer interaktiven Shell weggelassen werden. In diesem Fall werden Sie dazu aufgefordert. - Die
dir_modeundfile_modesind auf 0777 festgelegt, sodass jeder Linux-Benutzer sie lesen/schreiben kann. Eine eingeschränkte Berechtigung ist möglich, aber komplizierter, um konfiguriert zu werden.
- Die option
Optional können Sie die Montage dauerhaft durch Hinzufügen einer Linie in
/etc/fstabwie//<your head node name>/CcpSpoolDir/app cifs vers=2.1,domain=<hpc admin domain>,username=<hpc admin>,password=<your password>,dir_mode=0777,file_mode=0777 0 2Hier ist die
passworderforderlich.
Ausführen eines Schulungsauftrags
Angenommen, wir verfügen jetzt über zwei Linux-Computeknoten mit jeweils vier NVidia v100 GPUs. Und wir haben PyTorch auf jedem Knoten installiert. Außerdem haben wir ein freigegebenes Verzeichnis "app" eingerichtet. Jetzt können wir mit unserer Trainingsarbeit beginnen.
Hier verwende ich ein einfaches Toymodell, das auf PyTorch DDP basiert. Sie können den Code auf GitHubabrufen.
Laden Sie die folgenden Dateien in das freigegebene Verzeichnis %CCP_DATA%\SpoolDir\app auf dem Kopfknoten herunter.
- neural_network.py
- operations.py
- run_ddp.py
Erstellen Sie dann einen Auftrag mit Node als Ressourceneinheit und zwei Knoten für den Auftrag, z. B.
Und geben Sie zwei Knoten mit GPU explizit an, z. B.
Fügen Sie dann Auftragsaufgaben hinzu, z. B.
Die Befehlszeilen der Aufgaben sind alle gleich, z. B.
python3 -m torch.distributed.run --nnodes=<the number of compute nodes> --nproc_per_node=<the processes on each node> --rdzv_id=100 --rdzv_backend=c10d --rdzv_endpoint=<a node name>:29400 /app/run_ddp.py
-
nnodesgibt die Anzahl der Computeknoten für Ihren Schulungsauftrag an. -
nproc_per_nodegibt die Anzahl der Prozesse für jeden Computeknoten an. Die Anzahl der GPUs auf einem Knoten kann nicht überschritten werden. Das heißt, eine GPU kann höchstens einen Prozess haben. -
rdzv_endpointgibt einen Namen und einen Port eines Knotens an, der als Rendezvous fungiert. Jeder Knoten im Schulungsauftrag kann funktionieren. - "/app/run_ddp.py" ist der Pfad zu Ihrer Schulungscodedatei. Denken Sie daran, dass
/appein freigegebenes Verzeichnis auf dem Kopfknoten ist.
Senden Sie den Auftrag, und warten Sie das Ergebnis. Sie können die ausgeführten Aufgaben anzeigen, z. B.
Beachten Sie, dass im Ergebnisbereich abgeschnittene Ausgabe angezeigt wird, wenn sie zu lang ist.
Das ist alles dafür. Ich hoffe, Dass Sie die Punkte bekommen und HPC Pack kann Ihre Trainingsarbeit beschleunigen.