Apa itu continuous batching dalam serving LLM?
Continuous batching adalah metode penjadwalan untuk inference LLM yang menambahkan request baru ke batch yang sedang berjalan dan mengeluarkan yang sudah selesai di setiap langkah decode, tanpa menunggu seluruh batch selesai. Server men-decode banyak sequence bersama-sama karena satu pembacaan weight model bisa melayani semuanya. Dengan continuous batching, slot yang dikosongkan jawaban pendek langsung terisi lagi di langkah berikutnya, jadi GPU jarang menganggur sambil menunggu jawaban panjang selesai.
Semua mesin serving LLM utama memakainya, termasuk vLLM, Hugging Face Text Generation Inference, TensorRT-LLM (yang menyebutnya in-flight batching), dan SGLang. Metode ini biasanya dipasangkan dengan paged KV cache, karena jumlah sequence yang bisa dijalankan GPU sekaligus dibatasi oleh memori cache. Kedua ide ini menaikkan throughput serving beberapa kali lipat dibanding batching per request, dan menentukan angka latency yang dirasakan pengguna: time to first token dan time per output token.
Ide utama
- Decoding dibatasi oleh memori, jadi batching sequence membagi satu pembacaan weight dan menaikkan throughput.
- Static batching menahan setiap slot sampai request terpanjang dalam batch selesai, sehingga banyak slot menganggur.
- Continuous batching memasukkan dan mengeluarkan request di setiap langkah decode, sehingga slot tetap penuh.
- KV cache, bukan compute, biasanya yang membatasi jumlah sequence dalam satu batch.
- PagedAttention menyimpan cache dalam blok berukuran tetap, sehingga pemborosan paling banyak satu blok parsial per request.
- Batch yang lebih besar menaikkan throughput tetapi memperlambat tiap token, dan chunked prefill membatasi stall akibat prompt baru.
Ulasan singkat tentang topik ini
Pertanyaan umum
Apa bedanya continuous batching dengan dynamic batching?
Dynamic batching mengumpulkan request yang datang dalam jendela waktu singkat dan menjalankannya sebagai satu batch dari awal sampai akhir. Cara ini cocok untuk pekerjaan berukuran tetap seperti klasifikasi gambar. Continuous batching mengubah batch di setiap langkah token, sehingga cocok untuk generation, yang panjang output-nya sangat beragam dan tidak diketahui sejak awal.
Apakah continuous batching mengubah output model?
Tidak. Setiap sequence hanya memperhatikan token miliknya sendiri, jadi request lain dalam batch tidak memengaruhi logit-nya. Perbedaan numerik kecil bisa muncul karena kernel menjumlahkan dengan urutan berbeda untuk bentuk batch yang berbeda. Dengan greedy decoding, hal ini sesekali bisa membalik dua token yang nilainya nyaris seri.
Apa yang terjadi ketika KV cache penuh?
Scheduler berhenti menerima request baru, dan jika sequence yang sedang berjalan masih butuh blok tambahan, sebagian di-preempt. vLLM memindahkan blok yang di-preempt ke memori CPU, atau membebaskannya lalu menghitung ulang cache nanti dari token yang sudah dihasilkan. Request yang di-preempt dilanjutkan setelah memori kosong.
Kenapa benchmark serving melaporkan throughput sekaligus latency?
Server bisa menaikkan total token per detik dengan memuat lebih banyak sequence ke tiap pass, sementara tiap pengguna melihat token yang lebih lambat dan menunggu lebih lama untuk token pertama. Throughput mengukur biaya per token, dan latency mengukur pengalaman satu pengguna. Batas serving biasanya ditetapkan sebagai target latency, lalu throughput dimaksimalkan di bawah target itu.
Penjelasan terkait
- KV Cache · Kenapa LLM menyimpan key dan value di cache, dan berapa biayanya
- Decoder-Only Transformer · Arsitektur di balik GPT dan LLM modern
- Quantization · Mengecilkan weight model menjadi 8 dan 4 bit
- Mixture of Experts · Mengirim tiap token ke beberapa expert dalam model yang jauh lebih besar
- Sampling: Temperature, Top-k, dan Top-p · Cara model bahasa memilih token berikutnya
- Cara Kerja Self-Attention · Query, key, dan value, inti dari self-attention
Referensi
- Yu et al. (2022), "Orca: A Distributed Serving System for Transformer-Based Generative Models", OSDI '22
- Kwon et al. (2023), "Efficient Memory Management for Large Language Model Serving with PagedAttention"
- Agrawal et al. (2024), "Taming Throughput-Latency Tradeoff in LLM Inference with Sarathi-Serve"
- Pope et al. (2022), "Efficiently Scaling Transformer Inference"
Terakhir diperbarui