> For the complete documentation index, see [llms.txt](https://docs.cloudeka.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cloudeka.ai/deka-gpu-documentations/panduan-untuk-enterprise/deka-gpu/deka-gpu-autoscaling/keda-autoscalling/example-autoscaling-vllm-with-keda-based-on-gpu-kv-cache-usage/keda-configuration-example.md).

# Contoh Konfigurasi KEDA

Berikut adalah contoh definisi *ScaledObject* untuk KEDA dalam menskalakan *deployment* vLLM berdasarkan metrik *GPU KV cache* yang dikumpulkan dari Prometheus:

```yaml
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: prometheus-scaledobject
  namespace: vllm
spec:
  maxReplicaCount: 2
  minReplicaCount: 1
  cooldownPeriod: 120        # Cooldown period in seconds before scale-in
  pollingInterval: 30        # Polling interval for metrics (in seconds)
  scaleTargetRef:
    name: llama-32-3b-instruct
  triggers:
  - type: prometheus
    metadata:
      serverAddress: http://l2-jatiluhur.metric.cloudeka.ai
      threshold: '0.5'   # This is equivalent to 50%
      query: vllm:gpu_cache_usage_perc{job="goto-vllm-exporter", model_name="meta-llama/Llama-3.2-3B-Instruct"}
```

Penjelasan:

* `minReplicaCount`: Jumlah minimum *pod* vLLM (diatur ke 1).
* `maxReplicaCount`: Jumlah maksimum *pod* vLLM (diatur ke 2).
* `cooldownPeriod`: Waktu tunggu sebelum menurunkan skala.
* `pollingInterval`: Interval untuk memeriksa nilai metrik.
* `threshold`: Ambang penggunaan *GPU KV cache* untuk penskalaan. Pada contoh ini:
  * `0.003` mewakili 0,3% karena metrik Prometheus mengembalikan nilai antara 0 hingga 1.
  * Sesuaikan nilai ini dengan kebijakan penskalaan Anda, misalnya `0.5` untuk 50%.

Contoh *Query* Prometheus:

```powerquery
vllm:gpu_cache_usage_perc{job="goto-vllm-exporter", model_name="meta-llama/Llama-3.2-3B-Instruct"}
```

Catatan: Metrik untuk penskalaan harus disediakan oleh pelanggan. Sampaikan *endpoint* metrik, misalnya `http://<SERVICE_IP>:<SERVICE_PORT>/metrics`, kepada tim operasional Lintasarta.

{% hint style="success" %}
**Rekomendasi**

* Mulai dengan ambang yang konservatif, misalnya 50% atau `0.5` pada Prometheus, lalu pantau perilakunya.
* Sesuaikan `maxReplicaCount` dengan kapasitas GPU dan klaster Anda.
* Pantau metrik *GPU KV cache* untuk menghindari *cache eviction* dan penurunan performa.
* Gabungkan *autoscaler* ini dengan logika *request queueing* dan *batching* yang tepat pada vLLM untuk memaksimalkan efisiensi GPU.
  {% endhint %}

Metrik ini tersedia melalui *endpoint* `/metrics` pada server API vLLM yang kompatibel dengan OpenAI.
