

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

# Instance spot di Amazon SageMaker HyperPod
<a name="sagemaker-hyperpod-spot"></a>

Amazon SageMaker HyperPod mendukung Instans Spot Amazon EC2, memungkinkan penghematan biaya yang signifikan untuk beban kerja yang toleran terhadap kesalahan dan tanpa kewarganegaraan. AI/ML Kasus penggunaan termasuk inferensi batch dan pekerjaan pelatihan, penyetelan hiperparameter, dan beban kerja eksperimental. Anda juga dapat menggunakan Instans Spot untuk secara otomatis menskalakan kapasitas komputasi Anda ketika kapasitas berbiaya rendah ini tersedia dan skala kembali ke kapasitas Sesuai Permintaan ketika kapasitas Spot tambahan direklamasi.

Secara default, Instans Spot HyperPod bekerja dengan HyperPod [fitur penyediaan berkelanjutan](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-scaling-eks.html), yang memungkinkan SageMaker HyperPod untuk secara otomatis menyediakan kapasitas yang tersisa di latar belakang saat beban kerja segera dimulai pada instance yang tersedia. Saat penyediaan node mengalami kegagalan karena kendala kapasitas atau masalah lain, coba ulang SageMaker HyperPod secara otomatis di latar belakang hingga cluster mencapai skala yang diinginkan, sehingga operasi penskalaan otomatis Anda tetap tangguh dan tidak diblokir. Anda juga dapat menggunakan Instans Spot dengan penskalaan otomatis berbasis [Karpenter](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-autoscaling.html).

**Kemampuan & Konsep Utama untuk dipertimbangkan**
+ Dapatkan penghematan biaya hingga 90% dibandingkan dengan instans On-Demand
+ Gunakan Instans Spot untuk pekerjaan yang dapat menangani interupsi dan di mana waktu mulai dan penyelesaian pekerjaan fleksibel
+ Saat menggunakan Karpenter untuk penskalaan otomatis, Anda dapat mengonfigurasi HyperPod untuk secara otomatis mundur ke On-Demand ketika kapasitas Spot terganggu atau tidak tersedia
+ Akses berbagai jenis instans CPU, GPU, dan akselerator yang didukung oleh HyperPod
+ Ketersediaan kapasitas tergantung pada pasokan dari EC2 dan bervariasi menurut wilayah dan jenis instans
+ Anda dapat melakukan berbagai tindakan seperti mengidentifikasi kemungkinan mendapatkan instans yang diinginkan atau terputus, menggunakan berbagai alat seperti [Spot Instance Advisor](https://aws.amazon.com/ec2/spot/instance-advisor/) yang disediakan oleh EC2

## Memulai
<a name="sagemaker-hyperpod-spot-instance-getstart"></a>

### Prasyarat
<a name="sagemaker-hyperpod-spot-instance-getstart-prereq"></a>

Sebelum Anda mulai, pastikan Anda memiliki:

#### AWS CLI diinstal dan dikonfigurasi
<a name="sagemaker-hyperpod-spot-instance-getstart-prereq-cli"></a>

Siapkan AWS kredensil dan wilayah Anda:

```
aws configure
```

Lihat [dokumentasi AWS kredensyal untuk instruksi](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/setup-credentials.html) terperinci.

#### Peran IAM untuk eksekusi SageMaker HyperPod
<a name="sagemaker-hyperpod-spot-instance-getstart-prereq-iam"></a>

Untuk memperbarui cluster, Anda harus terlebih dahulu membuat izin [AWS Identity and Access Management](https://aws.amazon.com/iam/) (IAM) untuk Karpenter. Untuk petunjuk, lihat [Membuat peran IAM untuk HyperPod penskalaan otomatis](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-autoscaling-iam.html) dengan Karpenter.

#### Pengaturan Kluster VPC dan EKS
<a name="sagemaker-hyperpod-spot-instance-getstart-prereq-cluster"></a>

**2.1 Buat VPC dan EKS Cluster**

Ikuti [panduan penyiapan HyperPod EKS](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-install-packages-using-helm-chart.html) untuk:

1. Buat VPC dengan subnet di beberapa Availability Zone

1. Buat kluster EKS

1. Instal [dependensi yang diperlukan](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-install-packages-using-helm-chart.html) menggunakan bagan Helm

**2.2 Tetapkan Variabel Lingkungan**

```
export EKS_CLUSTER_ARN="arn:aws:eks:REGION:ACCOUNT_ID:cluster/CLUSTER_NAME"
export EXECUTION_ROLE="arn:aws:iam::ACCOUNT_ID:role/SageMakerExecutionRole"
export BUCKET_NAME="your-s3-bucket-name"
export SECURITY_GROUP="sg-xxxxx"
export SUBNET="subnet-xxxxx"
export SUBNET1="subnet-xxxxx"
export SUBNET2="subnet-xxxxx"
export SUBNET3="subnet-xxxxx"
```

#### Kuota layanan untuk instans Spot
<a name="sagemaker-hyperpod-spot-instance-getstart-prereq-quota"></a>

Pastikan Anda memiliki kuota yang diperlukan untuk instance yang akan Anda buat di cluster. SageMaker HyperPod Untuk meninjau kuota Anda, pada konsol Service Quotas, AWS pilih layanan di panel navigasi, lalu pilih. SageMaker Misalnya, tangkapan layar berikut menunjukkan kuota yang tersedia untuk instance c5.

![\[Gambar yang berisi informasi wilayah biaya.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/Screenshot-cluster-quota.png)


#### Periksa Ketersediaan Spot
<a name="sagemaker-hyperpod-spot-instance-getstart-prereq-availability"></a>

Sebelum membuat grup instans Spot, periksa ketersediaan di Availability Zone yang berbeda:

```
aws ec2 get-spot-placement-scores \
  --region us-west-2 \
  --instance-types c5.2xlarge \
  --target-capacity 10 \
  --single-availability-zone \
  --region-names us-west-2
```

**Tip**: Target Availability Zone dengan skor penempatan yang lebih tinggi untuk ketersediaan yang lebih baik. Anda juga dapat memeriksa Spot Instance Advisor dan harga EC2 Spot untuk ketersediaan. Pilih Availability Zone yang diperlukan dengan skor ketersediaan yang lebih baik dan konfigurasikan grup Instance dengan subnet terkait untuk meluncurkan instance di AZ tersebut.

### Membuat Grup Instance (Tanpa Penskalaan Otomatis)
<a name="sagemaker-hyperpod-spot-instance-getstart-create"></a>

**CreateCluster (Tempat)**

```
aws sagemaker create-cluster \
    --cluster-name clusterNameHere \
    --orchestrator 'Eks={ClusterArn='$EKS_CLUSTER_ARN'}' \
    --node-provisioning-mode "Continuous" \
    --cluster-role 'arn:aws:iam::YOUR-ACCOUNT-ID:role/SageMakerHyperPodRole' \
    --instance-groups '[{
        "InstanceGroupName": "auto-spot-c5-2x-az1",
        "InstanceType": "ml.c5.2xlarge",
        "InstanceCount": 2,
        "CapacityRequirements: { "Spot": {} }
        "LifeCycleConfig": {
        "SourceS3Uri": "s3://'$BUCKET_NAME'",
        "OnCreate": "on_create_noop.sh"
        },
        "ExecutionRole": "'$EXECUTION_ROLE'",
        "ThreadsPerCore": 1,
        "OverrideVpcConfig": {
            "SecurityGroupIds": ["'$SECURITY_GROUP'"],
            "Subnets": ["'$SUBNET1'"]
         }
    }]' 
    --vpc-config '{
        "SecurityGroupIds": ["'$SECURITY_GROUP'"],
        "Subnets": ["'$SUBNET'"] 
    }'
```

**Update Cluster (Spot\$1Sesuai Permintaan)**

```
aws sagemaker update-cluster \
   --cluster-name "my-cluster" \
   --instance-groups '[{
        "InstanceGroupName": "auto-spot-c5-x-az3",
        "InstanceType": "ml.c5.xlarge",
        "InstanceCount": 2,
        "CapacityRequirements: { "Spot": {} },
        "LifeCycleConfig": {
            "SourceS3Uri": "s3://'$BUCKET_NAME'",
            "OnCreate": "on_create_noop.sh"
        },
        "ExecutionRole": "'$EXECUTION_ROLE'",
        "ThreadsPerCore": 1,
        "OverrideVpcConfig": {
            "SecurityGroupIds": ["'$SECURITY_GROUP'"],
            "Subnets": ["'$SUBNET3'"]
        }
    },
    {
        "InstanceGroupName": "auto-spot-c5-2x-az2",
        "InstanceType": "ml.c5.2xlarge",
        "InstanceCount": 2,
        "CapacityRequirements: { "Spot": {} }
        "LifeCycleConfig": {
        "SourceS3Uri": "s3://'$BUCKET_NAME'",
        "OnCreate": "on_create_noop.sh"
        },
        "ExecutionRole": "'$EXECUTION_ROLE'",
        "ThreadsPerCore": 1,
        "OverrideVpcConfig": {
            "SecurityGroupIds": ["'$SECURITY_GROUP'"],
            "Subnets": ["'$SUBNET2'"]
         }
    },
    {   
        "InstanceGroupName": "auto-ondemand-c5-2x-az1",
        "InstanceType": "ml.c5.2xlarge",
        "InstanceCount": 2,
        "LifeCycleConfig": {
        "SourceS3Uri": "s3://'$BUCKET_NAME'",
        "OnCreate": "on_create_noop.sh"
        },
        "ExecutionRole": "'$EXECUTION_ROLE'",
        "ThreadsPerCore": 1,
        "OverrideVpcConfig": {
            "SecurityGroupIds": ["'$SECURITY_GROUP'"],
            "Subnets": ["'$SUBNET1'"]
         }
    }]'
```

`CapacityRequirements`tidak dapat diubah setelah Grup Instance dibuat.

**Jelaskan Cluster**

```
aws sagemaker describe-cluster --cluster-name $HP_CLUSTER_NAME --region us-west-2
```

```
## Sample Response
{
    "ClusterName": "my-cluster",
    "InstanceGroups": [
        {
            "InstanceGroupName": "ml.c5.2xlarge",
            "InstanceType": "ml.c5.xlarge",
            "InstanceCount": 5,
            "CurrentCount": 3,
            "CapacityRequirements: { "Spot": {} },
            "ExecutionRole": "arn:aws:iam::account:role/SageMakerExecutionRole",
            "InstanceStorageConfigs": [...],
            "OverrideVpcConfig": {...}
        }
        // Other IGs
    ]
}
```

**DescribeClusterNode**

```
aws sagemaker describe-cluster-node --cluster-name $HP_CLUSTER_NAME --region us-west-2
```

```
## Sample Response
{
  "NodeDetails": {
    "InstanceId": "i-1234567890abcdef1",
    "InstanceGroupName": "ml.c5.2xlarge",
    "CapacityType": "Spot",
    "InstanceStatus": {...}
  }
}
```

### Menggunakan Konsol
<a name="sagemaker-hyperpod-spot-instance-getstart-console"></a>

#### Buat dan konfigurasikan SageMaker HyperPod cluster
<a name="sagemaker-hyperpod-spot-instance-getstart-console-create"></a>

Untuk memulai, luncurkan dan konfigurasikan kluster SageMaker HyperPod EKS Anda dan verifikasi bahwa mode penyediaan berkelanjutan diaktifkan pada pembuatan klaster. Selesaikan langkah-langkah berikut:

1. Di konsol SageMaker AI, pilih HyperPod cluster di panel navigasi.

1. Pilih Buat HyperPod klaster dan Diatur di Amazon EKS.

1. Untuk opsi Pengaturan, pilih Pengaturan khusus.

1. Untuk Nama, masukkan nama.

1. Untuk pemulihan Instans, pilih Otomatis.

1. Untuk mode penyediaan Instance, pilih Gunakan penyediaan berkelanjutan.

1. CapacityType : Pilih Spot 

1. Pilih Kirim.

Cuplikan layar Konsol: 

![\[Gambar yang berisi aliran cluster penciptaan.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/Screenshot-create-cluster.png)


Pengaturan ini membuat konfigurasi yang diperlukan seperti virtual private cloud (VPC), subnet, grup keamanan, dan kluster EKS, dan menginstal operator di cluster. Anda juga dapat menyediakan sumber daya yang ada seperti kluster EKS jika Anda ingin menggunakan cluster yang ada alih-alih membuat yang baru. Pengaturan ini akan memakan waktu sekitar 20 menit.

#### Menambahkan Grup Instance Spot baru ke cluster yang sama
<a name="sagemaker-hyperpod-spot-instance-getstart-console-add"></a>

Untuk menambahkan IG Spot ke cluster HyperPod EKS Anda yang ada. Selesaikan langkah-langkah berikut:

1. Di konsol SageMaker AI, pilih HyperPod cluster di panel navigasi.

1. Pilih HyperPod klaster yang ada dengan Orkestrasi Amazon EKS (Pastikan penyediaan berkelanjutan diaktifkan).

1. Klik Edit.

1. Pada halaman Edit Cluster, klik Buat grup instans.

1. Pilih tipe kapasitas: Instans spot dalam konfigurasi grup instans.

1. Klik Buat grup instans. 

1. Klik Kirim.

**Cuplikan layar Konsol:**

![\[Gambar yang berisi alur pembuatan grup instance.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/Screenshot-instance-group.png)


### Menggunakan CloudFormation
<a name="sagemaker-hyperpod-spot-instance-getstart-cfn"></a>

```
Resources:
  TestCluster:
    Type: AWS::SageMaker::Cluster
    Properties:
      ClusterName: "SampleCluster"
      InstanceGroups:
        - InstanceGroupName: group1
          InstanceType: ml.c5.2xlarge
          InstanceCount: 1
          LifeCycleConfig:
            SourceS3Uri: "s3://'$BUCKET_NAME'"
            OnCreate: "on_create_noop.sh"
          ExecutionRole: "'$EXECUTION_ROLE'",
          ThreadsPerCore: 1
          CapacityRequirements:
            Spot: {}
      VpcConfig:
        Subnets:
          - "'$SUBNET1'"
        SecurityGroupIds:
          - "'$SECURITY_GROUP'"
      Orchestrator:
        Eks:
          ClusterArn:
            '$EKS_CLUSTER_ARN'
      NodeProvisioningMode: "Continuous"
      NodeRecovery: "Automatic"
```

Silakan lihat [https://docs.aws.amazon.com/sagemaker/latest/dg/smcluster- getting-started-eks-console - create-cluster-cfn .html](https://docs.aws.amazon.com/sagemaker/latest/dg/smcluster-getting-started-eks-console-create-cluster-cfn.html) untuk detailnya.

### Autoscaling berbasis Karpenter
<a name="sagemaker-hyperpod-spot-instance-getstart-karpenter"></a>

#### Buat peran cluster
<a name="sagemaker-hyperpod-spot-instance-getstart-karpenter-role"></a>

**Langkah 1: Arahkan ke Konsol IAM**

1. Pergi ke layanan **Konsol Manajemen AWS**→ **IAM**

1. Klik **Peran** di bilah sisi kiri

1. Klik **Buat peran**

**Langkah 2: Siapkan Kebijakan Kepercayaan**

1. Pilih Kebijakan kepercayaan khusus (bukan AWS layanan)

1. Ganti JSON default dengan kebijakan kepercayaan ini:

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "hyperpod.sagemaker.amazonaws.com"
                ]
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

klik Berikutnya

**Langkah 3: Buat Kebijakan Izin Kustom**

Karena ini adalah SageMaker izin khusus, Anda harus membuat kebijakan khusus:

1. Klik **Buat kebijakan** (buka tab baru)

1. Klik tab **JSON**

1. Masukkan kebijakan ini:

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "sagemaker:BatchAddClusterNodes",
           "sagemaker:BatchDeleteClusterNodes"
         ],
         "Resource": "*"
       }
     ]
   }
   ```

1. Klik **Berikutnya**

1. Berikan nama seperti `SageMakerHyperPodRolePolicy`

1. Klik **Buat kebijakan**

**Langkah 4: Lampirkan Kebijakan ke Peran**

1. Kembali ke tab pembuatan peran Anda

1. Segarkan daftar kebijakan

1. Cari dan pilih kebijakan yang baru dibuat

1. Klik **Berikutnya**

**Langkah 5: Nama dan Buat Peran**

1. Masukkan nama peran (mis.,`SageMakerHyperPodRole`)

1. Tambahkan deskripsi jika diinginkan

1. Tinjau kebijakan kepercayaan dan izin

1. Klik **Buat peran**

#### Verifikasi
<a name="sagemaker-hyperpod-spot-instance-getstart-karpenter-verify"></a>

Setelah pembuatan, Anda dapat memverifikasi dengan:
+ Memeriksa tab Trust relationship menunjukkan layanan hyperpod
+ Memeriksa tab Izin menunjukkan kebijakan kustom Anda
+ Peran ARN akan tersedia untuk digunakan dengan HyperPod

Format ARN peran adalah:

```
 arn:aws:iam::YOUR-ACCOUNT-ID:role/SageMakerHyperPodRole
```

#### Buat Cluster dengan AutoScaling:
<a name="sagemaker-hyperpod-spot-instance-getstart-karpenter-create-cluster"></a>

Untuk ketersediaan yang lebih baik, buat IGs beberapa AZs dengan mengonfigurasi Subnet. Anda juga dapat menyertakan onDemand IGs untuk fallback.

```
aws sagemaker create-cluster \
    --cluster-name clusterNameHere \
    --orchestrator 'Eks={ClusterArn='$EKS_CLUSTER_ARN'}' \
    --node-provisioning-mode "Continuous" \
    --cluster-role 'arn:aws:iam::YOUR-ACCOUNT-ID:role/SageMakerHyperPodRole' \
    --instance-groups '[{
        "InstanceGroupName": "auto-spot-c5-2x-az1",
        "InstanceType": "ml.c5.2xlarge",
        "InstanceCount": 0, // For Auto scaling keep instance count as 0
        "CapacityRequirements: { "Spot": {} }
        "LifeCycleConfig": {
        "SourceS3Uri": "s3://'$BUCKET_NAME'",
        "OnCreate": "on_create_noop.sh"
        },
        "ExecutionRole": "'$EXECUTION_ROLE'",
        "ThreadsPerCore": 1,
        "OverrideVpcConfig": {
            "SecurityGroupIds": ["'$SECURITY_GROUP'"],
            "Subnets": ["'$SUBNET1'"]
         }
    }]' 
--vpc-config '{
    "SecurityGroupIds": ["'$SECURITY_GROUP'"],
    "Subnets": ["'$SUBNET'"] 
}'
--auto-scaling ' {
    "Mode": "Enable",
    "AutoScalerType": "Karpenter"
}'
```

#### Update Cluster (Spot\$1Sesuai Permintaan)
<a name="sagemaker-hyperpod-spot-instance-getstart-karpenter-update-cluster"></a>

```
aws sagemaker update-cluster \
   --cluster-name "my-cluster" \
   --instance-groups '[{
        "InstanceGroupName": "auto-spot-c5-x-az3",
        "InstanceType": "ml.c5.xlarge",
        "InstanceCount": 2,
        "CapacityRequirements: { "Spot": {} },
        "LifeCycleConfig": {
            "SourceS3Uri": "s3://'$BUCKET_NAME'",
            "OnCreate": "on_create_noop.sh"
        },
        "ExecutionRole": "'$EXECUTION_ROLE'",
        "ThreadsPerCore": 1,
        "OverrideVpcConfig": {
            "SecurityGroupIds": ["'$SECURITY_GROUP'"],
            "Subnets": ["'$SUBNET3'"]
        }
    },
    {
        "InstanceGroupName": "auto-spot-c5-2x-az2",
        "InstanceType": "ml.c5.2xlarge",
        "InstanceCount": 2,
        "CapacityRequirements: { "Spot": {} }
        "LifeCycleConfig": {
        "SourceS3Uri": "s3://'$BUCKET_NAME'",
        "OnCreate": "on_create_noop.sh"
        },
        "ExecutionRole": "'$EXECUTION_ROLE'",
        "ThreadsPerCore": 1,
        "OverrideVpcConfig": {
            "SecurityGroupIds": ["'$SECURITY_GROUP'"],
            "Subnets": ["'$SUBNET2'"]
         }
    },
    {   
        "InstanceGroupName": "auto-ondemand-c5-2x-az1",
        "InstanceType": "ml.c5.2xlarge",
        "InstanceCount": 2,
        "LifeCycleConfig": {
        "SourceS3Uri": "s3://'$BUCKET_NAME'",
        "OnCreate": "on_create_noop.sh"
        },
        "ExecutionRole": "'$EXECUTION_ROLE'",
        "ThreadsPerCore": 1,
        "OverrideVpcConfig": {
            "SecurityGroupIds": ["'$SECURITY_GROUP'"],
            "Subnets": ["'$SUBNET1'"]
         }
    }]'
```

#### Buat HyperpodNodeClass
<a name="sagemaker-hyperpod-spot-instance-getstart-karpenter-create-class"></a>

`HyperpodNodeClass`adalah sumber daya khusus yang dipetakan ke grup instance yang telah dibuat sebelumnya SageMaker HyperPod, menentukan batasan di sekitar jenis instance dan Availability Zone mana yang didukung untuk keputusan penskalaan otomatis Karpenter. Untuk menggunakannya`HyperpodNodeClass`, cukup tentukan nama SageMaker HyperPod klaster Anda yang ingin Anda gunakan sebagai sumber sumber daya AWS komputasi yang akan digunakan untuk meningkatkan skala Pod Anda NodePools. `InstanceGroups` `HyperpodNodeClass`Nama yang Anda gunakan di sini dibawa ke bagian berikutnya NodePool di mana Anda mereferensikannya. Ini memberi tahu dari NodePool mana `HyperpodNodeClass` untuk menarik sumber daya. Untuk membuat`HyperpodNodeClass`, selesaikan langkah-langkah berikut:

1. Buat file YAMB (misalnya, nodeclass.yaml) mirip dengan kode berikut. Tambahkan `InstanceGroup` nama yang Anda gunakan pada saat pembuatan SageMaker HyperPod cluster. Anda juga dapat menambahkan grup instans baru ke kluster SageMaker HyperPod EKS yang ada.

1. Referensikan `HyperPodNodeClass` nama dalam NodePool konfigurasi Anda.

Berikut ini adalah contoh`HyperpodNodeClass`:

```
apiVersion: karpenter.sagemaker.amazonaws.com/v1
kind: HyperpodNodeClass
metadata:
  name: multiazg6
spec:
  instanceGroups:
    # name of InstanceGroup in HyperPod cluster. InstanceGroup needs to pre-created
    # before this step can be completed.
    # MaxItems: 10
    - auto-spot-c5-2x-az1
    - auto-spot-c5-2x-az2
    - auto-spot-c5-x-az3
    - auto-ondemand-c5-2x-az1
```

Karpenter memprioritaskan grup instans Spot daripada instans On-Demand, menggunakan On-Demand sebagai fallback saat ditentukan dalam konfigurasi. Pemilihan instans diurutkan berdasarkan Skor Penempatan Spot EC2 yang terkait dengan zona ketersediaan masing-masing subnet.

**Terapkan konfigurasi ke cluster EKS Anda menggunakan`kubectl`:**

```
kubectl apply -f nodeclass.yaml
```

 HyperPod Cluster harus telah AutoScaling diaktifkan dan AutoScaling status harus berubah `InService` sebelum `HyperpodNodeClass` dapat diterapkan. Ini juga menunjukkan kapasitas Grup Instance sebagai Spot atau OnDemand. Untuk informasi lebih lanjut dan pertimbangan utama, lihat [Autoscaling](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-autoscaling.html) di EKS. SageMaker HyperPod 

**Sebagai contoh**

```
apiVersion: karpenter.sagemaker.amazonaws.com/v1
kind: HyperpodNodeClass
metadata:
  creationTimestamp: "2025-11-30T03:25:04Z"
  name: multiazc6
  uid: ef5609be-15dd-4700-89ea-a3370e023690
spec:
  instanceGroups:
  -spot1
status:
  conditions:
  // true when all IGs in the spec are present in SageMaker cluster, false otherwise
  - lastTransitionTime: "2025-11-20T03:25:04Z"
    message: ""
    observedGeneration: 3
    reason: InstanceGroupReady
    status: "True"
    type: InstanceGroupReady
  // true if subnets of IGs are discoverable, false otherwise
  - lastTransitionTime: "2025-11-20T03:25:04Z"
    message: ""
    observedGeneration: 3
    reason: SubnetsReady
    status: "True"
    type: SubnetsReady
  // true when all dependent resources are Ready [InstanceGroup, Subnets]
  - lastTransitionTime: "2025-11-30T05:47:55Z"
    message: ""
    observedGeneration: 3
    reason: Ready
    status: "True"
    type: Ready
  instanceGroups:
  - instanceTypes:
    - ml.c5.2xlarge
    name:auto-spot-c5-2x-az2
    subnets:
    - id: subnet-03ecc649db2ff20d2
      zone: us-west-2a
      zoneId: usw2-az2
  - capacities: {"Spot": {}}
```

#### Buat NodePool
<a name="sagemaker-hyperpod-spot-instance-getstart-karpenter-create-nodepool"></a>

 NodePool Set kendala pada node yang dapat dibuat oleh Karpenter dan pod yang dapat berjalan pada node tersebut. NodePool Dapat diatur untuk melakukan berbagai tindakan, seperti: 
+ Tentukan label dan taint untuk membatasi pod yang dapat berjalan pada node yang dibuat Karpenter
+ Batasi pembuatan node ke zona tertentu, tipe instance, dan arsitektur komputer, dan sebagainya

Untuk informasi lebih lanjut tentang NodePool, lihat [NodePools](https://karpenter.sh/docs/concepts/nodepools/). SageMaker HyperPod Karpenter terkelola mendukung serangkaian terbatas persyaratan Kubernetes dan Karpenter yang terkenal, yang kami jelaskan dalam posting ini.

Untuk membuat NodePool, selesaikan langkah-langkah berikut:

Buat file YAMM bernama `nodepool.yaml` dengan NodePool konfigurasi yang Anda inginkan. Kode berikut adalah konfigurasi sampel untuk membuat sampel NodePool. Kami menentukan NodePool untuk menyertakan jenis SageMaker instance ml.g6.xlarge kami, dan kami juga menentukannya untuk satu zona. Lihat [NodePools](https://karpenter.sh/docs/concepts/nodepools/)untuk penyesuaian lebih lanjut.

```
apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
 name: gpunodepool
spec:
 template:
   spec:
     nodeClassRef:
      group: karpenter.sagemaker.amazonaws.com
      kind: HyperpodNodeClass
      name: multiazg6
     expireAfter: Never
     requirements:
        - key: node.kubernetes.io/instance-type
          operator: Exists
        - key: "node.kubernetes.io/instance-type" // Optional otherwise Karpenter will decide based on Job config resource requirements
          operator: In
          values: ["ml.c5.2xlarge"]
        - key: "topology.kubernetes.io/zone"
          operator: In
          values: ["us-west-2a"]
```

**Tip**: Pada interupsi EC2 Spot, Hyperpod menodai node untuk memicu penggusuran pod. **Proses **konsolidasi** Karpenter menghormati anggaran gangguan pod dan melakukan penggusuran Kubernetes secara normal, tetapi jika Anda menetapkan ConsolidateAfter: 0, maka konsolidasi dapat terjadi segera, memberikan sedikit waktu untuk penggusuran pod yang anggun.** Setel ke non zero hingga 2 menit untuk memungkinkan penggusuran pod yang anggun untuk kebutuhan checkpointing apa pun.

**Terapkan NodePool ke cluster Anda:**

```
kubectl apply -f nodepool.yaml
```

**Pantau NodePool status untuk memastikan kondisi Siap dalam status disetel ke True:**

```
kubectl get nodepool gpunodepool -oyaml
```

Contoh ini menunjukkan bagaimana a NodePool dapat digunakan untuk menentukan perangkat keras (tipe instance) dan penempatan (Availability Zone) untuk pod.

**Luncurkan beban kerja sederhana**

Beban kerja berikut menjalankan deployment Kubernetes di mana pod dalam deployment meminta 1 CPU dan memori 256 MB per replika, per pod. Polong belum dipintal.

```
kubectl apply -f https://raw.githubusercontent.com/aws/karpenter-provider-aws/refs/heads/main/examples/workloads/inflate.yaml
```

Ketika kita menerapkan ini, kita dapat melihat penyebaran dan peluncuran node tunggal di cluster kita, seperti yang ditunjukkan pada gambar berikut.

**Untuk menskalakan komponen ini, gunakan perintah berikut:**

```
kubectl scale deployment inflate --replicas 10
```

Lihat [https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker- hyperpod-eks-autoscaling .html](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-autoscaling.html) untuk lebih jelasnya.

### Mengelola Gangguan Node
<a name="sagemaker-hyperpod-spot-instance-getstart-karpenter-interrupt"></a>

Instans Spot dapat direklamasi kapan saja. EC2 memberikan pemberitahuan interupsi 2 menit upaya terbaik dalam banyak kasus, tetapi pemberitahuan ini tidak dijamin. Dalam beberapa situasi, EC2 dapat segera menghentikan Instans Spot tanpa peringatan sebelumnya. HyperPod secara otomatis menangani kedua skenario:
+ Dengan pemberitahuan 2 menit: Secara otomatis mencoba kembali penggusuran pod yang anggun dan penggantian kapasitas terkontrol saat kapasitas Spot tersedia.
+ Tanpa pemberitahuan (penghentian segera): Secara otomatis mencoba kembali penggantian node (ketika kapasitas Spot tersedia) tanpa penggusuran yang anggun 

**Cara kerjanya**

Saat EC2 mengirimkan pemberitahuan gangguan Spot, HyperPod secara otomatis:

1. Mendeteksi sinyal interupsi 

1. Taints the node: Mencegah pod baru dijadwalkan pada instance yang terputus

1. Mengusir pod dengan anggun: Memberikan waktu untuk menjalankan pod untuk menyelesaikan atau memeriksa pekerjaan mereka (menghormati Kubernetes) `terminationGracePeriodSeconds`

1. Mengganti kapasitas: Secara otomatis mencoba menyediakan instance pengganti (Spot atau Sesuai Permintaan berdasarkan ketersediaan). 

   Penggantian kapasitas bekerja dengan menyediakan instance pengganti secara otomatis. Ketika kapasitas tidak segera tersedia, sistem terus memeriksa sampai sumber daya dapat diakses. Dalam kasus grup instans non-autoscaling, HyperPod upaya untuk meningkatkan skala dalam grup instans yang sama sampai kapasitas yang diperlukan tersedia. Untuk grup instance berbasis Karpenter, Karpenter mengimplementasikan mekanisme fallback ke grup instance lain yang dikonfigurasi di kelas Node ketika grup utama tidak dapat mengakomodasi permintaan. Selain itu, Anda dapat mengonfigurasi On-Demand sebagai opsi fallback, memungkinkan Karpenter untuk secara otomatis beralih ke instans On-Demand jika tidak berhasil meningkatkan grup instans Spot.

1. Menjadwalkan ulang beban kerja: Kubernetes secara otomatis menjadwal ulang pod yang diusir pada node yang sehat

### Menemukan Penggunaan dan Tagihan Anda
<a name="sagemaker-hyperpod-spot-instance-getstart-karpenter-bill"></a>

Untuk memeriksa penggunaan dan penagihan untuk Instans Spot di HyperPod Anda dapat menggunakan AWS Cost Explorer Console. Pergi ke Billing and Cost Management > Bill

![\[Gambar yang berisi informasi wilayah biaya.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/Screenshot-cost-region.png)


**Untuk menjelajahi penggunaan dan penagihan di Console, buka Billing and Cost Management > Cost Explorer**

![\[Gambar yang berisi biaya dan penggunaan.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/Screenshot-cost-usage.png)
