

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Implemente modelos JumpStart utilizando kubectl
<a name="sagemaker-hyperpod-model-deployment-deploy-js-kubectl"></a>

Los siguientes pasos muestran cómo implementar un JumpStart modelo en un HyperPod clúster mediante kubectl.

Las siguientes instrucciones contienen celdas de código y comandos diseñados para ejecutarse en una terminal. Asegúrese de haber configurado su entorno con AWS credenciales antes de ejecutar estos comandos. 

## Requisitos previos
<a name="kubectl-prerequisites"></a>

Antes de comenzar, compruebe que: 
+ Configure las capacidades de inferencia en sus SageMaker HyperPod clústeres de Amazon. Para obtener más información, consulte [Configuración de los HyperPod clústeres para la implementación de modelos](sagemaker-hyperpod-model-deployment-setup.md).
+ Ha instalado la utilidad [kubectl](https://kubernetes.io/docs/reference/kubectl/) y configurado [jq](https://jqlang.org/) en su terminal.

## Ajustes y configuración
<a name="kubectl-prerequisites-setup-and-configuration"></a>

1. Elija su región.

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

1. Vea todos los modelos y HyperPod clústeres de centros SageMaker públicos.

1. Seleccione uno `JumpstartModel` de JumpstartPublic Hub. JumpstartPublic El hub tiene una gran cantidad de modelos disponibles, por lo que puede utilizar `NextToken` para enumerar de forma iterativa todos los modelos disponibles en el hub público.

   ```
   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. Configure el ID del modelo y el nombre del clúster que ha seleccionado en las siguientes variables.
**nota**  
Consulte con el administrador del clúster para asegurarse de que se concedan los permisos a ese rol o usuario. Puede ejecutar `!aws sts get-caller-identity --query "Arn"` para comprobar qué rol o usuario se está utilizando en la terminal.

   ```
   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. Confirme con el administrador del clúster qué espacio de nombres se pueden usar. El administrador debería haber creado una cuenta de servicio `hyperpod-inference` en su espacio de nombres.

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

1. Establezca un nombre para el punto de conexión y el objeto personalizado que se va a crear.

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

1. A continuación, se muestra un ejemplo de implementación de un modelo `deepseek-llm-r1-distill-qwen-1-5b` desde Jumpstart. Cree un archivo yaml de implementación similar basado en el modelo seleccionado en el paso anterior.
**nota**  
Si su clúster utiliza particiones de GPU con MIG, puede solicitar perfiles MIG específicos añadiendo el `acceleratorPartitionType` campo a la especificación del servidor. Para obtener más información, consulte [Envío de tareas 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
   ```

## Implementación del modelo
<a name="kubectl-deploy-your-model"></a>

**Actualización de la configuración de Kubernetes e implementación del modelo**

1. Configure kubectl para conectarse al HyperPod clúster organizado por 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. Implemente su modelo. JumpStart 

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

**Supervisión del estado de la implementación del modelo**

1. Compruebe que el modelo se haya implementado correctamente.

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

1. Compruebe que el punto de conexión se haya creado correctamente.

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

1. Invoque el punto de conexión de su modelo. Puede obtener las cargas útiles de ejemplo del objeto `JumpStartModel` mediante programación.

   ```
   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
   ```

## Administración de la implementación
<a name="kubectl-manage-your-deployment"></a>

Elimine la implementación de su JumpStart modelo cuando ya no la necesite.

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

**Resolución de problemas**

Use estos comandos de depuración si la implementación no funciona según lo previsto.

1. Compruebe el estado de la implementación de Kubernetes. Este comando inspecciona el objeto de implementación de Kubernetes subyacente que administra los pods que ejecutan su modelo. Utilícelo para solucionar problemas relacionados con la programación de los pods, la asignación de recursos y el arranque de los contenedores.

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

1. Compruebe el estado del recurso de su JumpStart modelo. Este comando examina el recurso `JumpStartModel` personalizado que administra la configuración del modelo general y el ciclo de vida de la implementación. Úselo para solucionar problemas específicos del modelo, como errores de configuración o problemas de creación de terminales de SageMaker IA.

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

1. Compruebe el estado de todos los objetos de Kubernetes. Este comando proporciona una visión general completa de todos los recursos de Kubernetes relacionados en su espacio de nombres. Utilícelo para comprobar rápidamente el estado general de los pods, los servicios, las implementaciones y los recursos personalizados asociados a la implementación de su modelo.

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