Implementación de modelos de JumpStart con kubectl - Amazon SageMaker AI

Implementación de modelos de JumpStart con kubectl

En los pasos siguientes se muestra cómo implementar un modelo de JumpStart en un clúster de HyperPod con kubectl.

Las siguientes instrucciones contienen celdas de código y comandos diseñados para ejecutarse en una terminal. Antes de ejecutar estos comandos, asegúrese de haber configurado el entorno con las credenciales de AWS.

Requisitos previos

Antes de comenzar, compruebe que:

Ajustes y configuración

  1. Elija su región.

    export REGION=<region>
  2. Visualice todos los modelos del centro público de SageMaker y los clústeres de HyperPod.

  3. Seleccione un JumpstartModel del centro JumpStartPublic. El centro JumpStartPublic tiene una gran cantidad de modelos disponibles, por lo que puede usar NextToken para enumerar de forma iterativa todos los modelos disponibles en el centro 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"
  4. 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"
  5. 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"
  6. 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"
  7. 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.

    cat << EOF > jumpstart_model.yaml --- apiVersion: inference.sagemaker.aws.amazon.com/v1alpha1 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 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

Actualización de la configuración de Kubernetes e implementación del modelo
  1. Configure kubectl para que se conecte al clúster de HyperPod orquestado 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
  2. Implemente su modelo de 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
  2. Compruebe que el punto de conexión se haya creado correctamente.

    aws sagemaker describe-endpoint --endpoint-name=$SAGEMAKER_ENDPOINT_NAME --output table
  3. 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

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

kubectl delete JumpStartModel $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
Solució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
  2. Compruebe el estado del recurso del modelo de JumpStart. 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 puntos de conexión de SageMaker AI.

    kubectl describe JumpStartModel $SAGEMAKER_ENDPOINT_NAME -n $CLUSTER_NAMESPACE
  3. 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