

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Distribuisci modelli utilizzando JumpStart kubectl
<a name="sagemaker-hyperpod-model-deployment-deploy-js-kubectl"></a>

I passaggi seguenti mostrano come distribuire un JumpStart modello in un cluster usando kubectl. HyperPod 

Le istruzioni seguenti contengono celle di codice e comandi progettati per essere eseguiti in un terminale. Assicurati di aver configurato il tuo ambiente con le AWS credenziali prima di eseguire questi comandi. 

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

Prima di iniziare, verifica di aver: 
+ Configura funzionalità di inferenza sui tuoi SageMaker HyperPod cluster Amazon. Per ulteriori informazioni, consulta [Configurazione dei HyperPod cluster per l'implementazione dei modelli](sagemaker-hyperpod-model-deployment-setup.md).
+ Installato l’utilità [kubectl](https://kubernetes.io/docs/reference/kubectl/) e configurato [jq](https://jqlang.org/) nel terminale.

## Installazione e configurazione
<a name="kubectl-prerequisites-setup-and-configuration"></a>

1. Scegli la tua Regione.

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

1. Visualizza tutti i modelli e HyperPod i cluster di hub SageMaker pubblici.

1. Seleziona un `JumpstartModel` da JumpstartPublic Hub. JumpstartPublic hub dispone di un gran numero di modelli, che puoi utilizzare `NextToken` per elencare in modo iterativo tutti i modelli disponibili nell'hub pubblico.

   ```
   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. Configura l’ID del modello e il nome del cluster che hai selezionato nelle variabili seguenti.
**Nota**  
Rivolgiti all’amministratore del cluster per assicurarti di ottenere le autorizzazioni per questo ruolo o utente. Puoi eseguire `!aws sts get-caller-identity --query "Arn"` per verificare quale ruolo o utente stai utilizzando nel terminale.

   ```
   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. Rivolgiti all’amministratore del cluster per sapere quale namespace utilizzare. L’amministratore dovrebbe aver creato un account di servizio `hyperpod-inference` nel tuo namespace.

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

1. Imposta un nome per l’endpoint e l’oggetto personalizzato da creare.

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

1. Di seguito è riportato un esempio di implementazione del modello `deepseek-llm-r1-distill-qwen-1-5b` da JumpStart. Crea un file yaml di implementazione simile, basato sul modello selezionato nella fase precedente.
**Nota**  
Se il cluster utilizza il partizionamento GPU con MIG, è possibile richiedere profili MIG specifici aggiungendo il campo alle specifiche del `acceleratorPartitionType` server. Per ulteriori informazioni, consulta [Invio di attività con 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
   ```

## Distribuzione del modello
<a name="kubectl-deploy-your-model"></a>

**Aggiornamento della configurazione Kubernetes e implementazione del modello**

1. Configura kubectl per la connessione al HyperPod cluster orchestrato da 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.  JumpStart Implementa il tuo modello.

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

**Monitoraggio dello stato di implementazione del modello**

1. Verifica che il modello sia stato implementato correttamente.

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

1. Verifica che l’endpoint sia stato creato correttamente.

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

1. Invoca l’endpoint del modello. Puoi recuperare in modo programmatico i payload di esempio dall’oggetto `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
   ```

## Gestione dell’implementazione
<a name="kubectl-manage-your-deployment"></a>

Elimina la distribuzione JumpStart del modello quando non è più necessaria.

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

**Risoluzione dei problemi**

Utilizza questi comandi di debug se l’implementazione non funziona come previsto.

1. Controlla lo stato dell’implementazione Kubernetes. Questo comando ispeziona l’oggetto di implementazione Kubernetes sottostante che gestisce i pod che eseguono il modello. Usalo per risolvere i problemi di pianificazione dei pod, allocazione delle risorse e avvio dei container.

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

1. Controlla lo stato della risorsa del JumpStart modello. Questo comando esamina la risorsa `JumpStartModel` personalizzata che gestisce la configurazione generale del modello e il ciclo di vita dell’implementazione. Usalo per risolvere problemi specifici del modello come errori di configurazione o problemi di creazione di endpoint SageMaker AI.

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

1. Controlla lo stato di tutti gli oggetti Kubernetes. Questo comando fornisce una panoramica completa di tutte le risorse correlate a Kubernetes nel tuo namespace. Usalo per un rapido controllo dell’integrità per conoscere lo stato generale dei pod, dei servizi, delle implementazioni e delle risorse personalizzate associati all’implementazione del modello.

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