

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

# Pekerjaan di SageMaker HyperPod cluster
<a name="sagemaker-hyperpod-run-jobs-slurm"></a>

Topik berikut menyediakan prosedur dan contoh untuk mengakses node komputasi dan menjalankan beban kerja ML pada klaster yang disediakan. SageMaker HyperPod Bergantung pada cara Anda mengatur lingkungan di HyperPod cluster Anda, ada banyak cara untuk menjalankan beban kerja ML pada HyperPod cluster. Contoh menjalankan beban kerja ML pada HyperPod cluster juga disediakan di repositori Pelatihan [Terdistribusi Awsome](https://github.com/aws-samples/awsome-distributed-training/). GitHub Topik berikut memandu Anda melalui cara masuk ke HyperPod kluster yang disediakan dan membantu Anda memulai menjalankan beban kerja MS sampel.

**Tip**  
Untuk menemukan contoh dan solusi praktis, lihat juga [SageMaker HyperPodlokakarya](https://catalog.workshops.aws/sagemaker-hyperpod).

**Topics**
+ [Mengakses node SageMaker HyperPod cluster Anda](sagemaker-hyperpod-run-jobs-slurm-access-nodes.md)
+ [Menjadwalkan pekerjaan Slurm di cluster SageMaker HyperPod](sagemaker-hyperpod-run-jobs-slurm-schedule-slurm-job.md)
+ [Menjalankan kontainer Docker pada simpul komputasi Slurm HyperPod](sagemaker-hyperpod-run-jobs-slurm-docker.md)
+ [Menjalankan beban kerja pelatihan terdistribusi dengan Slurm on HyperPod](sagemaker-hyperpod-run-jobs-slurm-distributed-training-workload.md)

# 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/).

# Menjadwalkan pekerjaan Slurm di cluster SageMaker HyperPod
<a name="sagemaker-hyperpod-run-jobs-slurm-schedule-slurm-job"></a>

Anda dapat meluncurkan pekerjaan pelatihan menggunakan Slurm standar `sbatch` atau `srun` perintah. Misalnya, untuk meluncurkan pekerjaan pelatihan 8-node, Anda dapat menjalankan pelatihan `srun -N 8 --exclusive train.sh` SageMaker HyperPod pendukung di berbagai lingkungan, termasuk,`conda`, `venv``docker`, dan`enroot`. Anda dapat mengonfigurasi lingkungan ML dengan menjalankan skrip siklus hidup di kluster Anda. SageMaker HyperPod Anda juga memiliki opsi untuk melampirkan sistem file bersama seperti Amazon FSx, yang juga dapat digunakan sebagai lingkungan virtual.

Contoh berikut menunjukkan cara menjalankan pekerjaan untuk melatih Llama-2 dengan teknik Fully Sharded Data Parallelism (FSDP) pada cluster SageMaker HyperPod dengan sistem file bersama Amazon. FSx Anda juga dapat menemukan lebih banyak contoh dari [ GitHub repositori Pelatihan Terdistribusi Awsome](https://github.com/aws-samples/awsome-distributed-training/).

**Tip**  
Semua SageMaker HyperPod contoh tersedia di `3.test_cases` folder [ GitHub repositori Pelatihan Terdistribusi Awsome](https://github.com/aws-samples/awsome-distributed-training/).

1. Kloning [ GitHub repositori Pelatihan Terdistribusi Awsome](https://github.com/aws-samples/awsome-distributed-training/), dan salin contoh pekerjaan pelatihan ke sistem file Amazon Anda. FSx 

   ```
   $ TRAINING_DIR=/fsx/users/my-user/fsdp
   $ git clone https://github.com/aws-samples/awsome-distributed-training/
   ```

1. Jalankan [https://github.com/aws-samples/awsome-distributed-training/blob/main/3.test_cases/10.FSDP/0.create_conda_env.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/3.test_cases/10.FSDP/0.create_conda_env.sh)skrip. Ini menciptakan `conda` lingkungan di sistem FSx file Amazon Anda. Pastikan bahwa sistem file dapat diakses oleh semua node di cluster.

1. Bangun lingkungan Conda virtual dengan meluncurkan pekerjaan slurm node tunggal sebagai berikut.

   ```
   $ srun -N 1 /path_to/create_conda_env.sh
   ```

1. Setelah lingkungan dibangun, Anda dapat meluncurkan pekerjaan pelatihan dengan menunjuk ke jalur lingkungan pada volume bersama. Anda dapat meluncurkan pekerjaan pelatihan single-node dan multi-node dengan pengaturan yang sama. Untuk meluncurkan pekerjaan, buat skrip peluncur pekerjaan (juga disebut skrip titik masuk) sebagai berikut.

   ```
   #!/usr/bin/env bash
   set -ex
   
   ENV_PATH=/fsx/users/my_user/pytorch_env
   TORCHRUN=$ENV_PATH/bin/torchrun
   TRAINING_SCRIPT=/fsx/users/my_user/pt_train.py
   
   WORLD_SIZE_JOB=$SLURM_NTASKS
   RANK_NODE=$SLURM_NODEID
   PROC_PER_NODE=8
   MASTER_ADDR=(`scontrol show hostnames \$SLURM_JOB_NODELIST | head -n 1`)
   MASTER_PORT=$(expr 10000 + $(echo -n $SLURM_JOBID | tail -c 4))
   
   DIST_ARGS="--nproc_per_node=$PROC_PER_NODE \
              --nnodes=$WORLD_SIZE_JOB \
              --node_rank=$RANK_NODE \
              --master_addr=$MASTER_ADDR \
              --master_port=$MASTER_PORT \
             "
             
   $TORCHRUN $DIST_ARGS $TRAINING_SCRIPT
   ```
**Tip**  
Jika Anda ingin membuat pekerjaan pelatihan Anda lebih tangguh terhadap kegagalan perangkat keras dengan menggunakan kemampuan resume otomatis SageMaker HyperPod, Anda perlu mengatur variabel lingkungan dengan benar `MASTER_ADDR` di skrip entrypoint. Untuk mempelajari selengkapnya, lihat [Pemulihan simpul otomatis dan lanjutkan otomatis](sagemaker-hyperpod-resiliency-slurm-auto-resume.md).

   Tutorial ini mengasumsikan bahwa script ini disimpan sebagai`/fsx/users/my_user/train.sh`.

1. Dengan skrip ini dalam volume bersama di`/fsx/users/my_user/train.sh`, jalankan `srun` perintah berikut untuk menjadwalkan pekerjaan Slurm.

   ```
   $ cd /fsx/users/my_user/
   $ srun -N 8 train.sh
   ```

# Menjalankan kontainer Docker pada simpul komputasi Slurm HyperPod
<a name="sagemaker-hyperpod-run-jobs-slurm-docker"></a>

[Untuk menjalankan kontainer Docker dengan Slurm aktif SageMaker HyperPod, Anda perlu menggunakan [Enroot](https://github.com/NVIDIA/enroot) dan Pyxis.](https://github.com/NVIDIA/pyxis) Paket Enroot membantu mengonversi gambar Docker menjadi runtime yang dapat dipahami Slurm, sedangkan Pyxis memungkinkan penjadwalan runtime sebagai pekerjaan Slurm melalui perintah,. `srun` `srun --container-image=docker/image:tag` 

**Tip**  
Paket Docker, Enroot, dan Pyxis harus diinstal selama pembuatan cluster sebagai bagian dari menjalankan skrip siklus hidup seperti yang dipandu. [Skrip siklus hidup dasar yang disediakan oleh HyperPod](sagemaker-hyperpod-lifecycle-best-practices-slurm-slurm-base-config.md) Gunakan [skrip siklus hidup dasar](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config) yang disediakan oleh tim HyperPod layanan saat membuat klaster. HyperPod Skrip dasar tersebut diatur untuk menginstal paket secara default. Dalam [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/config.py](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/config.py)skrip, ada `Config` kelas dengan parameter tipe boolean untuk menginstal paket yang disetel ke `True` (`enable_docker_enroot_pyxis=True`). Ini dipanggil oleh dan diuraikan dalam [https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/lifecycle_script.py](https://github.com/aws-samples/awsome-distributed-training/blob/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/lifecycle_script.py)skrip, yang memanggil `install_docker.sh` dan `install_enroot_pyxis.sh` skrip dari folder. [https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/utils](https://github.com/aws-samples/awsome-distributed-training/tree/main/1.architectures/5.sagemaker-hyperpod/LifecycleScripts/base-config/utils) Skrip instalasi adalah tempat instalasi sebenarnya dari paket berlangsung. Selain itu, skrip instalasi mengidentifikasi apakah mereka dapat mendeteksi jalur NVMe penyimpanan dari instance tempat mereka dijalankan dan mengatur jalur root untuk Docker dan Enroot. `/opt/dlami/nvme` Volume root default dari setiap instans baru dipasang `/tmp` hanya dengan volume EBS 100GB, yang habis jika beban kerja yang Anda rencanakan untuk dijalankan melibatkan pelatihan LLMs dan dengan demikian wadah Docker ukuran besar. Jika Anda menggunakan keluarga instance seperti P dan G dengan NVMe penyimpanan lokal, Anda perlu memastikan bahwa Anda menggunakan NVMe penyimpanan yang terpasang di`/opt/dlami/nvme`, dan skrip instalasi menangani proses konfigurasi.

**Untuk memeriksa apakah jalur root sudah diatur dengan benar**

Pada node komputasi cluster Slurm Anda aktif SageMaker HyperPod, jalankan perintah berikut untuk memastikan bahwa skrip siklus hidup bekerja dengan benar dan volume root setiap node diatur ke. `/opt/dlami/nvme/*` Perintah berikut menunjukkan contoh memeriksa jalur runtime Enroot dan jalur root data untuk 8 node komputasi dari cluster Slurm.

```
$ srun -N 8 cat /etc/enroot/enroot.conf | grep "ENROOT_RUNTIME_PATH"
ENROOT_RUNTIME_PATH        /opt/dlami/nvme/tmp/enroot/user-$(id -u)
... // The same or similar lines repeat 7 times
```

```
$ srun -N 8 cat /etc/docker/daemon.json
{
    "data-root": "/opt/dlami/nvme/docker/data-root"
}
... // The same or similar lines repeat 7 times
```

Setelah Anda mengonfirmasi bahwa jalur runtime disetel dengan benar`/opt/dlami/nvme/*`, Anda siap untuk membangun dan menjalankan container Docker dengan Enroot dan Pyxis.

**Untuk menguji Docker dengan Slurm**

1. Pada node komputasi Anda, coba perintah berikut untuk memeriksa apakah Docker dan Enroot diinstal dengan benar.

   ```
   $ docker --help
   $ enroot --help
   ```

1. Uji apakah Pyxis dan Enroot diinstal dengan benar dengan menjalankan salah satu gambar [NVIDIA CUDA](https://catalog.ngc.nvidia.com/orgs/nvidia/containers/cuda) Ubuntu.

   ```
   $ srun --container-image=nvidia/cuda:XX.Y.Z-base-ubuntuXX.YY nvidia-smi
   pyxis: importing docker image: nvidia/cuda:XX.Y.Z-base-ubuntuXX.YY
   pyxis: imported docker image: nvidia/cuda:XX.Y.Z-base-ubuntuXX.YY
   DAY MMM DD HH:MM:SS YYYY
   +-----------------------------------------------------------------------------+
   | NVIDIA-SMI 470.141.03   Driver Version: 470.141.03   CUDA Version: XX.YY    |
   |-------------------------------+----------------------+----------------------+
   | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
   | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
   |                               |                      |               MIG M. |
   |===============================+======================+======================|
   |   0  Tesla T4            Off  | 00000000:00:1E.0 Off |                    0 |
   | N/A   40C    P0    27W /  70W |      0MiB / 15109MiB |      0%      Default |
   |                               |                      |                  N/A |
   +-------------------------------+----------------------+----------------------+
   
   +-----------------------------------------------------------------------------+
   | Processes:                                                                  |
   |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
   |        ID   ID                                                   Usage      |
   |=============================================================================|
   |  No running processes found                                                 |
   +-----------------------------------------------------------------------------+
   ```

   Anda juga dapat mengujinya dengan membuat skrip dan menjalankan `sbatch` perintah sebagai berikut.

   ```
   $ cat <<EOF >> container-test.sh
   #!/bin/bash
   #SBATCH --container-image=nvidia/cuda:XX.Y.Z-base-ubuntuXX.YY
   nvidia-smi
   EOF
   
   $ sbatch container-test.sh
   pyxis: importing docker image: nvidia/cuda:XX.Y.Z-base-ubuntuXX.YY
   pyxis: imported docker image: nvidia/cuda:XX.Y.Z-base-ubuntuXX.YY
   DAY MMM DD HH:MM:SS YYYY
   +-----------------------------------------------------------------------------+
   | NVIDIA-SMI 470.141.03   Driver Version: 470.141.03   CUDA Version: XX.YY    |
   |-------------------------------+----------------------+----------------------+
   | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
   | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
   |                               |                      |               MIG M. |
   |===============================+======================+======================|
   |   0  Tesla T4            Off  | 00000000:00:1E.0 Off |                    0 |
   | N/A   40C    P0    27W /  70W |      0MiB / 15109MiB |      0%      Default |
   |                               |                      |                  N/A |
   +-------------------------------+----------------------+----------------------+
   
   +-----------------------------------------------------------------------------+
   | Processes:                                                                  |
   |  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
   |        ID   ID                                                   Usage      |
   |=============================================================================|
   |  No running processes found                                                 |
   +-----------------------------------------------------------------------------+
   ```

**Untuk menjalankan pekerjaan uji Slurm dengan Docker**

Setelah Anda menyelesaikan pengaturan Slurm dengan Docker, Anda dapat membawa gambar Docker yang sudah dibuat sebelumnya dan menjalankannya menggunakan Slurm on. SageMaker HyperPod Berikut ini adalah contoh kasus penggunaan yang memandu Anda melalui cara menjalankan pekerjaan pelatihan menggunakan Docker dan Slurm on. SageMaker HyperPod Ini menunjukkan contoh pekerjaan pelatihan model-paralel dari model Llama 2 dengan perpustakaan paralelisme model SageMaker AI (SMP).

1. Jika Anda ingin menggunakan salah satu gambar ECR yang sudah dibuat sebelumnya yang didistribusikan oleh SageMaker AI atau DLC, pastikan Anda memberi izin kepada HyperPod cluster Anda untuk menarik gambar ECR melalui file. [Peran IAM untuk SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod) Jika Anda menggunakan gambar Docker Anda sendiri atau sumber terbuka, Anda dapat melewati langkah ini. Tambahkan izin berikut ke file. [Peran IAM untuk SageMaker HyperPod](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-role-for-hyperpod) Dalam tutorial ini, kita menggunakan [gambar SMP Docker](distributed-model-parallel-support-v2.md#distributed-model-parallel-supported-frameworks-v2) pra-paket dengan perpustakaan SMP.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "ecr:BatchCheckLayerAvailability",
                   "ecr:BatchGetImage",
                   "ecr-public:*",
                   "ecr:GetDownloadUrlForLayer",
                   "ecr:GetAuthorizationToken",
                   "sts:*"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

1. Pada node komputasi, kloning repositori dan pergi ke folder yang menyediakan contoh skrip pelatihan dengan SMP.

   ```
   $ git clone https://github.com/aws-samples/awsome-distributed-training/
   $ cd awsome-distributed-training/3.test_cases/17.SM-modelparallelv2
   ```

1. Dalam tutorial ini, jalankan script sampel [https://github.com/aws-samples/awsome-distributed-training/blob/main/3.test_cases/17.SM-modelparallelv2/docker_build.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/3.test_cases/17.SM-modelparallelv2/docker_build.sh)yang menarik image SMP Docker, membangun container Docker, dan menjalankannya sebagai runtime Enroot. Anda dapat memodifikasi ini seperti yang Anda inginkan.

   ```
   $ cat docker_build.sh
   #!/usr/bin/env bash
   
   region=us-west-2
   dlc_account_id=658645717510
   aws ecr get-login-password --region $region | docker login --username AWS --password-stdin $dlc_account_id.dkr.ecr.$region.amazonaws.com
   
   docker build -t smpv2 .
   enroot import -o smpv2.sqsh  dockerd://smpv2:latest
   ```

   ```
   $ bash docker_build.sh
   ```

1. Buat skrip batch untuk meluncurkan pekerjaan pelatihan menggunakan`sbatch`. Dalam tutorial ini, skrip sampel yang disediakan [https://github.com/aws-samples/awsome-distributed-training/blob/main/3.test_cases/17.SM-modelparallelv2/launch_training_enroot.sh](https://github.com/aws-samples/awsome-distributed-training/blob/main/3.test_cases/17.SM-modelparallelv2/launch_training_enroot.sh)meluncurkan pekerjaan pelatihan model-paralel dari model Llama 2 70 miliar parameter dengan kumpulan data sintetis pada 8 node komputasi. Satu set skrip pelatihan disediakan di [https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/17.SM-modelparallelv2/scripts](https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/17.SM-modelparallelv2/scripts), dan `launch_training_enroot.sh` diambil `train_external.py` sebagai skrip entrypoint.
**penting**  
Untuk menggunakan wadah Docker SageMaker HyperPod, Anda harus me-mount `/var/log` direktori dari mesin host, yang merupakan node HyperPod komputasi dalam kasus ini, ke `/var/log` direktori dalam wadah. Anda dapat mengaturnya dengan menambahkan variabel berikut untuk Enroot.  

   ```
   "${HYPERPOD_PATH:="/var/log/aws/clusters":"/var/log/aws/clusters"}"
   ```

   ```
   $ cat launch_training_enroot.sh
   #!/bin/bash
   
   # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
   # SPDX-License-Identifier: MIT-0
   
   #SBATCH --nodes=8 # number of nodes to use, 2 p4d(e) = 16 A100 GPUs
   #SBATCH --job-name=smpv2_llama # name of your job
   #SBATCH --exclusive # job has exclusive use of the resource, no sharing
   #SBATCH --wait-all-nodes=1
   
   set -ex;
   
   ###########################
   ###### User Variables #####
   ###########################
   
   #########################
   model_type=llama_v2
   model_size=70b
   
   # Toggle this to use synthetic data
   use_synthetic_data=1
   
   
   # To run training on your own data  set Training/Test Data path  -> Change this to the tokenized dataset path in Fsx. Acceptable formats are huggingface (arrow) and Jsonlines.
   # Also change the use_synthetic_data to 0
   
   export TRAINING_DIR=/fsx/path_to_data
   export TEST_DIR=/fsx/path_to_data
   export CHECKPOINT_DIR=$(pwd)/checkpoints
   
   # Variables for Enroot
   : "${IMAGE:=$(pwd)/smpv2.sqsh}"
   : "${HYPERPOD_PATH:="/var/log/aws/clusters":"/var/log/aws/clusters"}" # This is needed for validating its hyperpod cluster
   : "${TRAIN_DATA_PATH:=$TRAINING_DIR:$TRAINING_DIR}"
   : "${TEST_DATA_PATH:=$TEST_DIR:$TEST_DIR}"
   : "${CHECKPOINT_PATH:=$CHECKPOINT_DIR:$CHECKPOINT_DIR}"   
   
   
   ###########################
   ## Environment Variables ##
   ###########################
   
   #export NCCL_SOCKET_IFNAME=en
   export NCCL_ASYNC_ERROR_HANDLING=1
   
   export NCCL_PROTO="simple"
   export NCCL_SOCKET_IFNAME="^lo,docker"
   export RDMAV_FORK_SAFE=1
   export FI_EFA_USE_DEVICE_RDMA=1
   export NCCL_DEBUG_SUBSYS=off
   export NCCL_DEBUG="INFO"
   export SM_NUM_GPUS=8
   export GPU_NUM_DEVICES=8
   export FI_EFA_SET_CUDA_SYNC_MEMOPS=0
   
   # async runtime error ...
   export CUDA_DEVICE_MAX_CONNECTIONS=1
   
   
   #########################
   ## Command and Options ##
   #########################
   
   if [ "$model_size" == "7b" ]; then
       HIDDEN_WIDTH=4096
       NUM_LAYERS=32
       NUM_HEADS=32
       LLAMA_INTERMEDIATE_SIZE=11008
       DEFAULT_SHARD_DEGREE=8
   # More Llama model size options
   elif [ "$model_size" == "70b" ]; then
       HIDDEN_WIDTH=8192
       NUM_LAYERS=80
       NUM_HEADS=64
       LLAMA_INTERMEDIATE_SIZE=28672
       # Reduce for better perf on p4de
       DEFAULT_SHARD_DEGREE=64
   fi
   
   
   if [ -z "$shard_degree" ]; then
       SHARD_DEGREE=$DEFAULT_SHARD_DEGREE
   else
       SHARD_DEGREE=$shard_degree
   fi
   
   if [ -z "$LLAMA_INTERMEDIATE_SIZE" ]; then
       LLAMA_ARGS=""
   else
       LLAMA_ARGS="--llama_intermediate_size $LLAMA_INTERMEDIATE_SIZE "
   fi
   
   
   if [ $use_synthetic_data == 1 ]; then
       echo "using synthetic data"
       declare -a ARGS=(
       --container-image $IMAGE
       --container-mounts $HYPERPOD_PATH,$CHECKPOINT_PATH
       )
   else
       echo "using real data...."
       declare -a ARGS=(
       --container-image $IMAGE
       --container-mounts $HYPERPOD_PATH,$TRAIN_DATA_PATH,$TEST_DATA_PATH,$CHECKPOINT_PATH
       )
   fi
   
   
   declare -a TORCHRUN_ARGS=(
       # change this to match the number of gpus per node:
       --nproc_per_node=8 \
       --nnodes=$SLURM_JOB_NUM_NODES \
       --rdzv_id=$SLURM_JOB_ID \
       --rdzv_backend=c10d \
       --rdzv_endpoint=$(hostname) \
   )
   
   srun -l "${ARGS[@]}" torchrun "${TORCHRUN_ARGS[@]}" /path_to/train_external.py \
               --train_batch_size 4 \
               --max_steps 100 \
               --hidden_width $HIDDEN_WIDTH \
               --num_layers $NUM_LAYERS \
               --num_heads $NUM_HEADS \
               ${LLAMA_ARGS} \
               --shard_degree $SHARD_DEGREE \
               --model_type $model_type \
               --profile_nsys 1 \
               --use_smp_implementation 1 \
               --max_context_width 4096 \
               --tensor_parallel_degree 1 \
               --use_synthetic_data $use_synthetic_data \
               --training_dir $TRAINING_DIR \
               --test_dir $TEST_DIR \
               --dataset_type hf \
               --checkpoint_dir $CHECKPOINT_DIR \
               --checkpoint_freq 100 \
   
   $ sbatch launch_training_enroot.sh
   ```

*Untuk menemukan contoh kode yang dapat diunduh, lihat [Menjalankan pekerjaan pelatihan model-paralel menggunakan perpustakaan paralelisme model SageMaker AI, Docker, dan Enroot dengan Slurm](https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/17.SM-modelparallelv2#option-2----run-training-using-docker-and-enroot) di repositori Pelatihan Terdistribusi Awsome. GitHub * Untuk informasi lebih lanjut tentang pelatihan terdistribusi dengan cluster Slurm SageMaker HyperPod, lanjutkan ke topik berikutnya di. [Menjalankan beban kerja pelatihan terdistribusi dengan Slurm on HyperPod](sagemaker-hyperpod-run-jobs-slurm-distributed-training-workload.md)

# Menjalankan beban kerja pelatihan terdistribusi dengan Slurm on HyperPod
<a name="sagemaker-hyperpod-run-jobs-slurm-distributed-training-workload"></a>

SageMaker HyperPod khusus untuk beban kerja pelatihan model bahasa besar (LLMs) dan model dasar (FMs). Beban kerja ini sering memerlukan penggunaan beberapa teknik paralelisme dan operasi yang dioptimalkan untuk infrastruktur dan sumber daya ML. Dengan menggunakan SageMaker HyperPod, Anda dapat menggunakan kerangka kerja pelatihan terdistribusi SageMaker AI berikut:
+ [Pustaka paralelisme data terdistribusi SageMaker AI (SMDDP)](data-parallel.md) yang menawarkan operasi komunikasi kolektif yang dioptimalkan untuk. AWS
+ [Pustaka paralelisme model SageMaker AI (SMP)](model-parallel-v2.md) yang mengimplementasikan berbagai teknik paralelisme model.

**Topics**
+ [Menggunakan SMDDP pada a SageMaker HyperPod](#sagemaker-hyperpod-run-jobs-slurm-distributed-training-workload-smddp)
+ [Menggunakan SMP pada sebuah cluster SageMaker HyperPod](#sagemaker-hyperpod-run-jobs-slurm-distributed-training-workload-smp)

## Menggunakan SMDDP pada a SageMaker HyperPod
<a name="sagemaker-hyperpod-run-jobs-slurm-distributed-training-workload-smddp"></a>

Perpustakaan [SMDDP adalah perpustakaan](data-parallel.md) komunikasi kolektif yang meningkatkan kinerja komputasi pelatihan paralel data terdistribusi. Pustaka SMDDP bekerja dengan kerangka kerja pelatihan terdistribusi open source berikut:
+ [PyTorchdata paralel terdistribusi (DDP)](https://pytorch.org/docs/stable/notes/ddp.html)
+ [PyTorch paralelisme data yang sepenuhnya dipecah (FSDP)](https://pytorch.org/docs/stable/fsdp.html)
+ [DeepSpeed](https://github.com/microsoft/DeepSpeed)
+ [Megatron- DeepSpeed](https://github.com/microsoft/Megatron-DeepSpeed)

Perpustakaan SMDDP menangani overhead komunikasi dari operasi komunikasi kolektif utama dengan menawarkan yang berikut untuk. SageMaker HyperPod
+ Perpustakaan menawarkan `AllGather` dioptimalkan untuk AWS. `AllGather`adalah operasi kunci yang digunakan dalam pelatihan paralel data sharded, yang merupakan teknik paralelisme data hemat memori yang ditawarkan oleh perpustakaan populer. Ini termasuk perpustakaan paralelisme model SageMaker AI (SMP), DeepSpeed Zero Redundancy Optimizer (Zero), dan PyTorch Fully Sharded Data Parallelism (FSDP).
+ Pustaka melakukan node-to-node komunikasi yang dioptimalkan dengan sepenuhnya memanfaatkan infrastruktur AWS jaringan dan topologi instance SageMaker AI ML. 

**Untuk menjalankan contoh pekerjaan pelatihan data-paralel**

Jelajahi sampel pelatihan terdistribusi berikut yang menerapkan teknik paralelisme data menggunakan perpustakaan SMDDP.
+ [https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/12.SM-dataparallel-FSDP](https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/12.SM-dataparallel-FSDP)
+ [https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/13.SM-dataparallel-deepspeed](https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/13.SM-dataparallel-deepspeed)

**Untuk menyiapkan lingkungan untuk menggunakan pustaka SMDDP pada SageMaker HyperPod**

Berikut ini adalah persyaratan lingkungan pelatihan untuk menggunakan perpustakaan SMDDP pada. SageMaker HyperPod
+ PyTorch v2.0.1 dan yang lebih baru
+ CUDA v11.8 dan yang lebih baru
+ `libstdc++`versi runtime lebih besar dari 3
+ Python v3.10.x dan yang lebih baru
+ `ml.p4d.24xlarge`dan`ml.p4de.24xlarge`, yang didukung jenis instance oleh perpustakaan SMDDP
+ `imdsv2`diaktifkan pada host pelatihan

Bergantung pada bagaimana Anda ingin menjalankan pekerjaan pelatihan terdistribusi, ada dua opsi untuk menginstal perpustakaan SMDDP:
+ Instalasi langsung menggunakan file biner SMDDP.
+ Menggunakan SageMaker AI Deep Learning Containers (DLCs) yang sudah diinstal sebelumnya dengan library SMDDP.

Gambar Docker yang sudah diinstal sebelumnya dengan pustaka SMDDP atau URLs ke file biner SMDDP terdaftar di [Kerangka Kerja yang Didukung](https://docs.aws.amazon.com/sagemaker/latest/dg/distributed-data-parallel-support.html#distributed-data-parallel-supported-frameworks) dalam dokumentasi pustaka SMDDP.

**Untuk menginstal perpustakaan SMDDP pada DLAMI SageMaker HyperPod**
+ `pip install --no-cache-dir https://smdataparallel.s3.amazonaws.com/binary/pytorch/<pytorch-version>/cuXYZ/YYYY-MM-DD/smdistributed_dataparallel-X.Y.Z-cp310-cp310-linux_x86_64.whl`
**catatan**  
Jika Anda bekerja di lingkungan Conda, pastikan Anda menginstal PyTorch menggunakan `conda install` alih-alih. `pip`  

  ```
  conda install pytorch==X.Y.Z  torchvision==X.Y.Z torchaudio==X.Y.Z pytorch-cuda=X.Y.Z -c pytorch -c nvidia
  ```

**Untuk menggunakan perpustakaan SMDDP pada wadah Docker**
+ Pustaka SMDDP sudah diinstal sebelumnya pada SageMaker AI Deep Learning Containers (). DLCs Untuk menemukan daftar kerangka kerja SageMaker DLCs AI PyTorch dengan pustaka SMDDP, lihat [Kerangka Kerja yang Didukung](https://docs.aws.amazon.com/sagemaker/latest/dg/distributed-data-parallel-support.html#distributed-data-parallel-supported-frameworks) dalam dokumentasi pustaka SMDDP. Anda juga dapat membawa wadah Docker Anda sendiri dengan dependensi yang diperlukan diinstal untuk menggunakan perpustakaan SMDDP. Untuk mempelajari lebih lanjut tentang menyiapkan kontainer Docker khusus untuk menggunakan pustaka SMDDP, lihat juga. [Buat wadah Docker Anda sendiri dengan perpustakaan paralel data terdistribusi SageMaker AI](data-parallel-bring-your-own-container.md)
**penting**  
Untuk menggunakan pustaka SMDDP dalam wadah Docker, pasang `/var/log` direktori dari mesin host ke `/var/log` dalam wadah. Ini dapat dilakukan dengan menambahkan opsi berikut saat menjalankan wadah Anda.  

  ```
  docker run <OTHER_OPTIONS> -v /var/log:/var/log ...
  ```

Untuk mempelajari cara menjalankan pekerjaan pelatihan paralel data dengan SMDDP secara umum, lihat. [Pelatihan terdistribusi dengan perpustakaan paralelisme data terdistribusi SageMaker AI](data-parallel-modify-sdp.md)

## Menggunakan SMP pada sebuah cluster SageMaker HyperPod
<a name="sagemaker-hyperpod-run-jobs-slurm-distributed-training-workload-smp"></a>

[Pustaka paralelisme model SageMaker AI (SMP)](model-parallel-v2.md) menawarkan berbagai teknik [paralelisme state-of-the-art model](model-parallel-core-features-v2.md), termasuk:
+ paralelisme data yang sepenuhnya dipecah
+ paralelisme ahli
+ pelatihan presisi campuran FP16 BF16 dengan/dan tipe FP8 data
+ paralelisme tensor

Perpustakaan SMP juga kompatibel dengan kerangka kerja open source seperti PyTorch FSDP, NVIDIA Megatron, dan NVIDIA Transformer Engine.

**Untuk menjalankan contoh beban kerja pelatihan model-paralel**

Tim layanan SageMaker AI menyediakan contoh pekerjaan pelatihan yang menerapkan paralelisme model dengan perpustakaan SMP di. [https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/17.SM-modelparallelv2](https://github.com/aws-samples/awsome-distributed-training/tree/main/3.test_cases/17.SM-modelparallelv2)