Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Benutzer auf einem Slurm-Cluster erstellen auf SageMaker HyperPod
Es gibt drei Möglichkeiten, POSIX-Benutzer über die Knoten eines Slurm-Clusters hinweg zu erstellen. SageMaker HyperPod Sie unterscheiden sich darin, wann Benutzer erstellt werden und wie viele Lebenszykluskonfigurationen Sie verwalten müssen. Wählen Sie die Option, die zu Ihrem Cluster und Workflow passt. Hier finden Sie eine Liste von der einfachsten bis zur fortschrittlichsten Option.
| Option | Am besten geeignet für | Konfiguration des Lebenszyklus erforderlich | Wenn Benutzer erstellt werden | Verhalten beim Hochskalieren oder beim Node-Austausch |
|---|---|---|---|---|
| Option A: Fügen Sie Benutzer mit dem Utility-Skript „Benutzer erstellen“ hinzu | Hinzufügen von Benutzern zu einem Cluster, der bereits existiert InService, ohne die Konfiguration des Lebenszyklus zu ändern | Keine | Bei Bedarf, wann immer Sie das Skript ausführen | Manuell. Benutzer werden nicht automatisch übernommen. Führen Sie das Skript jedes Mal erneut aus, wenn Knoten hinzugefügt oder ersetzt werden (automatisch oder manuell). |
| Option B: Fügen Sie Benutzer mit dem Erweiterungsskript „add-users“ hinzu | AMI-based lebenszykluskonfigurierte Cluster, die Benutzer automatisch bereitstellen | Erweiterungsskripts für Benutzer hinzufügen | Automatisch während der Knotenbereitstellung — während der Cluster-Erstellung, beim Hinzufügen von Knoten (Scale-Up), bei AMI-Updates und beim Austausch von Knoten. | Automatisch. Die Erweiterung wird während der Bereitstellung auf jedem neuen Knoten ausgeführt, wobei die Benutzerdatei im Amazon S3-Bucket für Lebenszyklus-Skripts verwendet wird. |
| Option C: Fügen Sie Benutzer mit den Basis-Lifecycle-Skripten hinzu | Cluster, die bereits den vollständigen benutzerdefinierten Basis-Lifecycle-Skriptsatz verwenden | Vollständiger benutzerdefinierter Lebenszyklus-Skriptsatz | Automatisch während der Knotenbereitstellung — während der Cluster-Erstellung, beim Hinzufügen von Knoten (Scale-Up), bei AMI-Updates und beim Austausch von Knoten. | Automatisch. Das Basis-Lifecycle-Skript wird während der Bereitstellung auf jedem neuen Knoten ausgeführt, wobei die Benutzerdatei im Amazon S3-Bucket für Lebenszyklus-Skripts verwendet wird. |
Alle drei Optionen verwenden Skripte, die das SageMaker HyperPod Serviceteam im Awsome Distributed
Themen
Option A: Fügen Sie Benutzer mit dem Utility-Skript „Benutzer erstellen“ hinzu
Dies ist die einfachste Option und erfordert keine Lebenszykluskonfiguration. Verwenden Sie sie, wenn Ihr Cluster bereits vorhanden ist InService und Sie sofort Benutzer hinzufügen möchten. Führen Sie das Utility-Skript
-
Befehlszeilenmodus — Sie übergeben Benutzernamen als Argumente und das Skript weist automatisch UIDs zu. Dies ist der schnellste Weg, Benutzer hinzuzufügen.
-
Dateimodus — Das Skript liest Benutzerdefinitionen aus einer
shared_users.txt(CSV) odershared_users.yaml(YAML) -Datei im aktuellen Verzeichnis. -
Interaktiver Modus — das Skript fordert Sie zur Eingabe von Benutzernamen und optional UIDs auf.
Wichtig
In jedem Modus werden Benutzer nur auf den Knoten create_users.sh erstellt, die bei der Ausführung vorhanden sind. Dazu gehört auch der Dateimodus mit einem lokalen shared_users.txt Odershared_users.yaml. Benutzer werden nicht automatisch auf Knoten neu erstellt, die später durch Hochskalierung oder Knotenersetzung hinzugefügt werden. Dabei handelt es sich um Bereitstellungsereignisse, bei denen der neue Knoten mit einem neuen Root-Volume gestartet wird, das keine POSIX-Konten hat. (Home-Verzeichnisse und SSH-Schlüssel auf dem gemeinsam genutzten Dateisystem überleben, die Benutzerkonten selbst jedoch nicht.) Re-run create_users.shnachdem die neuen Knoten hinzugefügt wurden, um sie in Einklang zu bringen.
Re-running das Script ist sicher. Führen Sie es auf dem Controller-Knoten aus. Es erkennt die anderen Clusterknoten und wendet Benutzer im gesamten Cluster in einem Durchlauf an. Es ist pro Knoten idempotent: Es erstellt einen Benutzer nur dort, wo er fehlt, und lässt Knoten, auf denen der Benutzer bereits existiert, unverändert — eine erneute Ausführung nach dem Hinzufügen von Knoten wirkt sich also nur auf die neuen Knoten aus.
Damit neue Knoten automatisch Benutzer empfangen, muss die Benutzerdatei Teil der Lifecycle-Konfiguration des Clusters sein, damit sie während der Bereitstellung ausgeführt wird: Speichern Sie eine shared_users.yaml OR-Datei in Ihrem Amazon S3-Bucket für Lifecycle-Skripte und verwenden Sie sie mit shared_users.txt oder. Option B: Fügen Sie Benutzer mit dem Erweiterungsskript „add-users“ hinzu Option C: Fügen Sie Benutzer mit den Basis-Lifecycle-Skripten hinzu create_users.shhilft, indem jeder Benutzer, den er erstellt, an ihn angehängt wird shared_users.txt und angeboten wird, ihn auf Amazon S3 hochzuladen. Für sich genommen — in keinem Modus — führt dies jedoch nicht dazu, dass Benutzer über Bereitstellungsereignisse hinweg bestehen bleiben.
Für jeden Benutzer gilt das Skript:
-
Erzeugt einen POSIX-Benutzer mit einer konsistenten UID auf jedem Knoten.
-
Erzeugt ein Home-Verzeichnis auf dem gemeinsam genutzten Dateisystem (automatische Erkennung von OpenZFS unter
/homeoder Amazon FSX for Lustre at)./fsx -
Generiert ein SSH-Schlüsselpaar auf dem gemeinsam genutzten Dateisystem für passwortloses SSH zwischen Knoten.
-
Fügt den Benutzer der
dockerGruppe hinzu (und gewährt optional Sudo-Zugriff). -
Registriert den Benutzer beim Slurm-Konto auf dem Controller, damit er Jobs einreichen kann.
-
Hängt die neuen Benutzer an eine
shared_users.txtDatei an und lädt sie optional auf Amazon S3 hoch, sodass Sie sie mit den anderen Optionen wiederverwenden können.
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass die folgenden Anforderungen erfüllt sind.
-
Der Cluster ist InService und Sie können eine Verbindung zum Controller-Knoten herstellen. Siehe Zugreifen auf Ihre SageMaker HyperPod Clusterknoten.
-
jqist auf dem Controller-Knoten installiert. -
SSH-Zugriff ist vom Controller-Knoten aus auf alle anderen Knoten verfügbar (HyperPod konfiguriert dies für den Standardbenutzer).
Um Benutzer mit dem Utility-Skript create_users.sh hinzuzufügen
Führen Sie folgende Schritte aus:
-
Stellen Sie eine Verbindung zum Controller-Knoten her und laden Sie das Skript herunter. Stellen Sie sicher, dass Sie es mit Sudo-Berechtigungen ausführen.
$curl -O https://raw.githubusercontent.com/awslabs/awsome-distributed-training/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/utils/create_users.sh chmod +x create_users.sh -
Führen Sie das Skript in einem seiner drei Modi aus, den es nach Priorität aus den übergebenen Argumenten und den Dateien im aktuellen Verzeichnis auswählt: zuerst Befehlszeilenargumente, dann eine Benutzerdatei, dann interaktive Eingabeaufforderungen. Jeder Modus läuft in derselben Reihenfolge ab: Erstellen Sie die Benutzer auf dem aktuellen Knoten, richten Sie SSH-Schlüsselpaare auf dem gemeinsam genutzten Dateisystem ein, erstellen Sie die Benutzer auf allen verbleibenden Knoten (Rechenknoten parallel), registrieren Sie sie bei der Slurm-Buchhaltung auf dem Controller, hängen Sie sie an und bieten Sie an
shared_users.txt, diese Datei auf Amazon S3 hochzuladen.Die drei Modi werden in den folgenden Beispielen beschrieben, wobei jeweils zwei Benutzer (und) hinzugefügt werden.
user1user2Befehlszeilenmodus
Übergeben Sie die Benutzernamen als Argumente. Das Skript weist automatisch UIDs zu und fragt, ob die neuen Benutzer Sudoers sein sollen. Dies ist der schnellste Weg, Benutzer hinzuzufügen.
$sudo ./create_users.sh user1 user2Das Skript validiert die Benutzernamen und fordert dann zum Zugriff auf Sudoer auf:
======================================== Step 1: User Configuration ======================================== Users from CLI args: user1 user2 ✓ user1 — will be created (auto-assign UID) ✓ user2 — will be created (auto-assign UID) Make these user(s) sudoer(s)? (y/N): nEs erstellt dann die Benutzer auf dem aktuellen Knoten, richtet SSH-Schlüsselpaare ein, erstellt sie auf den Rechenknoten, registriert sie beim Slurm-Konto auf dem Controller und schreibt, sodass Sie am Ende aufgefordert werden
shared_users.txt, diese Datei auf Amazon S3 hochzuladen.Dateimodus
Erstellen Sie eine Benutzerdatei im selben Verzeichnis wie das Skript und führen Sie das Skript dann ohne Argumente aus. Das Skript liest die Benutzerdefinitionen, validiert sie (es werden nur Benutzer erstellt, die noch nicht existieren, und UID-Konflikte werden übersprungen) und erstellt die Benutzer auf allen Knoten. Das Skript akzeptiert zwei Dateiformate.
Verwenden Sie zum
shared_users.txtBeispiel eine CSV-Datei mit einem Benutzer pro Zeile im folgenden Formatusername,uid,home_directory:user1,2001,/fsx/user1 user2,2002,/fsx/user2Verwenden Sie alternativ eine YAML-Datei mit einer einfachen Benutzerliste oder Benutzern, die in Gruppen organisiert sind.
shared_users.yamlFür die Analyse dieses Formats ist PyYAML auf dem Knoten erforderlich. Das Folgende ist das einfache Listenformat:users: - username: user1 uid: 2001 - username: user2 uid: 2002Wenn beide Dateien vorhanden sind, hat
shared_users.txtVorrang. Führen Sie das Skript ohne Argumente aus:$sudo ./create_users.shDas Skript validiert die Dateieinträge, bestätigt die Erstellung, fordert zum Zugriff auf Sudoer auf und bietet an, Benutzer hinzuzufügen, die nicht in der Datei enthalten sind. Dann erstellt es
user1unduser2auf allen Knoten mit den UIDs aus der Datei (2001 und 2002), richtet SSH-Schlüsselpaare ein, registriert sie bei Slurm Accounting und aktualisiert sie.shared_users.txtinteraktiver Modus
Führt das Skript ohne Argumente und ohne Benutzerdatei aus. Das Skript fordert Sie auf, die Benutzernamen und optional die zuzuweisenden UIDs einzugeben:
$sudo ./create_users.sh======================================== Step 1: User Configuration ======================================== No shared_users.txt or shared_users.yaml found. Entering interactive mode... Enter username(s), comma-separated (e.g. 'sean' or 'sean,alice,bob'): user1,user2 Specify UIDs? (Enter for auto-assign, or comma-separated UIDs): 2001,2002 Make these user(s) sudoer(s)? (y/N): nNachdem Sie die Eingabeaufforderungen beantwortet haben, erstellt
user1das Skriptuser2auf allen Knoten die von Ihnen eingegebenen UIDs, richtet SSH-Schlüsselpaare ein, registriert sie bei Slurm Accounting und aktualisiert sie.shared_users.txt -
Testen Sie einen Benutzer, indem Sie zu ihm wechseln und einen Befehl im gesamten Cluster ausführen.
$sudo su - user1 && ssh $(srun hostname)
Anmerkung
Das Skript ist idempotent. Bereits existierende Benutzer werden übersprungen, und bestehende SSH-Schlüssel und Slurm-Buchhaltungszuordnungen werden beibehalten, sodass es sicher erneut ausgeführt werden kann.
Option B: Fügen Sie Benutzer mit dem Erweiterungsskript „add-users“ hinzu
Verwenden Sie diese Option, wenn Ihr Cluster die AMI-based Konfiguration verwendet und Sie möchten, dass Benutzer automatisch bereitgestellt werden. SageMaker HyperPod Führt mit der Option „Verlängerungslebenszyklus“ zuerst die vollständige AMI-based Konfiguration aus und führt dann Ihr Erweiterungsskript aus. Das Serviceteam stellt im Ordner Extensions des Awsome Distributed Training Repositorys auf der Website eine gebrauchsfertige Erweiterung für
Weitere Informationen zum Einrichten von Erweiterungen finden Sie unter:
-
Informationen zum Einrichten von Erweiterungen mithilfe der AWS Konsole finden Sie unter Lifecycle-Konfiguration — optional unter Benutzerdefiniertes Setup.
-
Informationen zum Einrichten von Erweiterungen mithilfe der API finden Sie unter Option B: AMI-based Konfiguration erweitern mit OnInitComplete unter Create your cluster.
Die add-users Erweiterung erstellt POSIX-Benutzer mit konsistenten UIDs, richtet Home-Verzeichnisse auf dem gemeinsam genutzten Dateisystem ein, generiert SSH-Schlüsselpaare für passwortloses SSH zwischen Knoten und registriert Benutzer mit Slurm-Konten auf dem Controller. Sie akzeptiert zwei Eingabeformate:
-
shared_users.txt— dasselbe CSV-Format, das von den Basis-Lifecycle-Skripten verwendet wird (username,uid,/fsx/username). Alle Benutzer werden demrootSlurm-Konto hinzugefügt. -
shared_users.yaml— ein YAML-Format, das zusätzlich die Organisation von Benutzern in Gruppen mit gruppenspezifischen Slurm-Konten und Dateisystem-Mounts unterstützt. Gruppen dienen nur organisatorischen Zwecken; sie bilden keine Linux-Gruppen.
Das Folgende ist ein Beispiel für die shared_users.yaml Verwendung des Gruppenformats:
groups: - name: research slurm_account: research users: - username: user1 uid: 2001 - username: user2 uid: 2002 - name: platform slurm_account: platform users: - username: user3 uid: 3001
Um Benutzer mit der Erweiterung „Add-Users“ bei der Clustererstellung hinzuzufügen
Führen Sie folgende Schritte aus:
-
Kopieren Sie die entsprechende Beispieldatei in das
add-usersVerzeichnis und bearbeiten Sie sie mit Ihren Benutzern:$cp shared_users_sample.yaml shared_users.yaml -
Laden Sie das
add-usersVerzeichnis in Ihren Amazon S3-Bucket für Lifecycle-Skripts hoch (der Bucket-Pfad muss mit beginnens3://sagemaker-):$aws s3 cp add-users/ s3://DOC-EXAMPLE-BUCKET/add-users/ --recursive -
Geben Sie die Erweiterung im
LifeCycleConfigBlock IhrerCreateClusterAnfrage an und verwenden Sieadd_users.shalsOnInitCompleteSkript:"LifeCycleConfig": { "OnInitComplete": "add_users.sh", "SourceS3Uri": "s3://DOC-EXAMPLE-BUCKET/add-users/" }
Tipp
Wenn Ihr Cluster zusätzlich zur Benutzererstellung mehrere Funktionen benötigt (z. B. Observability), laden Sie den gesamten Erweiterungsordner hoch und verwenden Sie den run_extensions.sh Orchestrator als Erweiterungsskript. Es bietet einfache boolesche Schalter, um beispielsweise jede Funktion zu aktivieren. ENABLE_ADD_USERS="true" Details hierzu finden Sie unter Erste Schritte mit der SageMaker HyperPod Verwendung von AWS CLI.
Um Benutzer nach der Erstellung zu einem vorhandenen Cluster hinzuzufügen
Da die Erweiterung nur während der Knotenbereitstellung ausgeführt wird, müssen Sie die Erweiterung manuell ausführen, um Benutzer zu Knoten hinzuzufügen, die bereits laufen.
-
Aktualisieren Sie Ihre Benutzerdatei mit den neuen Benutzern (behalten Sie die vorhandenen Benutzer in der Datei bei) und laden Sie sie auf Amazon S3 hoch:
$aws s3 cp add-users/shared_users.yaml s3://DOC-EXAMPLE-BUCKET/add-users/shared_users.yaml -
Stellen Sie eine Verbindung zum Controller-Knoten her und ziehen Sie die Skripts in das gemeinsam genutzte Dateisystem:
$sudo mkdir -p /fsx/cluster-scripts/add-users sudo aws s3 cp s3://DOC-EXAMPLE-BUCKET/add-users/ /fsx/cluster-scripts/add-users/ --recursive sudo chmod +x /fsx/cluster-scripts/add-users/*.sh -
Führen Sie die Erweiterung auf dem Controller aus:
$sudo bash /fsx/cluster-scripts/add-users/add_users.sh -
Führen Sie die Erweiterung auf den Rechenknoten aus mit
srun:$sudo srun --partition=partition-namebash /fsx/cluster-scripts/add-users/add_users.sh
Die Skripte überspringen bestehende Benutzer und erstellen nur neue; sie sind idempotent.
Option C: Fügen Sie Benutzer mit den Basis-Lifecycle-Skripten hinzu
Verwenden Sie diese Option nur, wenn Ihr Cluster bereits den vollständigen Satz benutzerdefinierter Basislebenszyklus-Skripts verwendet, wobei Ihre Skripts die gesamte Bereitstellungssequenz besitzen. Dies ist die fortschrittlichste Option, da Sie den kompletten Lifecycle-Skriptsatz und nicht eine einzelne Erweiterung verwalten. Das Serviceteam stellt das Skript lifecycle_script.py) ausgeführtadd_users.sh, das eine shared_users.txt Datei liest und die Benutzer und ihre Home-Verzeichnisse erstellt.
In dieser Option add_users.sh behandelt es nur die Erstellung von POSIX-Benutzern und Basisverzeichnissen. Die Generierung von SSH-Schlüsselpaaren für kennwortloses SSH zwischen Knoten ist ein separates Modul im Basis-Lifecycle-Skriptsatz (z. B.gen-keypair-ubuntu.sh), das der Lifecycle-Skript-Runner als Teil des vollständigen Satzes aufruft. Stellen Sie sicher, dass das SSH-Schlüsselmodul in Ihrem Lifecycle-Skriptsatz enthalten ist, damit Benutzer Schlüsselpaare im gemeinsam genutzten Dateisystem erhalten.
Weitere Informationen zum Einrichten des vollständigen benutzerdefinierten Lifecycle-Skriptsatzes finden Sie unter:
-
Informationen zum Einrichten von Lifecycle-Skripten mithilfe der AWS Konsole finden Sie unter Lifecycle-Konfiguration — optional unter Benutzerdefiniertes Setup.
-
Informationen zum Einrichten von Lifecycle-Skripten mithilfe der API finden Sie unter Option C: Vollständige benutzerdefinierte Kontrolle OnCreate unter Create your cluster.
Um Benutzer während der Erstellung eines Slurm-Clusters zu erstellen
Führen Sie folgende Schritte aus:
-
Laden Sie das https://github.com/awslabs/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config
Base-Config-Lifecycle-Skriptset von der Website herunter. GitHub Mit dieser Option laden Sie den gesamten Base-Config-Ordner als Ihren Lifecycle-Skriptsatz hoch, nicht nur. add_users.sh -
Erstellen oder bearbeiten Sie im Ordner base-config eine Textdatei mit dem folgenden Namen
shared_users.txt. Die erste Spalte enthält den Benutzernamen, die zweite Spalte die eindeutige Benutzer-ID und die dritte Spalte ist das Benutzerverzeichnis im Amazon FSx Shared Space.username1,uid1,/fsx/username1 username2,uid2,/fsx/username2 ...add_users.shliestshared_users.txtaus demselben Ordner, daher muss sich die Datei zusammen mit dem Skript in base-config befinden. -
Laden Sie den gesamten Ordner base-config für Ihre Lifecycle-Skripte in den Amazon S3-Bucket hoch. HyperPod Während der Cluster-Erstellung, Cluster-Aktualisierung oder Cluster-Software-Aktualisierung wird der Lifecycle-Skript-Runner ausgeführt
add_users.sh, der die Benutzershared_users.txtund ihre Home-Verzeichnisse liest und einrichtet.
Anmerkung
add_users.sherkennt automatisch das gemeinsam genutzte Dateisystem: Wenn OpenZFS dort gemountet ist, erstellt /home es dort Home-Verzeichnisse; andernfalls verwendet es den Amazon FSx for Lustre-Pfad.