Halaman ini menunjukkan cara menyiapkan infrastruktur penskalaan otomatis menggunakan Horizontal Pod Autoscaler (HPA) GKE untuk men-deploy model bahasa besar (LLM) Gemma dengan framework penayangan Text Generation Interface (TGI) dari Hugging Face.
Untuk mempelajari lebih lanjut cara memilih metrik untuk penskalaan otomatis, lihat Praktik terbaik untuk penskalaan otomatis workload LLM dengan GPU di GKE.
Sebelum memulai
Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Jika ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
lakukan inisialisasi
gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan
gcloud components update
.
- Pahami alur kerja di Menyajikan model terbuka Gemma menggunakan GPU di GKE dengan Hugging Face TGI.
Penskalaan otomatis menggunakan metrik server
Anda dapat menggunakan metrik performa khusus beban kerja yang dikeluarkan oleh server inferensi TGI untuk mengarahkan penskalaan otomatis untuk Pod Anda. Untuk mempelajari metrik ini lebih lanjut, lihat Metrik server.
Untuk menyiapkan penskalaan otomatis metrik kustom dengan metrik server, ikuti langkah-langkah berikut:
Ekspor metrik dari server TGI ke Cloud Monitoring. Anda menggunakan Google Cloud Managed Service for Prometheus, yang menyederhanakan deployment dan konfigurasi kolektor Prometheus. Google Cloud Managed Service for Prometheus diaktifkan secara default di cluster GKE Anda; Anda juga dapat mengaktifkannya secara manual.
Contoh manifes berikut menunjukkan cara menyiapkan definisi resource PodMonitoring untuk mengarahkan Google Cloud Managed Service for Prometheus untuk mengambil metrik dari Pod Anda dengan interval berulang 15 detik:
apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: gemma-pod-monitoring spec: selector: matchLabels: app: gemma-server endpoints: - port: 8000 interval: 15s
Instal Adaptor Stackdriver Metrik Kustom. Adaptor ini membuat metrik kustom yang Anda ekspor ke Monitoring terlihat oleh pengontrol HPA. Untuk mengetahui detail selengkapnya, lihat Penskalaan otomatis pod horizontal dalam dokumentasi Google Cloud Managed Service for Prometheus.
Contoh perintah berikut menunjukkan cara menginstal adaptor:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/k8s-stackdriver/master/custom-metrics-stackdriver-adapter/deploy/production/adapter_new_resource_model.yaml
Siapkan resource HPA berbasis metrik kustom. Deploy resource HPA yang didasarkan pada metrik kustom pilihan Anda. Untuk mengetahui detail selengkapnya, lihat Penskalaan otomatis pod horizontal dalam dokumentasi Google Cloud Managed Service for Prometheus.
Pilih salah satu tab ini untuk melihat contoh cara mengonfigurasi resource HorizontalPodAutoscaler dalam manifes Anda:
Ukuran antrean
Contoh ini menggunakan metrik server TGI
tgi_queue_size
, yang mewakili jumlah permintaan dalam antrean.Untuk menentukan nilai minimum ukuran antrean yang tepat untuk HPA, lihat Praktik terbaik untuk menskalakan beban kerja inferensi LLM secara otomatis dengan GPU.
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: gemma-server spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: tgi-gemma-deployment minReplicas: 1 maxReplicas: 5 metrics: - type: Pods pods: metric: name: prometheus.googleapis.com|tgi_queue_size|gauge target: type: AverageValue averageValue: $HPA_AVERAGEVALUE_TARGET
Ukuran batch
Contoh ini menggunakan metrik server TGI
tgi_batch_size
, yang mewakili jumlah permintaan dalam batch saat ini.Untuk menentukan nilai minimum ukuran batch yang tepat untuk HPA, lihat Praktik terbaik untuk menskalakan beban kerja inferensi LLM secara otomatis dengan GPU.
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: gemma-server spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: tgi-gemma-deployment minReplicas: 1 maxReplicas: 5 metrics: - type: Pods pods: metric: name: prometheus.googleapis.com|tgi_batch_current_size|gauge target: type: AverageValue averageValue: $HPA_AVERAGEVALUE_TARGET
Penskalaan otomatis menggunakan metrik GPU
Anda dapat menggunakan metrik penggunaan dan performa yang dikeluarkan oleh GPU untuk mengarahkan autoscaling untuk Pod Anda. Untuk mempelajari metrik ini lebih lanjut, lihat Metrik GPU.
Untuk menyiapkan penskalaan otomatis metrik kustom dengan metrik GPU, ikuti langkah-langkah berikut:
Ekspor metrik GPU ke Cloud Monitoring. Jika cluster GKE Anda mengaktifkan metrik sistem, cluster tersebut akan otomatis mengirimkan metrik penggunaan GPU ke Cloud Monitoring melalui metrik sistem
container/accelerator/duty_cycle
, setiap 60 detik.- Untuk mempelajari cara mengaktifkan metrik sistem GKE, lihat Mengonfigurasi pengumpulan metrik.
- Untuk menyiapkan koleksi terkelola, lihat Memulai koleksi terkelola dalam dokumentasi Google Cloud Managed Service for Prometheus.
- Untuk teknik tambahan guna memantau performa workload GPU di GKE, lihat Menjalankan GPU di node pool GKE Standard.
Contoh manifes berikut menunjukkan cara menyiapkan definisi resource PodMonitoring untuk menyerap metrik dari workload DCGM NVIDIA:
apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: nvidia-dcgm-exporter-for-hpa namespace: gmp-public labels: app.kubernetes.io/name: nvidia-dcgm-exporter app.kubernetes.io/part-of: google-cloud-managed-prometheus spec: selector: matchLabels: app.kubernetes.io/name: nvidia-dcgm-exporter endpoints: - port: metrics interval: 15s metricRelabeling: - action: keep sourceLabels: [__name__] - action: replace sourceLabels: [__name__] targetLabel: __name__ regex: DCGM_FI_DEV_GPU_UTIL replacement: dcgm_fi_dev_gpu_util
Dalam kode, pastikan untuk mengubah nama metrik DCGM yang akan digunakan di HPA menjadi huruf kecil. Hal ini karena ada masalah umum saat HPA tidak berfungsi dengan nama metrik eksternal huruf besar.
Instal Adaptor Stackdriver Metrik Kustom. Adaptor ini membuat metrik kustom yang Anda ekspor ke Monitoring terlihat oleh pengontrol HPA. Untuk mengetahui detail selengkapnya, lihat Penskalaan otomatis pod horizontal dalam dokumentasi Google Cloud Managed Service for Prometheus.
Contoh perintah berikut menunjukkan cara menjalankan penginstalan ini:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/k8s-stackdriver/master/custom-metrics-stackdriver-adapter/deploy/production/adapter_new_resource_model.yaml
Siapkan resource HPA berbasis metrik kustom. Deploy resource HPA berdasarkan metrik kustom pilihan Anda. Untuk mengetahui detail selengkapnya, lihat Penskalaan otomatis pod horizontal dalam dokumentasi Google Cloud Managed Service for Prometheus.
- Identifikasi target nilai rata-rata untuk HPA guna memicu penskalaan otomatis. Anda dapat melakukannya secara eksperimental; misalnya, menghasilkan beban yang meningkat di server dan mengamati puncak penggunaan GPU. Perhatikan toleransi HPA, yang secara default ditetapkan ke rentang tanpa tindakan 0,1 di sekitar nilai target untuk meredam osilasi.
- Sebaiknya gunakan alat locust-load-inference untuk pengujian. Anda juga dapat membuat dasbor kustom Cloud Monitoring untuk memvisualisasikan perilaku metrik.
Pilih salah satu tab ini untuk melihat contoh cara mengonfigurasi resource HorizontalPodAutoscaler dalam manifes Anda:
Siklus tugas (sistem GKE)
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: gemma-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: tgi-gemma-deployment minReplicas: 1 maxReplicas: 5 metrics: - type: External external: metric: name: kubernetes.io|container|accelerator|duty_cycle selector: matchLabels: resource.labels.container_name: inference-server resource.labels.namespace_name: default target: type: AverageValue averageValue: $HPA_AVERAGEVALUE_TARGET
Siklus tugas (DCGM)
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: gemma-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: tgi-gemma-deployment minReplicas: 1 maxReplicas: 5 metrics: - type: External external: metric: name: prometheus.googleapis.com|dcgm_fi_dev_gpu_util|unknown selector: matchLabels: metric.labels.exported_container: inference-server metric.labels.exported_namespace: default target: type: AverageValue averageValue: $HPA_AVERAGEVALUE_TARGET
Langkah selanjutnya
- Pelajari cara mengoptimalkan penskalaan otomatis Pod berdasarkan metrik dari Cloud Monitoring.
- Pelajari Penskalaan Otomatis Pod Horizontal lebih lanjut dari dokumentasi Kubernetes open source.