Anda dapat mengonfigurasi penskalaan otomatis untuk workload model bahasa besar (LLM) yang berjalan di GPU dalam Google Kubernetes Engine (GKE). Penskalaan otomatis menyesuaikan resource secara otomatis untuk mengelola permintaan yang berfluktuasi, mengoptimalkan performa, dan mengurangi biaya operasional. Proses ini melibatkan deployment Gemma LLM dan penggunaan GKE Horizontal Pod Autoscaler (HPA) untuk menskalakan pod secara otomatis. Deployment ini juga mengintegrasikan framework penayangan Hugging Face Text Generation Interface (TGI) untuk inferensi yang efisien.
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 melakukan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Untuk 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 perintah
gcloud components update. Versi gcloud CLI yang lebih lama mungkin tidak mendukung perintah yang dijalankan dalam dokumen ini.
- Pelajari alur kerja di Menayangkan model terbuka Gemma menggunakan GPU di GKE dengan Hugging Face TGI.
Penskalaan otomatis menggunakan metrik server
Anda dapat menggunakan metrik performa khusus workload 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 pengumpul 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 agar mengambil metrik dari Pod Anda pada interval berulang selama 15 detik:
apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: gemma-pod-monitoring spec: selector: matchLabels: app: gemma-server endpoints: - port: 8000 interval: 15sInstal 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.yamlSiapkan 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 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_TARGETUkuran tumpukan
Contoh ini menggunakan metrik server TGI
tgi_batch_size, yang mewakili jumlah permintaan dalam batch saat ini.Untuk menentukan 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
Penskalaan otomatis menggunakan metrik GPU
Anda dapat menggunakan metrik penggunaan dan performa yang dikeluarkan oleh GPU untuk mengarahkan penskalaan otomatis 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 telah 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 Anda di GKE, lihat Menjalankan GPU di node pool GKE Standard.
Contoh manifes berikut menunjukkan cara menyiapkan definisi resource PodMonitoring Anda untuk memasukkan metrik dari workload NVIDIA DCGM:
apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: nvidia-dcgm-exporter-for-hpa namespace: gke-managed-system labels: app.kubernetes.io/name: nvidia-dcgm-exporter app.kubernetes.io/part-of: google-cloud-managed-prometheus spec: selector: matchLabels: app.kubernetes.io/name: gke-managed-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_utilDalam kode, pastikan untuk mengubah nama metrik DCGM yang akan digunakan di HPA menjadi huruf kecil. Hal ini karena ada masalah umum yang menyebabkan HPA tidak berfungsi dengan nama metrik eksternal huruf besar. Untuk cluster yang tidak menggunakan pengekspor DCGM terkelola, pastikan
metadata.namespacedanspec.selector.matchLabelsHPA cocok dengan konfigurasi pengekspor DCGM.Penyelarasan yang tepat ini sangat penting untuk penemuan dan pembuatan kueri metrik kustom yang berhasil oleh HPA.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.yamlSiapkan 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.
- Identifikasi target nilai rata-rata untuk HPA guna memicu penskalaan otomatis. Anda dapat melakukannya secara eksperimental; misalnya, menghasilkan peningkatan beban pada server dan mengamati puncak penggunaan GPU Anda. Perhatikan toleransi HPA, yang secara default adalah 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_TARGETSiklus 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 berikutnya
- Pelajari cara mengekspos metrik kustom untuk penskalaan otomatis.
- Pelajari lebih lanjut Penskalaan Otomatis Pod Horizontal dari dokumentasi Kubernetes open source.