Continuous Batching (Iteration-Level) vs Static Batching
I2 — Inference Engines: vLLM, PagedAttention & Continuous Batching
Menghilangkan Waktu Menganggur dengan Continuous Batching
1. Kelemahan Fatal Static Batching
Pada batching konvensional:
User A (10 tokens): [====================] (Selesai cepat, tapi harus menunggu User B!)
User B (500 tokens): [============================================================]
Slot User A tetap terkunci dan tidak bisa menerima request baru sampai seluruh batch User B selesai.
2. Iteration-Level (Continuous) Batching
Di setiap langkah forward pass generasi 1 token:
- Sistem memeriksa request mana yang menghasilkan token
<eos>(selesai). - Request yang selesai langsung dikeluarkan dari batch dan jawabannya di-stream ke user.
- Slot kosong yang ditinggalkan langsung diisi oleh request baru dari antrian tanpa jeda!
3. Chunked Prefill
Saat ada request dengan prompt sangat panjang (misal 10.000 token) masuk di tengah antrian:
- Jika dihitung sekaligus, generasi token untuk ratusan user lain yang sedang berjalan akan mengalami lag (lonjakan TPOT).
- Chunked Prefill memecah 10.000 token menjadi potongan-potongan kecil (misal per 512 token) yang disisipkan bergantian dengan langkah decode user lain.
I2