

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Caching KV dan perutean cerdas
<a name="sagemaker-hyperpod-model-deployment-caching-routing"></a>

Amazon SageMaker HyperPod Inference menyediakan caching nilai kunci (KV) berjenjang terkelola dan perutean cerdas untuk mengoptimalkan kinerja inferensi untuk beban kerja model bahasa besar (LLM). Caching KV menyimpan vektor nilai kunci yang telah dihitung sebelumnya setelah memproses token sebelumnya, menghilangkan perhitungan ulang yang berlebihan. Melalui arsitektur caching dua tingkat, Anda dapat mengonfigurasi cache L1 yang menggunakan memori CPU untuk penggunaan kembali lokal latensi rendah, dan cache L2 yang memanfaatkan Redis atau penyimpanan berjenjang terkelola untuk mengaktifkan berbagi cache tingkat node yang dapat diskalakan.

Perutean cerdas menganalisis permintaan yang masuk dan mengarahkannya ke instance inferensi yang kemungkinan besar memiliki pasangan nilai kunci cache yang relevan. Sistem memeriksa permintaan dan mengarahkannya berdasarkan salah satu strategi perutean berikut:
+ `prefixaware`— Permintaan berikutnya dengan awalan prompt yang sama dirutekan ke instance yang sama.
+ `kvaware`— Permintaan masuk dirutekan ke instance dengan tingkat hit cache KV tertinggi.
+ `session`— Permintaan dari sesi pengguna yang sama dirutekan ke instance yang sama.
+ `roundrobin`— Mendistribusikan permintaan secara merata tanpa mempertimbangkan status cache KV.

Perutean cerdas berfungsi dengan semua metode penerapan SageMaker HyperPod Inference Amazon, termasuk penerapan Amazon (baik konsol maupun kubectl), SageMaker JumpStart penerapan penyimpanan lokal NVMe, dan penerapan dari Amazon S3, Amazon FSx, atau Hugging Face Hub. Anda dapat mengaktifkan caching dan routing terlepas dari metode penyebaran yang Anda gunakan untuk melayani model Anda.

**catatan**  
Caching KV dan perutean cerdas saat ini hanya mendukung kontainer inferensi vLLM-based .

## Konfigurasikan caching KV dan perutean cerdas
<a name="sagemaker-hyperpod-model-deployment-deploy-ftm-cache-route"></a>

1. Aktifkan caching KV dengan mengatur `enableL1Cache` dan `enableL2Cache` ke. `true` Kemudian, konfigurasikan `l2CacheSpec` dengan mengatur `l2CacheBackend` ke salah satu `redis` atau`tieredstorage`. Jika Anda memilih`redis`, perbarui `l2CacheLocalUrl` dengan URL cluster Redis.

   ```
     kvCacheSpec:
       enableL1Cache: true
       enableL2Cache: true
       l2CacheSpec:
         l2CacheBackend: <redis | tieredstorage>
         l2CacheLocalUrl: <Redis cluster URL if l2CacheBackend is redis >
   ```
**catatan**  
Jika cluster Redis tidak berada dalam VPC Amazon yang sama dengan cluster, enkripsi untuk data dalam perjalanan tidak dijamin. HyperPod 
**catatan**  
Anda tidak perlu `l2CacheLocalUrl` jika `tieredstorage` dipilih.

1. Aktifkan perutean cerdas dengan menyetel `enabled` ke `true` bawah`intelligentRoutingSpec`. Anda dapat menentukan strategi perutean mana yang akan digunakan di bawah`routingStrategy`. Jika tidak ada strategi routing yang ditentukan, defaultnya adalah. `prefixaware`

   ```
   intelligentRoutingSpec:
       enabled: true
       routingStrategy: <routing strategy to use>
   ```

1. Aktifkan metrik router dan metrik caching dengan menyetel `enabled` ke bawah. `true` `metrics` `port`Nilai harus sama dengan `containerPort` nilai di bawah`modelInvocationPort`.

   ```
   metrics:
       enabled: true
       modelMetrics:
         port: <port value>
       ...
       modelInvocationPort:
         containerPort: <port value>
   ```

## KV-aware kompatibilitas perutean
<a name="sagemaker-hyperpod-model-deployment-kv-routing-compatibility"></a>

Matriks kompatibilitas dan batasan versi di bagian ini *hanya* berlaku untuk strategi perutean. `kvaware` `kvaware`Strategi mengarahkan permintaan masuk ke instance inferensi dengan hit rate cache KV tertinggi dan saat ini hanya mendukung LLM-based gambar v dengan `/completions` API sebagai titik akhir pemanggilan.

**catatan**  
Jika Anda menggunakan `kvaware` perutean, Anda harus mengatur `invocationEndpoint` ke `/completions` dalam manifes penerapan Anda. `/v1/chat/completions`Titik akhir tidak didukung dengan `kvaware` perutean. Strategi perutean lainnya (`prefixaware`,`session`,`roundrobin`) bekerja dengan titik akhir pemanggilan apa pun.

**Gambar yang didukung:**
+ [Gambar VllM: hub.docker. com/r/vllm/vllm-terbuka](https://hub.docker.com/r/vllm/vllm-openai)
+ [Gambar LMcache: hub.docker. com/r/lmcache/vllm-terbuka](https://hub.docker.com/r/lmcache/vllm-openai/tags)
+ AWS Wadah Pembelajaran Mendalam: [gallery.ecr. aws/deep-belajar- containers/vllm](https://gallery.ecr.aws/deep-learning-containers/vllm)


| Versi Operator Inferensi |  Add-on Versi Amazon EKS | Versi Gambar LMCache | Versi Gambar Vllm | 
| --- | --- | --- | --- | 
| >= v3.1.3 | >= v1.2.1-eksbuild.1 | >= v0.4.3 | >= v0.19.1 | 
| < v3.1.3 | < v1.2.1-eksbuild.1 | v0.3.9post2 | v0.11.1 | 

**catatan**  
Sebaiknya gunakan operator inferensi versi v3.1.3 atau lebih tinggi dengan versi LMCache dan Vllm yang sesuai yang ditunjukkan dalam matriks dukungan. Versi LMCache yang lebih baru mendukung paralelisme tensor, penanganan kegagalan yang ditingkatkan, dan pendaftaran pekerja cache, yang memberikan ketahanan yang lebih baik untuk perutean. KV-aware

### Memvalidasi perutean sadar cache KV
<a name="sagemaker-hyperpod-model-deployment-kv-routing-validation"></a>

Setelah menerapkan model dengan KV-aware routing diaktifkan, gunakan langkah-langkah berikut untuk memverifikasi bahwa routing berfungsi dengan benar.

#### Periksa pendaftaran pekerja
<a name="sagemaker-hyperpod-model-deployment-kv-routing-validation-registration"></a>

Verifikasi bahwa pekerja telah terdaftar dengan router dengan memeriksa log router:

```
kubectl logs -n hyperpod-inference-system <router-pod> | grep -i "register"
```

Registrasi yang sehat menunjukkan:

```
INFO: Worker registered: lmcacheengineconfig_<hash>
```

#### Periksa cache hits di log router
<a name="sagemaker-hyperpod-model-deployment-kv-routing-validation-cache-hits"></a>

Verifikasi bahwa router menggunakan KV-aware routing untuk mengarahkan permintaan:

```
kubectl logs -n hyperpod-inference-system <router-pod> | grep -i "kvaware\|Matched instance\|Lookup"
```

Saat KV-aware perutean berfungsi dengan benar:

```
INFO: Routing request to lmcacheengineconfig_<hash> found by kvaware router
```

Saat KV-aware perutean tidak berfungsi (kembali ke round-robin):

```
DEBUG: Matched instance url None
```

#### Periksa inisialisasi LMCache di log pekerja
<a name="sagemaker-hyperpod-model-deployment-kv-routing-validation-lmcache"></a>

Verifikasi bahwa LMCache berhasil diinisialisasi pada pod pekerja:

```
kubectl logs -n <namespace> <worker-pod> | grep -i "LMCache"
```

Inisialisasi yang sehat menunjukkan:

```
LMCache INFO: LMCacheManager initialized successfully
```

Jika LMCache gagal menginisialisasi, Anda akan melihat:

```
LMCache ERROR: Failed to initialize LMCacheManager components: . System will operate in degraded mode (recompute).
```

#### Verifikasi dengan metrik Grafana
<a name="sagemaker-hyperpod-model-deployment-kv-routing-validation-metrics"></a>

Dengan metrik diaktifkan (`metrics.enabled: true`), metrik berikut dari titik `/metrics` akhir pekerja VllM mengonfirmasi klik cache. Metrik ini harus menunjukkan nilai tinggi saat KV-aware perutean berfungsi dengan benar:


| Metrik | Deskripsi | 
| --- | --- | 
| vllm:prefix\_cache\_hits\_total / vllm:prefix\_cache\_queries\_total | Tingkat hit cache awalan GPU (dihitung sebagai rasio) | 
| lmcache:num\_vllm\_hit\_tokens\_total | Jumlah token yang dilayani dari LMCache | 
| lmcache:num\_lookup\_hits\_total / lmcache:num\_lookup\_tokens\_total | LmCache lookup hit rate (dihitung sebagai rasio) | 
| lmcache:request\_cache\_hit\_rate | Per-request tingkat hit cache (histogram) | 