Komponen Advanced Horizontal Pod Autoscaler (AHPA) dapat memprediksi permintaan sumber daya GPU berdasarkan data pemanfaatan GPU dari Prometheus Adapter, tren beban historis, dan algoritma prediksi. AHPA secara otomatis menyesuaikan jumlah pod replika atau alokasi sumber daya GPU untuk memastikan operasi perluasan selesai sebelum sumber daya habis. Selain itu, AHPA juga melakukan penyusutan ketika ada sumber daya menganggur guna mengurangi biaya dan meningkatkan efisiensi kluster.
Prasyarat
Kluster ACK terkelola dengan node akselerasi GPU telah dibuat. Untuk informasi lebih lanjut, lihat Buat Kluster ACK dengan Node Akselerasi GPU.
AHPA telah diinstal dan sumber data dikonfigurasi untuk mengumpulkan metrik. Untuk informasi lebih lanjut, lihat Ikhtisar AHPA.
Managed Service for Prometheus telah diaktifkan, dan statistik aplikasi selama minimal tujuh hari telah dikumpulkan oleh Managed Service for Prometheus. Statistik ini mencakup detail penggunaan sumber daya GPU oleh aplikasi. Untuk informasi lebih lanjut, lihat Managed Service for Prometheus.
Cara kerjanya
Dalam komputasi kinerja tinggi, terutama dalam skenario seperti pelatihan model dan inferensi model pada pembelajaran mendalam, manajemen halus serta penyesuaian dinamis alokasi sumber daya GPU dapat meningkatkan pemanfaatan sumber daya dan mengurangi biaya. Container Service for Kubernetes (ACK) mendukung penskalaan otomatis berdasarkan metrik GPU. Anda dapat menggunakan Managed Service for Prometheus untuk mengumpulkan metrik utama seperti pemanfaatan GPU real-time dan penggunaan memori. Kemudian, gunakan Prometheus Adapter untuk mengonversi metrik tersebut ke format yang dikenali oleh Kubernetes dan mengintegrasikannya dengan AHPA. AHPA memprediksi permintaan sumber daya GPU berdasarkan data ini, tren beban historis, dan algoritma prediksi. AHPA secara otomatis menyesuaikan jumlah pod replika atau alokasi sumber daya GPU untuk memastikan operasi perluasan selesai sebelum sumber daya habis. AHPA juga melakukan penyusutan ketika ada sumber daya menganggur guna mengurangi biaya dan meningkatkan efisiensi kluster.
Langkah 1: Pasang Metrics Adapter
Dapatkan endpoint HTTP API internal dari instance Prometheus yang digunakan oleh kluster Anda.
Masuk ke Konsol ARMS.
Di panel navigasi kiri, pilih .
Di bagian atas halaman Instances, pilih wilayah tempat kluster ACK berada.
Klik nama instance Managed Service for Prometheus. Di panel navigasi kiri halaman detail instance, klik Settings dan catat endpoint internal di bagian URL API HTTP.
Pasang ack-alibaba-cloud-metrics-adapter.
Masuk ke Konsol ACK. Di panel navigasi kiri, pilih .
Di halaman Marketplace, klik tab App Catalog. Temukan dan klik ack-alibaba-cloud-metrics-adapter.
Di pojok kanan atas halaman ack-alibaba-cloud-metrics-adapter, klik Deploy.
Di halaman wizard Basic Information, tentukan Cluster dan Namespace, lalu klik Next.
Di halaman wizard Parameters, atur parameter Chart Version dan tentukan endpoint HTTP API internal yang Anda peroleh di Langkah 1 sebagai nilai parameter
prometheus.urldi bagian Parameters. Lalu, klik OK.
Langkah 2: Gunakan AHPA untuk melakukan penskalaan prediktif berdasarkan metrik GPU
Pada contoh ini, layanan inferensi diterapkan. Permintaan kemudian dikirim ke layanan inferensi untuk memeriksa apakah AHPA dapat melakukan penskalaan prediktif berdasarkan metrik GPU.
Terapkan layanan inferensi.
Jalankan perintah berikut untuk menerapkan layanan inferensi:
Jalankan perintah berikut untuk memeriksa status pod:
kubectl get pods -o wideOutput yang Diharapkan:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES bert-intent-detection-7b486f6bf-f**** 1/1 Running 0 3m24s 10.15.1.17 cn-beijing.192.168.94.107 <none> <none>Jalankan perintah berikut untuk mengirim permintaan ke layanan inferensi dan memeriksa apakah layanan tersebut telah diterapkan.
Anda dapat menjalankan perintah
kubectl get svc bert-intent-detection-svcuntuk memeriksa alamat IP node dengan akselerasi GPU tempat layanan inferensi diterapkan. Lalu, ganti47.95.XX.XXdalam perintah berikut dengan alamat IP yang Anda peroleh:curl -v "http://47.95.XX.XX/predict?query=Music"Output yang Diharapkan:
* Trying 47.95.XX.XX... * TCP_NODELAY set * Connected to 47.95.XX.XX (47.95.XX.XX) port 80 (#0) > GET /predict?query=Music HTTP/1.1 > Host: 47.95.XX.XX > User-Agent: curl/7.64.1 > Accept: */* > * HTTP 1.0, assume close after body < HTTP/1.0 200 OK < Content-Type: text/html; charset=utf-8 < Content-Length: 9 < Server: Werkzeug/1.0.1 Python/3.6.9 < Date: Wed, 16 Feb 2022 03:52:11 GMT < * Closing connection 0 PlayMusic # Hasil query.Jika kode status HTTP
200dan hasil query dikembalikan, layanan inferensi telah diterapkan.
Konfigurasikan AHPA.
Pada contoh ini, AHPA dikonfigurasi untuk menskalakan pod ketika pemanfaatan GPU melebihi 20%.
Konfigurasikan sumber data untuk mengumpulkan metrik bagi AHPA.
Buat file bernama application-intelligence.yaml dan salin konten berikut ke file tersebut.
Atur parameter
prometheusUrlke endpoint internal dari instance Prometheus yang Anda peroleh di Langkah 1.apiVersion: v1 kind: ConfigMap metadata: name: application-intelligence namespace: kube-system data: prometheusUrl: "http://cn-shanghai-intranet.arms.aliyuncs.com:9090/api/v1/prometheus/da9d7dece901db4c9fc7f5b*******/1581204543170*****/c54417d182c6d430fb062ec364e****/cn-shanghai"Jalankan perintah berikut untuk menerapkan application-intelligence:
kubectl apply -f application-intelligence.yaml
Pasang AHPA
Buat file bernama fib-gpu.yaml dan salin konten berikut ke file tersebut.
Pada contoh ini, mode
observerdigunakan. Untuk informasi lebih lanjut tentang parameter terkait AHPA, lihat Parameter.Jalankan perintah berikut untuk menerapkan AHPA:
kubectl apply -f fib-gpu.yamlJalankan perintah berikut untuk memeriksa status AHPA:
kubectl get ahpaOutput yang Diharapkan:
NAME STRATEGY REFERENCE METRIC TARGET(%) CURRENT(%) DESIREDPODS REPLICAS MINPODS MAXPODS AGE fib-gpu observer bert-intent-detection gpu 20 0 0 1 10 50 6d19hDi dalam output,
0dikembalikan di kolomCURRENT(%)dan20dikembalikan di kolomTARGET(%). Ini menunjukkan bahwa pemanfaatan GPU saat ini adalah 0% dan penskalaan pod akan dipicu jika pemanfaatan GPU melebihi 20%.
Uji penskalaan otomatis pada layanan inferensi.
Jalankan perintah berikut untuk mengakses layanan inferensi:
Jalankan perintah berikut untuk memeriksa status AHPA:
kubectl get ahpaOutput yang Diharapkan:
NAME STRATEGY REFERENCE METRIC TARGET(%) CURRENT(%) DESIREDPODS REPLICAS MINPODS MAXPODS AGE fib-gpu observer bert-intent-detection gpu 20 189 10 4 10 50 6d19hOutput menunjukkan bahwa pemanfaatan GPU saat ini (
CURRENT(%)) lebih tinggi daripada ambang penskalaan (TARGET(%)). Oleh karena itu, penskalaan pod dipicu dan jumlah pod yang diharapkan adalah10, yaitu nilai yang dikembalikan di kolomDESIREDPODS.Jalankan perintah berikut untuk memeriksa hasil prediksi:
kubectl get --raw '/apis/metrics.alibabacloud.com/v1beta1/namespaces/default/predictionsobserver/fib-gpu'|jq -r '.content' |base64 -d > observer.htmlGambar berikut menunjukkan hasil prediksi pemanfaatan GPU berdasarkan data historis dalam tujuh hari terakhir.

Prediksi Pengamatan Sumber Daya GPU: Pemanfaatan GPU aktual diwakili oleh garis biru. Pemanfaatan GPU yang diprediksi oleh AHPA diwakili oleh garis hijau. Anda dapat melihat bahwa pemanfaatan GPU yang diprediksi lebih tinggi daripada pemanfaatan GPU aktual.
Prediksi Pengamatan POD: Jumlah pod aktual yang ditambahkan atau dihapus dalam acara penskalaan diwakili oleh garis biru. Jumlah pod yang diprediksi oleh AHPA untuk ditambahkan atau dihapus dalam acara penskalaan diwakili oleh garis hijau. Anda dapat melihat bahwa jumlah pod yang diprediksi kurang dari jumlah pod aktual. Anda dapat mengatur mode penskalaan ke
autodan mengonfigurasi pengaturan lain berdasarkan jumlah pod yang diprediksi. Dengan cara ini, AHPA dapat menghemat sumber daya pod.
Hasil menunjukkan bahwa AHPA dapat menggunakan penskalaan prediktif untuk menangani beban kerja yang fluktuatif sesuai harapan. Setelah Anda mengonfirmasi hasil prediksi, Anda dapat mengatur mode penskalaan ke
auto, yang memungkinkan AHPA secara otomatis menskalakan pod.
Referensi
Knative memungkinkan Anda menggunakan AHPA di kluster Kubernetes tanpa server (ASK). Jika aplikasi Anda meminta sumber daya dalam pola periodik, Anda dapat menggunakan AHPA untuk memprediksi perubahan dalam permintaan sumber daya dan mempramuat sumber daya untuk aktivitas penskalaan. Ini mengurangi dampak cold start ketika aplikasi Anda diskalakan. Untuk informasi lebih lanjut, lihat Gunakan AHPA untuk Mengaktifkan Penskalaan Prediktif di Knative.
Dalam beberapa skenario, Anda mungkin perlu menskalakan aplikasi berdasarkan metrik kustom, seperti QPS permintaan HTTP atau panjang antrian pesan. AHPA menyediakan mekanisme Metrik Eksternal yang dapat bekerja sama dengan komponen alibaba-cloud-metrics-adapter untuk memungkinkan Anda menskalakan aplikasi berdasarkan metrik kustom. Untuk informasi lebih lanjut, lihat Gunakan AHPA untuk Mengonfigurasi Metrik Kustom untuk Penskalaan Aplikasi.