Dalam mengelola layanan inferensi model bahasa besar (LLM), penting untuk menangani fluktuasi beban kerja yang dinamis. Topik ini menjelaskan cara mengintegrasikan metrik khusus dari framework inferensi Anda dengan Penyekala Pod Horizontal Kubernetes (HPA) untuk secara otomatis dan fleksibel menskalakan pod layanan inferensi Anda. Ini memastikan ketersediaan tinggi dan stabilitas untuk layanan LLM Anda.
Prasyarat
Anda telah menerapkan layanan inferensi mandiri atau layanan inferensi terdistribusi.
Anda telah mengaktifkan Managed Service for Prometheus di kluster Container Service for Kubernetes (ACK) Anda.
Anda telah memasang komponen ack-alibaba-cloud-metrics-adapter dan mengonfigurasi parameternya
AlibabaCloudMetricsAdapter.prometheus.urluntuk menunjuk ke Titik akhir Managed Service for Prometheus Anda. Untuk informasi lebih lanjut, lihat Ubah Konfigurasi Komponen ack-alibaba-cloud-metrics-adapter.
Penagihan
Integrasi dengan Managed Service for Prometheus akan menyebabkan layanan Anda mengeluarkan metrik khusus, yang dapat menimbulkan biaya tambahan. Biaya ini bervariasi berdasarkan faktor-faktor seperti ukuran kluster, jumlah aplikasi, dan volume data. Anda dapat memantau dan mengelola sumber daya Anda dengan meminta data penggunaan.
Langkah 1: Konfigurasikan pengumpulan metrik
Berbeda dengan layanan mikro tradisional, layanan inferensi LLM umumnya dibatasi oleh daya komputasi GPU dan memori, bukan CPU atau memori sistem. Metrik standar seperti Penggunaan GPU dan Penggunaan Memori dapat menyesatkan dalam menentukan beban sebenarnya pada layanan inferensi. Oleh karena itu, pendekatan yang lebih efektif adalah melakukan penskalaan berdasarkan metrik performa yang diekspos langsung oleh mesin inferensi, seperti latensi permintaan atau kedalaman antrian.
Jika Anda telah mengonfigurasi pemantauan untuk layanan inferensi LLM, Anda dapat melewati langkah ini.
Buat file bernama
podmonitor.yamluntuk menginstruksikan Prometheus mengambil metrik dari pod inferensi Anda.Terapkan konfigurasi.
kubectl apply -f ./podmonitor.yaml
Langkah 2: Konfigurasikan ack-alibaba-cloud-metrics-adapter
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama kluster target. Di panel navigasi kiri, klik .
Di halaman Helm, temukan ack-alibaba-cloud-metrics-adapter dan klik Update di kolom Actions.
Di panel Update Release, perbarui konfigurasi YAML seperti yang ditunjukkan dalam contoh berikut dan klik OK. Metrik dalam YAML hanya untuk tujuan demonstrasi. Ubah sesuai kebutuhan.
Lihat dokumentasi resmi untuk daftar lengkap metrik untuk vLLM, SGLang, dan Dynamo.
Langkah 3: Konfigurasikan HPA
Buat sumber daya HPA yang menargetkan layanan inferensi Anda dan menggunakan salah satu metrik khusus yang telah Anda konfigurasikan.
Konfigurasi parameter dalam kebijakan penskalaan berikut hanya untuk tujuan demonstrasi. Tentukan ambang batas yang sesuai untuk kasus penggunaan spesifik Anda berdasarkan pengujian performa, biaya sumber daya, dan tujuan tingkat layanan (SLO).
Buat file bernama
hpa.yaml. Pilih contoh yang sesuai dengan framework inferensi Anda.vLLM
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: llm-inference-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: StatefulSet name: vllm-inference # Ganti dengan nama layanan inferensi vLLM Anda. minReplicas: 1 maxReplicas: 3 metrics: - type: Pods pods: metric: name: vllm:num_requests_waiting target: type: Value averageValue: 5SGLang
apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: llm-inference-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: StatefulSet name: sgl-inference minReplicas: 1 maxReplicas: 3 metrics: - type: Pods pods: metric: name: sglang:num_queue_reqs target: type: Value averageValue: 5Terapkan konfigurasi HPA.
kubectl apply -f hpa.yaml
Langkah 4: Uji konfigurasi penskalaan otomatis
Terapkan beban ke layanan Anda untuk memicu HPA menggunakan alat benchmark.
Untuk detail alat benchmark dan cara menggunakannya, lihat vLLM Benchmark dan SGLang Benchmark.
Buat file bernama
benchmark.yaml.Tentukan gambar kontainer yang sesuai dengan framework inferensi yang Anda uji. Pilih salah satu opsi berikut:
Untuk vLLM:
kube-ai-registry.cn-shanghai.cr.aliyuncs.com/kube-ai/vllm:v0.10.0Untuk SGLang:
anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/anolis-docker-images/docker-temp:0.3.4.post2-sglang0.4.10.post2-pytorch2.7.1.8-cuda12.8.1-py312-alinux3.2104
Sebarkan pod klien benchmark untuk menghasilkan lalu lintas.
kubectl create -f benchmark.yamlJalankan skrip benchmark dari dalam pod klien untuk menghasilkan beban tinggi pada layanan inferensi Anda.
vLLM
python3 $VLLM_ROOT_DIR/benchmarks/benchmark_serving.py \ --model /models/Qwen3-32B \ --host inference-service \ --port 8000 \ --dataset-name random \ --random-input-len 1500 \ --random-output-len 100 \ --random-range-ratio 1 \ --num-prompts 400 \ --max-concurrency 20SGLang
python3 -m sglang.bench_serving --backend sglang \ --model /models/Qwen3-32B \ --host inference-service \ --port 8000 \ --dataset-name random \ --random-input-len 1500 \ --random-output-len 100 \ --random-range-ratio 1 \ --num-prompts 400 \ --max-concurrency 20
Saat pengujian beban berjalan, buka terminal baru dan pantau status HPA.
kubectl describe hpa llm-inference-hpaDi log event, Anda harus melihat event SuccessfulRescale, yang menunjukkan bahwa HPA telah mendeteksi jumlah permintaan yang menunggu tinggi, dan telah meningkatkan jumlah replika dari 1 menjadi 3.
Name: llm-inference-hpa
Namespace: default
Labels: <none>
Annotations: <none>
CreationTimestamp: Fri, 25 Jul 2025 11:29:20 +0800
Reference: StatefulSet/vllm-inference
Metrics: ( current / target )
"vllm:num_requests_waiting" on pods: 11 / 5
Min replicas: 1
Max replicas: 3
StatefulSet pods: 1 current / 3 desired
Conditions:
Type Status Reason Message
---- ------ ------ -------
AbleToScale True SucceededRescale the HPA controller was able to update the target scale to 3
ScalingActive True ValidMetricFound the HPA was able to successfully calculate a replica count from pods metric vllm:num_requests_waiting
ScalingLimited False DesiredWithinRange the desired count is within the acceptable range
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal SuccessfulRescale 1s horizontal-pod-autoscaler New size: 3; reason: pods metric vllm:num_requests_waiting above target