

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

# Menyiapkan partisi GPU di Amazon SageMaker HyperPod
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup"></a>

**Topics**
+ [Prasyarat](#sagemaker-hyperpod-eks-gpu-partitioning-setup-prerequisites)
+ [Membuat Cluster dengan Konfigurasi MIG](#sagemaker-hyperpod-eks-gpu-partitioning-setup-create-cluster)
+ [Menambahkan operator GPU ke cluster yang ada](#sagemaker-hyperpod-eks-gpu-partitioning-setup-add-operator)
+ [Memperbarui Konfigurasi MIG](#sagemaker-hyperpod-eks-gpu-partitioning-setup-update)
+ [Memverifikasi Konfigurasi MIG](#sagemaker-hyperpod-eks-gpu-partitioning-setup-verify)
+ [Perintah Umum untuk Debugging Konfigurasi MIG](#sagemaker-hyperpod-eks-gpu-partitioning-setup-debug-commands)
+ [Menggunakan Konsol SageMaker AI](#sagemaker-hyperpod-eks-gpu-partitioning-setup-console)

## Prasyarat
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-prerequisites"></a>
+ HyperPod Cluster Amazon EKS dengan instans GPU yang didukung
+ Operator GPU NVIDIA diinstal
+ Izin IAM yang sesuai untuk manajemen klaster

## Membuat Cluster dengan Konfigurasi MIG
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-create-cluster"></a>

### Menggunakan AWS CLI
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-create-cluster-cli"></a>

```
aws sagemaker create-cluster \
  --cluster-name my-mig-cluster \
  --orchestrator 'Eks={ClusterArn=arn:aws:eks:{{region}}:{{account}}:cluster/{{cluster-name}}}' \
  --instance-groups '{
    "InstanceGroupName": "gpu-group",
    "InstanceType": "ml.p4d.24xlarge",
    "InstanceCount": 1,
    "LifeCycleConfig": {
       "SourceS3Uri": "s3://{{my-bucket}}",
       "OnCreate": "on_create_script.sh"
    },
    "KubernetesConfig": {
       "Labels": {
          "nvidia.com/mig.config": "all-1g.5gb"
       }
    },
    "ExecutionRole": "arn:aws:iam::{{account}}:role/{{execution-role}}",
    "ThreadsPerCore": 1
  }' \
  --vpc-config '{
     "SecurityGroupIds": ["{{sg-12345}}"],
     "Subnets": ["{{subnet-12345}}"]
  }' \
  --node-provisioning-mode Continuous
```

### Menggunakan CloudFormation
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-create-cluster-cfn"></a>

```
{
  "ClusterName": "my-mig-cluster",
  "InstanceGroups": [
    {
      "InstanceGroupName": "gpu-group",
      "InstanceType": "ml.p4d.24xlarge",
      "InstanceCount": 1,
      "KubernetesConfig": {
        "Labels": {
          "nvidia.com/mig.config": "all-2g.10gb"
        }
      },
      "ExecutionRole": "arn:aws:iam::{{account}}:role/{{execution-role}}"
    }
  ],
  "Orchestrator": {
    "Eks": {
      "ClusterArn": "arn:aws:eks:{{region}}:{{account}}:cluster/{{cluster-name}}"
    }
  },
  "NodeProvisioningMode": "Continuous"
}
```

## Menambahkan operator GPU ke cluster yang ada
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-add-operator"></a>

### Instal Operator GPU
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-add-operator-install"></a>

Ganti `{$AWS_REGION}` dengan wilayah cluster Anda (misalnya, us-east-1, us-west-2).

```
helm install gpuo helm_chart/HyperPodHelmChart/charts/gpu-operator \
-f helm_chart/HyperPodHelmChart/charts/gpu-operator/regional-values/values-{$AWS_REGION}.yaml \
-n kube-system
```

### Verifikasi Instalasi (Tunggu 2-3 menit)
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-add-operator-verify"></a>

Periksa semua pod operator GPU yang sedang berjalan:

```
kubectl get pods -n kube-system | grep -E "(gpu-operator|nvidia-)"
```

**Pod yang diharapkan:**
+ gpu-operator-\* - 1 contoh (pengontrol cluster)
+ nvidia-device-plugin-daemonset-\* - 1 per node GPU (semua instance GPU)
+ nvidia-mig-manager-\* - 1 per node berkemampuan MiG (A100/H100)

### Hapus Plugin Perangkat Lama
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-add-operator-remove"></a>

Nonaktifkan yang ada nvidia-device-plugin:

```
helm upgrade dependencies helm_chart/HyperPodHelmChart \
--set nvidia-device-plugin.devicePlugin.enabled=false \
-n kube-system
```

### Verifikasi Sumber Daya GPU
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-add-operator-verify-gpu"></a>

Konfirmasi node menunjukkan kapasitas GPU. Ini harus menampilkan: nvidia.com/gpu: 8 (atau jumlah GPU Anda yang sebenarnya).

```
kubectl describe nodes | grep "nvidia.com/gpu"
```

## Memperbarui Konfigurasi MIG
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-update"></a>

**Mempersiapkan Node Sebelum Pembaruan MIG**  
Sebelum memperbarui konfigurasi MIG pada grup instans Anda, Anda harus menyiapkan node untuk mencegah gangguan beban kerja. Ikuti langkah-langkah ini untuk menguras beban kerja dengan aman dari node yang akan dikonfigurasi ulang.

### Langkah 1: Identifikasi Node dalam Grup Instance
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-update-identify"></a>

Pertama, identifikasi semua node yang termasuk dalam grup instance yang ingin Anda perbarui:

```
# List all nodes in the instance group
kubectl get nodes -l sagemaker.amazonaws.com/instance-group-name={{INSTANCE_GROUP_NAME}}

# Example:
kubectl get nodes -l sagemaker.amazonaws.com/instance-group-name=p4d-group
```

Perintah ini mengembalikan daftar semua node dalam kelompok contoh tertentu. Catat setiap nama node untuk langkah-langkah berikut.

### Langkah 2: Cordon dan Tiriskan Setiap Node
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-update-drain"></a>

Untuk setiap node yang diidentifikasi pada Langkah 1, lakukan tindakan berikut:

#### Cordon Node
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-update-drain-cordon"></a>

Cordoning mencegah pod baru dijadwalkan pada node:

```
# Cordon a single node
kubectl cordon {{NODE_NAME}}

# Example:
kubectl cordon hyperpod-i-014a41a7001adca60
```

#### Kuras Pod Beban Kerja dari Node
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-update-drain-evict"></a>

Kuras node untuk mengusir semua pod beban kerja sambil mempertahankan pod sistem:

```
# Drain the node (ignore DaemonSets and evict pods)
kubectl drain {{NODE_NAME}} \
  --ignore-daemonsets \
  --delete-emptydir-data \
  --force \
  --grace-period=300

# Example:
kubectl drain hyperpod-i-014a41a7001adca60 \
  --ignore-daemonsets \
  --delete-emptydir-data \
  --force \
  --grace-period=300
```

**Opsi Perintah Dijelaskan:**
+ `--ignore-daemonsets`- Memungkinkan operasi pembuangan untuk dilanjutkan bahkan jika DaemonSet polong ada
+ `--delete-emptydir-data`- Menghapus pod menggunakan volume emptyDir (diperlukan agar pengeringan berhasil)
+ `--force`- Memaksa penghapusan pod yang tidak dikelola oleh pengontrol (gunakan dengan hati-hati)
+ `--grace-period=300`- Memberikan pod 5 menit untuk mengakhiri dengan anggun

**penting**  
Operasi pembuangan dapat memakan waktu beberapa menit tergantung pada jumlah polong dan masa tenggang penghentiannya
Pod sistem dalam namespace berikut akan tetap berjalan:`kube-system`,,`cert-manager`,`kubeflow`,`hyperpod-inference-system`,`kube-public`,`mpi-operator`,`gpu-operator`,`aws-hyperpod`, `jupyter-k8s-system``hyperpod-observability`, `kueue-system` dan `keda`
DaemonSet pod akan tetap berada di node (mereka diabaikan oleh desain)

### Langkah 3: Verifikasi Tidak Ada Pod Beban Kerja yang Berjalan
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-update-verify"></a>

Setelah menguras, verifikasi bahwa tidak ada pod beban kerja yang tersisa di node (tidak termasuk ruang nama sistem):

```
# Check for any remaining pods outside system namespaces
kubectl get pods --all-namespaces --field-selector spec.nodeName={{NODE_NAME}} \
  | grep -v "kube-system" \
  | grep -v "cert-manager" \
  | grep -v "kubeflow" \
  | grep -v "hyperpod-inference-system" \
  | grep -v "kube-public" \
  | grep -v "mpi-operator" \
  | grep -v "gpu-operator" \
  | grep -v "aws-hyperpod" \
  | grep -v "jupyter-k8s-system" \
  | grep -v "hyperpod-observability" \
  | grep -v "kueue-system" \
  | grep -v "keda"

# Example:
kubectl get pods --all-namespaces --field-selector spec.nodeName=hyperpod-i-014a41a7001adca60 \
  | grep -v "kube-system" \
  | grep -v "cert-manager" \
  | grep -v "kubeflow" \
  | grep -v "hyperpod-inference-system" \
  | grep -v "kube-public" \
  | grep -v "mpi-operator" \
  | grep -v "gpu-operator" \
  | grep -v "aws-hyperpod" \
  | grep -v "jupyter-k8s-system" \
  | grep -v "hyperpod-observability" \
  | grep -v "kueue-system" \
  | grep -v "keda"
```

**Output yang Diharapkan:** Jika node dikeringkan dengan benar, perintah ini seharusnya tidak mengembalikan hasil (atau hanya menampilkan baris header). Jika ada pod yang masih berjalan, selidiki mengapa mereka tidak diusir dan hapus secara manual jika perlu.

### Langkah 4: Verifikasi Status Kesiapan Node
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-update-readiness"></a>

Sebelum melanjutkan dengan pembaruan MIG, konfirmasikan bahwa semua node ditutup:

```
# Check node status - should show "SchedulingDisabled"
kubectl get nodes -l sagemaker.amazonaws.com/instance-group-name={{INSTANCE_GROUP_NAME}}
```

Node harus ditampilkan `SchedulingDisabled` di kolom STATUS, menunjukkan bahwa mereka ditutup dan siap untuk pembaruan MIG.

### Memperbarui Profil MIG pada Cluster yang Ada
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-update-change"></a>

Anda dapat mengubah profil MIG pada cluster yang ada:

```
aws sagemaker update-cluster \
  --cluster-name my-mig-cluster \
  --instance-groups '{
    "InstanceGroupName": "gpu-group",
    "InstanceType": "ml.p4d.24xlarge",
    "InstanceCount": 1,
    "KubernetesConfig": {
       "Labels": {
          "nvidia.com/mig.config": "all-3g.20gb"
       }
    },
    "ExecutionRole": "arn:aws:iam::{{account}}:role/{{execution-role}}"
  }'
```

**catatan**  
Jika pekerjaan sudah berjalan pada node, partisi MIG akan gagal. Pengguna akan mendapatkan pesan kesalahan untuk menguras node sebelum mencoba kembali partisi MIG.

## Memverifikasi Konfigurasi MIG
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-verify"></a>

Setelah pembuatan atau pembaruan cluster, verifikasi konfigurasi MIG:

```
# Update kubeconfig
aws eks update-kubeconfig --name {{your-eks-cluster}} --region {{us-east-2}}

# Check MIG labels
kubectl get node {{NODE_NAME}} -o=jsonpath='{.metadata.labels}' | grep mig

# Check available MIG resources
kubectl describe node {{NODE_NAME}} | grep -A 10 "Allocatable:"
```

## Perintah Umum untuk Debugging Konfigurasi MIG
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-debug-commands"></a>

Gunakan perintah berikut untuk memecahkan masalah dan memvalidasi konfigurasi MIG di klaster Anda:

```
# Check GPU Operator status
kubectl get pods -n gpu-operator-resources

# View MIG configuration
kubectl exec -n gpu-operator-resources nvidia-driver-XXXXX -- nvidia-smi mig -lgi

# Check device plugin configuration
kubectl logs -n gpu-operator-resources nvidia-device-plugin-XXXXX

# Monitor node events
kubectl get events --field-selector involvedObject.name={{NODE_NAME}}
```

**catatan**  
Ganti `nvidia-driver-XXXXX` dan `nvidia-device-plugin-XXXXX` dengan nama pod yang sebenarnya dari klaster Anda, dan `NODE_NAME` dengan nama node Anda.

## Menggunakan Konsol SageMaker AI
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-console"></a>

### Membuat Cluster Baru dengan MIG
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-console-create"></a>

1. Arahkan ke **Amazon SageMaker AI** > **HyperPod Clusters** > **Cluster Management > **Create HyperPod ** cluster**

1. Pilih **Diatur oleh EKS**

1. Pilih **Penyiapan khusus** dan verifikasi **Operator GPU** diaktifkan secara default

1. Di bawah Bagian **grup instans**, klik **Tambahkan grup**

1. Konfigurasikan grup instans dan arahkan ke **Konfigurasi Lanjutan** untuk mengaktifkan sakelar **Gunakan partisi GPU** dan pilih konfigurasi **MIG** yang Anda inginkan dari dropdown

1. Klik **Tambahkan grup Instance** dan selesaikan konfigurasi cluster yang tersisa

1. Klik **Kirim** untuk membuat cluster

### Memperbarui Konfigurasi MIG pada Cluster yang Ada
<a name="sagemaker-hyperpod-eks-gpu-partitioning-setup-console-update"></a>

1. Arahkan ke **Amazon SageMaker AI** > **HyperPod Clusters > Cluster** **Management**

1. Pilih klaster yang ada dan klik **Edit** pada grup instans yang ingin Anda ubah

1. Dalam **konfigurasi lanjutan**, alihkan **Gunakan partisi GPU** jika belum diaktifkan dan pilih konfigurasi **MIG** yang berbeda dari dropdown

1. Klik **Simpan perubahan**