Skala otomatis titik akhir asinkron - Amazon SageMaker AI

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

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. Lihat Menerapkan Model ke Layanan SageMaker Hosting 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. 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.

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

Menentukan kebijakan penskalaan

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 TargetTrackingScalingPolicyConfigurationdi 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 khususCustomizedMetricSpecification, yang disebutApproximateBacklogSizePerInstance.

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

Berikut ini menunjukkan kepada Anda cara mendefinisikan dan mendaftarkan varian endpoint Anda dengan penskalaan otomatis aplikasi menggunakan. AWS SDK for Python (Boto3) Setelah mendefinisikan objek klien tingkat rendah yang mewakili aplikasi autoscaling dengan Boto3, kami menggunakan metode untuk mendaftarkan varian produksi. RegisterScalableTarget 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 Boto3.

Opsional: Tentukan kebijakan penskalaan yang meningkatkan skala dari nol untuk permintaan baru

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 for 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 } ] }, )
  2. Buat CloudWatch alarm dengan metrik khususHasBacklogWithoutCapacity. Saat dipicu, alarm memulai kebijakan penskalaan yang ditentukan sebelumnya. Untuk informasi lebih lanjut tentang HasBacklogWithoutCapacity metrik, lihatMetrik Titik Akhir Inferensi Asinkron.

    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.