Obtenha uma recomendação de inferência para um endpoint existente - 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á.

Obtenha uma recomendação de inferência para um endpoint existente

Os trabalhos de recomendação de inferência executam um conjunto de testes de carga em tipos de instância recomendados e em um endpoint existente. Os trabalhos de recomendação de inferência usam métricas de desempenho baseadas em testes de carga usando os dados de amostra fornecidos durante o registro da versão do modelo.

Você pode comparar e obter recomendações de inferência para um endpoint existente do SageMaker Inference para ajudar você a melhorar o desempenho do seu endpoint. O procedimento de obter recomendações para um endpoint existente do SageMaker AI Inference é semelhante ao procedimento para obter recomendações de inferência sem um endpoint. Há várias exclusões de atributos a serem observadas ao comparar um endpoint existente:

  • Você só pode usar um endpoint existente por trabalho do recomendador de inferência.

  • Só é possível ter uma variante em seu endpoint.

  • Não é possível usar um endpoint que permita o dimensionamento automático.

  • Essa funcionalidade só é compatível com inferência em tempo real.

  • Essa funcionalidade não é compatível com endpoints multimodelo em tempo real.

Atenção

É altamente recomendável não executar um trabalho do recomendador de inferência em um endpoint de produção que envolva o tráfego ao vivo. A carga sintética durante a análise comparativa pode afetar seu ponto final de produção e ocasionar controle de utilização ou fornecer resultados de análises comparativas imprecisas. Recomendamos que você use um endpoint que não seja de produção ou de desenvolvedor para fins de comparação.

As seções a seguir demonstram como usar o Amazon SageMaker Inference Recommender para criar uma recomendação de inferência para um endpoint existente com base no seu tipo de modelo usando o SDK for AWS Python (Boto3) e o AWS CLI.

nota

Antes de criar um trabalho de recomendação de inferência, verifique se você satisfez o Amazon SageMaker Inference Recommender.

Pré-requisitos

Se você ainda não tem um endpoint do SageMaker AI Inference, é possível obter uma recomendação de inferência sem um endpoint ou criar um endpoint de inferência em tempo real seguindo as instruções em Create your endpoint and deploy your model.

Criar uma recomendação de inferência para um endpoint existente

Crie uma recomendação de inferência programaticamente usandoAWS SDK para Python (Boto3) ou AWS CLI. Especifique um nome de trabalho para sua recomendação de inferência, o nome de um endpoint existente do SageMaker AI Inference, um ARN do perfil do AWS IAM, uma configuração de entrada e o ARN do pacote de modelo de quando você registrou seu modelo no catálogo de modelos.

AWS SDK para Python (Boto3)

Use a API CreateInferenceRecommendationsJob para obter uma recomendação de inferência. Defina o campo JobType como 'Default' para trabalhos de recomendação de inferência. Além disso, observe o seguinte:

  • Forneça um nome para seu trabalho de recomendação do recomendador de inferência para o campo JobName. O nome do trabalho do recomendador de inferência deve ser exclusivo na sua região AWS e na sua conta AWS.

  • O nome do recurso da Amazon (ARN) de um perfil do IAM que habilita o recomendador de inferência para executar tarefas em seu nome. Defina isso para o campo RoleArn.

  • O ARN do pacote de modelos versionado que você criou ao registrar seu modelo no registro do modelo. Defina isso para ModelPackageVersionArn no campo InputConfig.

  • Forneça o nome de um endpoint existente do SageMaker AI Inference que você deseja comparar no Inference Recommender para Endpoints no campo InputConfig.

Importe o pacote AWS SDK para Python (Boto3) e crie um objeto cliente do SageMaker AI usando a classe client. Se você seguiu as etapas na seção Pré-requisitos, o grupo de pacotes de modelos ARN foi armazenado em uma variável chamada model_package_arn.

# Create a low-level SageMaker service client. import boto3 aws_region = '<region>' sagemaker_client = boto3.client('sagemaker', region_name=aws_region) # Provide your model package ARN that was created when you registered your # model with Model Registry model_package_arn = '<model-package-arn>' # Provide a unique job name for SageMaker Inference Recommender job job_name = '<job-name>' # Inference Recommender job type. Set to Default to get an initial recommendation job_type = 'Default' # Provide an IAM Role that gives SageMaker Inference Recommender permission to # access AWS services role_arn = '<arn:aws:iam::<account>:role/*>' # Provide endpoint name for your endpoint that want to benchmark in Inference Recommender endpoint_name = '<existing-endpoint-name>' sagemaker_client.create_inference_recommendations_job( JobName = job_name, JobType = job_type, RoleArn = role_arn, InputConfig = { 'ModelPackageVersionArn': model_package_arn, 'Endpoints': [{'EndpointName': endpoint_name}] } )

Consulte o Guia de referência da API do Amazon SageMaker para obter uma lista completa dos argumentos opcionais e obrigatórios para os quais você pode passar para CreateInferenceRecommendationsJob.

AWS CLI

Use a API create-inference-recommendations-job para obter uma recomendação de endpoint de instância. Defina o campo job-type como 'Default' por exemplo, trabalhos de recomendação de endpoints. Além disso, observe o seguinte:

  • Forneça um nome para seu trabalho de recomendação do recomendador de inferência para o campo job-name. O nome do trabalho do recomendador de inferência deve ser exclusivo na sua região AWS e na sua conta AWS.

  • O nome do recurso da Amazon (ARN) de um perfil do IAM que habilita o Amazon SageMaker Inference Recommender para executar tarefas em seu nome. Defina isso para o campo role-arn.

  • O ARN do pacote de modelos versionado que você criou ao registrar seu modelo no registro do modelo. Defina isso para ModelPackageVersionArn no campo input-config.

  • Forneça o nome de um endpoint existente do SageMaker AI Inference que você deseja comparar no Inference Recommender para Endpoints no campo input-config.

aws sagemaker create-inference-recommendations-job --region <region>\ --job-name <job_name>\ --job-type Default\ --role-arn arn:aws:iam::<account:role/*>\ --input-config "{ \"ModelPackageVersionArn\": \"arn:aws:sagemaker:<region:account:role/*>\", \"Endpoints\": [{\"EndpointName\": <endpoint_name>}] }"

Obter seus resultados de trabalho de recomendação de inferência

Você pode coletar os resultados do seu trabalho de recomendação de inferência programaticamente com o mesmo procedimento para trabalhos de recomendação de inferência padrão. Para ter mais informações, consulte Obter seus resultados de trabalho de recomendação de inferência.

Ao obter resultados do trabalho de recomendação de inferência para um endpoint existente, você deverá receber uma resposta JSON semelhante a esta:

{ "JobName": "job-name", "JobType": "Default", "JobArn": "arn:aws:sagemaker:region:account-id:inference-recommendations-job/resource-id", "RoleArn": "iam-role-arn", "Status": "COMPLETED", "CreationTime": 1664922919.2, "LastModifiedTime": 1664924208.291, "InputConfig": { "ModelPackageVersionArn": "arn:aws:sagemaker:region:account-id:model-package/resource-id", "Endpoints": [ { "EndpointName": "endpoint-name" } ] }, "InferenceRecommendations": [ { "Metrics": { "CostPerHour": 0.7360000014305115, "CostPerInference": 7.456940238625975e-06, "MaxInvocations": 1645, "ModelLatency": 171 }, "EndpointConfiguration": { "EndpointName": "sm-endpoint-name", "VariantName": "variant-name", "InstanceType": "ml.g4dn.xlarge", "InitialInstanceCount": 1 }, "ModelConfiguration": { "EnvironmentParameters": [ { "Key": "TS_DEFAULT_WORKERS_PER_MODEL", "ValueType": "string", "Value": "4" } ] } } ], "EndpointPerformances": [ { "Metrics": { "MaxInvocations": 184, "ModelLatency": 1312 }, "EndpointConfiguration": { "EndpointName": "endpoint-name" } } ] }

As primeiras linhas fornecem informações sobre o trabalho de recomendação de inferência em si. Isso inclui o nome do trabalho, o ARN do perfil e os horários de criação e modificação mais recentes.

O dicionário InferenceRecommendations contém uma lista de recomendações de inferência do recomendador de inferência.

O dicionário EndpointConfiguration aninhado contém a recomendação do tipo de instância (InstanceType) junto com o nome do endpoint e da variante (um modelo de machine learning do AWS implantado) que foi usado durante o trabalho de recomendação.

O dicionário Metrics aninhado contém informações sobre o custo estimado por hora (CostPerHour) para seu endpoint em tempo real em dólares americanos, o custo estimado por inferência (CostPerInference) em dólares americanos para seu endpoint em tempo real, o número máximo esperado de solicitações InvokeEndpoint por minuto enviadas ao endpoint (MaxInvocations) e a latência do modelo (ModelLatency), que é o intervalo de tempo (em milissegundos) que seu modelo levou para responder ao SageMaker AI. A latência do modelo inclui os tempos de comunicação local necessários para enviar a solicitação e obter a resposta do contêiner de um modelo, bem como o tempo necessário para concluir a inferência dentro do contêiner.

O dicionário EndpointPerformances aninhado contém o nome do seu endpoint existente no qual o trabalho de recomendação foi executado (EndpointName) e as métricas de desempenho do seu endpoint (MaxInvocations e ModelLatency).