Escalar um endpoint para zero instância - 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 um endpoint para zero instância

Ao configurar o ajuste de escala automático para um endpoint, é possível permitir que o processo de redução de escala horizontal diminua o número de instâncias em serviço para zero. Ao fazer isso, você reduz os custos durante os períodos em que o endpoint não está atendendo a solicitações de inferência e, portanto, não exige nenhuma instância ativa.

No entanto, depois de reduzir a escala horizontalmente para zero instância, seu endpoint não poderá responder a nenhuma solicitação de inferência de entrada enquanto ele não provisionar pelo menos uma instância. Para automatizar o processo de provisionamento, crie uma política de escalabilidade em etapas com o Application Auto Scaling. Em seguida, você atribui a política a um CloudWatch alarme da Amazon.

Depois de configurar a política de escalabilidade em etapas e o alarme, o endpoint provisionará automaticamente uma instância assim que receber uma solicitação de inferência à qual não consiga responder. Esteja ciente de que o processo de provisionamento leva alguns minutos. Durante esse período, qualquer tentativa de invocar o endpoint produzirá um erro.

Os procedimentos a seguir explicam como configurar o ajuste de escala automático de um endpoint para que ele tenha a escala reduzida horizontalmente para zero e aumentada horizontalmente a partir de zero instância. Os procedimentos usam comandos com a AWS CLI.

Antes de começar

Para que seu endpoint possa ter a escala reduzida horizontalmente para zero ou aumentada horizontalmente a partir de zero instância, ele deve atender aos seguintes requisitos:

  • Estar em serviço.

  • Hospedar um ou mais componentes de inferência. Um endpoint pode ser escalado de e para zero instância somente se hospedar componentes de inferência.

    Para obter informações sobre como hospedar componentes de inferência em endpoints de SageMaker IA, consulte. Implantar modelos para inferência em tempo real

  • Na configuração do endpoint, para o objeto ManagedInstanceScaling da variante de produção, você definiu o parâmetro MinInstanceCount como 0.

    Para obter informações de referência sobre esse parâmetro, consulte ProductionVariantManagedInstanceScaling.

Como habilitar um endpoint para que reduza a escala horizontalmente para zero instância (AWS CLI)

Para cada componente de inferência que o endpoint hospeda, faça o seguinte:

  1. Registre o componente de inferência como um destino escalável. Ao registrá-lo, defina a capacidade mínima como 0, conforme mostrado no seguinte comando:

    aws application-autoscaling register-scalable-target \ --service-namespace sagemaker \ --resource-id inference-component/inference-component-name \ --scalable-dimension sagemaker:inference-component:DesiredCopyCount \ --min-capacity 0 \ --max-capacity n

    Neste exemplo, inference-component-name substitua pelo nome do seu componente de inferência. nSubstitua pelo número máximo de cópias do componente de inferência a serem provisionadas ao escalar.

    Para obter mais informações sobre esse comando e cada um de seus parâmetros, consulte register-scalable-targetna Referência de AWS CLI Comandos.

  2. Aplique uma política de rastreamento de destino ao componente de inferência, conforme mostrado no seguinte comando:

    aws application-autoscaling put-scaling-policy \ --policy-name my-scaling-policy \ --policy-type TargetTrackingScaling \ --resource-id inference-component/inference-component-name \ --service-namespace sagemaker \ --scalable-dimension sagemaker:inference-component:DesiredCopyCount \ --target-tracking-scaling-policy-configuration file://config.json

    Neste exemplo, inference-component-name substitua pelo nome do seu componente de inferência.

    No exemplo, o arquivo config.json contém uma configuração de política de rastreamento de destino, como a seguinte:

    { "PredefinedMetricSpecification": { "PredefinedMetricType": "SageMakerInferenceComponentInvocationsPerCopy" }, "TargetValue": 1, "ScaleInCooldown": 300, "ScaleOutCooldown": 300 }

    Para ver mais exemplos de configuração de política de rastreamento, consulte Definir uma política de escalabilidade.

    Para obter mais informações sobre esse comando e cada um de seus parâmetros, consulte put-scaling-policyna Referência de AWS CLI Comandos.

Como habilitar um endpoint para aumente a escala horizontalmente a partir de zero instância (AWS CLI)

Para cada componente de inferência que o endpoint hospeda, faça o seguinte:

  1. Aplique uma política de escalabilidade em etapas ao componente de inferência, conforme mostrado no seguinte comando:

    aws application-autoscaling put-scaling-policy \ --policy-name my-scaling-policy \ --policy-type StepScaling \ --resource-id inference-component/inference-component-name \ --service-namespace sagemaker \ --scalable-dimension sagemaker:inference-component:DesiredCopyCount \ --step-scaling-policy-configuration file://config.json

    Neste exemplo, my-scaling-policy substitua por um nome exclusivo para sua política. inference-component-nameSubstitua pelo nome do seu componente de inferência.

    No exemplo, o arquivo config.json contém uma configuração de política de escalabilidade em etapas, como a seguinte:

    { "AdjustmentType": "ChangeInCapacity", "MetricAggregationType": "Maximum", "Cooldown": 60, "StepAdjustments": [ { "MetricIntervalLowerBound": 0, "ScalingAdjustment": 1 } ] }

    Quando essa política de escalabilidade de etapas é acionada, a SageMaker IA provisiona as instâncias necessárias para dar suporte às cópias dos componentes de inferência.

    Depois de criar a política de escalabilidade em etapas, anote o nome do recurso da Amazon (ARN). Você precisará do ARN para o CloudWatch alarme na próxima etapa.

    Para ter mais informações sobre políticas de escalabilidade em etapas, consulte Step scaling policies no Guia do usuário do Application Auto Scaling.

  2. Crie um CloudWatch alarme e atribua a ele a política de escalonamento de etapas, conforme mostrado no exemplo a seguir:

    aws cloudwatch put-metric-alarm \ --alarm-actions step-scaling-policy-arn \ --alarm-description "Alarm when SM IC endpoint invoked that has 0 instances." \ --alarm-name ic-step-scaling-alarm \ --comparison-operator GreaterThanThreshold \ --datapoints-to-alarm 1 \ --dimensions "Name=InferenceComponentName,Value=inference-component-name" \ --evaluation-periods 1 \ --metric-name NoCapacityInvocationFailures \ --namespace AWS/SageMaker \ --period 60 \ --statistic Sum \ --threshold 1

    Neste exemplo, step-scaling-policy-arn substitua pelo ARN da sua política de escalonamento de etapas. ic-step-scaling-alarmSubstitua por um nome de sua escolha. inference-component-nameSubstitua pelo nome do seu componente de inferência.

    Este exemplo define o --metric-name parâmetro comoNoCapacityInvocationFailures. SageMaker A IA emite essa métrica quando um endpoint recebe uma solicitação de inferência, mas o endpoint não tem instâncias ativas para atender à solicitação. Quando esse evento ocorre, o alarme inicia a política de escalabilidade em etapas na etapa anterior.

    Para obter mais informações sobre esse comando e cada um de seus parâmetros, consulte put-metric-alarmna Referência de AWS CLI Comandos.