Executar um teste de carga personalizado - 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á.

Executar um teste de carga personalizado

Os testes de carga do Amazon SageMaker Inference Recommender conduzem benchmarks abrangentes com base nos requisitos de produção de latência e taxa de transferência, padrões de tráfego personalizados e endpoints sem servidor ou instâncias em tempo real (até 10) que você seleciona.

As seções a seguir demonstram como criar, descrever e interromper um teste de carga programaticamente usando o AWS SDK for Python (Boto3) e o, ou de forma interativa AWS CLI, usando o Amazon SageMaker Studio Classic ou o SageMaker console de IA.

Criar um trabalho de teste de carga

Crie um teste de carga programaticamente usando o AWS SDK for Python (Boto3), com o ou interativamente usando o AWS CLI Studio Classic ou o SageMaker console de IA. Assim como nas recomendações de inferência do Inference Recommender, especifique um nome de trabalho para seu teste de carga, um ARN de AWS função do IAM, uma configuração de entrada e o ARN do pacote de modelos de quando você registrou seu modelo no registro do modelo. Os testes de carga exigem que você também especifique um padrão de tráfego e condições de interrupção.

AWS SDK for Python (Boto3)

Use a API CreateInferenceRecommendationsJob para criar um teste de carga do recomendador de inferência. Especifique Advanced para o campo JobType e forneça:

  • Um nome do trabalho para seu teste de carga (JobName). O nome do trabalho deve ser exclusivo em sua AWS região e em sua AWS conta.

  • 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.

  • Um dicionário de configuração de endpoint (InputConfig) em que você deve especificar o seguinte:

    • Para TrafficPattern, especifique as fases ou o padrão de tráfego das escadas. Com o padrão de tráfego de fases, novos usuários aparecem a cada minuto na taxa especificada por você. Com o padrão de tráfego de escadas, novos usuários aparecem em intervalos cronometrados (ou etapas) a uma taxa especificada por você. Escolha uma das seguintes opções:

      • Em TrafficType, especifique PHASES. Em seguida, para a matriz Phases, especifique InitialNumberOfUsers (com quantos usuários simultâneos começar, com um mínimo de 1 e máximo de 3), SpawnRate (o número de usuários a serem gerados em um minuto para uma fase específica do teste de carga, com um mínimo de 0 e máximo de 3) e DurationInSeconds (quanto tempo a fase de tráfego deve durar, com um mínimo de 120 e máximo de 3600).

      • Em TrafficType, especifique STAIRS. Em seguida, para a matriz Stairs, especifique DurationInSeconds (quanto tempo a fase de tráfego deve durar, com um mínimo de 120 e máximo de 3600), NumberOfSteps (quantos intervalos são usados durante a fase) e UsersPerStep (quantos usuários são adicionados durante cada intervalo). Observe que o comprimento de cada etapa é o valor de DurationInSeconds / NumberOfSteps. Por exemplo, se seu DurationInSeconds for 600 e você especificar 5 etapas, cada etapa terá 120 segundos de duração.

        nota

        Um usuário é definido como um ator gerado pelo sistema que é executado em um loop e invoca solicitações para um endpoint como parte do recomendador de inferência. Para um XGBoost contêiner típico executado em uma ml.c5.large instância, os endpoints podem atingir 30.000 invocações por minuto (500 tps) com apenas 15 a 20 usuários.

    • Para ResourceLimit, especifique MaxNumberOfTests (o número máximo de testes de carga de análise comparativa para um trabalho do Inference Recommender, com um mínimo de 1 e máximo de 10) e MaxParallelOfTests (o número máximo de testes de carga de análise comparativa paralelas para um trabalho do recomendador de inferência, com um mínimo de 1 e um máximo de 10).

    • Para EndpointConfigurations, você pode especificar um dos seguintes:

      • O campo InstanceType, no qual você especifica o tipo de instância na qual deseja executar seus testes de carga.

      • O ServerlessConfig, no qual você especifica seus valores ideais para MaxConcurrency e MemorySizeInMB para um endpoint com tecnologia sem servidor. Para obter mais informações, consulte Documentação de inferência de tecnologia sem servidor.

  • Um dicionário de condições de interrupção (StoppingConditions), em que, se alguma das condições for atendida, a tarefa do recomendador de inferência será interrompida. Neste exemplo, especifique os seguintes campos no dicionário:

    • Para MaxInvocations, especifique o número máximo de solicitações por minuto esperado para o endpoint, com um mínimo de 1 e um máximo de 30.000.

    • Para ModelLatencyThresholds, especifique Percentile (o limite do percentil de latência do modelo) e ValueInMilliseconds (o valor do percentil de latência do modelo em milissegundos).

    • (Opcional) Para FlatInvocations, você pode especificar se deseja continuar o teste de carga quando a taxa de TPS (invocações por minuto) se estabilizar. Uma taxa de TPS reduzida geralmente significa que o endpoint atingiu a capacidade. No entanto, talvez você queira continuar monitorando o endpoint em condições de capacidade total. Para continuar o teste de carga quando isso acontecer, especifique esse valor como Continue. Caso contrário, o valor padrão será Stop.

# Create a low-level SageMaker service client. import boto3 aws_region=<INSERT> sagemaker_client=boto3.client('sagemaker', region=aws_region) # Provide a name to your recommendation based on load testing load_test_job_name="<INSERT>" # Provide the name of the sagemaker instance type instance_type="<INSERT>" # Provide the IAM Role that gives SageMaker permission to access AWS services role_arn='arn:aws:iam::<account>:role/*' # Provide your model package ARN that was created when you registered your # model with Model Registry model_package_arn='arn:aws:sagemaker:<region>:<account>:role/*' sagemaker_client.create_inference_recommendations_job( JobName=load_test_job_name, JobType="Advanced", RoleArn=role_arn, InputConfig={ 'ModelPackageVersionArn': model_package_arn, "JobDurationInSeconds": 7200, 'TrafficPattern' : { # Replace PHASES with STAIRS to use the stairs traffic pattern 'TrafficType': 'PHASES', 'Phases': [ { 'InitialNumberOfUsers': 1, 'SpawnRate': 1, 'DurationInSeconds': 120 }, { 'InitialNumberOfUsers': 1, 'SpawnRate': 1, 'DurationInSeconds': 120 } ] # Uncomment this section and comment out the Phases object above to use the stairs traffic pattern # 'Stairs' : { # 'DurationInSeconds': 240, # 'NumberOfSteps': 2, # 'UsersPerStep': 2 # } }, 'ResourceLimit': { 'MaxNumberOfTests': 10, 'MaxParallelOfTests': 3 }, "EndpointConfigurations" : [{ 'InstanceType': 'ml.c5.xlarge' }, { 'InstanceType': 'ml.m5.xlarge' }, { 'InstanceType': 'ml.r5.xlarge' }] # Uncomment the ServerlessConfig and comment out the InstanceType field if you want recommendations for a serverless endpoint # "ServerlessConfig": { # "MaxConcurrency": value, # "MemorySizeInMB": value # } }, StoppingConditions={ 'MaxInvocations': 1000, 'ModelLatencyThresholds':[{ 'Percentile': 'P95', 'ValueInMilliseconds': 100 }], # Change 'Stop' to 'Continue' to let the load test continue if invocations flatten 'FlatInvocations': 'Stop' } )

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

AWS CLI

Use a API create-inference-recommendations-job para criar um teste de carga do recomendador de inferência. Especifique Advanced para o campo JobType e forneça:

  • Um nome do trabalho para seu teste de carga (job-name). O nome do trabalho deve ser exclusivo em sua AWS região e em sua AWS conta.

  • 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 role-arn.

  • Um dicionário de configuração de endpoint (input-config) em que você deve especificar o seguinte:

    • Para TrafficPattern, especifique as fases ou o padrão de tráfego das escadas. Com o padrão de tráfego de fases, novos usuários aparecem a cada minuto na taxa especificada por você. Com o padrão de tráfego de escadas, novos usuários aparecem em intervalos cronometrados (ou etapas) a uma taxa especificada por você. Escolha uma das seguintes opções:

      • Em TrafficType, especifique PHASES. Em seguida, para a matriz Phases, especifique InitialNumberOfUsers (com quantos usuários simultâneos começar, com um mínimo de 1 e máximo de 3), SpawnRate (o número de usuários a serem gerados em um minuto para uma fase específica do teste de carga, com um mínimo de 0 e máximo de 3) e DurationInSeconds (quanto tempo a fase de tráfego deve durar, com um mínimo de 120 e máximo de 3600).

      • Em TrafficType, especifique STAIRS. Em seguida, para a matriz Stairs, especifique DurationInSeconds (quanto tempo a fase de tráfego deve durar, com um mínimo de 120 e máximo de 3600), NumberOfSteps (quantos intervalos são usados durante a fase) e UsersPerStep (quantos usuários são adicionados durante cada intervalo). Observe que o comprimento de cada etapa é o valor de DurationInSeconds / NumberOfSteps. Por exemplo, se seu DurationInSeconds for 600 e você especificar 5 etapas, cada etapa terá 120 segundos de duração.

        nota

        Um usuário é definido como um ator gerado pelo sistema que é executado em um loop e invoca solicitações para um endpoint como parte do recomendador de inferência. Para um XGBoost contêiner típico executado em uma ml.c5.large instância, os endpoints podem atingir 30.000 invocações por minuto (500 tps) com apenas 15 a 20 usuários.

    • Para ResourceLimit, especifique MaxNumberOfTests (o número máximo de testes de carga de análise comparativa para um trabalho do Inference Recommender, com um mínimo de 1 e máximo de 10) e MaxParallelOfTests (o número máximo de testes de carga de análise comparativa paralelas para um trabalho do recomendador de inferência, com um mínimo de 1 e um máximo de 10).

    • Para EndpointConfigurations, você pode especificar um dos seguintes:

      • O campo InstanceType, no qual você especifica o tipo de instância na qual deseja executar seus testes de carga.

      • O ServerlessConfig, no qual você especifica seus valores ideais para MaxConcurrency e MemorySizeInMB para um endpoint com tecnologia sem servidor.

  • Um dicionário de condições de interrupção (stopping-conditions), em que, se alguma das condições for atendida, a tarefa do recomendador de inferência será interrompida. Neste exemplo, especifique os seguintes campos no dicionário:

    • Para MaxInvocations, especifique o número máximo de solicitações por minuto esperado para o endpoint, com um mínimo de 1 e um máximo de 30.000.

    • Para ModelLatencyThresholds, especifique Percentile (o limite do percentil de latência do modelo) e ValueInMilliseconds (o valor do percentil de latência do modelo em milissegundos).

    • (Opcional) Para FlatInvocations, você pode especificar se deseja continuar o teste de carga quando a taxa de TPS (invocações por minuto) se estabilizar. Uma taxa de TPS reduzida geralmente significa que o endpoint atingiu a capacidade. No entanto, talvez você queira continuar monitorando o endpoint em condições de capacidade total. Para continuar o teste de carga quando isso acontecer, especifique esse valor como Continue. Caso contrário, o valor padrão será Stop.

aws sagemaker create-inference-recommendations-job\ --region <region>\ --job-name <job-name>\ --job-type ADVANCED\ --role-arn arn:aws:iam::<account>:role/*\ --input-config \"{ \"ModelPackageVersionArn\": \"arn:aws:sagemaker:<region>:<account>:role/*\", \"JobDurationInSeconds\": 7200, \"TrafficPattern\" : { # Replace PHASES with STAIRS to use the stairs traffic pattern \"TrafficType\": \"PHASES\", \"Phases\": [ { \"InitialNumberOfUsers\": 1, \"SpawnRate\": 60, \"DurationInSeconds\": 300 } ] # Uncomment this section and comment out the Phases object above to use the stairs traffic pattern # 'Stairs' : { # 'DurationInSeconds': 240, # 'NumberOfSteps': 2, # 'UsersPerStep': 2 # } }, \"ResourceLimit\": { \"MaxNumberOfTests\": 10, \"MaxParallelOfTests\": 3 }, \"EndpointConfigurations\" : [ { \"InstanceType\": \"ml.c5.xlarge\" }, { \"InstanceType\": \"ml.m5.xlarge\" }, { \"InstanceType\": \"ml.r5.xlarge\" } # Use the ServerlessConfig and leave out the InstanceType fields if you want recommendations for a serverless endpoint # \"ServerlessConfig\": { # \"MaxConcurrency\": value, # \"MemorySizeInMB\": value # } ] }\" --stopping-conditions \"{ \"MaxInvocations\": 1000, \"ModelLatencyThresholds\":[ { \"Percentile\": \"P95\", \"ValueInMilliseconds\": 100 } ], # Change 'Stop' to 'Continue' to let the load test continue if invocations flatten \"FlatInvocations\": \"Stop\" }\"
Amazon SageMaker Studio Classic

Crie um teste de carga com o Studio Classic.

  1. Em sua aplicação do Studio Classic, escolha o ícone Início ( Black square icon representing a placeholder or empty image. ).

  2. Na barra de navegação lateral do Studio Classic, escolha Implantações.

  3. Escolha Recomendador de inferência na lista suspensa.

  4. Escolha Criar trabalho do recomendador de inferência. Uma nova guia intitulada Criar trabalho do recomendador de inferência é aberta.

  5. Selecione o nome do seu grupo de modelos no campo da lista suspensa Grupo de modelos. A lista inclui todos os grupos de modelos registrados no registro de modelos da sua conta, incluindo modelos registrados fora do Studio Classic.

  6. Selecione uma versão do modelo no campo suspenso Versão do modelo.

  7. Escolha Continuar.

  8. Forneça um nome para o trabalho no campo Nome.

  9. (Opcional) Forneça uma descrição do seu trabalho no campo Descrição.

  10. Escolha uma função do IAM que conceda permissão do Inference Recommender para acessar AWS os serviços. Você pode criar um perfil e anexar a política gerenciada do IAM AmazonSageMakerFullAccess para fazer isso, ou você pode deixar o Studio Classic criar um perfil para você.

  11. Escolha Condições de interrupção para expandir os campos de entrada disponíveis. Forneça um conjunto de condições para interromper uma recomendação de implantação.

    1. Especifique o número máximo de solicitações por minuto esperado para o endpoint no campo Máximo de invocações por minuto.

    2. Especifique o limite de latência do modelo em microssegundos no campo Limite de latência do modelo. O limite de latência do modelo descreve o intervalo de tempo gasto por um modelo para responder, conforme visualizado pelo recomendador de inferência. Esse intervalo inclui o tempo de comunicação local necessário para enviar a solicitação e buscar a resposta de um modelo, bem como o tempo gasto para concluir a inferência no contêiner.

  12. Escolha Padrão de tráfego para expandir os campos de entrada disponíveis.

    1. Defina o número inicial de usuários virtuais especificando um número inteiro no campo Número inicial de usuários.

    2. Forneça um número inteiro para o campo Taxa de geração. A taxa de geração define o número de usuários criados por segundo.

    3. Defina a duração da fase em segundos especificando um número inteiro no campo Duração.

    4. (Opcional) Adicione padrões de tráfego adicionais. Para fazer isso, escolha Adicionar.

  13. Escolha a configuração Adicional para revelar o campo Duração máxima do teste. Especifique, em segundos, o tempo máximo que um teste pode levar durante um trabalho. Novos trabalhos não são programados após a duração definida. Isso ajuda a garantir que os trabalhos em andamento não sejam interrompidos e que você visualize somente os trabalhos concluídos.

  14. Escolha Continuar.

  15. Escolha Selecionar instâncias.

  16. No campo Instâncias para avaliação comparativa, escolha Adicionar instâncias para testar. Selecione até 10 instâncias para o recomendador de inferência usar para testes de carga.

  17. Escolha Configurações adicionais.

    1. Forneça um número inteiro que defina um limite superior para o número de testes que um trabalho pode fazer para o campo Número máximo de testes. Observe que cada configuração de endpoint resulta em um novo teste de carga.

    2. Forneça um número inteiro para o campo de teste Paralelo máximo. Essa configuração define um limite superior no número de testes de carga que podem ser executados paralelamente.

  18. Selecione Enviar.

    O teste de carga pode demorar até 2 horas.

    Atenção

    Não feche essa guia. Se você fechar essa guia, cancelará o trabalho de teste de carga do recomendador de inferência.

SageMaker AI console

Crie um teste de carga personalizado por meio do console de SageMaker IA fazendo o seguinte:

  1. Acesse o console de SageMaker IA em https://console.aws.amazon.com/sagemaker/.

  2. No painel de navegação à esquerda, selecione Inferência e, em seguida, selecione Recomendador de inferência.

  3. Na página de trabalhos recomendados de inferência, escolha Criar trabalho.

  4. Na Etapa 1: configuração do modelo, faça o seguinte:

    1. Em Tipo de trabalho, escolha Trabalho de recomendação padrão.

    2. Se você estiver usando um modelo registrado no registro de modelos de SageMaker IA, ative a opção Escolher um modelo no registro de modelos e faça o seguinte:

      1. Na lista suspensa Grupo de modelos, escolha o grupo de modelos no registro de modelos de SageMaker IA em que seu modelo está.

      2. Na lista suspensa Versão do modelo, escolha a versão desejada do seu modelo.

    3. Se você estiver usando um modelo criado no SageMaker AI, desative a opção Escolher um modelo no registro do modelo e faça o seguinte:

      1. No campo Nome do modelo, insira o nome do seu modelo de SageMaker IA.

    4. Para a função do IAM, você pode selecionar uma função existente AWS do IAM que tenha as permissões necessárias para criar um trabalho de recomendação de instâncias. Como alternativa, se você não tiver uma função existente, poderá escolher Criar uma nova função para abrir o pop-up de criação da função, e a SageMaker IA adicionará as permissões necessárias à nova função que você criar.

    5. Para o bucket do S3 para análise comparativa de carga útil, insira o caminho do Amazon S3 para seu arquivo de carga útil de amostra, que deve conter arquivos de carga útil de amostra que o recomendador de inferência usa para comparar seu modelo em diferentes tipos de instância.

    6. Em Tipo de conteúdo da carga, insira os tipos de MIME para seus dados de carga útil.

    7. Em Padrão de tráfego, configure as fases para o teste de carga fazendo o seguinte:

      1. Em Número inicial de usuários, especifique com quantos usuários simultâneos você deseja começar (com um mínimo de 1 e um máximo de 3).

      2. Em Taxa de geração, especifique o número de usuários a serem gerados em um minuto para a fase (com um mínimo de 0 e um máximo de 3).

      3. Em Duração (segundos), especifique o quão baixa a fase de tráfego deve ser em segundos (com um mínimo de 120 e um máximo de 3600).

    8. (Opcional) Se você desativou a opção Escolher um modelo no registro do modelo e especificou um modelo de SageMaker IA, então, para a configuração do contêiner, faça o seguinte:

      1. Na lista suspensa Domínio, selecione o domínio de machine learning do modelo, como visão computacional, processamento de linguagem natural ou machine learning.

      2. Na lista suspensa Estrutura, selecione a estrutura do seu contêiner, como TensorFlow ou. XGBoost

      3. Em Versão do framework, insira a versão da estrutura da sua imagem de contêiner.

      4. Na lista suspensa Nome do modelo mais próximo, selecione o modelo pré-treinado que mais se aproxima do seu.

      5. Na lista suspensa Tarefa, selecione a tarefa de machine learning que o modelo realiza, como classificação ou regressão de imagens.

    9. (Opcional) Para compilação de modelos usando SageMaker o Neo, você pode configurar o trabalho de recomendação para um modelo que você compilou usando SageMaker o Neo. Em Configuração de entrada de dados, insira a forma correta dos dados de entrada para seu modelo em um formato semelhante a {'input':[1,1024,1024,3]}.

    10. Escolha Próximo.

  5. Para a Etapa 2: instâncias e parâmetros de ambiente, faça o seguinte:

    1. Em Selecionar instâncias para análise comparativa, você pode selecionar até 8 tipos de instância que deseja comparar.

    2. (Opcional) Em Intervalos de parâmetros de ambiente, você pode especificar parâmetros de ambiente que ajudem a otimizar seu modelo. Especifique os parâmetros como pares de Chave e Valor.

    3. Escolha Próximo.

  6. Para a Etapa 3: parâmetros de trabalho, faça o seguinte:

    1. (Opcional) No campo Nome do trabalho, insira um nome para seu trabalho de recomendação de instância. Quando você cria o trabalho, a SageMaker IA acrescenta um carimbo de data/hora ao final desse nome.

    2. (Opcional) No campo Descrição do trabalho, insira uma descrição para o trabalho.

    3. (Opcional) Na lista suspensa Chave de criptografia, escolha uma AWS KMS chave por nome ou insira seu ARN para criptografar seus dados.

    4. (Opcional) Em Número máximo de testes, insira o número de testes que você deseja executar durante o trabalho de recomendação.

    5. (Opcional) Em Máximo de testes paralelos, insira o número máximo de testes paralelos que você deseja executar durante o trabalho de recomendação.

    6. Em Duração máxima do teste (s), insira o número máximo de segundos que você deseja que cada teste seja executado.

    7. Em Máximo de invocações por minuto, insira o número máximo de solicitações por minuto que o endpoint pode alcançar antes de interromper o trabalho de recomendação. Depois de atingir esse limite, a SageMaker IA encerra o trabalho.

    8. Em Limite de latência do modelo P99 (ms), insira o percentil de latência do modelo em milissegundos.

    9. Escolha Próximo.

  7. Para a Etapa 4: revisar o trabalho, revise suas configurações e escolha Enviar.

Obter os resultados do seu teste de carga

Você pode coletar métricas programaticamente em todos os testes de carga depois que os testes de carga forem concluídos com AWS SDK for Python (Boto3) o AWS CLI Studio Classic ou o console de SageMaker IA.

AWS SDK for Python (Boto3)

Colete métricas com a API DescribeInferenceRecommendationsJob. Especifique o nome do trabalho do teste de carga para o campoJobName:

load_test_response = sagemaker_client.describe_inference_recommendations_job( JobName=load_test_job_name )

Imprima o objeto de resposta.

load_test_response['Status']

Isso retorna uma resposta JSON semelhante ao exemplo a seguir. Observe que este exemplo mostra os tipos de instância recomendados para inferência em tempo real (para ver um exemplo mostrando recomendações de inferência sem servidor, veja o exemplo após este).

{ 'JobName': 'job-name', 'JobDescription': 'job-description', 'JobType': 'Advanced', 'JobArn': 'arn:aws:sagemaker:region:account-id:inference-recommendations-job/resource-id', 'Status': 'COMPLETED', 'CreationTime': datetime.datetime(2021, 10, 26, 19, 38, 30, 957000, tzinfo=tzlocal()), 'LastModifiedTime': datetime.datetime(2021, 10, 26, 19, 46, 31, 399000, tzinfo=tzlocal()), 'InputConfig': { 'ModelPackageVersionArn': 'arn:aws:sagemaker:region:account-id:model-package/resource-id', 'JobDurationInSeconds': 7200, 'TrafficPattern': { 'TrafficType': 'PHASES' }, 'ResourceLimit': { 'MaxNumberOfTests': 100, 'MaxParallelOfTests': 100 }, 'EndpointConfigurations': [{ 'InstanceType': 'ml.c5d.xlarge' }] }, 'StoppingConditions': { 'MaxInvocations': 1000, 'ModelLatencyThresholds': [{ 'Percentile': 'P95', 'ValueInMilliseconds': 100} ]}, 'InferenceRecommendations': [{ 'Metrics': { 'CostPerHour': 0.6899999976158142, 'CostPerInference': 1.0332434612791985e-05, 'MaximumInvocations': 1113, 'ModelLatency': 100000 }, 'EndpointConfiguration': { 'EndpointName': 'endpoint-name', 'VariantName': 'variant-name', 'InstanceType': 'ml.c5d.xlarge', 'InitialInstanceCount': 3 }, 'ModelConfiguration': { 'Compiled': False, 'EnvironmentParameters': [] } }], 'ResponseMetadata': { 'RequestId': 'request-id', 'HTTPStatusCode': 200, 'HTTPHeaders': { 'x-amzn-requestid': 'x-amzn-requestid', 'content-type': 'content-type', 'content-length': '1199', 'date': 'Tue, 26 Oct 2021 19:57:42 GMT' }, 'RetryAttempts': 0} }

As primeiras linhas fornecem informações sobre o próprio trabalho de teste de carga. Isso inclui o nome do trabalho, o ARN do perfil, o horário de criação e exclusão.

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 aprendizado de AWS máquina implantado) usado durante o trabalho de recomendação. Você pode usar o nome do endpoint e da variante para monitoramento no Amazon CloudWatch Events. Consulte Métricas para monitorar a Amazon SageMaker AI com a Amazon CloudWatch para obter mais informações.

O dicionário EndpointConfiguration aninhado também contém a recomendação de contagem de instâncias (InitialInstanceCount). Esse é o número de instâncias que você deve provisionar no endpoint para atender ao MaxInvocations especificado no StoppingConditions. Por exemplo, se InstanceType for ml.m5.large e InitialInstanceCount for 2, você deverá provisionar 2 instâncias ml.m5.large para seu endpoint para que ele possa lidar com o TPS especificado na condição de interrupção MaxInvocations.

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) para seu endpoint em tempo real, o número máximo de InvokeEndpoint solicitações enviadas ao endpoint e a latência do modelo (ModelLatency), que é o intervalo de tempo (em microssegundos) que seu modelo levou para responder à IA. SageMaker 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 do modelo, bem como o tempo necessário para concluir a inferência dentro do contêiner.

O seguinte exemplo mostra a parte InferenceRecommendations da resposta de um trabalho de recomendações de inferência configurado para retornar recomendações de inferência sem servidor:

"InferenceRecommendations": [ { "EndpointConfiguration": { "EndpointName": "value", "InitialInstanceCount": value, "InstanceType": "value", "VariantName": "value", "ServerlessConfig": { "MaxConcurrency": value, "MemorySizeInMb": value } }, "InvocationEndTime": value, "InvocationStartTime": value, "Metrics": { "CostPerHour": value, "CostPerInference": value, "CpuUtilization": value, "MaxInvocations": value, "MemoryUtilization": value, "ModelLatency": value, "ModelSetupTime": value }, "ModelConfiguration": { "Compiled": "False", "EnvironmentParameters": [], "InferenceSpecificationName": "value" }, "RecommendationId": "value" } ]

Você pode interpretar as recomendações para inferência serverless de maneira semelhante aos resultados para inferência em tempo real, com a exceção do ServerlessConfig, que indica as métricas retornadas para um endpoint com tecnologia sem servidor com o MaxConcurrency fornecido e quando o MemorySizeInMB ocorre. As recomendações serverless também medem a métrica ModelSetupTime, que avalia (em microssegundos) o tempo que leva para iniciar os recursos computacionais em um endpoint com tecnologia sem servidor. Para obter mais informações sobre como configurar endpoints com technologia sem servidor, consulte Documentação de inferência de tecnologia sem servidor.

AWS CLI

Colete métricas com a API describe-inference-recommendations-job. Especifique o nome do trabalho do teste de carga para a sinalização job-name:

aws sagemaker describe-inference-recommendations-job --job-name <job-name>

Isso retorna uma resposta semelhante ao exemplo a seguir. Observe que este exemplo mostra os tipos de instância recomendados para inferência em tempo real (para ver um exemplo mostrando recomendações da Inferência Sem Servidor, veja o exemplo após este).

{ 'JobName': 'job-name', 'JobDescription': 'job-description', 'JobType': 'Advanced', 'JobArn': 'arn:aws:sagemaker:region:account-id:inference-recommendations-job/resource-id', 'Status': 'COMPLETED', 'CreationTime': datetime.datetime(2021, 10, 26, 19, 38, 30, 957000, tzinfo=tzlocal()), 'LastModifiedTime': datetime.datetime(2021, 10, 26, 19, 46, 31, 399000, tzinfo=tzlocal()), 'InputConfig': { 'ModelPackageVersionArn': 'arn:aws:sagemaker:region:account-id:model-package/resource-id', 'JobDurationInSeconds': 7200, 'TrafficPattern': { 'TrafficType': 'PHASES' }, 'ResourceLimit': { 'MaxNumberOfTests': 100, 'MaxParallelOfTests': 100 }, 'EndpointConfigurations': [{ 'InstanceType': 'ml.c5d.xlarge' }] }, 'StoppingConditions': { 'MaxInvocations': 1000, 'ModelLatencyThresholds': [{ 'Percentile': 'P95', 'ValueInMilliseconds': 100 }] }, 'InferenceRecommendations': [{ 'Metrics': { 'CostPerHour': 0.6899999976158142, 'CostPerInference': 1.0332434612791985e-05, 'MaximumInvocations': 1113, 'ModelLatency': 100000 }, 'EndpointConfiguration': { 'EndpointName': 'endpoint-name', 'VariantName': 'variant-name', 'InstanceType': 'ml.c5d.xlarge', 'InitialInstanceCount': 3 }, 'ModelConfiguration': { 'Compiled': False, 'EnvironmentParameters': [] } }], 'ResponseMetadata': { 'RequestId': 'request-id', 'HTTPStatusCode': 200, 'HTTPHeaders': { 'x-amzn-requestid': 'x-amzn-requestid', 'content-type': 'content-type', 'content-length': '1199', 'date': 'Tue, 26 Oct 2021 19:57:42 GMT' }, 'RetryAttempts': 0 } }

As primeiras linhas fornecem informações sobre o próprio trabalho de teste de carga. Isso inclui o nome do trabalho, o ARN do perfil, o horário de criação e exclusão.

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 aprendizado de AWS máquina implantado) usado durante o trabalho de recomendação. Você pode usar o nome do endpoint e da variante para monitoramento no Amazon CloudWatch Events. Consulte Métricas para monitorar a Amazon SageMaker AI com a Amazon CloudWatch para obter mais informações.

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) para seu endpoint em tempo real, o número máximo de InvokeEndpoint solicitações enviadas ao endpoint e a latência do modelo (ModelLatency), que é o intervalo de tempo (em microssegundos) que seu modelo levou para responder à IA. SageMaker 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 do modelo, bem como o tempo necessário para concluir a inferência dentro do contêiner.

O seguinte exemplo mostra a parte InferenceRecommendations da resposta de um trabalho de recomendações de inferência configurado para retornar recomendações de inferência sem servidor:

"InferenceRecommendations": [ { "EndpointConfiguration": { "EndpointName": "value", "InitialInstanceCount": value, "InstanceType": "value", "VariantName": "value", "ServerlessConfig": { "MaxConcurrency": value, "MemorySizeInMb": value } }, "InvocationEndTime": value, "InvocationStartTime": value, "Metrics": { "CostPerHour": value, "CostPerInference": value, "CpuUtilization": value, "MaxInvocations": value, "MemoryUtilization": value, "ModelLatency": value, "ModelSetupTime": value }, "ModelConfiguration": { "Compiled": "False", "EnvironmentParameters": [], "InferenceSpecificationName": "value" }, "RecommendationId": "value" } ]

Você pode interpretar as recomendações de inferência sem servidor de maneira semelhante aos resultados para inferência em tempo real, com exceção de ServerlessConfig, que indica os valores especificados para MaxConcurrency e MemorySizeInMB ao configurar o teste de carga. As recomendações de inferência sem servidor também calculam a métrica ModelSetupTime, que avalia (em microssegundos) o tempo que leva para iniciar os recursos computacionais em um endpoint sem servidor. Para obter mais informações sobre como configurar endpoints sem servidor, consulte a documentação da Inferência Sem Servidor.

Amazon SageMaker Studio Classic

As recomendações são preenchidas em uma nova guia chamada Recomendações de inferência no Studio Classic. Pode demorar até 2 horas para que os resultados apareçam. Essa guia contém as colunas Resultados e Detalhes.

A coluna Detalhes fornece informações sobre o trabalho de teste de carga, como o nome dado ao trabalho de teste de carga, quando o trabalho foi criado (Hora de criação) e muito mais. Também contém informações de Configurações, como o número máximo de invocações que ocorreram por minuto e informações sobre os nomes de recursos da Amazon usados.

A coluna Resultados fornece janelas de metas de implantação e recomendações de SageMaker IA nas quais você pode ajustar a ordem em que os resultados são exibidos com base na importância da implantação. Existem três menus suspensos nos quais você pode fornecer o nível de importância do Custo, Latência e Throughput para o seu caso de uso. Para cada meta (custo, latência e throughput), você pode definir o nível de importância: menor importância, baixa importância, importância moderada, alta importância ou maior importância.

Com base em suas seleções de importância para cada meta, o Inference Recommender exibe sua recomendação principal no campo de SageMakerrecomendação à direita do painel, junto com o custo estimado por hora e a solicitação de inferência. Também fornece informações sobre a latência esperada do modelo, o número máximo de invocações e a número de instâncias.

Além da recomendação principal exibida, você também pode ver as mesmas informações exibidas para todas as instâncias que o recomendador de inferência testou na seção Todas as execuções.

SageMaker AI console

Você pode ver os resultados do seu trabalho de teste de carga personalizado no console de SageMaker IA fazendo o seguinte:

  1. Acesse o console de SageMaker IA em https://console.aws.amazon.com/sagemaker/.

  2. No painel de navegação à esquerda, selecione Inferência e, em seguida, selecione Recomendador de inferência.

  3. Na página de trabalhos do recomendador de inferência, escolha o nome do seu trabalho de recomendação de inferência.

Na página de detalhes do seu trabalho, você pode ver as recomendações de inferência, que são os tipos de instância que a SageMaker IA recomenda para seu modelo, conforme mostrado na captura de tela a seguir.

Captura de tela da lista de recomendações de inferência na página de detalhes do trabalho no console de SageMaker IA.

Nesta seção, você pode comparar os tipos de instância por vários fatores, como latência do modelo, custo por hora, custo por inferência e invocações por minuto.

Nessa página, você também pode visualizar as configurações especificadas para seu trabalho. Na seção Monitor, você pode ver as CloudWatch métricas da Amazon que foram registradas para cada tipo de instância. Para saber mais sobre como interpretar essas métricas, consulte Interpretar resultados.