

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

# Terapkan model dari JumpStart menggunakan kubectl
<a name="sagemaker-hyperpod-model-deployment-deploy-js-kubectl"></a>

Langkah-langkah berikut menunjukkan cara menerapkan JumpStart model ke HyperPod klaster menggunakan kubectl.

Instruksi berikut berisi sel kode dan perintah yang dirancang untuk berjalan di terminal. Pastikan Anda telah mengonfigurasi lingkungan Anda dengan AWS kredensyal sebelum menjalankan perintah ini. 

## Prasyarat
<a name="kubectl-prerequisites"></a>

Sebelum Anda mulai, verifikasi bahwa Anda telah: 
+ Siapkan kemampuan inferensi di SageMaker HyperPod kluster Amazon Anda. Untuk informasi selengkapnya, lihat [Menyiapkan HyperPod cluster Anda untuk penerapan model](sagemaker-hyperpod-model-deployment-setup.md).
+ Menginstal utilitas [kubectl](https://kubernetes.io/docs/reference/kubectl/) dan mengkonfigurasi [jq](https://jqlang.org/) di terminal Anda.

## Penyiapan dan konfigurasi
<a name="kubectl-prerequisites-setup-and-configuration"></a>

1. Pilih Wilayah Anda.

   ```
   export REGION=<region>
   ```

1. Lihat semua model dan HyperPod cluster hub SageMaker publik.

1. Pilih `JumpstartModel` dari JumpstartPublic Hub. JumpstartPublic hub memiliki sejumlah besar model yang tersedia sehingga Anda dapat `NextToken` menggunakan daftar berulang semua model yang tersedia di hub publik.

   ```
   aws sagemaker list-hub-contents --hub-name SageMakerPublicHub --hub-content-type Model --query '{Models: HubContentSummaries[].{ModelId:HubContentName,Version:HubContentVersion}, NextToken: NextToken}' --output json
   ```

   ```
   export MODEL_ID="deepseek-llm-r1-distill-qwen-1-5b"
   export MODEL_VERSION="2.0.4"
   ```

1. Konfigurasikan ID model dan nama cluster yang telah Anda pilih ke dalam variabel di bawah ini.
**catatan**  
Periksa dengan admin klaster Anda untuk memastikan izin diberikan untuk peran atau pengguna ini. Anda dapat menjalankan `!aws sts get-caller-identity --query "Arn"` untuk memeriksa peran atau pengguna mana yang Anda gunakan di terminal Anda.

   ```
   aws sagemaker list-clusters --output table
   
   # Select the cluster name where you want to deploy the model.
   export HYPERPOD_CLUSTER_NAME="<insert cluster name here>"
   
   # Select the instance that is relevant for your model deployment and exists within the selected cluster.
   # List availble instances in your HyperPod cluster
   aws sagemaker describe-cluster --cluster-name=$HYPERPOD_CLUSTER_NAME --query "InstanceGroups[].{InstanceType:InstanceType,Count:CurrentCount}" --output table
   
   # List supported instance types for the selected model
   aws sagemaker describe-hub-content --hub-name SageMakerPublicHub --hub-content-type Model --hub-content-name "$MODEL_ID" --output json | jq -r '.HubContentDocument | fromjson | {Default: .DefaultInferenceInstanceType, Supported: .SupportedInferenceInstanceTypes}'
   
   
   # Select and instance type from the cluster that is compatible with the model. 
   # Make sure that the selected instance is either default or supported instance type for the jumpstart model 
   export INSTANCE_TYPE="<Instance_type_In_cluster"
   ```

1. Konfirmasikan dengan admin cluster namespace mana yang diizinkan untuk Anda gunakan. Admin seharusnya telah membuat akun `hyperpod-inference` layanan di namespace Anda.

   ```
   export CLUSTER_NAMESPACE="default"
   ```

1. Tetapkan nama untuk titik akhir dan objek kustom yang akan dibuat.

   ```
   export SAGEMAKER_ENDPOINT_NAME="deepsek-qwen-1-5b-test"
   ```

1. Berikut ini adalah contoh untuk penerapan `deepseek-llm-r1-distill-qwen-1-5b` model dari Jumpstart. Buat file yaml penerapan serupa berdasarkan model yang dipilih pada langkah di atas.
**catatan**  
Jika klaster Anda menggunakan partisi GPU dengan MIG, Anda dapat meminta profil MIG tertentu dengan menambahkan `acceleratorPartitionType` bidang ke spesifikasi server. Untuk informasi selengkapnya, lihat [Pengajuan Tugas dengan MIG](sagemaker-hyperpod-eks-gpu-partitioning-task-submission.md).

   ```
   cat << EOF > jumpstart_model.yaml
   ---
   apiVersion: inference.sagemaker.aws.amazon.com/v1
   kind: JumpStartModel
   metadata:
     name: $SAGEMAKER_ENDPOINT_NAME
     namespace: $CLUSTER_NAMESPACE 
   spec:
     sageMakerEndpoint:
       name: $SAGEMAKER_ENDPOINT_NAME
     model:
       modelHubName: SageMakerPublicHub
       modelId: $MODEL_ID
       modelVersion: $MODEL_VERSION
     server:
       instanceType: $INSTANCE_TYPE
       # Optional: Specify GPU partition profile for MIG-enabled instances
       # acceleratorPartitionType: "1g.10gb"
     metrics:
       enabled: true
     environmentVariables:
       - name: SAMPLE_ENV_VAR
         value: "sample_value"
     maxDeployTimeInSeconds: 1800
     autoScalingSpec:
       cloudWatchTrigger:
         name: "SageMaker-Invocations"
         namespace: "AWS/SageMaker"
         useCachedMetrics: false
         metricName: "Invocations"
         targetValue: 10
         minValue: 0.0
         metricCollectionPeriod: 30
         metricStat: "Sum"
         metricType: "Average"
         dimensions:
           - name: "EndpointName"
             value: "$SAGEMAKER_ENDPOINT_NAME"
           - name: "VariantName"
             value: "AllTraffic"
   EOF
   ```

## Terapkan model Anda
<a name="kubectl-deploy-your-model"></a>

**Perbarui konfigurasi kubernetes Anda dan terapkan model Anda**

1. Konfigurasikan kubectl untuk terhubung ke HyperPod klaster yang diatur oleh Amazon EKS.

   ```
   export EKS_CLUSTER_NAME=$(aws --region $REGION sagemaker describe-cluster --cluster-name $HYPERPOD_CLUSTER_NAME \
     --query 'Orchestrator.Eks.ClusterArn' --output text | \
     cut -d'/' -f2)
   aws eks update-kubeconfig --name $EKS_CLUSTER_NAME --region $REGION
   ```

1. Terapkan JumpStart model Anda.

   ```
   kubectl apply -f jumpstart_model.yaml
   ```

**Pantau status penerapan model Anda**

1. Verifikasi bahwa model berhasil digunakan.

   ```
   kubectl describe JumpStartModel $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
   ```

1. Verifikasi bahwa titik akhir berhasil dibuat.

   ```
   aws sagemaker describe-endpoint --endpoint-name=$SAGEMAKER_ENDPOINT_NAME --output table
   ```

1. Panggil titik akhir model Anda. Anda dapat secara terprogram mengambil contoh muatan dari objek. `JumpStartModel`

   ```
   aws sagemaker-runtime invoke-endpoint \
     --endpoint-name $SAGEMAKER_ENDPOINT_NAME \
     --content-type "application/json" \
     --body '{"inputs": "What is AWS SageMaker?"}' \
     --region $REGION \
     --cli-binary-format raw-in-base64-out \
     /dev/stdout
   ```

## Mengelola penyebaran Anda
<a name="kubectl-manage-your-deployment"></a>

Hapus penerapan JumpStart model Anda setelah Anda tidak lagi membutuhkannya.

```
kubectl delete JumpStartModel $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
```

**Pemecahan masalah**

Gunakan perintah debugging ini jika penerapan Anda tidak berfungsi seperti yang diharapkan.

1. Periksa status penerapan Kubernetes. Perintah ini memeriksa objek deployment Kubernetes yang mendasari yang mengelola pod yang menjalankan model Anda. Gunakan ini untuk memecahkan masalah penjadwalan pod, alokasi sumber daya, dan masalah startup container.

   ```
   kubectl describe deployment $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
   ```

1. Periksa status sumber daya JumpStart model Anda. Perintah ini memeriksa `JumpStartModel` sumber daya kustom yang mengelola konfigurasi model tingkat tinggi dan siklus hidup penerapan. Gunakan ini untuk memecahkan masalah khusus model seperti kesalahan konfigurasi atau masalah pembuatan titik akhir SageMaker AI.

   ```
   kubectl describe JumpStartModel $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
   ```

1. Periksa status semua objek Kubernetes. Perintah ini memberikan gambaran menyeluruh dari semua resource Kubernetes terkait di namespace Anda. Gunakan ini untuk pemeriksaan kesehatan cepat untuk melihat status keseluruhan pod, layanan, penerapan, dan sumber daya khusus yang terkait dengan penerapan model Anda.

   ```
   kubectl get pods,svc,deployment,JumpStartModel,sagemakerendpointregistration -n $CLUSTER_NAMESPACE
   ```