Cara mengurangi kemacetan cache kv dengan nvidia dynamo

[ad_1]

Ketika model AI tumbuh lebih besar dan lebih canggih, inferensi, proses di mana model menghasilkan respons, menjadi tantangan utama. Model bahasa besar (LLM) seperti GPT-OS dan Deepseek-R1 sangat bergantung pada data perhatian-cache nilai-kunci (KV)-untuk memahami dan mengontekstualisasikan permintaan input, tetapi mengelola data ini secara efisien menjadi semakin sulit.

Posting ini mengeksplorasi bagaimana membongkar cache KV ke penyimpanan yang hemat biaya selama inferensi dapat membantu mengurangi biaya inferensi dan meningkatkan pengalaman pengguna. Ini juga menjelaskan bagaimana optimisasi terbaru di NVIDIA Dynamo memungkinkan hal ini.

Apa cache KV?

Cache KV adalah struktur data pada inti dari mekanisme perhatian LLM yang dibuat selama fase awal inferensi yang dikenal sebagai Prefill. KV Cache menyimpan data perhatian menengah yang membantu model fokus pada bagian input yang paling relevan selama fase pembuatan atau respons.

Namun, cache KV tumbuh secara linear dengan panjang cepat dan harus berada di memori GPU selama proses pembuatan untuk akses cepat. Saat model memperluas jendela konteks, kadang -kadang mencapai jutaan token, cache KV menjadi hambatan yang serius.

Mengapa KV Cache Bottleneck untuk Inferensi LLM?

Memori GPU terbatas dan mahal. Ketika panjang cepat meningkat, cache KV tumbuh lebih besar, membutuhkan lebih banyak memori selama generasi. Dalam kasus penggunaan seperti percakapan multi-giliran, penelitian mendalam, dan pembuatan kode, cache KV harus dipertahankan dalam memori untuk waktu yang lama. Ketika batas memori GPU tercapai, sistem inferensi menghadapi pertukaran. Mereka bisa:

  • Mengusir bagian -bagian cache KV, yang mengarah pada rekomputasi yang mahal
  • Tutup jendela panjang atau jendela konteks, mengurangi kinerja model
  • Tambahkan lebih banyak GPU, meningkatkan biaya operasional

Memegang cache KV besar dalam memori GPU untuk durasi panjang tidak dapat diskalakan dan pasukan penyedia untuk memilih antara biaya, latensi, dan kemampuan.

Bagaimana Dynamo membantu mengurangi kemacetan cache KV?

Rilis Dynamo terbaru menggunakan kV cache yang tidak memuat untuk memungkinkan transfer instan cache KV dari memori GPU terbatas ke penyimpanan hemat biaya yang lebih besar. Langsung menurunkan cache KV dari memori GPU ke sistem penyimpanan yang lebih terukur dan terjangkau seperti RAM CPU, SSD lokal, atau penyimpanan jaringan jarak jauh. Menggunakan NVIDIA NIXL, pustaka transfer latensi rendah, Dynamo dapat dengan cepat memindahkan blok cache KV antara memori GPU dan penyimpanan eksternal tanpa mengganggu inferensi.

Gambar menggambarkan arsitektur sistem yang melibatkan GPU di tengah, yang menghubungkan ke beberapa cache nilai kunci (KV). Gambar menggambarkan arsitektur sistem yang melibatkan GPU di tengah, yang menghubungkan ke beberapa cache nilai kunci (KV).
Gambar 1. KV Offloading Cache Mengaktifkan transfer instan cache KV dari memori GPU terbatas ke penyimpanan hemat biaya yang lebih besar

Apa manfaat dari pembongkaran cache KV?

Dengan pembongkaran cache KV, penyedia layanan inferensi dapat mendukung model dengan jendela konteks yang lebih panjang tanpa membatasi ukuran yang cepat. Offloading mengurangi penggunaan memori GPU, memungkinkan kelompok untuk menangani lebih banyak pengguna pada saat yang sama dan meningkatkan konkurensi keseluruhan. Ini menurunkan biaya infrastruktur dengan mengurangi kebutuhan akan GPU tambahan, yang dapat diteruskan ke pengguna akhir sebagai diskon untuk petunjuk yang termasuk token input yang di -cache.

KV Cache Offloading juga menghindari rekomputasi cache KV yang mahal, menghasilkan waktu respons yang lebih cepat dan pengalaman pengguna yang lebih baik. Pada akhirnya, penyedia mendapat manfaat dari throughput yang lebih tinggi dan biaya yang lebih rendah per token, membuat layanan inferensi mereka lebih terukur dan efisien.

Kapan Melepas Cache KV untuk digunakan kembali

Membongkar cache KV ke CPU atau penyimpanan paling efektif ketika cache KV melebihi memori GPU dan cache kembali melebihi overhead mentransfer data. Ini sangat berharga dalam lingkungan konteks panjang, konstruksi tinggi, atau lingkungan inferensi yang dibatasi sumber daya seperti:

  • Sesi panjang dan percakapan multi-putaran: Offloading menjaga awalan prompt besar, menghindari komputasi, dan meningkatkan latensi dan throughput pertama.
  • Konkurensi tinggi: Percakapan idle atau parsial dapat dipindahkan dari memori GPU, memungkinkan permintaan aktif untuk melanjutkan tanpa mencapai batas memori.
  • Konten dibagikan atau berulang: Penggunaan kembali di seluruh pengguna atau sesi (misalnya, permintaan sistem dan templat) meningkatkan hit cache, terutama dengan berbagi jarak jauh atau cross-instance.
  • Penyebaran memori- atau yang dibatasi biaya: Melepas ke RAM atau SSD mengurangi permintaan GPU, memungkinkan petunjuk yang lebih lama atau lebih banyak pengguna tanpa menambahkan perangkat keras.
  • Platform yang dioptimalkan I/O.: Lingkungan dengan bandwidth pertahanan host tinggi (misalnya, NVLink C2C) atau manfaat penyimpanan langsung GPU lebih banyak, karena latensi transfer lebih rendah dan dapat tumpang tindih dengan komputasi.

Bagaimana cara kerja KV Cache di Dynamo?

Dynamo KV Block Manager (KVBM) adalah sistem yang mendukung cache yang tidak muatan dan koordinasi memori. Ini terdiri dari tiga lapisan utama:

  • Lapisan Integrasi Model: Menghubungkan mesin inferensi AI yang populer seperti NVIDIA TENSORRT-LLM dan VLLM, dengan dukungan untuk SGLANG segera hadir, ke sistem KVBM. Ini menghilangkan kebutuhan untuk integrasi model-spesifik dan memungkinkan fungsionalitas yang konsisten di berbagai mesin.
  • Lapisan Manajemen Memori: Menangani bagaimana ingatan dialokasikan, terorganisir, dan digunakan kembali. Ini melacak di mana data tinggal dan memungkinkan pengembang untuk menyesuaikan strategi offload cache KV tanpa memengaruhi seluruh sistem.
  • Lapisan Penyimpanan dan Transfer Data Menggunakan Nixl: Menghubungkan KVBM ke berbagai jenis penyimpanan, termasuk CPU, SSD, sistem file, dan platform cloud. NIXL mendukung transfer data cepat di seluruh mesin dan menyederhanakan integrasi penyedia penyimpanan pihak ketiga melalui sistem berbasis plugin.
Arsitektur tingkat tinggi dari Dynamo KV Block Manager dan bagaimana itu berinteraksi dengan berbagai komponen ekosistem inferensi LLM.Arsitektur tingkat tinggi dari Dynamo KV Block Manager dan bagaimana itu berinteraksi dengan berbagai komponen ekosistem inferensi LLM.
Gambar 2. Antarmuka Dynamo KV Block Manager dengan komponen yang berbeda dari ekosistem inferensi LLM

Dengan memisahkan manajemen memori dari mesin model tertentu dan menstandardisasi akses ke penyimpanan, KVBM menyederhanakan integrasi dan skalabilitas. Penyedia penyimpanan tidak perlu lagi menyesuaikan sistem mereka untuk mesin inferensi yang berbeda, karena KVBM menangani terjemahan. Arsitektur ini meningkatkan kinerja, menyederhanakan pengembangan, dan memungkinkan penyimpanan dan komputasi untuk berkembang secara mandiri.

Bagaimana Dynamo berintegrasi dengan LMCACHE?

Prinsip desain inti Dynamo adalah keterbukaan, memberikan pengguna kebebasan untuk memilih antara fungsionalitas bawaan atau integrasi pihak ketiga. Untuk itu, Dynamo berintegrasi dengan LMCACHE, sistem sumber terbuka untuk caching dan menggunakan kembali memori di CPU, penyimpanan lokal dan jarak jauh.

LMCACHE menyediakan lapisan caching KV untuk mesin inferensi seperti VLLM. Ini memberikan kemampuan untuk menurunkan data yang sering digunakan seperti riwayat percakapan atau petunjuk dari GPU ke penyimpanan yang efektif biaya, dan penggusuran pintar dan strategi pengambilan untuk beban kerja volume tinggi atau berulang. Untuk tim yang menggunakan VLLM, LMCACHE menawarkan solusi manajemen cache KV yang kuat yang selaras dengan arsitektur Dynamo Open.

Bagaimana penyedia penyimpanan memanfaatkan kv cache yang dibongkar?

Luas Menguji integrasi kinerja tinggi antara NVIDIA Dynamo dan AI OS yang luas untuk memungkinkan pergerakan cache KV persisten antara GPU dan penyimpanan. Menggunakan plugin GPU Direct Storage (GDS) di Dynamo, VAST mencapai throughput 35 GB/s untuk satu GPU NVIDIA H100 tunggal, menunjukkan saturasi GPU penuh dan mengkonfirmasi bahwa penyimpanan bukan hambatan kinerja.

Dalam tes terpisah, luas memvalidasi dampak penggunaan cache KV persisten menggunakan VLLM dan LMCACHE pada sistem NVIDIA DGX H100. Menjalankan model QWEN3-32B dengan prompt 130k yang diperkirakan, sistem memuat cache KV yang telah dikomputasi dari penyimpanan luas daripada menghitung ulang, mengurangi waktu menjadi token pertama (TTFT).

Weka melakukan pengujian lab untuk mengevaluasi pergerakan cache KV berkinerja tinggi antara GPU dan penyimpanan menggunakan NVIDIA Dynamo dan plugin NIXL khusus yang dikembangkan dan bersumber terbuka oleh Weka. Tes menunjukkan bahwa kisi memori augmented Weka dapat mengalirkan cache KV dari gudang tokennya ke GPU dengan kecepatan dekat memori, mengurangi TTFT dan meningkatkan throughput token keseluruhan untuk beban kerja inferensi.

Pengujian dilakukan dengan menggunakan sistem DGX dengan delapan GPU H100. Pengaturan mencapai throughput baca hingga 270 GB/s di delapan GPU, memvalidasi bahwa jalur data nol-salinan berbasis RDMA dapat memenuhi tuntutan inferensi terpilah tanpa menjadi hambatan.

Hasil tes ini menyoroti potensi cache KV yang tidak dimuat ke penyimpanan dalam mendukung konteks besar, throughput tinggi generatif beban kerja AI di lingkungan terdistribusi.

Cara menggunakan dinamo kvbm untuk mengelola cache kv

Untuk menggunakan KVBM untuk mengelola cache KV dan melakukan pembongkaran KV di VLLM, gunakan langkah -langkah berikut:

# start up etcd for KVBM leader/worker registration and discovery
docker compose -f deploy/docker-compose.yml up -d

# build a container containing vllm and kvbm
./container/build.sh --framework vllm --enable-kvbm

# launch the container
./container/run.sh --framework vllm -it --mount-workspace --use-nixl-gds

# enable kv offloading to CPU memory
# 4 means 4GB of CPU memory would be used
export DYN_KVBM_CPU_CACHE_GB=4

# enable kv offloading to disk
# 8 means 8GB of disk would be used
export DYN_KVBM_DISK_CACHE_GB=8

# serve an example LLM model
vllm serve --kv-transfer-config 
'{"kv_connector":"DynamoConnector","kv_role":"kv_both", 
"kv_connector_module_path": "dynamo.llm.vllm_integration.connector"}' 
deepseek-ai/DeepSeek-R1-Distill-Llama-8B

# make a call to LLM
curl localhost:8000/v1/chat/completions   -H "Content-Type: application/json"   -d '{
    "model": "deepseek-ai/DeepSeek-R1-Distill-Llama-8B",
    "messages": [
    {
        "role": "user",
        "content": "In the heart of Eldoria, an ancient land of boundless magic and mysterious creatures, 
lies the long-forgotten city of Aeloria. Once a beacon of knowledge and power, Aeloria was buried 
beneath the shifting sands of time, lost to the world for centuries. You are an intrepid explorer, known 
for your unparalleled curiosity and courage, who has stumbled upon an ancient map hinting that Aeloria 
holds a secret so profound that it has the potential to reshape the very fabric of reality. Your journey 
will take you through treacherous deserts, enchanted forests, and across perilous mountain ranges. 
Your Task: Character Background: Develop a detailed background for your character. Describe their 
motivations for seeking out Aeloria, their skills and weaknesses, and any personal connections to the 
ancient city or its legends. Are they driven by a quest for knowledge, or a search for lost family? A clue is hidden."
    }
    ],
    "stream":false,
    "max_tokens": 30
  }'

Aktifkan dan lihat metrik KVBM

Untuk mengaktifkan koleksi metrik dan melihat melalui dasbor Grafana, gunakan langkah -langkah berikut:

# Start the basic services (etcd & natsd), along with Prometheus and Grafana
docker compose -f deploy/docker-compose.yml --profile metrics up -d

# start vllm with DYN_SYSTEM_ENABLED set to true and DYN_SYSTEM_PORT port to 6880.
# NOTE: Make sure port 6880 (for KVBM worker metrics) and port 6881 
(for KVBM leader metrics) are available.
DYN_SYSTEM_ENABLED=true DYN_SYSTEM_PORT=6880 vllm serve --kv-transfer-config
'{"kv_connector":"DynamoConnector","kv_role":"kv_both", 
"kv_connector_module_path": 
"dynamo.llm.vllm_integration.connector"}' 
deepseek-ai/DeepSeek-R1-Distill-Llama-8B

# optional if firewall blocks KVBM metrics ports to send prometheus metrics
sudo ufw allow 6880/tcp
sudo ufw allow 6881/tcp

Lihat metrik grafana melalui http://localhost:3001 (Login default: dinamo/dinamo) dan cari dasbor KVBM.

Benchmark KVBM

Ketika VLLM Serve siap, ikuti langkah -langkah ini untuk menggunakan LMBenchmark untuk membandingkan Kinerja KVBM:

git clone https://github.com/LMCache/LMBenchmark.git

# show case of running the synthetic multi-turn chat dataset.
# we are passing model, endpoint, output file prefix and qps to the sh script.
cd LMBenchmark/synthetic-multi-round-qa
./long_input_short_output_run.sh \
    "deepseek-ai/DeepSeek-R1-Distill-Llama-8B" \
    "http://localhost:8000" \
    "benchmark_kvbm" \
    1

# Average TTFT and other perf numbers would be in the output from above cmd

Untuk mempelajari lebih lanjut tentang cara menggunakan LMBenchMark, kunjungi repo LMCACHE/LMBENCHMARK GITHUB.

Perhatikan bahwa jika metrik diaktifkan sebagaimana disebutkan di bagian sebelumnya, Anda dapat mengamati kv muatan, dan kV onboarding di dasbor grafana.

Untuk membandingkan, Anda bisa berlari vllm serve deepseek-ai/DeepSeek-R1-Distill-Llama-8B untuk mematikan KVBM sebagai garis dasar.

Cara memulai dengan Dynamo menggunakan LMCache dan VLLM

LMCACHE diaktifkan dengan mengatur ENABLE_LMCACHE Variabel Lingkungan:

Konfigurasi LMCACHE tambahan dapat disesuaikan melalui variabel lingkungan:

  • LMCACHE_CHUNK_SIZE=256 – Ukuran Chunk token untuk Cache Granularity (default: 256)
  • LMCACHE_LOCAL_CPU=True – Aktifkan backend memori CPU untuk dibongkar
  • LMCACHE_MAX_LOCAL_CPU_SIZE=20 – Batas memori CPU di GB (pengguna dapat menyesuaikan berdasarkan RAM yang tersedia dengan nilai tetap)

Untuk konfigurasi lanjutan, LMCACHE mendukung beberapa backend penyimpanan:

  • CPU RAM: Menghapus Memori Lokal Cepat
  • Penyimpanan lokal: Kegigihan berbasis disk
  • Redis: Berbagi cache terdistribusi
  • Backend GDS: GPU Penyimpanan Langsung Untuk Throughput Tinggi
  • Infinistore/MoonCake: Solusi penyimpanan cloud-asli

Untuk memulai dengan Dynamo menggunakan LMCache dan VLLM, gunakan langkah -langkah berikut:

# start up etcd for KVBM leader/worker registration and discovery
docker compose -f deploy/docker-compose.yml up -d

# build a container containing vllm and kvbm
./container/build.sh --framework vllm

# launch the container
./container/run.sh --framework vllm -it --mount-workspace

# run vllm with lmcache in aggregated inference
./components/backends/vllm/launch/agg_lmcache.sh

# run vllm with lmcache in disaggregated inference
./components/backends/vllm/launch/disagg_lmcache.sh

Perhatikan bahwa variabel lingkungan yang diperlukan ada di dalam .sh skrip untuk pengaturan cepat. Perbarui mereka sesuai kebutuhan.

Ringkasan

Karena LLMS terus skala, mengelola cache KV selama inferensi telah menjadi tantangan utama karena memori GPU yang terbatas dan mahal. NVIDIA Dynamo membahas ini dengan mengaktifkan cache KV yang dibongkar ke opsi penyimpanan yang lebih diskalakan seperti RAM CPU, SSD, dan penyimpanan jaringan, ditenagai oleh pustaka transfer NIXL latensi rendah.

Dynamo mengintegrasikan mulus dengan mesin inferensi populer seperti VLLM dan alat sumber terbuka seperti LMCACHE, memungkinkan penggunaan kembali cache yang efisien, berkurangnya rekomputasi, dan dukungan yang lebih baik untuk beban kerja konteks panjang dan konkurensi tinggi. Penyedia penyimpanan seperti VAST dan WEKA telah berhasil diintegrasikan dengan Dynamo, menunjukkan bagaimana sistem penyimpanan throughput tinggi dapat menurunkan dan mengalirkan cache KV secara efektif tanpa menjadi hambatan.

Kemampuan ini membuat cache KV membongkar solusi praktis dan dapat diskalakan untuk mengurangi biaya inferensi, meningkatkan respons, dan memungkinkan penyebaran aplikasi AI generatif skala besar. Pelajari lebih lanjut dan mulailah dengan Dynamo.

[ad_2]

Cara mengurangi kemacetan cache kv dengan nvidia dynamo

Leave a Reply

Your email address will not be published. Required fields are marked *