Mesin inferensi open-source vLLM telah mendapat perhatian signifikan karena kemampuannya melayani large language model secara efisien dalam skala besar. Analisis teknis mendalam mengungkapkan bagaimana sistem ini mencapai throughput tinggi melalui strategi batching inovatif dan teknik manajemen memori yang memaksimalkan utilisasi GPU tanpa mengorbankan kualitas respons.
Komponen Arsitektur vLLM V1:
- AsyncLLM: Wrapper asinkron yang menangani tokenisasi dan komunikasi IPC
- EngineCore: Mesin inferensi inti dengan logika penjadwalan dan eksekusi
- Scheduler: Mengelola pengelompokan permintaan dan alokasi token
- ModelExecutor: Mengkoordinasikan pemuatan model di seluruh pekerja GPU menggunakan Ray
- ModelRunner: Menjalankan forward pass pada GPU individual
- KVCacheManager: Mengelola memori GPU sebagai sistem paging dengan blok berukuran tetap
![]() |
---|
Menjelajahi vLLM: Bagaimana model bahasa besar di-deploy secara efisien dalam skala besar |
Continuous Batching Mempertahankan Kualitas Sambil Meningkatkan Efisiensi
Salah satu kekhawatiran utama developer tentang batching multiple request adalah apakah hal tersebut berdampak pada performa model. Diskusi komunitas mengungkapkan bahwa pendekatan vLLM mengatasi kekhawatiran ini secara efektif. Tidak seperti metode batching tradisional yang mungkin menggabungkan prompt berbeda ke dalam konteks yang sama, vLLM memproses request terpisah secara paralel sambil berbagi sumber daya komputasi. Ini berarti tidak ada trade-off dalam perplexity atau kualitas respons - pengguna mendapatkan performa model yang sama seperti yang mereka harapkan dari request individual, tetapi dengan efisiensi yang jauh lebih baik.
Algoritma continuous batching bekerja dengan mempertahankan anggaran token yang fleksibel di seluruh multiple request. Misalnya, jika tiga request memiliki 3, 5, dan 12 prompt token masing-masing dengan anggaran 10 token, scheduler mungkin memproses 3 token dari request pertama, 5 dari yang kedua, dan 2 dari yang ketiga dalam satu forward pass. Alokasi dinamis ini memastikan sumber daya GPU tetap terpakai penuh sambil mempertahankan keadilan di seluruh request.
Token budget: Jumlah maksimum token yang dapat diproses dalam satu forward pass melalui model
Contoh Continuous Batching:
- 3 permintaan dengan masing-masing 3, 5, dan 12 token prompt
- Anggaran token sebesar 10 token per forward pass
- Langkah 0: Memproses 3 token (R1) + 5 token (R2) + 2 token (R3)
- Langkah 1: Memproses sisa 8 token (R3) + 1 decode token untuk masing-masing (R1, R2)
![]() |
---|
Proses alokasi token dalam continuous batching meningkatkan efisiensi untuk beberapa permintaan |
Keterbatasan Memory Bandwidth Memungkinkan Pemrosesan Paralel
Efektivitas pendekatan batching vLLM berasal dari karakteristik fundamental arsitektur LLM saat ini. Model bahasa modern sangat dibatasi oleh memory bandwidth daripada kapasitas komputasi. Bottleneck ini terjadi karena sistem menghabiskan waktu signifikan menunggu model weight ditransfer dari video memory (VRAM) ke high-bandwidth memory (HBM). Selama periode tunggu ini, memproses multiple request secara bersamaan menjadi hampir gratis dari sudut pandang komputasi.
Wawasan ini menjelaskan mengapa vLLM dapat mencapai peningkatan performa yang dramatis. Sistem pada dasarnya mengisi celah komputasi yang seharusnya terbuang menunggu transfer memori. Core GPU yang akan menganggur selama operasi memori dapat bekerja pada request tambahan tanpa berdampak pada kecepatan pemrosesan request individual.
Karakteristik Performa Berdasarkan Fase:
- Fase Prefill: Utilisasi komputasi tinggi, I/O memori rendah, memproses semua token prompt secara paralel
- Fase Decode: Kebutuhan komputasi ringan, I/O memori berat untuk akses cache KV, generasi token berurutan
- Bottleneck Memori: Arsitektur LLM saat ini dibatasi oleh bandwidth memori daripada kapasitas komputasi
Paged Attention dan Manajemen KV Cache
Selain continuous batching, sistem manajemen memori vLLM memainkan peran penting dalam keunggulan performanya. Sistem menggunakan teknik yang disebut Paged Attention, yang awalnya dikembangkan oleh tim vLLM dan sejak itu telah diadopsi oleh mesin inferensi lainnya. Pendekatan ini memperlakukan memori GPU seperti sistem paging, menyimpan data key-value (KV) cache dalam blok berukuran tetap daripada memerlukan alokasi memori kontinu yang besar.
KV cache menyimpan kunci dan nilai attention transformer untuk setiap token, yang penting untuk menghasilkan token berikutnya secara efisien. Dengan membagi cache ini menjadi blok yang dapat dikelola, vLLM dapat mengalokasikan memori secara dinamis sesuai kebutuhan dan menghindari masalah fragmentasi memori yang mengganggu sistem serving lainnya. Pendekatan berbasis blok ini juga memungkinkan utilisasi memori yang lebih baik di seluruh multiple concurrent request.
KV cache: Memori GPU yang menyimpan kunci dan nilai attention dari token sebelumnya, memungkinkan generasi token baru yang efisien tanpa menghitung ulang state masa lalu
Karakteristik Performa Prefill vs Decode
Sistem menangani dua fase inferensi yang berbeda secara berbeda, masing-masing dengan karakteristik performa unik. Selama fase prefill, semua prompt token dapat diproses secara bersamaan karena query tensor untuk setiap posisi langsung tersedia. Pemrosesan paralel ini membuat operasi prefill relatif cepat dan compute-intensive dengan persyaratan memory I/O minimal.
Fase decode beroperasi berbeda, menghasilkan token satu per satu secara berurutan. Setiap token baru bergantung pada output token sebelumnya, mencegah generasi paralel dalam satu request. Namun, fase ini memerlukan memory I/O ekstensif untuk mengakses kunci dan nilai yang disimpan dari tahap prefill. Kontras antara fase-fase ini menyoroti mengapa batching multiple request menjadi lebih berharga - sementara satu request menunggu operasi memori, yang lain dapat memanfaatkan sumber daya komputasi yang tersedia.
Pertanyaan Performa dan Optimisasi Masa Depan
Meskipun penjelasan teknis yang detail, beberapa anggota komunitas mencatat tidak adanya benchmark performa spesifik dan spesifikasi hardware. Kurangnya angka throughput konkret membuat sulit untuk mengevaluasi performa vLLM terhadap alternatif atau memperkirakan performa yang diharapkan pada konfigurasi hardware spesifik.
Ada lebih banyak performa yang bisa diperas dari vLLM
Peluang optimisasi tambahan ada di luar kemampuan inti vLLM. Beberapa organisasi membangun di atas fondasi vLLM dengan menambahkan sistem antrian terpusat dan dukungan client-side batching eksplisit untuk mencapai tingkat throughput yang lebih tinggi.
Diskusi juga menyoroti pertimbangan deployment praktis, seperti mengelola percakapan stateful di seluruh multiple instance model. Meskipun model itu sendiri stateless, konteks percakapan memerlukan strategi routing yang hati-hati di tingkat load balancer untuk mempertahankan manfaat performa dari prompt caching dan reuse KV cache.
Kombinasi vLLM dari continuous batching, paged attention, dan manajemen memori yang efisien mewakili kemajuan signifikan dalam teknologi serving LLM. Dengan mengatasi bottleneck fundamental dalam arsitektur transformer, sistem mencapai peningkatan performa substansial sambil mempertahankan kualitas respons, menjadikannya pilihan menarik bagi organisasi yang men-deploy large language model dalam skala besar.
Referensi: Life of an inference request (vLLM V1): How LLMs are served efficiently at scale