

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

# Escalabilidade automática de um endpoint assíncrono
<a name="async-inference-autoscale"></a>

O Amazon SageMaker AI oferece suporte para ajuste de escala automático de endpoints assíncronos. O ajuste de escala automático ajusta dinamicamente o número de instâncias provisionadas para um modelo em resposta às alterações na workload. Ao contrário de outros modelos hospedados compatíveis com o Amazon SageMaker AI, com a inferência assíncrona você também pode reduzir a escala verticalmente de suas instâncias de endpoint assíncrono para zero. As solicitações recebidas quando há zero instâncias na fila para processamento quando o endpoint aumenta a escala verticalmente.

Para escalar automaticamente seu endpoint assíncrono, você deve, no mínimo:
+ Registrar um modelo implantado (variante de produção).
+ Definir uma política de escalabilidade
+ Aplicar a política de auto scaling automático.

Antes de usar o ajuste de escala automático, você já deve ter implantado um modelo para um endpoint do SageMaker AI. Os modelos implantados são referidos como uma [variante de produção](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html). Consulte [Implantar o modelo nos serviços de hospedagem do SageMaker](https://docs.aws.amazon.com/sagemaker/latest/dg/ex1-model-deployment.html#ex1-deploy-model) para obter mais informações sobre a implantação de modelo em um endpoint. Para especificar as métricas e os valores de destino de uma política de escalabilidade, você deve configurar uma política de escalabilidade. Para mais informações sobre como definir uma política de escalabilidade, consulte [Definindo uma política de escalabilidade](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling-add-code-define.html). Depois de registrar o modelo e definir uma política de escalabilidade, aplique a política de escalabilidade ao modelo registrado. Para mais informações sobre como aplicar uma política de escalabilidade, consulte [Aplicar uma política de escalabilidade](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling-add-code-apply.html).

Para obter mais informações sobre como definir uma política de escalabilidade adicional opcional que aumenta a escala do seu endpoint ao receber uma solicitação após seu endpoint ter sido reduzido para zero, consulte [Opcional: defina uma política de escalabilidade verticalmente de zero para novas solicitações](#async-inference-autoscale-scale-up). Se você não especificar essa política opcional, seu endpoint só iniciará o aumento da escala verticalmente a partir de zero depois que o número de solicitações de backlog exceder o valor de rastreamento de destino.

 Para obter detalhes sobre outros pré-requisitos e componentes usados com o ajuste de escala automático, consulte a seção [Prerequisites](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling-prerequisites.html) na documentação de ajuste de escala automático do SageMaker AI.

**nota**  
Se você anexar várias políticas de escalabilidade ao mesmo grupo do AutoScaling, você pode ter conflitos de escalabilidade. Quando ocorre um conflito, o Amazon EC2 Auto Scaling escolhe a política que provisiona a maior capacidade tanto para aumentar a escala horizontalmente e para reduzir a escala horizontalmente. Para obter mais informações sobre esse comportamento, consulte [Várias políticas de escalabilidade dinâmica na documentação do](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scale-based-on-demand.html#multiple-scaling-policy-resolution) *Amazon EC2 Auto Scaling*.

## Definir uma política de escalabilidade
<a name="async-inference-autoscale-define-async"></a>

Para especificar as métricas e os valores de destino de uma política de escalabilidade, você precisa 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. Você pode usar esse arquivo de texto ao invocar a AWS CLI ou a API do Application Auto Scaling. Para mais informações sobre a sintaxe de configurações de política, consulte [https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html) na Referência de API de Auto Scaling do Aplicativo.

Para endpoints assíncronos, o SageMaker AI recomenda enfaticamente que você crie uma configuração de política para escalar o rastreamento de destino para uma variante. Neste exemplo de configuração, usamos uma métrica personalizada, `CustomizedMetricSpecification`, chamada de `ApproximateBacklogSizePerInstance`.

```
TargetTrackingScalingPolicyConfiguration={
        'TargetValue': 5.0, # The target value for the metric. Here the metric is: ApproximateBacklogSizePerInstance
        'CustomizedMetricSpecification': {
            'MetricName': 'ApproximateBacklogSizePerInstance',
            'Namespace': 'AWS/SageMaker',
            'Dimensions': [
                {'Name': 'EndpointName', 'Value': {{<endpoint_name>}} }
            ],
            'Statistic': 'Average',
        }
    }
```

## Defina uma política de escalabilidade dimensionada para zero
<a name="async-inference-autoscale-define-async-zero"></a>

Veja a seguir como definir e registrar sua variante de endpoint com o dimensionamento automático do aplicativo usando o AWS SDK para Python (Boto3). Depois de definir um objeto cliente de baixo nível representando o dimensionamento automático do aplicativo com o Boto3, usamos o método [https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/application-autoscaling.html#ApplicationAutoScaling.Client.register_scalable_target](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/application-autoscaling.html#ApplicationAutoScaling.Client.register_scalable_target) para registrar a variante de produção. Configuramos `MinCapacity` como 0 porque a inferência assíncrona permite a escalabilidade automática para 0 quando não há solicitações para processar.

```
# Common class representing application autoscaling for SageMaker 
client = boto3.client('application-autoscaling') 

# This is the format in which application autoscaling references the endpoint
resource_id='endpoint/' + {{<endpoint_name>}} + '/variant/' + {{<'variant1'>}} 

# Define and register your endpoint variant
response = client.register_scalable_target(
    ServiceNamespace='sagemaker', 
    ResourceId=resource_id,
    ScalableDimension='sagemaker:variant:DesiredInstanceCount', # The number of EC2 instances for your Amazon SageMaker model endpoint variant.
    MinCapacity=0,
    MaxCapacity=5
)
```

Para obter uma descrição detalhada sobre a API com dimensionamento automático de aplicativos, consulte a documentação do [Escalonamento de Aplicativos](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/application-autoscaling.html#ApplicationAutoScaling.Client.register_scalable_target) Boto3.

## Opcional: defina uma política de escalabilidade verticalmente de zero para novas solicitações
<a name="async-inference-autoscale-scale-up"></a>

Você pode ter um caso de uso em que tenha solicitações esporádicas ou períodos com baixo número de solicitações. Se a escala do seu endpoint tiver sido reduzida verticalmente para zero instâncias durante esses períodos, ele não aumentará a escala verticalmente outra vez até que o número de solicitações na fila exceda a meta especificada em sua política de escalabilidade. Isso pode resultar em longos tempos de espera para solicitações na fila. A seção a seguir mostra como criar uma política de escalabilidade adicional que escale seu endpoint a partir de zero instâncias após receber qualquer nova solicitação na fila. Seu endpoint poderá responder a novas solicitações mais rapidamente, em vez de esperar que o tamanho da fila exceda a meta.

Para criar uma política de escalabilidade para seu endpoint que aumente a escala verticalmente a partir de zero instâncias, faça o seguinte:

1. Crie uma política de escalabilidade que defina o comportamento desejado, que é escalar seu endpoint quando ele está em zero instâncias, mas tem solicitações na fila. A seguir, mostramos como definir uma política de escalabilidade chamada de `HasBacklogWithoutCapacity-ScalingPolicy` usando o AWS SDK para Python (Boto3). Quando a fila é maior que zero e a contagem de instâncias atuais do seu endpoint também é zero, a política aumenta seu endpoint. Em todos os outros casos, a política não afeta o escalonamento do seu endpoint.

   ```
   response = client.put_scaling_policy(
       PolicyName="HasBacklogWithoutCapacity-ScalingPolicy",
       ServiceNamespace="sagemaker",  # The namespace of the service that provides the resource.
       ResourceId=resource_id,  # Endpoint name
       ScalableDimension="sagemaker:variant:DesiredInstanceCount",  # SageMaker supports only Instance Count
       PolicyType="StepScaling",  # 'StepScaling' or 'TargetTrackingScaling'
       StepScalingPolicyConfiguration={
           "AdjustmentType": "ChangeInCapacity", # Specifies whether the ScalingAdjustment value in the StepAdjustment property is an absolute number or a percentage of the current capacity. 
           "MetricAggregationType": "Average", # The aggregation type for the CloudWatch metrics.
           "Cooldown": 300, # The amount of time, in seconds, to wait for a previous scaling activity to take effect. 
           "StepAdjustments": # A set of adjustments that enable you to scale based on the size of the alarm breach.
           [ 
               {
                 "MetricIntervalLowerBound": 0,
                 "ScalingAdjustment": 1
               }
             ]
       },    
   )
   ```

1. Crie um alarme do CloudWatch com a métrica personalizada `HasBacklogWithoutCapacity`. Quando acionado, o alarme inicia a política de escalabilidade definida anteriormente. Para obter mais informações sobre métricas do `HasBacklogWithoutCapacity`, consulte [Métricas de endpoint de inferência assíncrona](async-inference-monitor.md#async-inference-monitor-cloudwatch-async).

   ```
   response = cw_client.put_metric_alarm(
       AlarmName=step_scaling_policy_alarm_name,
       MetricName='HasBacklogWithoutCapacity',
       Namespace='AWS/SageMaker',
       Statistic='Average',
       EvaluationPeriods= 2,
       DatapointsToAlarm= 2,
       Threshold= 1,
       ComparisonOperator='GreaterThanOrEqualToThreshold',
       TreatMissingData='missing',
       Dimensions=[
           { 'Name':'EndpointName', 'Value':endpoint_name },
       ],
       Period= 60,
       AlarmActions=[step_scaling_policy_arn]
   )
   ```

Agora você deve ter uma política de escalabilidade e um alarme do CloudWatch que escalem seu endpoint a partir de zero instâncias sempre que a sua fila tiver solicitações pendentes.