

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

# Menjalankan pekerjaan di SageMaker HyperPod cluster yang diatur oleh Amazon EKS
<a name="sagemaker-hyperpod-eks-run-jobs"></a>

Topik berikut memberikan prosedur dan contoh mengakses node komputasi dan menjalankan beban kerja MLpada klaster yang disediakan SageMaker HyperPod yang diatur dengan Amazon EKS. Bergantung pada cara Anda mengatur lingkungan di HyperPod cluster Anda, ada banyak cara untuk menjalankan beban kerja ML pada HyperPod cluster.

**catatan**  
Saat menjalankan pekerjaan melalui SageMaker HyperPod CLI atau kubectl, HyperPod dapat melacak pemanfaatan komputasi (jam GPU/CPU) di seluruh ruang nama (tim). Laporan penggunaan daya metrik ini, yang menyediakan:  
Visibilitas ke konsumsi sumber daya yang dialokasikan vs. pinjaman
Pemanfaatan sumber daya tim untuk audit (hingga 180 hari)
Atribusi biaya selaras dengan kebijakan Tata Kelola Tugas
Untuk menggunakan laporan penggunaan, Anda harus menginstal infrastruktur laporan penggunaan. Kami sangat menyarankan untuk mengonfigurasi [Tata Kelola Tugas](sagemaker-hyperpod-eks-operate-console-ui-governance.md) untuk menegakkan kuota komputasi dan mengaktifkan atribusi biaya terperinci.  
Untuk informasi selengkapnya tentang menyiapkan dan membuat laporan penggunaan, lihat [Melaporkan Penggunaan Komputasi di HyperPod](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-usage-reporting.html).

**Tip**  
Untuk pengalaman dan panduan langsung tentang cara menyiapkan dan menggunakan SageMaker HyperPod klaster yang diatur dengan Amazon EKS, kami sarankan untuk menggunakan Dukungan Amazon EKS ini di [lokakarya](https://catalog.us-east-1.prod.workshops.aws/workshops/2433d39e-ccfe-4c00-9d3d-9917b729258e). SageMaker HyperPod

Pengguna ilmuwan data dapat melatih model dasar menggunakan set cluster EKS sebagai orkestrator untuk cluster. SageMaker HyperPod Para ilmuwan memanfaatkan [SageMaker HyperPod CLI](https://github.com/aws/sagemaker-hyperpod-cli) dan `kubectl` perintah asli untuk menemukan SageMaker HyperPod cluster yang tersedia, mengirimkan pekerjaan pelatihan (Pod), dan mengelola beban kerja mereka. SageMaker HyperPod CLI memungkinkan pengiriman pekerjaan menggunakan file skema pekerjaan pelatihan, dan menyediakan kemampuan untuk daftar pekerjaan, deskripsi, pembatalan, dan eksekusi. Para ilmuwan dapat menggunakan [Operator Pelatihan Kubeflow](https://www.kubeflow.org/docs/components/training/overview/) sesuai dengan kuota komputasi yang dikelola oleh HyperPod, dan [SageMaker AI yang dikelola MLflow](https://docs.aws.amazon.com/sagemaker/latest/dg/mlflow.html) untuk mengelola eksperimen dan pelatihan mL. 

**Topics**
+ [Memasang SageMaker HyperPod CLI](sagemaker-hyperpod-eks-run-jobs-access-nodes.md)
+ [SageMaker HyperPod Perintah CLI](sagemaker-hyperpod-eks-hyperpod-cli-reference.md)
+ [Menjalankan pekerjaan menggunakan SageMaker HyperPod CLI](sagemaker-hyperpod-eks-run-jobs-hyperpod-cli.md)
+ [Menjalankan pekerjaan menggunakan `kubectl`](sagemaker-hyperpod-eks-run-jobs-kubectl.md)

# Memasang SageMaker HyperPod CLI
<a name="sagemaker-hyperpod-eks-run-jobs-access-nodes"></a>

SageMaker HyperPod menyediakan paket [antarmuka baris SageMaker HyperPod perintah](https://github.com/aws/sagemaker-hyperpod-cli) (CLI). 

1. Periksa apakah versi Python pada mesin lokal Anda adalah antara 3.8 dan 3.11.

1. [Periksa prasyarat dalam `README` file penurunan harga dalam paket CLI. SageMaker HyperPod ](https://github.com/aws/sagemaker-hyperpod-cli)

1. Kloning paket SageMaker HyperPod CLI dari. GitHub

   ```
   git clone https://github.com/aws/sagemaker-hyperpod-cli.git
   ```

1. Instal SageMaker HyperPod CLI.

   ```
   cd sagemaker-hyperpod-cli && pip install .
   ```

1. Uji apakah SageMaker HyperPod CLI berhasil diinstal dengan menjalankan perintah berikut. 

   ```
   hyperpod --help
   ```

**catatan**  
Jika Anda seorang ilmuwan data dan ingin menggunakan SageMaker HyperPod CLI, pastikan bahwa peran IAM Anda diatur dengan benar oleh admin cluster Anda mengikuti instruksi di dan. [Pengguna IAM untuk ilmuwan](sagemaker-hyperpod-prerequisites-iam.md#sagemaker-hyperpod-prerequisites-iam-cluster-user) [Menyiapkan kontrol akses berbasis peran Kubernetes](sagemaker-hyperpod-eks-setup-rbac.md)

# SageMaker HyperPod Perintah CLI
<a name="sagemaker-hyperpod-eks-hyperpod-cli-reference"></a>

Tabel berikut merangkum perintah SageMaker HyperPod CLI.

**catatan**  
[Untuk referensi CLI lengkap, lihat [README](https://github.com/aws/sagemaker-hyperpod-cli?tab=readme-ov-file#sagemaker-hyperpod-command-line-interface) di repositori CLI SageMaker HyperPod . GitHub](https://github.com/aws/sagemaker-hyperpod-cli)


| SageMaker HyperPod Perintah CLI | Entitas  | Deskripsi | 
| --- | --- | --- | 
| hyperpod get-clusters | klaster/akses | Daftar semua cluster tempat pengguna telah diaktifkan dengan izin IAM untuk mengirimkan beban kerja pelatihanMemberikan snapshot saat ini dari seluruh instance yang tersedia yang tidak menjalankan beban kerja atau pekerjaan apa pun bersama dengan kapasitas maksimum, dikelompokkan berdasarkan status pemeriksaan kesehatan (mis:) BurnInPassed | 
| hyperpod connect-cluster | klaster/akses | Mengkonfigurasi kubectl untuk beroperasi pada HyperPod cluster dan namespace yang ditentukan | 
| hyperpod start-job  | pekerjaan | Mengirimkan pekerjaan ke nama pekerjaan Cluster yang ditargetkan akan unik di tingkat namespace - Pengguna akan dapat mengganti spesifikasi yaml dengan meneruskannya sebagai argumen CLI | 
| hyperpod get-job | pekerjaan | Menampilkan metadata dari pekerjaan yang dikirimkan | 
| hyperpod list-jobs | pekerjaan | Daftar semua pekerjaan yang cluster/namespace terhubung dengan pengguna yang telah ditambahkan dengan izin IAM untuk mengirimkan beban kerja pelatihan | 
| hyperpod cancel-job | pekerjaan | Menghentikan dan menghapus pekerjaan dan melepaskan sumber daya komputasi yang mendasarinya. Pekerjaan ini tidak dapat dilanjutkan lagi. Pekerjaan baru harus dimulai, jika diperlukan. | 
| hyperpod list-pods | pod | Daftar semua pod dalam pekerjaan yang diberikan di namespace | 
| hyperpod get-log | pod | Mengambil log dari pod particulat dalam pekerjaan tertentu | 
| hyperpod exec | pod | Jalankan perintah bash di shell pod yang ditentukan dan terbitkan outputnya | 
| hyperpod --help | utilitas | daftar semua perintah yang didukung | 

# Menjalankan pekerjaan menggunakan SageMaker HyperPod CLI
<a name="sagemaker-hyperpod-eks-run-jobs-hyperpod-cli"></a>

Untuk menjalankan pekerjaan, pastikan Anda menginstal Kubeflow Training Operator di kluster EKS. Untuk informasi selengkapnya, lihat [Menginstal paket di cluster Amazon EKS menggunakan Helm](sagemaker-hyperpod-eks-install-packages-using-helm-chart.md).

Jalankan `hyperpod get-cluster` perintah untuk mendapatkan daftar HyperPod cluster yang tersedia.

```
hyperpod get-clusters
```

Jalankan `hyperpod connect-cluster` untuk mengkonfigurasi SageMaker HyperPod CLI dengan kluster EKS yang mengatur cluster. HyperPod 

```
hyperpod connect-cluster --cluster-name <hyperpod-cluster-name>
```

Gunakan `hyperpod start-job` perintah untuk menjalankan pekerjaan. Perintah berikut menunjukkan perintah dengan opsi yang diperlukan. 

```
hyperpod start-job \
    --job-name <job-name>
    --image <docker-image-uri>
    --entry-script <entrypoint-script>
    --instance-type <ml.instance.type>
    --node-count <integer>
```

`hyperpod start-job`Perintah ini juga dilengkapi dengan berbagai opsi seperti resume otomatis pekerjaan dan penjadwalan pekerjaan.

## Mengaktifkan resume otomatis pekerjaan
<a name="sagemaker-hyperpod-eks-run-jobs-hyperpod-cli-enable-auto-resume"></a>

`hyperpod start-job`Perintah ini juga memiliki opsi berikut untuk menentukan resume otomatis pekerjaan. Untuk mengaktifkan resume otomatis pekerjaan agar berfungsi dengan fitur ketahanan SageMaker HyperPod simpul, Anda harus menetapkan nilai opsi tersebut. `restart-policy` `OnFailure` Pekerjaan harus berjalan di bawah `kubeflow` namespace atau namespace yang diawali dengan. `hyperpod`
+ [--auto-resume<bool>] \$1Optional, aktifkan resume otomatis pekerjaan setelah gagal, defaultnya salah
+ [--max-retry<int>] \$1Optional, jika auto-resume benar, nilai default max-retry adalah 1 jika tidak ditentukan
+ [--restart-policy<enum>] \$1Optional, mulai ulang kebijakan. PyTorchJob Nilai yang tersedia adalah`Always`,`OnFailure`, `Never` atau`ExitCode`. Nilai default-nya adalah `OnFailure`. 

```
hyperpod start-job \
    ... // required options \
    --auto-resume true \
    --max-retry 3 \
    --restart-policy OnFailure
```

## Menjalankan pekerjaan dengan opsi penjadwalan
<a name="sagemaker-hyperpod-eks-run-jobs-hyperpod-cli-scheduling"></a>

`hyperpod start-job`Perintah memiliki opsi berikut untuk mengatur pekerjaan dengan mekanisme antrian. 

**catatan**  
Anda perlu [Kueue](https://kueue.sigs.k8s.io/docs/overview/) diinstal di cluster EKS. Jika Anda belum menginstal, ikuti instruksi di[Pengaturan untuk tata kelola SageMaker HyperPod tugas](sagemaker-hyperpod-eks-operate-console-ui-governance-setup.md).
+ [--scheduler-type<enum>] \$1Optional, Tentukan jenis penjadwal. Nilai default-nya `Kueue`.
+ [--queue-name<string>] \$1Optional, Tentukan nama Antrian [Lokal atau Antrian](https://kueue.sigs.k8s.io/docs/concepts/local_queue/) [Cluster yang ingin Anda kirimkan](https://kueue.sigs.k8s.io/docs/concepts/cluster_queue/) dengan pekerjaan. Antrian harus dibuat oleh admin cluster menggunakan. `CreateComputeQuota`
+ [--priority<string>] \$1Optional, Tentukan nama [Kelas Prioritas Beban Kerja](https://kueue.sigs.k8s.io/docs/concepts/workload_priority_class/), yang harus dibuat oleh admin klaster.

```
hyperpod start-job \
    ... // required options
    --scheduler-type Kueue \
    --queue-name high-priority-queue \
    --priority high
```

## Menjalankan pekerjaan dari file konfigurasi
<a name="sagemaker-hyperpod-eks-run-jobs-hyperpod-cli-from-config"></a>

Sebagai alternatif, Anda dapat membuat file konfigurasi pekerjaan yang berisi semua parameter yang diperlukan oleh pekerjaan dan kemudian meneruskan file konfigurasi ini ke `hyperpod start-job` perintah menggunakan opsi --config-file. Dalam kasus ini:

1. Buat file konfigurasi pekerjaan Anda dengan parameter yang diperlukan. [Lihat file konfigurasi pekerjaan di GitHub repositori SageMaker HyperPod CLI untuk file konfigurasi dasar.](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-run-jobs-hyperpod-cli.html#sagemaker-hyperpod-eks-hyperpod-cli-from-config)

1. Mulai pekerjaan menggunakan file konfigurasi sebagai berikut.

   ```
   hyperpod start-job --config-file /path/to/test_job.yaml
   ```

**Tip**  
Untuk daftar lengkap parameter `hyperpod start-job` perintah, lihat bagian [Submitting a Job](https://github.com/aws/sagemaker-hyperpod-cli?tab=readme-ov-file#submitting-a-job) di repositori `README.md` CLI SageMaker HyperPod . GitHub 

# Menjalankan pekerjaan menggunakan `kubectl`
<a name="sagemaker-hyperpod-eks-run-jobs-kubectl"></a>

**catatan**  
Resume otomatis pekerjaan pelatihan memerlukan versi rilis Operator Pelatihan Kubeflow`1.7.0`,`1.8.0`, atau. `1.8.1`

Perhatikan bahwa Anda harus menginstal Kubeflow Training Operator di cluster menggunakan bagan Helm. Untuk informasi selengkapnya, lihat [Menginstal paket di cluster Amazon EKS menggunakan Helm](sagemaker-hyperpod-eks-install-packages-using-helm-chart.md). Verifikasi apakah bidang kontrol Operator Pelatihan Kubeflow telah diatur dengan benar dengan menjalankan perintah berikut.

```
kubectl get pods -n kubeflow
```

Ini harus mengembalikan output yang mirip dengan yang berikut ini.

```
NAME                                             READY   STATUS    RESTARTS   AGE
training-operator-658c68d697-46zmn               1/1     Running   0          90s
```

**Untuk mengirimkan pekerjaan pelatihan**

Untuk menjalankan pekerjaan pelatihan, siapkan file konfigurasi pekerjaan dan jalankan [https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply)perintah sebagai berikut.

```
kubectl apply -f /path/to/training_job.yaml
```

**Untuk menggambarkan pekerjaan pelatihan**

Untuk mengambil rincian pekerjaan yang dikirimkan ke cluster EKS, gunakan perintah berikut. Ini mengembalikan informasi pekerjaan seperti waktu pengiriman pekerjaan, waktu penyelesaian, status pekerjaan, detail konfigurasi.

```
kubectl get -o yaml training-job -n kubeflow
```

**Untuk menghentikan pekerjaan pelatihan dan menghapus sumber daya EKS**

Untuk menghentikan pekerjaan pelatihan, gunakan kubectl delete. Berikut ini adalah contoh menghentikan pekerjaan pelatihan yang dibuat dari file konfigurasi`pytorch_job_simple.yaml`.

```
kubectl delete -f /path/to/training_job.yaml 
```

Ini harus mengembalikan output berikut.

```
pytorchjob.kubeflow.org "training-job" deleted
```

**Untuk mengaktifkan resume pekerjaan secara otomatis**

SageMaker HyperPod mendukung fungsi resume otomatis pekerjaan untuk pekerjaan Kubernetes, terintegrasi dengan bidang kontrol Operator Pelatihan Kubeflow.

Pastikan ada node yang cukup di cluster yang telah lulus pemeriksaan SageMaker HyperPod kesehatan. Node harus memiliki taint yang `sagemaker.amazonaws.com/node-health-status` disetel ke`Schedulable`. Disarankan untuk menyertakan pemilih node dalam file YAMM pekerjaan untuk memilih node dengan konfigurasi yang sesuai sebagai berikut.

```
sagemaker.amazonaws.com/node-health-status: Schedulable
```

Cuplikan kode berikut adalah contoh cara memodifikasi konfigurasi YAMM pekerjaan Kubeflow untuk mengaktifkan PyTorch fungsionalitas resume pekerjaan secara otomatis. Anda perlu menambahkan dua anotasi dan `restartPolicy` mengatur `OnFailure` sebagai berikut.

```
apiVersion: "kubeflow.org/v1"
kind: PyTorchJob 
metadata:
    name: pytorch-simple
    namespace: kubeflow
    annotations: { // config for job auto resume
      sagemaker.amazonaws.com/enable-job-auto-resume: "true"
      sagemaker.amazonaws.com/job-max-retry-count: "2"
    }
spec:
  pytorchReplicaSpecs:
  ......
  Worker:
      replicas: 10
      restartPolicy: OnFailure
      template:
          spec:
              nodeSelector:
                  sagemaker.amazonaws.com/node-health-status: Schedulable
```

**Untuk memeriksa status resume otomatis pekerjaan**

Jalankan perintah berikut untuk memeriksa status resume otomatis pekerjaan.

```
kubectl describe pytorchjob -n kubeflow <job-name>
```

Bergantung pada pola kegagalannya, Anda mungkin melihat dua pola pekerjaan pelatihan Kubeflow dimulai kembali sebagai berikut.

**Pola 1**:

```
Start Time:    2024-07-11T05:53:10Z
Events:
  Type     Reason                   Age                    From                   Message
  ----     ------                   ----                   ----                   -------
  Normal   SuccessfulCreateService  9m45s                  pytorchjob-controller  Created service: pt-job-1-worker-0
  Normal   SuccessfulCreateService  9m45s                  pytorchjob-controller  Created service: pt-job-1-worker-1
  Normal   SuccessfulCreateService  9m45s                  pytorchjob-controller  Created service: pt-job-1-master-0
  Warning  PyTorchJobRestarting     7m59s                  pytorchjob-controller  PyTorchJob pt-job-1 is restarting because 1 Master replica(s) failed.
  Normal   SuccessfulCreatePod      7m58s (x2 over 9m45s)  pytorchjob-controller  Created pod: pt-job-1-worker-0
  Normal   SuccessfulCreatePod      7m58s (x2 over 9m45s)  pytorchjob-controller  Created pod: pt-job-1-worker-1
  Normal   SuccessfulCreatePod      7m58s (x2 over 9m45s)  pytorchjob-controller  Created pod: pt-job-1-master-0
  Warning  PyTorchJobRestarting     7m58s                  pytorchjob-controller  PyTorchJob pt-job-1 is restarting because 1 Worker replica(s) failed.
```

**Pola 2**: 

```
Events:
  Type    Reason                   Age    From                   Message
  ----    ------                   ----   ----                   -------
  Normal  SuccessfulCreatePod      19m    pytorchjob-controller  Created pod: pt-job-2-worker-0
  Normal  SuccessfulCreateService  19m    pytorchjob-controller  Created service: pt-job-2-worker-0
  Normal  SuccessfulCreatePod      19m    pytorchjob-controller  Created pod: pt-job-2-master-0
  Normal  SuccessfulCreateService  19m    pytorchjob-controller  Created service: pt-job-2-master-0
  Normal  SuccessfulCreatePod      4m48s  pytorchjob-controller  Created pod: pt-job-2-worker-0
  Normal  SuccessfulCreatePod      4m48s  pytorchjob-controller  Created pod: pt-job-2-master-0
```