Implante modelos JumpStart usando kubectl - SageMaker IA da Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Implante modelos JumpStart usando kubectl

As etapas a seguir mostram como implantar um JumpStart modelo em um HyperPod cluster usando kubectl.

As instruções a seguir contêm células de código e comandos projetados para execução em um ambiente de notebook Jupyter, como Amazon SageMaker Studio ou SageMaker Notebook Instances. Cada bloco de código representa uma célula do notebook que deve ser executada sequencialmente. Os elementos interativos, incluindo tabelas de descoberta de modelos e comandos de monitoramento de status, são otimizados para a interface do notebook e podem não funcionar adequadamente em outros ambientes. Certifique-se de ter acesso a um ambiente de notebook com as AWS permissões necessárias antes de continuar.

Pré-requisitos

Certifique-se de ter configurado recursos de inferência em seus SageMaker HyperPod clusters da Amazon. Para obter mais informações, consulte Configurando seus HyperPod clusters para implantação de modelos.

Definição e configuração

Selecione sua região

Escolha a região para implantar seu HyperPod cluster e onde você deseja executar suas cargas de trabalho de inferência. Você também pode adicionar outras personalizações ao. sagemaker_client

region_name = <REGION> import boto3 from botocore.config import Config # Configure retry options boto3_config = Config( retries={ 'max_attempts': 10, # Maximum number of retry attempts 'mode': 'adaptive' # Use adaptive mode for exponential backoff } ) sagemaker_client=boto3.client("sagemaker", region_name=region_name, config=boto3_config)

Escolha seu modelo e cluster

  1. Veja todos os modelos e HyperPod clusters de hubs SageMaker públicos.

    interactive_view(get_all_public_hub_model_data(sagemaker_client)) interactive_view(get_all_cluster_data(sagemaker_client))
  2. Configure o ID do modelo e o nome do cluster que você selecionou nas variáveis abaixo.

    nota

    Consulte o administrador do cluster para garantir que as permissões sejam concedidas para essa função de execução do notebook. Você pode executar !aws sts get-caller-identity --query "Arn" para verificar qual função de execução você está usando

    # Change the model_id based on your requirement. A list of model IDs is available in step 1 of this notebook. # Proprietary models are not supported model_id = "<insert model id here>" from sagemaker.hyperpod.inference.notebook_utils import validate_public_hub_model_is_not_proprietary validate_public_hub_model_is_not_proprietary(sagemaker_client, model_id)
    # Select the cluster name where you want to deploy the model. List of clusters is available in step 1 of this notebook. cluster_name = "<insert cluster name here>" from sagemaker.hyperpod.inference.notebook_utils import validate_cluster_can_support_public_hub_modelfrom sagemaker.hyperpod.inference.notebook_utils import get_public_hub_model_compatible_instances validate_cluster_can_support_public_hub_model(sagemaker_client, model_id, cluster_name) interactive_view(get_public_hub_model_compatible_instances(sagemaker_client, model_id))
    # Select the instance that is relevant for your model deployment and exists within the selected cluster. instance_type = "ml.g5.8xlarge"
  3. Confirme com o administrador do cluster qual namespace você tem permissão para usar. O administrador deveria ter criado uma conta de serviço de inferência de hyperpod em seu namespace.

    cluster_namespace = "default"

Configurar o nome do bucket S3

Configure os nomes dos buckets do S3 para certificados. Esse bucket precisa ter uma pasta chamada “certificados” na qual os certificados serão carregados. O bucket também precisa estar na mesma região definida acima.

# Set the S3 bucket name where TLS certificates will be stored for secure model communication certificate_bucket = "<insert bucket name here>"
import yaml from datetime import datetime # Get current time in format suitable for endpoint name current_time = datetime.now().strftime("%Y%m%d-%H%M%S") sagemaker_endpoint_name=f"{model_id}-{current_time}" def generate_jumpstart_model_yaml(model_id, model_version, namespace, instance_type, output_file_path, certificate_bucket): """ Generate a JumpStartModel YAML file with the provided parameters. Args: model_id (str): The model ID model_version (str): The model version namespace (str): The namespace instance_type (str): The instance type output_file_path (str): Path where the YAML file will be saved """ # Create the YAML structure tlsCertificateOutputS3Uri = "s3://" + certificate_bucket + "/certificates/" model_config = { "apiVersion": "inference.sagemaker.aws.amazon.com/v1alpha1", "kind": "JumpStartModel", "metadata": { "name": model_id, "namespace": namespace }, "spec": { "sageMakerEndpoint": { "name": sagemaker_endpoint_name }, "model": { "modelHubName": "SageMakerPublicHub", "modelId": model_id, # modelVersion is optional "modelVersion": model_version # acceptEula is optional, set value to True when using a gated model }, "server": { "instanceType": instance_type }, "tlsConfig": { "tlsCertificateOutputS3Uri": tlsCertificateOutputS3Uri } } } # Write to YAML file with open(output_file_path, 'w') as file: yaml.dump(model_config, file, default_flow_style=False) print(f"YAML file created successfully at: {output_file_path}")
# Import JumpStart utilities to retrieve model specifications and version information from sagemaker.jumpstart import utilsfrom sagemaker.jumpstart.enums import JumpStartScriptScope model_specs = utils.verify_model_region_and_return_specs( model_id, "*", JumpStartScriptScope.INFERENCE, region=region_name) model_version = model_specs.version
# Generate the output filename for the Kubernetes YAML configuration output_file_path=f"jumpstart-model-{model_id}.yaml" generate_jumpstart_model_yaml( model_id=model_id, model_version=model_version, namespace=cluster_namespace, instance_type=instance_type, output_file_path=output_file_path, certificate_bucket=certificate_bucket ) import os os.environ["JUMPSTART_YAML_FILE_PATH"]=output_file_path os.environ["MODEL_ID"]=model_id

Implantar o modelo

Atualize sua configuração de kubernetes e implante seu modelo

  1. Recupere o nome do cluster EKS de HyperPod.

    !aws sagemaker describe-cluster --cluster-name $cluster_name --query "Orchestrator.Eks.ClusterArn"
  2. Configure o kubectl para se conectar ao cluster EKS.

    !aws eks update-kubeconfig --name "<insert name of eks cluster from above>" --region $region_name
  3. Implante seu JumpStart modelo.

    !kubectl apply -f $JUMPSTART_YAML_FILE_PATH

Monitore o status da implantação do seu modelo

  1. Certifique-se de que o modelo seja implantado com sucesso.

    !kubectl describe JumpStartModel $model_id -n $cluster_namespace
  2. Certifique-se de que o endpoint tenha sido criado com sucesso.

    !kubectl describe SageMakerEndPointRegistration sagemaker_endpoint_name -n $cluster_namespace

Invoque o endpoint do seu modelo

Você pode recuperar programaticamente exemplos de cargas do objeto. JumpStartModel

import boto3 prompt = "{\"inputs\": \"What is AWS SageMaker?\"}}" runtime_client = boto3.client('sagemaker-runtime', region_name=region_name) response = runtime_client.invoke_endpoint( EndpointName=sagemaker_endpoint_name, ContentType="application/json", Body=prompt ) print(response["Body"].read().decode())

Gerencie sua implantação

Limpar recursos

Exclua a implantação do JumpStart modelo quando não precisar mais dela.

!kubectl delete JumpStartModel $model_id -n $cluster_namespace

Solução de problemas

Use esses comandos de depuração se sua implantação não estiver funcionando conforme o esperado.

  1. Verifique o status da implantação do Kubernetes. Esse comando inspeciona o objeto de implantação subjacente do Kubernetes que gerencia os pods que executam seu modelo. Use isso para solucionar problemas de agendamento de pods, alocação de recursos e inicialização de contêineres.

    !kubectl describe deployment $model_id -n $cluster_namespace
  2. Verifique o status do recurso do seu JumpStart modelo. Esse comando examina o JumpStartModel recurso personalizado que gerencia a configuração do modelo de alto nível e o ciclo de vida da implantação. Use isso para solucionar problemas específicos do modelo, como erros de configuração ou problemas de criação de SageMaker endpoints.

    !kubectl describe JumpStartModel $model_id -n $cluster_namespace
  3. Verifique o status de todos os objetos do Kubernetes. Esse comando fornece uma visão geral abrangente de todos os recursos relacionados do Kubernetes em seu namespace. Use isso para uma rápida verificação de integridade para ver o estado geral dos pods, serviços, implantações e recursos personalizados associados à implantação do seu modelo.

    !kubectl get pods,svc,deployment,JumpStartModel,sagemakerendpointregistration -n $cluster_namespace