Halaman ini menunjukkan cara menyiapkan infrastruktur penskalaan otomatis menggunakan Horizontal Pod Autoscaler (HPA) GKE untuk men-deploy Gemma model bahasa besar (LLM) 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. Mengaktifkan 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
.
- Pelajari alur kerja di Menyajikan model terbuka Gemma menggunakan GPU di GKE dengan Hugging Face TGI.
Menskalakan otomatis menggunakan metrik server
Anda dapat menggunakan metrik performa spesifik per workload yang ditampilkan oleh TGI server inferensi untuk mengarahkan penskalaan otomatis Pod Anda. Untuk mempelajari lebih lanjut metrik server, 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 akan menggunakan Google Cloud Managed Service for Prometheus, yang menyederhanakan proses deployment dan konfigurasi Prometheus kolektor. Google Cloud Managed Service for Prometheus diaktifkan secara default di Cluster GKE; Anda juga dapat mengaktifkannya secara manual.
Contoh manifes berikut menunjukkan cara menyiapkan definisi resource PodMonitoring untuk mengarahkan Google Cloud Managed Service for Prometheus untuk melakukan scraping metrik dari Pod Anda di 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 yang terlihat oleh HPA pengontrol. Untuk detail selengkapnya, lihat Penskalaan otomatis pod horizontal di Dokumentasi Google Cloud Managed Service for Prometheus.
Perintah contoh 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
Menyiapkan resource HPA berbasis metrik kustom. Deploy resource HPA yang didasarkan metrik kustom pilihan Anda. Untuk detail selengkapnya, lihat Penskalaan otomatis pod horizontal di 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 batas ukuran antrean yang tepat untuk HPA, lihat Praktik terbaik untuk penskalaan otomatis workload inferensi LLM 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 batas ukuran tumpukan yang tepat untuk HPA, lihat Praktik terbaik untuk penskalaan otomatis workload inferensi LLM 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
Melakukan penghitungan otomatis menggunakan metrik GPU
Anda dapat menggunakan metrik penggunaan dan performa yang dikeluarkan oleh GPU untuk mengarahkan penskalaan otomatis untuk Pod Anda. Untuk mempelajari lebih lanjut metrik, lihat metrik GPU.
Untuk menyiapkan penskalaan otomatis metrik kustom dengan metrik GPU, ikuti langkah-langkah berikut:
Ekspor metrik GPU ke Cloud Monitoring. Jika GKE Anda cluster memiliki metrik sistem diaktifkan, metrik pemakaian GPU akan otomatis dikirimkan 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 Mulai menggunakan koleksi terkelola di Google Cloud Managed Service for Prometheus dokumentasi layanan.
- Untuk teknik tambahan guna memantau performa beban kerja GPU Anda di GKE, lihat Menjalankan GPU di node pool GKE Standard.
Contoh manifes berikut menunjukkan cara menyiapkan definisi resource PodMonitoring untuk menyerap metrik dari workload NVIDIA DCGM:
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 disebabkan karena ada masalah umum di mana HPA tidak berfungsi dengan nama metrik eksternal dalam huruf besar.
Instal Adaptor Stackdriver Metrik Kustom. Adaptor ini membuat metrik kustom yang Anda ekspor ke Monitoring yang terlihat oleh HPA pengontrol. Untuk detail selengkapnya, lihat Penskalaan otomatis pod horizontal di 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
Menyiapkan resource HPA berbasis metrik kustom. Deploy resource HPA berbasis metrik kustom pilihan Anda. Untuk detail selengkapnya, lihat Penskalaan otomatis pod horizontal di Dokumentasi Google Cloud Managed Service for Prometheus.
- Identifikasi target nilai rata-rata bagi HPA untuk memicu penskalaan otomatis. Anda dapat melakukan ini secara eksperimental; misalnya, menimbulkan peningkatan beban pada server Anda dan mengamati puncak penggunaan GPU. Perhatikan Toleransi HPA, yang ditetapkan secara default ke rentang tanpa tindakan 0,1 di sekitar 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 di Cloud Monitoring.
- Pelajari lebih lanjut Penskalaan Otomatis Pod Horizontal dari Kubernetes open source dokumentasi layanan.