Escalar automaticamente a simultaneidade provisionada para um endpoint de sem servidor - 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á.

Escalar automaticamente a simultaneidade provisionada para um endpoint de sem servidor

A Amazon SageMaker AI aumenta ou reduz automaticamente os endpoints sem servidor sob demanda. Para endpoints sem servidor com simultaneidade provisionada, você pode usar o Application Auto Scaling para aumentar ou reduzir a escala horizontalmente da simultaneidade provisionada com base em seu perfil de tráfego, otimizando assim os custos.

A seguir estão os pré-requisitos para escalar automaticamente a simultaneidade provisionada em endpoints sem servidor:

Antes de usar o ajuste de escala automático, você já deve ter implantado um modelo em um endpoint sem servidor com simultaneidade provisionada. Os modelos implantados são referidos como variantes de produção. Consulte Criar uma configuração de endpoint e Crie um endpoint do para obter mais informações sobre a implantação de um modelo em um endpoint sem servidor com simultaneidade provisionada. Para especificar as métricas e os valores de destino de uma política de escalabilidade, você precisa configurar uma política de rastreamento. Para obter mais informações sobre como definir uma política de escalabilidade, consulte Definir uma política de escalabilidade. Depois de registrar o modelo e definir uma política de escalabilidade, aplique a política de escalabilidade ao modelo registrado. Para obter mais informações sobre como aplicar a política de escalabilidade, consulte Aplicar uma política de escalabilidade.

Para obter detalhes sobre outros pré-requisitos e componentes usados com o escalonamento automático, consulte a Pré-requisitos de ajuste de escala automático seção na documentação do escalonamento automático de IA. SageMaker

Registrar um modelo

Para adicionar escalonamento automático a um endpoint sem servidor com simultaneidade provisionada, primeiro você deve registrar seu modelo (variante de produção) usando nossa API Application Auto Scaling. AWS CLI

Registrar um modelo (AWS CLI)

Para registrar seu modelo, use o register-scalable-target AWS CLI comando com os seguintes parâmetros:

  • --service-namespace: defina este valor como sagemaker.

  • --resource-id: o identificador de recurso para o modelo (especificamente, a variante de produção). Para esse parâmetro, o tipo de recurso é endpoint e o identificador exclusivo é o nome da variante de produção. Por exemplo, endpoint/MyEndpoint/variant/MyVariant.

  • --scalable-dimension: defina este valor como sagemaker:variant:DesiredProvisionedConcurrency.

  • --min-capacity: O número mínimo de simultaneidade provisionada para o modelo. Defina --min-capacity como pelo menos 1. Deve ser igual ou menor que o valor especificado para --max-capacity.

  • --max-capacity: o número máximo de simultaneidade provisionada que deve ser ativada por meio da aplicação Auto Scaling. Defina --max-capacity para um mínimo de 1. Deve ser maior que ou igual ao valor especificado para --min-capacity.

O seguinte exemplo mostra como registrar um modelo chamado MyVariant que é dinamicamente escalado para ter de um valor simultaneamente provisionado de 1 a 10:

aws application-autoscaling register-scalable-target \ --service-namespace sagemaker \ --scalable-dimension sagemaker:variant:DesiredProvisionedConcurrency \ --resource-id endpoint/MyEndpoint/variant/MyVariant \ --min-capacity 1 \ --max-capacity 10

Registro de um modelo (API da aplicação Auto Scaling)

Para registrar seu modelo, use a ação RegisterScalableTarget da API da aplicação Auto Scaling com os seguintes parâmetros:

  • ServiceNamespace: defina este valor como sagemaker.

  • ResourceId: o identificador de recurso para o modelo (especificamente, a variante de produção). Para esse parâmetro, o tipo de recurso é endpoint e o identificador exclusivo é o nome da variante de produção. Por exemplo, endpoint/MyEndpoint/variant/MyVariant.

  • ScalableDimension: defina este valor como sagemaker:variant:DesiredProvisionedConcurrency.

  • MinCapacity: O número mínimo de simultaneidade provisionada para o modelo. Defina MinCapacity como pelo menos 1. Deve ser igual ou menor que o valor especificado para MaxCapacity.

  • MaxCapacity: o número máximo de simultaneidade provisionada que deve ser ativada por meio da aplicação Auto Scaling. Defina MaxCapacity para um mínimo de 1. Deve ser maior que ou igual ao valor especificado para MinCapacity.

O seguinte exemplo mostra como registrar um modelo chamado MyVariant que é dinamicamente escalado para ter de um valor simultaneamente provisionado de 1 a 10:

POST / HTTP/1.1 Host: autoscaling.us-east-2.amazonaws.com Accept-Encoding: identity X-Amz-Target: AnyScaleFrontendService.RegisterScalableTarget X-Amz-Date: 20160506T182145Z User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8 Content-Type: application/x-amz-json-1.1 Authorization: AUTHPARAMS { "ServiceNamespace": "sagemaker", "ResourceId": "endpoint/MyEndPoint/variant/MyVariant", "ScalableDimension": "sagemaker:variant:DesiredProvisionedConcurrency", "MinCapacity": 1, "MaxCapacity": 10 }

Definir uma política de escalabilidade

Para especificar as métricas e os valores de destino de uma política de escalabilidade, você pode configurar uma política de escalabilidade de rastreamento de destino. Defina a política de escalabilidade como um bloco JSON em um arquivo de texto. Em seguida, você pode usar esse arquivo de texto ao invocar a AWS CLI ou a API Application Auto Scaling. Use a métrica predefinida SageMakerVariantProvisionedConcurrencyUtilization para definir rapidamente a política de escalabilidade de rastreamento de destino.

{ "TargetValue": 0.5, "PredefinedMetricSpecification": { "PredefinedMetricType": "SageMakerVariantProvisionedConcurrencyUtilization" }, "ScaleOutCooldown": 1, "ScaleInCooldown": 1 }

Aplicar uma política de escalabilidade

Depois de registrar seu modelo, você pode aplicar uma política de ajuste de escala ao endpoint sem servidor com a simultaneidade provisionada. Consulte Aplicar uma política de escalabilidade de rastreamento de destino para aplicar uma política de escalabilidade de rastreamento de destino que você definiu. Se o fluxo de tráfego para o endpoint sem servidor tiver uma rotina previsível, em vez de aplicar uma política de ajuste de escala de rastreamento de metas, talvez você queira agendar ações de ajuste de escala em horários específicos. Para obter mais informações sobre ações de escalabilidade programada, consulte Escalabilidade programada.

Aplicar uma política de escalabilidade de rastreamento de destino

Você pode usar a API AWS CLI ou a AWS Management Console Application Auto Scaling API para aplicar uma política de escalabilidade de rastreamento de metas ao seu endpoint sem servidor com simultaneidade provisionada.

Aplicar uma política de ajuste de escala de rastreamento de destino (AWS CLI)

Para aplicar uma política de ajuste de escala ao modelo, use o comando put-scaling-policy da AWS CLI com os seguintes parâmetros:

  • --policy-name: o nome da política de ajuste de escala.

  • --policy-type: defina este valor como TargetTrackingScaling.

  • --resource-id: o identificador do recurso para a variante. Para esse parâmetro, o tipo de recurso é endpoint e o identificador exclusivo é o nome da variante. Por exemplo, endpoint/MyEndpoint/variant/MyVariant.

  • --service-namespace: defina este valor como sagemaker.

  • --scalable-dimension: defina este valor como sagemaker:variant:DesiredProvisionedConcurrency.

  • --target-tracking-scaling-policy-configuration: a configuração da política de ajuste de escala de rastreamento de destino a ser usada para o modelo.

O exemplo a seguir mostra como aplicar a política de escalabilidade de rastreamento de destino chamada MyScalingPolicy para um modelo chamado MyVariant. A configuração de política é salva em um arquivo chamado scaling-policy.json.

aws application-autoscaling put-scaling-policy \ --policy-name MyScalingPolicy \ --policy-type TargetTrackingScaling \ --service-namespace sagemaker \ --scalable-dimension sagemaker:variant:DesiredProvisionedConcurrency \ --resource-id endpoint/MyEndpoint/variant/MyVariant \ --target-tracking-scaling-policy-configuration file://[file-localtion]/scaling-policy.json

Aplique uma política de ajuste de escala de rastreamento de destino (aplicação Auto Scaling API)

Para aplicar uma política de escalabilidade ao seu modelo, use a ação PutScalingPolicy da API do aplicativo Auto Scaling com os seguintes parâmetros:

  • PolicyName – o nome da política de escalabilidade.

  • PolicyType: defina este valor como TargetTrackingScaling.

  • ResourceId: o identificador do recurso para a variante. Para esse parâmetro, o tipo de recurso é endpoint e o identificador exclusivo é o nome da variante. Por exemplo, endpoint/MyEndpoint/variant/MyVariant.

  • ServiceNamespace: defina este valor como sagemaker.

  • ScalableDimension: defina este valor como sagemaker:variant:DesiredProvisionedConcurrency.

  • TargetTrackingScalingPolicyConfiguration: a configuração da política de ajuste de escala de rastreamento de destino a ser usada para o modelo.

O exemplo a seguir mostra como aplicar a política de escalabilidade de rastreamento de destino chamada MyScalingPolicy para um modelo chamado MyVariant. A configuração de política é salva em um arquivo chamado scaling-policy.json.

POST / HTTP/1.1 Host: autoscaling.us-east-2.amazonaws.com Accept-Encoding: identity X-Amz-Target: AnyScaleFrontendService.PutScalingPolicy X-Amz-Date: 20160506T182145Z User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8 Content-Type: application/x-amz-json-1.1 Authorization: AUTHPARAMS { "PolicyName": "MyScalingPolicy", "ServiceNamespace": "sagemaker", "ResourceId": "endpoint/MyEndpoint/variant/MyVariant", "ScalableDimension": "sagemaker:variant:DesiredProvisionedConcurrency", "PolicyType": "TargetTrackingScaling", "TargetTrackingScalingPolicyConfiguration": { "TargetValue": 0.5, "PredefinedMetricSpecification": { "PredefinedMetricType": "SageMakerVariantProvisionedConcurrencyUtilization" } } }

Aplicar uma política de esc labilidade de rastreamento de destino (AWS Management Console)

Para aplicar uma política de escalabilidade de rastreamento de metas com: AWS Management Console

  1. Faça login no console do Amazon SageMaker AI.

  2. No painel de navegação, escolha Inferência.

  3. Escolha Endpoints para ver uma lista de todos os seus endpoints.

  4. Escolha o endpoint ao qual você deseja aplicar a política de escalabilidade. Uma página com as configurações do endpoint será exibida, com os modelos (variante de produção) listados na seção Configurações de runtime do endpoint.

  5. Selecione a variante de produção à qual você deseja aplicar a política de ajuste de escala e escolha Configurar ajuste de escala automático. A caixa de diálogo Configurar ajuste de escala automático da variante é exibida.

    Captura de tela da caixa de diálogo de configuração do ajuste de escala automático da variante no console.
  6. Insira os valores mínimo e máximo de simultaneidade provisionada nos campos Simultaneidade provisionada mínima e Simultaneidade máxima provisionada, respectivamente, na seção Ajuste automático de escala variável. A Simultaneidade Mínima Provisionada deve ser menor ou igual à Simultaneidade Provisionada Mínima.

  7. Insira o valor alvo no campo Valor alvo para a métrica alvo, SageMakerVariantProvisionedConcurrencyUtilization.

  8. (Opcional) Insira os valores de escala em resfriamento e redução de resfriamento (em segundos) nos campos Escalar em resfriamento e Escalar em resfriamento, respectivamente.

  9. (Opcional) Selecione Desabilitar a redução se você não quiser que o ajuste de escala automático exclua a instância quando o tráfego diminuir.

  10. Selecione Salvar.

Escalabilidade programada

Se o tráfego para o endpoint sem servidor com simultaneidade provisionada seguir um padrão de rotina, talvez você queira programar ações de ajuste de escala em horários específicos, para aumentar ou reduzir a escala horizontalmente da simultaneidade provisionada. Você pode usar o AWS CLI ou o Application Auto Scaling para programar ações de escalabilidade.

Escalabilidade programada (AWS CLI)

Para aplicar uma política de escalabilidade ao seu modelo, use o comando put-scheduled-action AWS CLI; com os seguintes parâmetros:

  • --schedule-action-name: o nome da atividade de ajuste de escala.

  • --schedule: uma expressão cron que especifica os horários de início e término da ação de ajuste de escala com um cronograma recorrente.

  • --resource-id: o identificador do recurso para a variante. Para esse parâmetro, o tipo de recurso é endpoint e o identificador exclusivo é o nome da variante. Por exemplo, endpoint/MyEndpoint/variant/MyVariant.

  • --service-namespace: defina este valor como sagemaker.

  • --scalable-dimension: defina este valor como sagemaker:variant:DesiredProvisionedConcurrency.

  • --scalable-target-action: o alvo da ação de ajuste de escala.

O seguinte exemplo mostra como adicionar uma atividade de ajuste de escala nomeada MyScalingAction a um modelo nomeado MyVariant em uma programação recorrente: Na programação especificada (todo dia às 12h15 UTC), se a simultaneidade provisionada atual for inferior ao valor especificado para MinCapacity. A aplicação Auto Scaling expande a simultaneidade provisionada para o valor especificado por MinCapacity.

aws application-autoscaling put-scheduled-action \ --scheduled-action-name 'MyScalingAction' \ --schedule 'cron(15 12 * * ? *)' \ --service-namespace sagemaker \ --resource-id endpoint/MyEndpoint/variant/MyVariant \ --scalable-dimension sagemaker:variant:DesiredProvisionedConcurrency \ --scalable-target-action 'MinCapacity=10'

Ajuste de escala programado (API do Application Auto Scaling)

Para aplicar uma política de ajuste de escala ao seu modelo, use a ação PutScheduledAction da API do Application Auto Scaling com os seguintes parâmetros:

  • ScheduleActionName: o nome da atividade de ajuste de escala.

  • Schedule: uma expressão cron que especifica os horários de início e término da ação de ajuste de escala com um cronograma recorrente.

  • ResourceId: o identificador do recurso para a variante. Para esse parâmetro, o tipo de recurso é endpoint e o identificador exclusivo é o nome da variante. Por exemplo, endpoint/MyEndpoint/variant/MyVariant.

  • ServiceNamespace: defina este valor como sagemaker.

  • ScalableDimension: defina este valor como sagemaker:variant:DesiredProvisionedConcurrency.

  • ScalableTargetAction: o alvo da ação de ajuste de escala.

O seguinte exemplo mostra como adicionar uma atividade de ajuste de escala nomeada MyScalingAction a um modelo nomeado MyVariant em uma programação recorrente: Na programação especificada (todo dia às 12h15 UTC), se a simultaneidade provisionada atual for inferior ao valor especificado para MinCapacity. A aplicação Auto Scaling expande a simultaneidade provisionada para o valor especificado por MinCapacity.

POST / HTTP/1.1 Host: autoscaling.us-east-2.amazonaws.com Accept-Encoding: identity X-Amz-Target: AnyScaleFrontendService.PutScheduledAction X-Amz-Date: 20160506T182145Z User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8 Content-Type: application/x-amz-json-1.1 Authorization: AUTHPARAMS { "ScheduledActionName": "MyScalingAction", "Schedule": "cron(15 12 * * ? *)", "ServiceNamespace": "sagemaker", "ResourceId": "endpoint/MyEndpoint/variant/MyVariant", "ScalableDimension": "sagemaker:variant:DesiredProvisionedConcurrency", "ScalableTargetAction": "MinCapacity=10" } } }