

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Skala otomatis titik akhir asinkron
<a name="async-inference-autoscale"></a>

Amazon SageMaker AI mendukung penskalaan otomatis (penskalaan otomatis) titik akhir asinkron Anda. Penskalaan otomatis secara dinamis menyesuaikan jumlah instance yang disediakan untuk model sebagai respons terhadap perubahan beban kerja Anda. Tidak seperti model host lainnya yang didukung Amazon SageMaker AI, dengan Asynchronous Inference, Anda juga dapat menurunkan instans titik akhir asinkron menjadi nol. Permintaan yang diterima ketika tidak ada instance akan diantrian untuk diproses setelah titik akhir meningkat.

Untuk menskalakan otomatis titik akhir asinkron Anda, Anda harus minimal:
+ Daftarkan model yang digunakan (varian produksi).
+ Tentukan kebijakan penskalaan.
+ Terapkan kebijakan penskalaan otomatis.

Sebelum Anda dapat menggunakan penskalaan otomatis, Anda harus sudah menerapkan model ke titik akhir AI. SageMaker Model yang digunakan disebut sebagai [varian produksi](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html). Lihat [Menerapkan Model ke Layanan SageMaker Hosting](https://docs.aws.amazon.com/sagemaker/latest/dg/ex1-model-deployment.html#ex1-deploy-model) untuk informasi selengkapnya tentang penerapan model ke titik akhir. Untuk menentukan metrik dan nilai target untuk kebijakan penskalaan, Anda mengonfigurasi kebijakan penskalaan. Untuk informasi tentang cara menentukan kebijakan penskalaan, lihat [Menentukan kebijakan penskalaan.](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling-add-code-define.html) Setelah mendaftarkan model Anda dan menentukan kebijakan penskalaan, terapkan kebijakan penskalaan ke model terdaftar. Untuk informasi tentang cara menerapkan kebijakan penskalaan, lihat [Menerapkan kebijakan penskalaan.](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling-add-code-apply.html)

Untuk informasi selengkapnya tentang cara menentukan kebijakan penskalaan tambahan opsional yang meningkatkan titik akhir Anda setelah menerima permintaan setelah titik akhir Anda diturunkan menjadi nol, lihat. [Opsional: Tentukan kebijakan penskalaan yang meningkatkan skala dari nol untuk permintaan baru](#async-inference-autoscale-scale-up) Jika Anda tidak menentukan kebijakan opsional ini, titik akhir Anda hanya memulai penskalaan dari nol setelah jumlah permintaan backlog melebihi nilai pelacakan target.

 Untuk detail tentang prasyarat dan komponen lain yang digunakan dengan penskalaan otomatis, lihat bagian [Prasyarat](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling-prerequisites.html) dalam dokumentasi penskalaan otomatis AI. SageMaker 

**catatan**  
Jika Anda melampirkan beberapa kebijakan penskalaan ke grup penskalaan otomatis yang sama, Anda mungkin mengalami konflik penskalaan. Ketika konflik terjadi, Amazon EC2 Auto Scaling memilih kebijakan yang menyediakan kapasitas terbesar untuk skala keluar dan skala. Untuk informasi selengkapnya tentang perilaku ini, lihat [Beberapa kebijakan penskalaan dinamis dalam dokumentasi EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scale-based-on-demand.html#multiple-scaling-policy-resolution) *Amazon*.

## Menentukan kebijakan penskalaan
<a name="async-inference-autoscale-define-async"></a>

Untuk menentukan metrik dan nilai target untuk kebijakan penskalaan, Anda mengonfigurasi kebijakan penskalaan pelacakan target. Tentukan kebijakan penskalaan sebagai blok JSON dalam file teks. Anda menggunakan file teks tersebut saat menjalankan AWS CLI atau Application Auto Scaling API. Untuk informasi selengkapnya tentang sintaks konfigurasi kebijakan, lihat [https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)di Referensi API Application Auto Scaling.

Untuk titik akhir asinkron, SageMaker AI sangat menyarankan Anda membuat konfigurasi kebijakan untuk penskalaan pelacakan target untuk varian. Dalam contoh konfigurasi ini, kami menggunakan metrik khusus`CustomizedMetricSpecification`, yang disebut`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',
        }
    }
```

## Tentukan kebijakan penskalaan yang menskalakan ke nol
<a name="async-inference-autoscale-define-async-zero"></a>

Berikut ini menunjukkan kepada Anda cara mendefinisikan dan mendaftarkan varian endpoint Anda dengan penskalaan otomatis aplikasi menggunakan. AWS SDK untuk Python (Boto3) Setelah mendefinisikan objek klien tingkat rendah yang mewakili aplikasi autoscaling dengan Boto3, kami menggunakan metode untuk mendaftarkan varian produksi. [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) Kami menyetel `MinCapacity` ke 0 karena Inferensi Asinkron memungkinkan Anda untuk melakukan autoscale ke 0 ketika tidak ada permintaan untuk diproses.

```
# 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
)
```

Untuk penjelasan rinci tentang Application Autoscaling API, lihat dokumentasi [Application Scaling](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/application-autoscaling.html#ApplicationAutoScaling.Client.register_scalable_target) Boto3.

## Opsional: Tentukan kebijakan penskalaan yang meningkatkan skala dari nol untuk permintaan baru
<a name="async-inference-autoscale-scale-up"></a>

Anda mungkin memiliki kasus penggunaan di mana Anda memiliki permintaan atau periode sporadis dengan jumlah permintaan yang rendah. Jika titik akhir Anda telah diperkecil menjadi nol instans selama periode ini, maka titik akhir Anda tidak akan ditingkatkan lagi hingga jumlah permintaan dalam antrian melebihi target yang ditentukan dalam kebijakan penskalaan Anda. Hal ini dapat mengakibatkan waktu tunggu yang lama untuk permintaan dalam antrian. Bagian berikut menunjukkan cara membuat kebijakan penskalaan tambahan yang menskalakan titik akhir Anda dari nol instans setelah menerima permintaan baru dalam antrian. Titik akhir Anda akan dapat merespons permintaan baru dengan lebih cepat daripada menunggu ukuran antrian melebihi target.

Untuk membuat kebijakan penskalaan untuk titik akhir Anda yang meningkatkan skala dari nol instans, lakukan hal berikut:

1. Buat kebijakan penskalaan yang mendefinisikan perilaku yang diinginkan, yaitu untuk meningkatkan titik akhir Anda saat nol instance tetapi memiliki permintaan dalam antrian. Berikut ini menunjukkan cara menentukan kebijakan penskalaan yang disebut `HasBacklogWithoutCapacity-ScalingPolicy` menggunakan. AWS SDK untuk Python (Boto3) Ketika antrian lebih besar dari nol dan jumlah instans saat ini untuk titik akhir Anda juga nol, kebijakan akan menskalakan titik akhir Anda. Dalam semua kasus lain, kebijakan tidak memengaruhi penskalaan untuk titik akhir Anda.

   ```
   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. Buat CloudWatch alarm dengan metrik khusus`HasBacklogWithoutCapacity`. Saat dipicu, alarm memulai kebijakan penskalaan yang ditentukan sebelumnya. Untuk informasi lebih lanjut tentang `HasBacklogWithoutCapacity` metrik, lihat[Metrik Titik Akhir Inferensi Asinkron](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]
   )
   ```

Anda sekarang harus memiliki kebijakan penskalaan dan CloudWatch alarm yang meningkatkan titik akhir Anda dari nol instance setiap kali antrian Anda memiliki permintaan yang tertunda.