Akses node SageMaker HyperPod cluster Anda - Amazon SageMaker

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Akses node SageMaker HyperPod cluster Anda

Anda dapat mengakses InServicecluster Anda melalui AWS Systems Manager (SSM) dengan menjalankan AWS CLI perintah aws ssm start-session dengan nama host SageMaker HyperPod cluster dalam format. sagemaker-cluster:[cluster-id]_[instance-group-name]-[instance-id] Anda dapat mengambil ID cluster, ID instance, dan nama grup instance dari SageMaker HyperPod konsol atau dengan menjalankan describe-cluster dan list-cluster-nodes dari AWS CLI perintah untuk SageMaker HyperPod. Misalnya, jika ID cluster Andaaa11bbbbb222, nama node cluster adalahcontroller-group, dan ID node cluster adalahi-111222333444555aa, start-session perintah SSM harus sebagai berikut.

catatan

Jika Anda belum menyiapkan AWS Systems Manager, ikuti instruksi yang diberikan diPengaturan AWS Systems Manager dan Run As untuk kontrol akses pengguna cluster.

$ 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#

Perhatikan bahwa ini awalnya menghubungkan Anda sebagai pengguna root. Sebelum menjalankan pekerjaan, beralih ke ubuntu pengguna dengan menjalankan perintah berikut.

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

Untuk pengaturan lanjutan untuk penggunaan HyperPod klaster secara praktis, lihat topik berikut.

Kiat tambahan untuk mengakses node SageMaker HyperPod cluster Anda

Gunakan easy-ssh.sh skrip yang disediakan oleh HyperPod untuk menyederhanakan proses koneksi

Untuk membuat proses sebelumnya menjadi perintah satu baris, HyperPod tim menyediakan easy-ssh.shskrip yang mengambil informasi cluster Anda, menggabungkannya ke dalam perintah SSM, dan menghubungkan ke node komputasi. Anda tidak perlu secara manual mencari informasi HyperPod cluster yang diperlukan karena skrip ini berjalan describe-cluster dan list-cluster-nodes memerintahkan dan mem-parsing informasi yang diperlukan untuk menyelesaikan perintah SSM. Contoh perintah berikut menunjukkan bagaimana menjalankan easy-ssh.shscript. Jika berhasil berjalan, Anda akan terhubung ke cluster sebagai pengguna root. Ini juga mencetak cuplikan kode untuk mengatur SSH dengan menambahkan HyperPod cluster sebagai host jarak jauh melalui proxy SSM. Dengan menyiapkan SSH, Anda dapat menghubungkan lingkungan pengembangan lokal Anda seperti Visual Studio Code dengan HyperPod cluster.

$ 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#

Perhatikan bahwa ini awalnya menghubungkan Anda sebagai pengguna root. Sebelum menjalankan pekerjaan, beralih ke ubuntu pengguna dengan menjalankan perintah berikut.

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

Siapkan akses mudah dengan SSH dengan menggunakan node HyperPod komputasi sebagai host jarak jauh

Untuk lebih menyederhanakan akses ke node komputasi menggunakan SSH dari mesin lokal, easy-ssh.sh skrip mengeluarkan potongan kode pengaturan HyperPod cluster sebagai host jarak jauh seperti yang ditunjukkan pada bagian sebelumnya. Cuplikan kode dibuat secara otomatis untuk membantu Anda menambahkan secara langsung ke ~/.ssh/config file di perangkat lokal Anda. Prosedur berikut menunjukkan cara mengatur untuk akses mudah menggunakan SSH melalui proxy SSM, sehingga Anda atau pengguna cluster Anda dapat langsung menjalankan ssh <cluster-name> untuk terhubung ke node HyperPod cluster.

  1. Di perangkat lokal Anda, tambahkan node HyperPod komputasi dengan nama pengguna sebagai host jarak jauh ke ~/.ssh/config file. Perintah berikut menunjukkan cara menambahkan cuplikan kode yang dibuat secara otomatis dari easy-ssh.sh skrip ke file. ~/.ssh/config Pastikan Anda menyalinnya dari output easy-ssh.sh skrip yang dihasilkan secara otomatis yang memiliki informasi cluster yang benar.

    $ 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. Pada node HyperPod cluster, tambahkan kunci publik pada perangkat lokal Anda ke ~/.ssh/authorized_keys file di node HyperPod cluster.

    1. Cetak file kunci publik di mesin lokal Anda.

      $ cat ~/.ssh/id_rsa.pub

      Ini harus mengembalikan kunci Anda. Salin output dari perintah ini.

      (Opsional) Jika Anda tidak memiliki kunci publik, buat satu dengan menjalankan perintah berikut.

      $ ssh-keygen -t rsa -q -f "$HOME/.ssh/id_rsa" -N ""
    2. Connect ke node cluster dan beralih ke pengguna untuk menambahkan kunci. Perintah berikut adalah contoh mengakses sebagai ubuntu pengguna. Ganti ubuntu ke nama pengguna yang ingin Anda atur akses mudah dengan SSH.

      $ ./easy-ssh.sh -c <node-group> <cluster-name> $ sudo su - ubuntu ubuntu@ip-111-22-333-444:/usr/bin#
    3. Buka ~/.ssh/authorized_keys file dan tambahkan kunci publik di akhir file.

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

Setelah Anda selesai menyiapkan, Anda dapat terhubung ke node HyperPod cluster sebagai pengguna dengan menjalankan perintah SSH yang disederhanakan sebagai berikut.

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

Selain itu, Anda dapat menggunakan host untuk pengembangan jarak jauh dari IDE di perangkat lokal Anda, seperti Visual Studio Code Remote - SSH.

Siapkan lingkungan multi-pengguna melalui ruang bersama Amazon FSx

Anda dapat menggunakan ruang bersama Amazon FSx untuk mengelola lingkungan multi-pengguna di cluster Slurm. SageMaker HyperPod Jika Anda telah mengonfigurasi klaster Slurm Anda dengan Amazon FSx selama pembuatan HyperPod klaster, ini adalah opsi yang baik untuk menyiapkan ruang kerja bagi pengguna klaster Anda. Buat pengguna baru dan atur direktori home untuk pengguna di sistem file bersama Amazon FSx.

Tip

Untuk memungkinkan pengguna mengakses klaster Anda melalui nama pengguna dan direktori khusus mereka, Anda juga harus mengaitkannya dengan peran IAM atau pengguna dengan menandai mereka sebagai dipandu di Opsi 2 dari langkah 5 di bawah prosedur Untuk mengaktifkan dukungan Run As untuk Linux dan node terkelola macOS yang disediakan di Turn on Run As support for Linux dan macOS managed nodes di Panduan Pengguna. AWS Systems Manager Lihat juga Pengaturan AWS Systems Manager dan Run As untuk kontrol akses pengguna cluster.

Untuk mengatur lingkungan multi-pengguna sambil membuat cluster Slurm di SageMaker HyperPod

Tim SageMaker HyperPod layanan menyediakan skrip add_users.shsebagai bagian dari sampel skrip siklus hidup dasar.

  1. Siapkan file teks bernama shared_users.txt yang perlu Anda buat dalam format berikut. Kolom pertama adalah untuk nama pengguna, kolom kedua untuk ID pengguna unik, dan kolom ketiga untuk direktori pengguna di ruang bersama Amazon FSx.

    username1,uid1,/fsx/username1 username2,uid2,/fsx/username2 ...
  2. Pastikan Anda mengunggah add_users.shfile shared_users.txt dan ke bucket S3 untuk skrip HyperPod siklus hidup. Saat pembuatan cluster, pembaruan cluster, atau pembaruan perangkat lunak cluster sedang berlangsung, add_users.shpembacaan di shared_users.txt dan mengatur direktori pengguna dengan benar.

Untuk membuat pengguna baru dan menambahkan ke cluster Slurm yang ada yang berjalan SageMaker HyperPod

  1. Pada node kepala, jalankan perintah berikut untuk menyimpan skrip yang membantu membuat pengguna. Pastikan Anda menjalankan ini dengan izin sudo.

    $ 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. Jalankan skrip dengan perintah berikut. Anda akan diminta untuk menambahkan nama pengguna dan jumlah node komputasi yang ingin Anda izinkan pengguna untuk mengakses.

    $ bash create-user.sh
  3. Uji pengguna dengan menjalankan perintah berikut.

    $ sudo su - <user> && ssh $(srun hostname)
  4. Tambahkan informasi pengguna ke shared_users.txt file, sehingga pengguna akan dibuat pada node komputasi baru atau cluster baru.

Siapkan lingkungan multi-pengguna dengan mengintegrasikan HyperPod cluster dengan Active Directory

Dalam kasus penggunaan praktis, HyperPod cluster biasanya digunakan oleh banyak pengguna: peneliti pembelajaran mesin (ML), insinyur perangkat lunak, ilmuwan data, dan administrator cluster. Mereka mengedit file mereka sendiri dan menjalankan pekerjaan mereka sendiri tanpa mempengaruhi pekerjaan masing-masing. Untuk menyiapkan lingkungan multi-pengguna, gunakan mekanisme pengguna dan grup Linux untuk membuat beberapa pengguna secara statis pada setiap instance melalui skrip siklus hidup. Namun, kelemahan dari pendekatan ini adalah Anda perlu menduplikasi pengaturan pengguna dan grup di beberapa instance di cluster untuk menjaga konfigurasi yang konsisten di semua instance saat Anda membuat pembaruan seperti menambahkan, mengedit, dan menghapus pengguna.

Untuk mengatasi ini, Anda dapat menggunakan Lightweight Directory Access Protocol (LDAP) dan LDAP over TLS/SSL (LDAPS) untuk berintegrasi dengan layanan direktori seperti Directory Service untuk Microsoft Active Directory.AWS Untuk mempelajari lebih lanjut tentang menyiapkan Active Directory dan lingkungan multi-pengguna dalam sebuah HyperPod cluster, lihat posting blog Mengintegrasikan HyperPod cluster dengan Active Directory untuk login multi-pengguna yang mulus.