

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

# Mengakses node SageMaker HyperPod cluster Anda
<a name="sagemaker-hyperpod-run-jobs-slurm-access-nodes"></a>

Anda dapat mengakses **InService**cluster 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](sagemaker-hyperpod-operate-slurm-console-ui.md#sagemaker-hyperpod-operate-slurm-console-ui-view-details-of-clusters) atau dengan menjalankan `describe-cluster` dan `list-cluster-nodes` dari [AWS CLI perintah untuk SageMaker HyperPod](sagemaker-hyperpod-operate-slurm-cli-command.md#sagemaker-hyperpod-operate-slurm-cli-command-list-cluster-nodes). Misalnya, jika ID cluster Anda`aa11bbbbb222`, nama node cluster adalah`controller-group`, dan ID node cluster adalah`i-111222333444555aa`, `start-session` perintah SSM harus sebagai berikut.

**catatan**  
Memberikan pengguna akses ke node HyperPod cluster memungkinkan mereka untuk menginstal dan mengoperasikan perangkat lunak yang dikelola pengguna pada node. Pastikan Anda mempertahankan prinsip izin hak istimewa paling sedikit bagi pengguna.  
Jika Anda belum menyiapkan AWS Systems Manager, ikuti instruksi yang diberikan di[Menyiapkan AWS Systems Manager dan Jalankan Sebagai untuk kontrol akses pengguna cluster](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-ssm).

```
$ 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.

**Topics**
+ [Kiat tambahan untuk mengakses node SageMaker HyperPod cluster Anda](#sagemaker-hyperpod-run-jobs-slurm-access-nodes-tips)
+ [Siapkan lingkungan multi-pengguna melalui ruang FSx bersama Amazon](#sagemaker-hyperpod-run-jobs-slurm-access-nodes-multi-user-with-fxs-shared-space)
+ [Siapkan lingkungan multi-pengguna dengan mengintegrasikan HyperPod cluster dengan Active Directory](#sagemaker-hyperpod-run-jobs-slurm-access-nodes-multi-user-with-active-directory)

## Kiat tambahan untuk mengakses node SageMaker HyperPod cluster Anda
<a name="sagemaker-hyperpod-run-jobs-slurm-access-nodes-tips"></a>

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

Untuk membuat proses sebelumnya menjadi perintah satu baris, HyperPod tim menyediakan [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/easy-ssh.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/easy-ssh.sh)skrip 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 [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/easy-ssh.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/easy-ssh.sh)script. 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
   ```

1. 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 ""
      ```

   1. 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#
      ```

   1. 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](https://code.visualstudio.com/docs/remote/ssh).

## Siapkan lingkungan multi-pengguna melalui ruang FSx bersama Amazon
<a name="sagemaker-hyperpod-run-jobs-slurm-access-nodes-multi-user-with-fxs-shared-space"></a>

Anda dapat menggunakan ruang FSx bersama Amazon untuk mengelola lingkungan multi-pengguna di klaster 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 FSx bersama Amazon.

**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](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-preferences-run-as.html) managed nodes** di Panduan Pengguna. AWS Systems Manager Lihat juga [Menyiapkan AWS Systems Manager dan Jalankan Sebagai untuk kontrol akses pengguna cluster](sagemaker-hyperpod-prerequisites.md#sagemaker-hyperpod-prerequisites-ssm).

**Untuk mengatur lingkungan multi-pengguna sambil membuat klaster Slurm SageMaker HyperPod**

Tim SageMaker HyperPod layanan menyediakan skrip [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/add_users.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/add_users.sh)sebagai 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 pengguna unik IDs, dan kolom ketiga untuk direktori pengguna di ruang FSx bersama Amazon.

   ```
   username1,uid1,/fsx/username1
   username2,uid2,/fsx/username2
   ...
   ```

1. Pastikan Anda mengunggah [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/add_users.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/add_users.sh)file `shared_users.txt` dan ke bucket S3 untuk skrip HyperPod siklus hidup. Saat pembuatan cluster, pembaruan cluster, atau pembaruan perangkat lunak cluster sedang berlangsung, [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/add_users.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/add_users.sh)pembacaan 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
   ```

1. 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
   ```

1. Uji pengguna dengan menjalankan perintah berikut. 

   ```
   $ sudo su - <user> && ssh $(srun hostname)
   ```

1. 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
<a name="sagemaker-hyperpod-run-jobs-slurm-access-nodes-multi-user-with-active-directory"></a>

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)](https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol) dan [LDAP over TLS/SSL (LDAPS)](https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol) untuk berintegrasi dengan layanan direktori seperti Directory [AWS Service untuk Microsoft](https://aws.amazon.com/directoryservice/) Active Directory. 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](https://aws.amazon.com/blogs/machine-learning/integrate-hyperpod-clusters-with-active-directory-for-seamless-multi-user-login/).