Greifen Sie auf Ihre SageMaker HyperPod Clusterknoten zu - Amazon SageMaker

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.

Greifen Sie auf Ihre SageMaker HyperPod Clusterknoten zu

Sie können über AWS Systems Manager (SSM) auf Ihren InServiceCluster zugreifen, indem Sie den AWS CLI Befehl aws ssm start-session mit dem SageMaker HyperPod Cluster-Hostnamen im Format von ausführensagemaker-cluster:[cluster-id]_[instance-group-name]-[instance-id]. Sie können die Cluster-ID, die Instanz-ID und den Namen der Instanzgruppe von der SageMaker HyperPod Konsole aus abrufen oder indem Sie describe-cluster und list-cluster-nodes aus den AWS CLI Befehlen für ausführen SageMaker HyperPod. Wenn Ihre Cluster-ID beispielsweise lautetaa11bbbbb222, lautet der Clusterknotenname und die Clusterknoten-ID lauteti-111222333444555aa, sollte der SSM start-session Befehl wie folgt lauten. controller-group

Anmerkung

Wenn Sie es noch nicht eingerichtet haben AWS Systems Manager, folgen Sie den Anweisungen unterEinrichtung AWS Systems Manager und „Run As“ für die Cluster-Benutzerzugriffskontrolle.

$ aws ssm start-session \ --target sagemaker-cluster:aa11bbbbb222_controller-group-i-111222333444555aa \ --region us-west-2 Starting session with SessionId: s0011223344aabbccdd root@ip-111-22-333-444:/usr/bin#

Beachten Sie, dass Sie dadurch zunächst als Root-Benutzer verbunden werden. Bevor Sie Jobs ausführen, wechseln Sie zum ubuntu Benutzer, indem Sie den folgenden Befehl ausführen.

root@ip-111-22-333-444:/usr/bin# sudo su - ubuntu ubuntu@ip-111-22-333-444:/usr/bin#

Erweiterte Einstellungen für die praktische Verwendung von HyperPod Clustern finden Sie in den folgenden Themen.

Zusätzliche Tipps für den Zugriff auf Ihre SageMaker HyperPod Clusterknoten

Verwenden Sie das von bereitgestellte easy-ssh.sh Skript, HyperPod um den Verbindungsvorgang zu vereinfachen

Um aus dem vorherigen Prozess einen einzeiligen Befehl zu machen, stellt das HyperPod Team das easy-ssh.shSkript bereit, das Ihre Clusterinformationen abruft, sie in dem SSM Befehl zusammenfasst und eine Verbindung zum Rechenknoten herstellt. Sie müssen nicht manuell nach den erforderlichen HyperPod Clusterinformationen suchen, da dieses Skript ausgeführt wird describe-cluster und die für die Ausführung des Befehls erforderlichen Informationen list-cluster-nodes befiehlt und analysiert. SSM Die folgenden Beispielbefehle zeigen, wie das easy-ssh.shSkript ausgeführt wird. Wenn es erfolgreich ausgeführt wird, werden Sie als Root-Benutzer mit dem Cluster verbunden. Außerdem wird ein Codeausschnitt gedruckt, der eingerichtet SSH werden muss, indem der HyperPod Cluster über einen SSM Proxy als Remote-Host hinzugefügt wird. Durch die Einrichtung SSH können Sie Ihre lokale Entwicklungsumgebung wie Visual Studio Code mit dem HyperPod Cluster verbinden.

$ chmod +x easy-ssh.sh $ ./easy-ssh.sh -c <node-group> <cluster-name> Cluster id: <cluster_id> Instance id: <instance_id> Node Group: <node-group> Add the following to your ~/.ssh/config to easily connect: $ cat <<EOF >> ~/.ssh/config Host <cluster-name> User ubuntu ProxyCommand sh -c "aws ssm start-session --target sagemaker-cluster:<cluster_id>_<node-group>-<instance_id> --document-name AWS-StartSSHSession --parameters 'portNumber=%p'" EOF Add your ssh keypair and then you can do: $ ssh <cluster-name> aws ssm start-session --target sagemaker-cluster:<cluster_id>_<node-group>-<instance_id> Starting session with SessionId: s0011223344aabbccdd root@ip-111-22-333-444:/usr/bin#

Beachten Sie, dass Sie dadurch zunächst als Root-Benutzer verbunden werden. Bevor Sie Jobs ausführen, wechseln Sie zum ubuntu Benutzer, indem Sie den folgenden Befehl ausführen.

root@ip-111-22-333-444:/usr/bin# sudo su - ubuntu ubuntu@ip-111-22-333-444:/usr/bin#

Richten Sie den Computer für einen einfachen Zugriff ein, SSH indem Sie den HyperPod Rechenknoten als Remote-Host verwenden

Um den Zugriff auf den Rechenknoten über einen lokalen Computer weiter zu vereinfachen, gibt das easy-ssh.sh Skript einen Codeausschnitt zur Einrichtung des HyperPod Clusters als Remote-Host SSH aus, wie im vorherigen Abschnitt gezeigt. Das Code-Snippet wird automatisch generiert, damit Sie es direkt zur ~/.ssh/config Datei auf Ihrem lokalen Gerät hinzufügen können. Das folgende Verfahren zeigt, wie Sie den einfachen Zugriff SSH über den SSM Proxy einrichten, sodass Sie oder Ihre Clusterbenutzer direkt eine Verbindung ssh <cluster-name> zum Clusterknoten herstellen können. HyperPod

  1. Fügen Sie der Datei auf Ihrem lokalen Gerät den HyperPod Rechenknoten mit einem Benutzernamen als Remote-Host ~/.ssh/config hinzu. Der folgende Befehl zeigt, wie der automatisch generierte Codeausschnitt aus dem easy-ssh.sh Skript an die Datei angehängt wird. ~/.ssh/config Stellen Sie sicher, dass Sie es aus der automatisch generierten Ausgabe des easy-ssh.sh Skripts kopieren, das die richtigen Clusterinformationen enthält.

    $ cat <<EOF >> ~/.ssh/config Host <cluster-name> User ubuntu ProxyCommand sh -c "aws ssm start-session --target sagemaker-cluster:<cluster_id>_<node-group>-<instance_id> --document-name AWS-StartSSHSession --parameters 'portNumber=%p'" EOF
  2. Fügen Sie auf dem HyperPod Clusterknoten den öffentlichen Schlüssel auf Ihrem lokalen Gerät zur ~/.ssh/authorized_keys Datei auf dem HyperPod Clusterknoten hinzu.

    1. Drucken Sie die Datei mit dem öffentlichen Schlüssel auf Ihrem lokalen Computer aus.

      $ cat ~/.ssh/id_rsa.pub

      Dies sollte Ihren Schlüssel zurückgeben. Kopieren Sie die Ausgabe dieses Befehls.

      (Optional) Wenn Sie keinen öffentlichen Schlüssel haben, erstellen Sie einen, indem Sie den folgenden Befehl ausführen.

      $ ssh-keygen -t rsa -q -f "$HOME/.ssh/id_rsa" -N ""
    2. Connect zum Clusterknoten her und wechseln Sie zu dem Benutzer, um den Schlüssel hinzuzufügen. Der folgende Befehl ist ein Beispiel für den Zugriff als ubuntu Benutzer. Ersetzen ubuntu Sie es durch den Benutzernamen, für den Sie den einfachen Zugriff einrichten möchtenSSH.

      $ ./easy-ssh.sh -c <node-group> <cluster-name> $ sudo su - ubuntu ubuntu@ip-111-22-333-444:/usr/bin#
    3. Öffnen Sie die ~/.ssh/authorized_keys Datei und fügen Sie den öffentlichen Schlüssel am Ende der Datei hinzu.

      ubuntu@ip-111-22-333-444:/usr/bin# vim ~/.ssh/authorized_keys

Nachdem Sie die Einrichtung abgeschlossen haben, können Sie als Benutzer eine Verbindung zum HyperPod Clusterknoten herstellen, indem Sie einen vereinfachten SSH Befehl wie folgt ausführen.

$ ssh <cluster-name> ubuntu@ip-111-22-333-444:/usr/bin#

Sie können den Host auch für die Remoteentwicklung von einem IDE auf Ihrem lokalen Gerät aus verwenden, z. B. Visual Studio Code Remote - SSH.

Richten Sie über den Amazon FSx Shared Space eine Mehrbenutzerumgebung ein

Sie können den Amazon FSx Shared Space verwenden, um eine Mehrbenutzerumgebung in einem Slurm-Cluster auf zu verwalten. SageMaker HyperPod Wenn Sie Ihren Slurm-Cluster FSx während der HyperPod Cluster-Erstellung mit Amazon konfiguriert haben, ist dies eine gute Option, um Workspace für Ihre Cluster-Benutzer einzurichten. Erstellen Sie einen neuen Benutzer und richten Sie das Home-Verzeichnis für den Benutzer im FSx gemeinsamen Amazon-Dateisystem ein.

Tipp

Damit Benutzer über ihren Benutzernamen und ihre dedizierten Verzeichnisse auf Ihren Cluster zugreifen können, sollten Sie sie auch IAM Rollen oder Benutzern zuordnen, indem Sie sie wie in Option 2 von Schritt 5 unter dem Verfahren So aktivieren Sie die Unterstützung für verwaltete Linux- und macOS-Knoten unter Aktivieren von Run As-Unterstützung für verwaltete Knoten unter Aktivieren von Run As-Unterstützung für verwaltete Knoten unter Linux und macOS aktivieren im AWS Systems Manager Benutzerhandbuch kennzeichnen. Siehe auch Einrichtung AWS Systems Manager und „Run As“ für die Cluster-Benutzerzugriffskontrolle.

So richten Sie beim Erstellen eines Slurm-Clusters eine Umgebung mit mehreren Benutzern ein SageMaker HyperPod

Das SageMaker HyperPod Serviceteam stellt ein Skript add_users.shals Teil der Script-Beispiele für den Basislebenszyklus zur Verfügung.

  1. Bereiten Sie eine Textdatei mit dem Namen vorshared_users.txt, die Sie im folgenden Format erstellen müssen. Die erste Spalte ist für Benutzernamen, die zweite Spalte für eindeutige Benutzer IDs und die dritte Spalte für die Benutzerverzeichnisse im FSx gemeinsamen Amazon-Bereich.

    username1,uid1,/fsx/username1 username2,uid2,/fsx/username2 ...
  2. Stellen Sie sicher, dass Sie die add_users.shDateien shared_users.txt und in den S3-Bucket für HyperPod Lifecycle-Skripte hochladen. Während der Clustererstellung, der Clusteraktualisierung oder der Cluster-Softwareupdate werden die Benutzerverzeichnisse ordnungsgemäß add_users.sheingelesen shared_users.txt und eingerichtet.

Um neue Benutzer zu erstellen und sie zu einem bestehenden Slurm-Cluster hinzuzufügen, der auf läuft SageMaker HyperPod

  1. Führen Sie auf dem Hauptknoten den folgenden Befehl aus, um ein Skript zu speichern, das bei der Erstellung eines Benutzers hilft. Stellen Sie sicher, dass Sie dies mit Sudo-Berechtigungen ausführen.

    $ cat > create-user.sh << EOL #!/bin/bash set -x # Prompt user to get the new user name. read -p "Enter the new user name, i.e. 'sean': " USER # create home directory as /fsx/<user> # Create the new user on the head node sudo useradd \$USER -m -d /fsx/\$USER --shell /bin/bash; user_id=\$(id -u \$USER) # add user to docker group sudo usermod -aG docker \${USER} # setup SSH Keypair sudo -u \$USER ssh-keygen -t rsa -q -f "/fsx/\$USER/.ssh/id_rsa" -N "" sudo -u \$USER cat /fsx/\$USER/.ssh/id_rsa.pub | sudo -u \$USER tee /fsx/\$USER/.ssh/authorized_keys # add user to compute nodes read -p "Number of compute nodes in your cluster, i.e. 8: " NUM_NODES srun -N \$NUM_NODES sudo useradd -u \$user_id \$USER -d /fsx/\$USER --shell /bin/bash; # add them as a sudoer read -p "Do you want this user to be a sudoer? (y/N): " SUDO if [ "\$SUDO" = "y" ]; then sudo usermod -aG sudo \$USER sudo srun -N \$NUM_NODES sudo usermod -aG sudo \$USER echo -e "If you haven't already you'll need to run:\n\nsudo visudo /etc/sudoers\n\nChange the line:\n\n%sudo ALL=(ALL:ALL) ALL\n\nTo\n\n%sudo ALL=(ALL:ALL) NOPASSWD: ALL\n\nOn each node." fi EOL
  2. Führen Sie das Skript mit dem folgenden Befehl aus. Sie werden aufgefordert, den Namen eines Benutzers und die Anzahl der Rechenknoten hinzuzufügen, auf die der Benutzer zugreifen kann.

    $ bash create-user.sh
  3. Testen Sie den Benutzer, indem Sie die folgenden Befehle ausführen.

    $ sudo su - <user> && ssh $(srun hostname)
  4. Fügen Sie der shared_users.txt Datei die Benutzerinformationen hinzu, sodass der Benutzer auf allen neuen Rechenknoten oder neuen Clustern erstellt wird.

Richten Sie eine Mehrbenutzerumgebung ein, indem Sie HyperPod Cluster in Active Directory integrieren

In praktischen Anwendungsfällen werden HyperPod Cluster in der Regel von mehreren Benutzern verwendet: Forschern für maschinelles Lernen (ML), Softwareingenieuren, Datenwissenschaftlern und Clusteradministratoren. Sie bearbeiten ihre eigenen Dateien und führen ihre eigenen Jobs aus, ohne sich gegenseitig bei der Arbeit zu beeinträchtigen. Um eine Mehrbenutzerumgebung einzurichten, verwenden Sie den Linux-Benutzer- und Gruppenmechanismus, um mithilfe von Lifecycle-Skripten statisch mehrere Benutzer für jede Instanz zu erstellen. Der Nachteil dieses Ansatzes besteht jedoch darin, dass Sie Benutzer- und Gruppeneinstellungen für mehrere Instanzen im Cluster duplizieren müssen, um bei Aktualisierungen, wie dem Hinzufügen, Bearbeiten und Entfernen von Benutzern, eine einheitliche Konfiguration für alle Instanzen aufrechtzuerhalten.

Um dieses Problem zu lösen, können Sie Lightweight Directory Access Protocol (LDAP) und LDAPoverTLS/SSL(LDAPS) verwenden, um die Integration in einen Directory Service wie den AWS Verzeichnisdienst für Microsoft Active Directory zu ermöglichen. Weitere Informationen zur Einrichtung von Active Directory und einer Mehrbenutzerumgebung in einem HyperPod Cluster finden Sie im Blogbeitrag Integrieren von HyperPod Clustern mit Active Directory für eine nahtlose Mehrbenutzeranmeldung.