Pembelajaran mesin (ML) telah ada di mana-mana. Pelanggan kami menggunakan ML di setiap aspek bisnis mereka, termasuk produk dan layanan yang mereka buat, dan untuk mendapatkan wawasan tentang pelanggan mereka.
Untuk membangun aplikasi berbasis ML, Anda harus terlebih dahulu membangun model ML yang sesuai dengan kebutuhan bisnis Anda. Membuat model ML mencakup menyiapkan data untuk pelatihan, mengekstraksi fitur, lalu melatih dan menyempurnakan model menggunakan fitur tersebut. Selanjutnya, model tersebut harus dijalankan agar dapat menghasilkan inferensi (atau prediksi) dari data baru, yang kemudian dapat digunakan dalam aplikasi. Meskipun Anda dapat mengintegrasikan model secara langsung ke dalam aplikasi, pendekatan yang bekerja dengan baik untuk aplikasi tingkat produksi adalah menerapkan model di belakang titik akhir, lalu memanggil titik akhir melalui panggilan RESTful API untuk mendapatkan inferensi. Dalam pendekatan ini, model biasanya diterapkan pada infrastruktur (komputasi, penyimpanan, dan jaringan) yang sesuai dengan persyaratan harga-kinerja aplikasi. Persyaratan ini mencakup jumlah inferensi yang diharapkan dikembalikan oleh titik akhir dalam sedetik (disebut keluaran), seberapa cepat inferensi harus dihasilkan (the Latensi), dan keseluruhan biaya hosting model.
Amazon SageMaker memudahkan penerapan model ML untuk inferensi dengan performa harga terbaik untuk kasus penggunaan apa pun. Ini menyediakan berbagai pilihan infrastruktur ML dan opsi penerapan model untuk membantu memenuhi semua kebutuhan inferensi ML Anda. Ini adalah layanan yang dikelola sepenuhnya, sehingga Anda dapat menskalakan penerapan model, mengurangi biaya inferensi, mengelola model secara lebih efektif dalam produksi, dan mengurangi beban operasional. Salah satu cara untuk meminimalkan biaya adalah dengan menyediakan infrastruktur komputasi hanya sebanyak yang diperlukan untuk melayani permintaan inferensi ke titik akhir (juga dikenal sebagai beban kerja inferensi) pada waktu tertentu. Karena pola lalu lintas permintaan inferensi dapat bervariasi dari waktu ke waktu, sistem penerapan yang paling hemat biaya harus dapat ditingkatkan skalanya saat beban kerja meningkat dan skala masuk saat beban kerja menurun secara real-time. SageMaker mendukung penskalaan otomatis (auto scaling) untuk model yang dihosting. Penskalaan otomatis secara dinamis menyesuaikan jumlah instans yang disediakan untuk model sebagai respons terhadap perubahan beban kerja inferensi Anda. Saat beban kerja meningkat, penskalaan otomatis membuat lebih banyak instans online. Saat beban kerja berkurang, penskalaan otomatis menghapus instans yang tidak diperlukan sehingga Anda tidak perlu membayar instans yang disediakan yang tidak Anda gunakan.
Dengan SageMaker, Anda dapat memilih kapan akan melakukan penskalaan otomatis dan berapa banyak instans yang akan disediakan atau dihapus untuk mencapai ketersediaan yang tepat dan trade-off biaya untuk aplikasi Anda. SageMaker mendukung tiga opsi penskalaan otomatis. Opsi pertama dan umum digunakan adalah pelacakan target. Dalam opsi ini, Anda memilih nilai ideal dari sebuah amazoncloudwatch metrik pilihan Anda, seperti penggunaan CPU rata-rata atau throughput yang ingin Anda capai sebagai target, dan SageMaker akan secara otomatis memperbesar atau memperkecil jumlah instans untuk mencapai metrik target. Opsi kedua adalah memilih penskalaan langkah, yang merupakan metode lanjutan untuk penskalaan berdasarkan ukuran pelanggaran alarm CloudWatch. Opsi ketiga adalah penskalaan terjadwal, yang memungkinkan Anda menentukan jadwal berulang untuk menskalakan titik akhir masuk dan keluar berdasarkan permintaan yang diantisipasi. Kami menyarankan Anda menggabungkan opsi penskalaan ini untuk ketahanan yang lebih baik.
Dalam postingan ini, kami menyediakan pola desain untuk mendapatkan konfigurasi penskalaan otomatis yang tepat untuk aplikasi Anda. Selain itu, kami menyediakan daftar langkah-langkah yang harus diikuti, sehingga meskipun aplikasi Anda memiliki perilaku unik, seperti karakteristik sistem atau pola lalu lintas yang berbeda, pendekatan sistemik ini dapat diterapkan untuk menentukan kebijakan penskalaan yang tepat. Prosedur ini lebih disederhanakan dengan menggunakan Rekomendasi Inferensi, alat pengukuran dan pembandingan yang tepat yang dibangun di dalam SageMaker. Namun, Anda dapat menggunakan alat pembandingan lainnya.
Anda dapat meninjau buku catatan kami biasa menjalankan prosedur ini untuk mendapatkan konfigurasi penerapan yang tepat untuk kasus penggunaan kami.
SageMaker menghosting titik akhir dan metrik waktu nyata
Titik akhir waktu nyata SageMaker ideal untuk aplikasi ML yang perlu menangani berbagai lalu lintas dan merespons permintaan secara waktu nyata. Penyiapan aplikasi dimulai dengan menentukan lingkungan runtime, termasuk wadah, model ML, variabel lingkungan, dan seterusnya di API model-buat, lalu menentukan detail hosting seperti jenis instans dan jumlah instans untuk setiap varian dalam pembuatan- API konfigurasi titik akhir. API konfigurasi titik akhir juga memungkinkan Anda membagi atau menduplikasi lalu lintas antar varian menggunakan varian produksi dan bayangan. Namun, untuk contoh ini, kami menentukan kebijakan penskalaan menggunakan varian produksi tunggal. Setelah menyiapkan aplikasi, Anda menyiapkan penskalaan, yang melibatkan pendaftaran target penskalaan dan penerapan kebijakan penskalaan. Mengacu pada Mengonfigurasi titik akhir inferensi penskalaan otomatis di Amazon SageMaker untuk detail lebih lanjut tentang berbagai opsi penskalaan.
Diagram berikut menggambarkan penyiapan aplikasi dan penskalaan di SageMaker.
Metrik titik akhir
Untuk memahami latihan penskalaan, penting untuk memahami metrik yang dipancarkan titik akhir. Pada tingkat tinggi, metrik ini dikategorikan ke dalam tiga kelas: metrik pemanggilan, metrik latensi, dan metrik pemanfaatan.
Diagram berikut mengilustrasikan metrik ini dan arsitektur titik akhir.
Tabel berikut menguraikan detail setiap metrik.
Metrik pemanggilan
Metrik | Ringkasan | Periode | unit | statistika |
Doa | Jumlah permintaan InvokeEndpoint yang dikirim ke titik akhir model. | 1 menit | None | Jumlah |
DoaPerInstance | Jumlah pemanggilan yang dikirim ke model, dinormalkan oleh InstanceCount di setiap varian. 1/numberOfInstances dikirim sebagai nilai pada setiap permintaan, dengan numberOfInstances adalah jumlah instance aktif untuk varian di belakang titik akhir pada saat permintaan. | 1 menit | None | Jumlah |
Doa4XXKesalahan | Jumlah permintaan InvokeEndpoint tempat model mengembalikan kode respons HTTP 4xx. | 1 menit | None | Rata-rata, Jumlah |
Doa5XXKesalahan | Jumlah permintaan InvokeEndpoint tempat model mengembalikan kode respons HTTP 5xx. | 1 menit | None | Rata-rata, Jumlah |
Metrik latensi
Metrik | Ringkasan | Periode | unit | statistika |
ModelLatensi | Interval waktu yang diperlukan model untuk merespons seperti yang dilihat dari SageMaker. Interval ini mencakup waktu komunikasi lokal yang diperlukan untuk mengirim permintaan dan mengambil respons dari wadah model dan waktu yang dibutuhkan untuk menyelesaikan inferensi dalam wadah. | 1 menit | Mikrodetik | Rata-rata, Jumlah, Min, Maks, Jumlah Sampel |
OverheadLatensi | Interval waktu yang ditambahkan ke waktu yang dibutuhkan untuk merespons permintaan klien oleh overhead SageMaker. Interval ini diukur sejak SageMaker menerima permintaan hingga mengembalikan respons ke klien, dikurangi ModelLatency. Latensi overhead dapat bervariasi bergantung pada beberapa faktor, termasuk ukuran payload permintaan dan respons, frekuensi permintaan, dan autentikasi atau otorisasi permintaan. | 1 menit | Mikrodetik | Rata-rata, Jumlah, Min, Maks, Jumlah Sampel |
Metrik pemanfaatan
Metrik | Ringkasan | Periode | unit |
Pemanfaatan CPU | Jumlah penggunaan masing-masing inti CPU individu. Pemanfaatan CPU dari setiap rentang inti adalah 0โ100. Misalnya, jika ada empat CPU, rentang CPUUtilization adalah 0โ400%. | 1 menit | Persen |
Pemanfaatan Memori | Persentase memori yang digunakan oleh kontainer pada instans. Rentang nilai ini adalah 0โ100%. | 1 menit | Persen |
Pemanfaatan GPU | Persentase unit GPU yang digunakan oleh kontainer pada instans. Nilainya dapat berkisar antara 0โ100 dan dikalikan dengan jumlah GPU. | 1 menit | Persen |
Pemanfaatan Memori GPU | Persentase memori GPU yang digunakan oleh kontainer pada instans. Rentang nilainya adalah 0โ100 dan dikalikan dengan jumlah GPU. Misalnya, jika ada empat GPU, rentang GPUMemoryUtilization adalah 0โ400%. | 1 menit | Persen |
Pemanfaatan Disk | Persentase ruang disk yang digunakan oleh kontainer pada instans. Rentang nilai ini adalah 0โ100%. | 1 menit | Persen |
Gunakan ikhtisar kasus
Kami menggunakan model pengklasifikasi XGBoost sederhana untuk aplikasi kami dan telah memutuskan untuk menghosting pada jenis instans ml.c5.large. Namun, prosedur berikut tidak bergantung pada model atau konfigurasi penerapan, sehingga Anda dapat mengadopsi pendekatan yang sama untuk aplikasi dan pilihan penerapan Anda sendiri. Kami berasumsi bahwa Anda sudah memiliki jenis instans yang diinginkan di awal proses ini. Jika Anda memerlukan bantuan dalam menentukan jenis instans yang ideal untuk aplikasi Anda, Anda harus menggunakan Pekerjaan default Rekomendasi Inferensi untuk mendapatkan rekomendasi jenis instance.
Rencana penskalaan
Rencana penskalaan adalah prosedur tiga langkah, seperti yang diilustrasikan dalam diagram berikut:
- Mengidentifikasi karakteristik aplikasi โ Mengetahui kemacetan aplikasi pada perangkat keras yang dipilih adalah bagian penting dari ini.
- Tetapkan ekspektasi penskalaan โ Ini melibatkan penentuan jumlah maksimum permintaan per detik, dan bagaimana pola permintaan akan terlihat (apakah halus atau runcing).
- Terapkan dan evaluasi โ Kebijakan penskalaan harus dikembangkan berdasarkan karakteristik aplikasi dan ekspektasi penskalaan. Sebagai bagian dari langkah terakhir ini, evaluasi kebijakan dengan menjalankan beban yang diharapkan dapat ditangani. Selain itu, sebaiknya ulangi langkah terakhir, hingga kebijakan penskalaan dapat menangani beban permintaan.
Mengidentifikasi karakteristik aplikasi
Pada bagian ini, kita membahas metode untuk mengidentifikasi karakteristik aplikasi.
benchmarking
Untuk memperoleh kebijakan penskalaan yang tepat, langkah pertama dalam perencanaan adalah menentukan perilaku aplikasi pada perangkat keras yang dipilih. Ini dapat dicapai dengan menjalankan aplikasi pada satu host dan meningkatkan beban permintaan ke titik akhir secara bertahap hingga jenuh. Dalam banyak kasus, setelah saturasi, titik akhir tidak lagi dapat menangani permintaan lagi dan kinerja mulai menurun. Ini dapat dilihat pada metrik pemanggilan titik akhir. Kami juga menyarankan agar Anda meninjau metrik penggunaan perangkat keras dan memahami hambatannya, jika ada. Untuk instans CPU, hambatannya bisa dalam metrik penggunaan CPU, memori, atau disk, sedangkan untuk instans GPU, hambatannya bisa dalam penggunaan GPU dan memorinya. Kami membahas pemanggilan dan metrik penggunaan pada perangkat keras ml.c5.large di bagian berikut. Penting juga untuk diingat bahwa pemanfaatan CPU diagregat di semua core, oleh karena itu skalanya 200% untuk mesin dua inti ml.c5.large.
Untuk pembandingan, kami menggunakan pekerjaan default Inference Recommender. Pekerjaan default Inference Recommender akan, secara default, membandingkan dengan berbagai jenis instans. Namun, Anda dapat mempersempit pencarian ke jenis instans yang Anda pilih dengan meneruskannya di instans yang didukung. Layanan kemudian menyediakan titik akhir secara bertahap meningkatkan permintaan dan berhenti saat tolok ukur mencapai saturasi atau jika titik akhir memanggil panggilan API gagal untuk 1% dari hasil. Metrik hosting dapat digunakan untuk menentukan batasan perangkat keras dan menetapkan batas penskalaan yang tepat. Jika terjadi bottleneck perangkat keras, sebaiknya Anda meningkatkan ukuran instans dalam keluarga yang sama atau mengubah seluruh keluarga instans.
Diagram berikut mengilustrasikan arsitektur benchmarking menggunakan Inference Recommender.
Gunakan kode berikut:
def trigger_inference_recommender(model_url, payload_url, container_url, instance_type, execution_role, framework, framework_version, domain="MACHINE_LEARNING", task="OTHER", model_name="classifier", mime_type="text/csv"): model_package_arn = create_model_package(model_url, payload_url, container_url, instance_type, framework, framework_version, domain, task, model_name, mime_type) job_name = create_inference_recommender_job(model_package_arn, execution_role) wait_for_job_completion(job_name) return job_name
Analisis hasilnya
Kami kemudian menganalisis hasil pekerjaan rekomendasi menggunakan metrik titik akhir. Dari grafik pemanfaatan perangkat keras berikut, kami mengonfirmasi bahwa batas perangkat keras berada dalam batas. Selain itu, baris CPUUtilization meningkat secara proporsional dengan beban permintaan, sehingga diperlukan juga batas penskalaan pada penggunaan CPU.
Dari gambar berikut, kami mengonfirmasi bahwa pemanggilan menjadi rata setelah mencapai puncaknya.
Selanjutnya, kita beralih ke pemanggilan dan metrik latensi untuk menyetel batas penskalaan.
Temukan batas penskalaan
Pada langkah ini, kami menjalankan berbagai persentase penskalaan untuk menemukan batas penskalaan yang tepat. Sebagai aturan penskalaan umum, persentase penggunaan perangkat keras harus sekitar 40% jika Anda mengoptimalkan ketersediaan, sekitar 70% jika Anda mengoptimalkan biaya, dan sekitar 50% jika Anda ingin menyeimbangkan ketersediaan dan biaya. Panduan ini memberikan gambaran tentang dua dimensi: ketersediaan dan biaya. Semakin rendah ambang batas, semakin baik ketersediaannya. Semakin tinggi ambang batas, semakin baik biayanya. Pada gambar berikut, kami memplot grafik dengan 55% sebagai batas atas dan 45% sebagai batas bawah untuk metrik pemanggilan. Grafik teratas menunjukkan pemanggilan dan metrik latensi; grafik bawah menunjukkan metrik pemanfaatan.
Anda dapat menggunakan kode contoh berikut untuk mengubah persentase dan melihat batasan untuk metrik pemanggilan, latensi, dan penggunaan. Kami sangat menyarankan Anda bermain-main dengan persentase dan menemukan yang paling cocok berdasarkan metrik Anda.
def analysis_inference_recommender_result(job_name, index=0, upper_threshold=80.0, lower_threshold=65.0):
Karena kami ingin mengoptimalkan ketersediaan dan biaya dalam contoh ini, kami memutuskan untuk menggunakan penggunaan CPU agregat 50%. Saat kami memilih mesin dua inti, utilisasi CPU gabungan kami adalah 200%. Karena itu kami menetapkan ambang 100% untuk penggunaan CPU karena kami melakukan 50% untuk dua inti. Selain ambang penggunaan, kami juga menyetel ambang InvocationPerInstance ke 5000. Nilai untuk InvocationPerInstance diperoleh dengan melapisi CPUUtilization = 100% di atas grafik pemanggilan.
Sebagai bagian dari langkah 1 rencana penskalaan (ditunjukkan dalam gambar berikut), kami membuat tolok ukur aplikasi menggunakan tugas default Inference Recommender, menganalisis hasilnya, dan menentukan batas penskalaan berdasarkan biaya dan ketersediaan.
Tetapkan ekspektasi penskalaan
Langkah selanjutnya adalah menetapkan ekspektasi dan mengembangkan kebijakan penskalaan berdasarkan ekspektasi tersebut. Langkah ini melibatkan penentuan permintaan maksimum dan minimum yang akan dilayani, serta detail tambahan, seperti apa pertumbuhan permintaan maksimum yang harus ditangani oleh aplikasi? Apakah pola lalu lintas lancar atau runcing? Data seperti ini akan membantu menentukan ekspektasi dan membantu Anda mengembangkan kebijakan penskalaan yang memenuhi permintaan Anda.
Diagram berikut mengilustrasikan contoh pola lalu lintas.
Untuk aplikasi kita, ekspektasinya adalah permintaan maksimum per detik (maks) = 500, dan permintaan minimum per detik (min) = 70.
Berdasarkan ekspektasi tersebut, kami mendefinisikan MinCapacity dan MaxCapacity menggunakan rumus berikut. Untuk perhitungan berikut, kami menormalkan InvocationsPerInstance ke detik karena per menit. Selain itu, kami menentukan faktor pertumbuhan, yaitu jumlah kapasitas tambahan yang ingin Anda tambahkan saat timbangan melebihi permintaan maksimum per detik. Faktor_pertumbuhan harus selalu lebih besar dari 1, dan ini penting dalam merencanakan pertumbuhan tambahan.
MinCapacity = ceil(min / (InvocationsPerInstance/60) )
MaxCapacity = ceil(max / (InvocationsPerInstance/60)) * Growth_factor
Pada akhirnya, kami sampai pada MinCapacity = 1 dan MaxCapacity = 8 (dengan 20% sebagai faktor pertumbuhan), dan kami berencana untuk menangani pola lalu lintas yang runcing.
Tetapkan kebijakan penskalaan dan verifikasi
Langkah terakhir adalah menentukan kebijakan penskalaan dan mengevaluasi dampaknya. Evaluasi berfungsi untuk memvalidasi hasil perhitungan yang dilakukan selama ini. Selain itu, ada baiknya kita menyesuaikan pengaturan penskalaan jika tidak memenuhi kebutuhan kita. Evaluasi dilakukan menggunakan tugas lanjutan Inference Recommender, di mana kami menentukan pola lalu lintas, MaxInvocations, dan titik akhir untuk dijadikan tolok ukur. Dalam hal ini, kami menyediakan titik akhir dan menetapkan kebijakan penskalaan, lalu menjalankan tugas lanjutan Rekomendasi Inferensi untuk memvalidasi kebijakan.
Pelacakan target
Direkomendasikan untuk menyiapkan pelacakan target berdasarkan InvocationsPerInstance. Ambang batas telah ditentukan pada langkah 1, jadi kami menetapkan ambang CPUUtilization ke 100 dan ambang InvocationsPerInstance ke 5000. Pertama, kami menentukan kebijakan penskalaan berdasarkan jumlah InvocationsPerInstance, lalu kami membuat kebijakan penskalaan yang bergantung pada CPU pemanfaatan.
Seperti pada notebook contoh, kami menggunakan fungsi berikut untuk mendaftar dan menetapkan kebijakan penskalaan:
def set_target_scaling_on_invocation(endpoint_name, variant_name, target_value, scale_out_cool_down=10, scale_in_cool_down=100): policy_name = 'target-tracking-invocations-{}'.format(str(round(time.time()))) resource_id = "endpoint/{}/variant/{}".format(endpoint_name, variant_name) response = aas_client.put_scaling_policy( PolicyName=policy_name, ServiceNamespace='sagemaker', ResourceId=resource_id, ScalableDimension='sagemaker:variant:DesiredInstanceCount', PolicyType='TargetTrackingScaling', TargetTrackingScalingPolicyConfiguration={ 'TargetValue': target_value, 'PredefinedMetricSpecification': { 'PredefinedMetricType': 'SageMakerVariantInvocationsPerInstance', }, 'ScaleOutCooldown': scale_out_cool_down, 'ScaleInCooldown': scale_in_cool_down, 'DisableScaleIn': False } ) return policy_name, response def set_target_scaling_on_cpu_utilization(endpoint_name, variant_name, target_value, scale_out_cool_down=10, scale_in_cool_down=100): policy_name = 'target-tracking-cpu-util-{}'.format(str(round(time.time()))) resource_id = "endpoint/{}/variant/{}".format(endpoint_name, variant_name) response = aas_client.put_scaling_policy( PolicyName=policy_name, ServiceNamespace='sagemaker', ResourceId=resource_id, ScalableDimension='sagemaker:variant:DesiredInstanceCount', PolicyType='TargetTrackingScaling', TargetTrackingScalingPolicyConfiguration={ 'TargetValue': target_value, 'CustomizedMetricSpecification': { 'MetricName': 'CPUUtilization', 'Namespace': '/aws/sagemaker/Endpoints', 'Dimensions': [ {'Name': 'EndpointName', 'Value': endpoint_name}, {'Name': 'VariantName', 'Value': variant_name} ], 'Statistic': 'Average', 'Unit': 'Percent' }, 'ScaleOutCooldown': scale_out_cool_down, 'ScaleInCooldown': scale_in_cool_down, 'DisableScaleIn': False } ) return policy_name, response
Karena kita perlu menangani pola traffic runcing, contoh notebook menggunakan ScaleOutCooldown = 10 dan ScaleInCooldown = 100 sebagai nilai cooldown. Saat kami mengevaluasi kebijakan di langkah selanjutnya, kami berencana menyesuaikan periode cooldown (jika perlu).
Pelacakan target evaluasi
Evaluasi dilakukan menggunakan tugas lanjutan Inference Recommender, di mana kami menentukan pola lalu lintas, MaxInvocations, dan titik akhir untuk dijadikan tolok ukur. Dalam hal ini, kami menyediakan titik akhir dan menetapkan kebijakan penskalaan, lalu menjalankan tugas lanjutan Rekomendasi Inferensi untuk memvalidasi kebijakan.
from inference_recommender import trigger_inference_recommender_evaluation_job
from result_analysis import analysis_evaluation_result eval_job = trigger_inference_recommender_evaluation_job(model_package_arn=model_package_arn, execution_role=role, endpoint_name=endpoint_name, instance_type=instance_type, max_invocations=max_tps*60, max_model_latency=10000, spawn_rate=1) print ("Evaluation job = {}, EndpointName = {}".format(eval_job, endpoint_name)) # In the next step, we will visualize the cloudwatch metrics and verify if we reach 30000 invocations.
max_value = analysis_evaluation_result(endpoint_name, variant_name, job_name=eval_job) print("Max invocation realized = {}, and the expecation is {}".format(max_value, 30000))
Setelah pembandingan, kami memvisualisasikan grafik pemanggilan untuk memahami bagaimana sistem merespons kebijakan penskalaan. Kebijakan penskalaan yang kami buat dapat menangani permintaan dan dapat mencapai hingga 30,000 pemanggilan tanpa kesalahan.
Sekarang, mari pertimbangkan apa yang terjadi jika kita melipatgandakan tarif pengguna baru. Apakah berlaku kebijakan yang sama? Kami dapat menjalankan ulang set evaluasi yang sama dengan tingkat permintaan yang lebih tinggi dan menetapkan tingkat kemunculan (pengguna tambahan per menit) ke 3.
Dengan hasil di atas, kami mengonfirmasi bahwa kebijakan penskalaan otomatis saat ini bahkan dapat mencakup pola lalu lintas yang agresif.
Penskalaan langkah
Selain Pelacakan target, kami juga merekomendasikan penggunaan penskalaan langkah untuk memiliki kontrol yang lebih baik terhadap lalu lintas yang agresif. Oleh karena itu, kami menetapkan skala langkah tambahan dengan penyesuaian penskalaan untuk menangani lonjakan lalu lintas.
def set_step_scaling(endpoint_name, variant_name): policy_name = 'step-scaling-{}'.format(str(round(time.time()))) resource_id = "endpoint/{}/variant/{}".format(endpoint_name, variant_name) response = aas_client.put_scaling_policy( PolicyName=policy_name, ServiceNamespace='sagemaker', ResourceId=resource_id, ScalableDimension='sagemaker:variant:DesiredInstanceCount', PolicyType='StepScaling', StepScalingPolicyConfiguration={ 'AdjustmentType': 'ChangeInCapacity', 'StepAdjustments': [ { 'MetricIntervalLowerBound': 0.0, 'MetricIntervalUpperBound': 5.0, 'ScalingAdjustment': 1 }, { 'MetricIntervalLowerBound': 5.0, 'MetricIntervalUpperBound': 80.0, 'ScalingAdjustment': 3 }, { 'MetricIntervalLowerBound': 80.0, 'ScalingAdjustment': 4 }, ], 'MetricAggregationType': 'Average' }, ) return policy_name, response
Penskalaan langkah evaluasi
Kami kemudian mengikuti langkah yang sama untuk mengevaluasi, dan setelah tolok ukur, kami mengonfirmasi bahwa kebijakan penskalaan dapat menangani pola lalu lintas yang tajam dan mencapai 30,000 pemanggilan tanpa kesalahan.
Oleh karena itu, mendefinisikan kebijakan penskalaan dan mengevaluasi hasilnya menggunakan Inference Recommender merupakan bagian penting dari validasi.
Penyetelan lebih lanjut
Pada bagian ini, kita membahas opsi penyetelan lebih lanjut.
Beberapa opsi penskalaan
Seperti yang ditunjukkan dalam kasus penggunaan kami, Anda dapat memilih beberapa kebijakan penskalaan yang memenuhi kebutuhan Anda. Selain opsi yang disebutkan sebelumnya, Anda juga harus mempertimbangkan penskalaan terjadwal jika Anda memperkirakan lalu lintas untuk jangka waktu tertentu. Kombinasi kebijakan penskalaan sangat kuat dan harus dievaluasi menggunakan alat pembandingan seperti Inference Recommender.
Skala ke atas atau ke bawah
SageMaker Hosting menawarkan lebih dari 100 jenis instans untuk menghosting model Anda. Beban lalu lintas Anda mungkin dibatasi oleh perangkat keras yang Anda pilih, jadi pertimbangkan perangkat keras hosting lainnya. Misalnya, jika Anda ingin sistem menangani 1,000 permintaan per detik, naikkan skala, bukan keluar. Instance akselerator seperti G5 dan Inf1 dapat memproses jumlah permintaan yang lebih tinggi pada satu host. Penskalaan naik dan turun dapat memberikan ketahanan yang lebih baik untuk beberapa kebutuhan lalu lintas daripada penskalaan masuk dan keluar.
Metrik kustom
Selain InvocationsPerInstance dan metrik hosting SageMaker lainnya, Anda juga dapat menentukan metrik untuk penskalaan aplikasi Anda. Namun, setiap metrik khusus yang digunakan untuk penskalaan harus menggambarkan beban sistem. Metrik harus meningkat nilainya saat penggunaan tinggi, dan sebaliknya menurun. Metrik khusus dapat memberikan lebih banyak perincian pada beban dan membantu dalam menentukan kebijakan penskalaan khusus.
Menyesuaikan skala alarm
Dengan menentukan kebijakan penskalaan, Anda membuat alarm untuk penskalaan, dan alarm ini digunakan untuk memperbesar dan memperkecil. Namun, alarm ini memiliki jumlah titik data default yang diperingatkan. Jika Anda ingin mengubah jumlah titik data alarm, Anda dapat melakukannya. Namun demikian, setelah memperbarui kebijakan penskalaan, disarankan untuk mengevaluasi kebijakan dengan menggunakan alat pembandingan dengan beban yang harus ditangani.
Kesimpulan
Proses menentukan kebijakan penskalaan untuk aplikasi Anda bisa jadi menantang. Anda harus memahami karakteristik aplikasi, menentukan kebutuhan penskalaan, dan mengulangi kebijakan penskalaan untuk memenuhi kebutuhan tersebut. Posting ini telah meninjau setiap langkah ini dan menjelaskan pendekatan yang harus Anda ambil di setiap langkah. Anda dapat menemukan karakteristik aplikasi Anda dan mengevaluasi kebijakan penskalaan dengan menggunakan sistem pembandingan Inference Recommender. Pola desain yang diusulkan dapat membantu Anda membuat aplikasi yang dapat diskalakan dalam hitungan jam, bukan hari, yang memperhitungkan ketersediaan dan biaya aplikasi Anda.
Tentang Penulis
Mohan Gandhi adalah Insinyur Perangkat Lunak Senior di AWS. Dia telah bersama AWS selama 10 tahun terakhir dan telah bekerja di berbagai layanan AWS seperti EMR, EFA, dan RDS. Saat ini, dia berfokus pada peningkatan Pengalaman Inferensi SageMaker. Di waktu luangnya, ia menikmati hiking dan maraton.
Vikram Elango adalah Arsitek Solusi Spesialis AI/ML di Amazon Web Services, yang berbasis di Virginia USA. Vikram membantu pelanggan industri keuangan dan asuransi dengan desain, kepemimpinan pemikiran untuk membangun dan menerapkan aplikasi pembelajaran mesin dalam skala besar. Dia saat ini fokus pada pemrosesan bahasa alami, AI yang bertanggung jawab, pengoptimalan inferensi, dan penskalaan ML di seluruh perusahaan. Di waktu luangnya, ia menikmati perjalanan, hiking, memasak dan berkemah bersama keluarganya.
Venkatesh Krishnan memimpin Manajemen Produk untuk Amazon SageMaker di AWS. Dia adalah pemilik produk untuk portofolio layanan SageMaker yang memungkinkan pelanggan menerapkan model pembelajaran mesin untuk Inferensi. Sebelumnya dia adalah Kepala Produk, Integrasi, dan manajer produk utama untuk Amazon AppFlow, layanan AWS baru yang dia bantu bangun dari nol. Sebelum bergabung dengan Amazon pada tahun 2018, Venkatesh bertugas di berbagai peran penelitian, teknik, dan produk di Qualcomm, Inc. Ia meraih gelar PhD di bidang Teknik Elektro dan Komputer dari Georgia Tech dan gelar MBA dari Anderson School of Management ULCA.
- Konten Bertenaga SEO & Distribusi PR. Dapatkan Amplifikasi Hari Ini.
- Platoblockchain. Intelijen Metaverse Web3. Pengetahuan Diperkuat. Akses Di Sini.
- Sumber: https://aws.amazon.com/blogs/machine-learning/optimize-your-machine-learning-deployments-with-auto-scaling-on-amazon-sagemaker/
- 000
- 1
- 10
- 100
- 2018
- 7
- 70
- 9
- a
- Sanggup
- Tentang Kami
- atas
- akselerator
- Akun
- Mencapai
- dicapai
- di seluruh
- aktif
- menambahkan
- tambahan
- Tambahan
- Selain itu
- mengambil
- maju
- Setelah
- terhadap
- agresif
- AI
- AI / ML
- alarm
- Semua
- memungkinkan
- sudah
- Meskipun
- selalu
- Amazon
- Amazon SageMaker
- Amazon Web Services
- jumlah
- menganalisa
- dan
- Diantisipasi
- api
- Aplikasi
- aplikasi
- terapan
- Mendaftar
- Menerapkan
- pendekatan
- arsitektur
- sekitar
- penampilan
- Bantuan
- Otentikasi
- otorisasi
- mobil
- secara otomatis
- secara otomatis
- tersedianya
- rata-rata
- AWS
- Saldo
- berdasarkan
- karena
- menjadi
- sebelum
- di belakang
- patokan
- benchmark
- benchmarking
- TERBAIK
- Lebih baik
- antara
- Bawah
- pelanggaran
- membawa
- Membawa
- luas
- membangun
- Bangunan
- dibangun di
- beban
- bisnis
- perhitungan
- panggilan
- bernama
- Kapasitas
- kasus
- kasus
- menantang
- perubahan
- Perubahan
- karakteristik
- pilihan
- Pilih
- terpilih
- kelas-kelas
- klien
- kode
- kombinasi
- menggabungkan
- umum
- Komunikasi
- lengkap
- menghitung
- komputer
- Teknik Komputer
- konfigurasi
- Memastikan
- Mempertimbangkan
- Wadah
- Wadah
- kontrol
- Core
- Biaya
- hemat biaya
- Biaya
- bisa
- menutupi
- membuat
- membuat
- terbaru
- Sekarang
- adat
- pelanggan
- data
- titik data
- Hari
- memutuskan
- mengurangi
- Default
- didefinisikan
- mendefinisikan
- Permintaan
- Tergantung
- menyebarkan
- dikerahkan
- penyebaran
- penyebaran
- Berasal
- Mendesain
- diinginkan
- rincian
- Menentukan
- ditentukan
- menentukan
- mengembangkan
- dikembangkan
- berbeda
- ukuran
- langsung
- membahas
- Tidak
- melakukan
- domain
- Dont
- turun
- gambar
- dinamis
- setiap
- Terdahulu
- efektif
- Rumit
- aktif
- Titik akhir
- insinyur
- Teknik
- Enterprise
- sepenuhnya
- Lingkungan Hidup
- kesalahan
- kesalahan
- penting
- mapan
- mengevaluasi
- dievaluasi
- mengevaluasi
- evaluasi
- Bahkan
- Acara
- Setiap
- contoh
- melebihi
- Latihan
- harapan
- harapan
- diharapkan
- pengalaman
- menjelaskan
- faktor
- gagal
- keluarga
- Fitur
- Angka
- terakhir
- keuangan
- Menemukan
- Pertama
- cocok
- terfokus
- mengikuti
- berikut
- Ramalan
- rumus
- Kerangka
- Frekuensi
- dari
- sepenuhnya
- fungsi
- lebih lanjut
- Selanjutnya
- Umum
- menghasilkan
- dihasilkan
- Georgia
- mendapatkan
- diberikan
- memberikan
- GPU
- GPU
- bertahap
- grafik
- lebih besar
- Tanah
- Pertumbuhan
- menangani
- Terjadi
- Perangkat keras
- kepala
- membantu
- membantu
- membantu
- High
- lebih tinggi
- sangat
- memegang
- tuan rumah
- host
- tuan
- JAM
- Seterpercayaapakah Olymp Trade? Kesimpulan
- Namun
- HTML
- HTTPS
- ideal
- mengenali
- Dampak
- mengimpor
- penting
- meningkatkan
- in
- Inc
- memasukkan
- termasuk
- Termasuk
- Meningkatkan
- Meningkatkan
- meningkatkan
- independen
- sendiri-sendiri
- industri
- Infrastruktur
- wawasan
- contoh
- sebagai gantinya
- asuransi
- mengintegrasikan
- integrasi
- IT
- Pekerjaan
- Jobs
- bergabung
- Mengetahui
- dikenal
- bahasa
- besar
- Terakhir
- Latensi
- memimpin
- Kepemimpinan
- Memimpin
- pengetahuan
- Lets
- Tingkat
- MEMBATASI
- Terbatas
- batas
- baris
- Daftar
- memuat
- lokal
- lagi
- melihat
- mesin
- Mesin belajar
- terbuat
- MEMBUAT
- mengelola
- berhasil
- pengelolaan
- manajer
- banyak
- max
- maksimum
- Pelajari
- Memenuhi
- Memori
- tersebut
- metode
- metode
- metrik
- Metrik
- minimum
- menit
- ML
- model
- model
- lebih
- paling
- pindah
- beberapa
- dikalikan
- nama
- Alam
- Pengolahan Bahasa alami
- perlu
- Perlu
- kebutuhan
- jaringan
- Namun
- New
- berikutnya
- buku catatan
- jumlah
- nomor
- memperoleh
- Penawaran
- ONE
- secara online
- operasional
- optimasi
- Optimize
- mengoptimalkan
- pilihan
- Opsi
- urutan
- Lainnya
- jika tidak
- secara keseluruhan
- ikhtisar
- sendiri
- pemilik
- bagian
- Lewat
- pola
- pola
- Membayar
- Puncak
- persen
- persentase
- prestasi
- periode
- memilih
- rencana
- perencanaan
- plato
- Kecerdasan Data Plato
- Data Plato
- Bermain
- poin
- Kebijakan
- kebijaksanaan
- portofolio
- Pos
- kuat
- Prediksi
- mempersiapkan
- sebelumnya
- Mencetak
- proses
- pengolahan
- Produk
- manajemen Produk
- manajer produk
- Produksi
- Produk
- diusulkan
- memberikan
- menyediakan
- ketentuan
- menempatkan
- Qualcomm
- segera
- jarak
- Penilaian
- mencapai
- Mencapai
- nyata
- real-time
- menyadari
- menerima
- sarankan
- Rekomendasi
- rekomendasi
- direkomendasikan
- berulang
- menurunkan
- daftar
- mendaftar
- ingat
- menghapus
- permintaan
- permintaan
- kebutuhan
- Persyaratan
- penelitian
- ketahanan
- Menanggapi
- tanggapan
- tanggung jawab
- mengakibatkan
- Hasil
- kembali
- Pengembalian
- ulasan
- review jurnal
- peran
- Aturan
- Run
- berjalan
- pembuat bijak
- Inferensi SageMaker
- sama
- terukur
- Skala
- skala
- menjadwalkan
- dijadwalkan
- Sekolah
- Pencarian
- Kedua
- detik
- Bagian
- terpilih
- seleksi
- senior
- melayani
- melayani
- layanan
- Layanan
- set
- pengaturan
- penyiapan
- bayangan
- harus
- ditunjukkan
- Pertunjukkan
- Sederhana
- disederhanakan
- tunggal
- Ukuran
- ukuran
- So
- sejauh ini
- Perangkat lunak
- Software Engineer
- Solusi
- beberapa
- Space
- spesialis
- membagi
- awal
- Langkah
- Tangga
- Berhenti
- penyimpanan
- seperti itu
- Didukung
- Mendukung
- sistem
- sistemik
- Mengambil
- Dibutuhkan
- target
- tugas
- tech
- Grafik
- Grafik
- mereka
- karena itu
- Ketiga
- pikir
- pemikiran kepemimpinan
- tiga
- tiga langkah
- ambang
- keluaran
- waktu
- kali
- untuk
- alat
- alat
- puncak
- Pelacakan
- lalu lintas
- Pelatihan
- Perjalanan
- Rangkap tiga
- jenis
- khas
- di mana-mana
- memahami
- unik
- satuan
- unit
- Memperbarui
- us
- Amerika Serikat
- menggunakan
- gunakan case
- Pengguna
- MENGESAHKAN
- pengesahan
- nilai
- Nilai - Nilai
- Varian
- variasi
- berbagai
- memeriksa
- melalui
- virginia
- cara
- jaringan
- layanan web
- Apa
- Apa itu
- apakah
- yang
- sementara
- akan
- rela
- dalam
- tanpa
- Kerja
- bekerja
- bekerja
- XGBoost
- tahun
- Kamu
- Anda
- zephyrnet.dll