Continuous vs static batching: kenapa server LLM mengisi ulang slot di tiap langkah

Server LLM menghasilkan satu token per langkah untuk setiap request dalam batch-nya, karena sekali baca weight model bisa melayani banyak urutan sekaligus. Jumlah token yang diminta tiap request berbeda-beda, jadi cara server mengisi batch menentukan seberapa banyak GPU menganggur dan berapa lama request yang antre menunggu.

2 menit baca · Lensa ML
Static batching22 langkah · 57% sibukslot 1R1R5slot 2R2R6slot 3R3R7slot 4R4R8Continuous batching14 langkah · 89% sibukslot 1R1R5slot 2R2slot 3R3R7slot 4R4R6R805101520langkah decode (satu token per request per langkah)
request 1–4request 5–8, antreslot menganggur
  1. Delapan request menunggu dalam antrean di langkah 0, masing-masing membutuhkan 3, 12, 5, 4, 10, 2, 6, dan 8 token output. Server punya 4 slot batch. Setiap blok adalah satu request, R1 sampai R8, dan lebarnya adalah jumlah langkah yang dibutuhkan. Langkah dihitung dari 0 pada sumbu.
  2. Static batching memasukkan R1 sampai R4 dan berjalan sampai yang terpanjang, R2 dengan 12 token, selesai. R1 selesai setelah 3 langkah, dan slotnya menganggur selama 9 langkah berikutnya, yaitu area berarsir. R5 sampai R8 menunggu 12 langkah sebelum menghasilkan token pertama. Seluruh antrean butuh 22 langkah, dan slot hanya sibuk 57% dari waktu itu.
  3. Continuous batching, yang juga disebut iteration-level scheduling, memeriksa slot di setiap langkah. R1 selesai setelah 3 langkah dan R5 langsung mengambil slotnya di langkah berikutnya; R6, R7, dan R8 menyusul saat R4, R3, dan R6 selesai. R5 sampai R8 mulai di langkah 3 sampai 6, bukan 12, antrean selesai dalam 14 langkah, dan slot sibuk 89% dari waktu itu. Rata-rata sebuah request selesai setelah 8,5 langkah, dibandingkan 12,25.

Intinya

Continuous batching adalah bawaan pada sistem serving seperti vLLM, TensorRT-LLM, dan Hugging Face TGI. Cara ini menaikkan throughput dan memangkas waktu tunggu tanpa mengubah output model. Dalam praktik, batch dibatasi oleh memori KV cache, bukan jumlah slot yang tetap, itu sebabnya ia berpasangan dengan paged KV cache.

Pelajari lebih dalam · interaktif

Continuous Batching

Di langkah 3, tekan putar untuk menjalankan kedua penjadwal pada request yang sama, lalu ubah jumlah slot batch.

Buka penjelasan interaktif

Bites lainnya

Referensi