

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
<a name="endpoint-auto-scaling-zero-instances"></a>

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](realtime-endpoints-deploy-models.md)
+ 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](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariantManagedInstanceScaling.html).

**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. {{n}}Substitua 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-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html)na *Referência de AWS CLI Comandos*.

1. 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](endpoint-auto-scaling-add-code-define.md).

   Para obter mais informações sobre esse comando e cada um de seus parâmetros, consulte [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html)na *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-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 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](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-step-scaling-policies.html) no *Guia do usuário do Application Auto Scaling*.

1. 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-alarm}}Substitua por um nome de sua escolha. {{inference-component-name}}Substitua pelo nome do seu componente de inferência. 

   Este exemplo define o `--metric-name` parâmetro como`NoCapacityInvocationFailures`. 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-alarm](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/put-metric-alarm.html)na *Referência de AWS CLI Comandos*.