Executar um teste de carga personalizado - Amazon SageMaker

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 AWS CLI, ou interativamente, usando o Amazon SageMaker Studio Classic ou o console. SageMaker

Criar um trabalho de teste de carga

Crie um teste de carga programaticamente usando o AWS SDK for Python (Boto3), com o AWS CLI ou interativamente usando o Studio Classic ou o console. SageMaker Assim como nas recomendações de inferência do Inference Recommender, especifique um nome de trabalho para seu teste de carga, uma AWS IAM funçãoARN, uma configuração de entrada e seu pacote de modelo a ARN partir do momento em que 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 o CreateInferenceRecommendationsJob API para criar um teste de carga do Inference Recommender. 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 Amazon Resource Name (ARN) de uma IAM função que permite que o Inference Recommender execute 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) ParaFlatInvocations, você pode especificar se deseja continuar o teste de carga quando a taxa TPS (invocações por minuto) se estabilizar. Uma TPS taxa 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 SageMaker API referência da Amazon para obter uma lista completa dos argumentos opcionais e obrigatórios para os quais você pode transmitirCreateInferenceRecommendationsJob.

AWS CLI

Use o create-inference-recommendations-job API para criar um teste de carga do Inference Recommender. 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 Amazon Resource Name (ARN) de uma IAM função que permite que o Inference Recommender execute 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) ParaFlatInvocations, você pode especificar se deseja continuar o teste de carga quando a taxa TPS (invocações por minuto) se estabilizar. Uma TPS taxa 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 seu aplicativo Studio Classic, escolha o ícone inicial ( ).

  2. Na barra lateral esquerda 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 em 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 IAM função que conceda permissão ao Inference Recommender para acessar AWS os serviços. Você pode criar uma função e anexar a política AmazonSageMakerFullAccess IAM gerenciada para fazer isso, ou você pode deixar o Studio Classic criar uma função 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 console

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

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

  2. No painel de navegação à esquerda, escolha Inferência e, em seguida, escolha 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 SageMaker modelos, 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 SageMaker modelos 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 em SageMaker, desative a opção Escolher um modelo no registro de modelos e faça o seguinte:

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

    4. Para IAMfunção, você pode selecionar uma AWS IAM função existente que tenha as permissões necessárias para criar uma tarefa de recomendação de instância. 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 SageMaker 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 de carga útil, insira os MIME tipos de seus dados de amostra 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 SageMaker modelo, em 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 aprendizado de máquina.

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

      3. Em Versão de 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. Ao criar o trabalho, SageMaker anexa 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-a 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, SageMaker termina 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 SageMaker console.

AWS SDK for Python (Boto3)

Colete métricas com DescribeInferenceRecommendationsJob API o. 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 JSON 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 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, a funçãoARN, 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 Monitore a Amazon SageMaker com a Amazon CloudWatch Para 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 for ml.m5.large e InstanceType InitialInstanceCount for2, você deverá provisionar duas ml.m5.large instâncias para seu endpoint para que ele possa lidar com o TPS especificado na condição de MaxInvocations parada.

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. 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 exemplo a seguir mostra a InferenceRecommendations parte da resposta de um trabalho de recomendações de inferência configurado para retornar recomendações de inferência com tecnologia 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 describe-inference-recommendations-job API o. 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 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, a funçãoARN, 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 Monitore a Amazon SageMaker com a Amazon CloudWatch Para 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. 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 exemplo a seguir mostra a InferenceRecommendations parte da resposta de um trabalho de recomendações de inferência configurado para retornar recomendações de inferência com tecnologia 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.

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 e SageMakerrecomendações de implantação 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 Taxa de transferência para o seu caso de uso. Para cada meta (custo, latência e taxa de transferência), 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 console

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

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

  2. No painel de navegação à esquerda, escolha Inferência e, em seguida, escolha 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 SageMaker recomendados 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 SageMaker console.

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.

Interromper seu teste de carga

Talvez você queira interromper um trabalho que está em execução no momento se tiver iniciado um trabalho por engano ou se não precisar mais executá-lo. Interrompa seus trabalhos de teste de carga programaticamente com o StopInferenceRecommendationsJobAPI, ou por meio do Studio Classic ou do SageMaker console.

AWS SDK for Python (Boto3)

Especifique o nome do trabalho do teste de carga para o campoJobName:

sagemaker_client.stop_inference_recommendations_job( JobName='<INSERT>' )
AWS CLI

Especifique o nome do trabalho do teste de carga para a sinalização job-name:

aws sagemaker stop-inference-recommendations-job --job-name <job-name>
Amazon SageMaker Studio Classic

Feche a guia em que você iniciou seu trabalho de carregamento personalizado para interromper o teste de carga do recomendador de inferência.

SageMaker console

Para interromper seu trabalho de teste de carga por meio do SageMaker console, faça o seguinte:

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

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

  3. Na página de trabalhos do recomendador de inferência, selecione seu trabalho de teste de carga.

  4. Escolha Parar execução.

  5. Na caixa de diálogo exibida, escolha Confirmar.

Depois de interromper sua tarefa, o status da tarefa deve mudar para Interrompendo.