LLM Kitchen
Pesanan terus datang. Setiap langkah membaca seluruh model satu kali, berapa pun pesanan yang dimasak, jadi memasak beberapa sekaligus membagi biaya itu. Cari berapa yang kamu butuhkan supaya bisa mengikuti.
Atur dulu, lalu mulai shift. Kamu bisa mengubah pengaturan saat berjalan.
Jumlah pesanan yang dimasak GPU pada saat yang sama. Masing-masing adalah satu kompor di dapur di bawah.
Antrean 0
GPU · maksimal 1 sekaligus
Setiap langkah menambah satu token ke setiap pesanan di GPU.
Terlayani 0
Satu langkah decode: 21 ms
Setiap langkah membuat satu token untuk setiap pesanan di GPU: 47 token per detik saat ini.
Cara bermain
Pesanan adalah request ke model bahasa. GPU-mu memasak satu batch sekaligus, menambah satu token untuk setiap pesanan per langkah. Atur pengaturannya, mulai shift 60 detik, dan luluskan dengan melayani 90% pesanan tanpa membuat siapa pun menunggu terlalu lama. Pengaturan bisa diubah di tengah shift. Semua pemain mendapat rombongan pesanan yang sama.
Yang diajarkan tiap shift
- Berapa sekaligus? Setiap langkah membaca semua weight satu kali, jadi batch berbagi biaya itu. Setiap pesanan menambah sedikit kerja, tetapi jauh lebih sedikit daripada satu langkah sendiri.
- Jam sibuk: static batching membiarkan slot yang selesai kosong, dan tidak ada batch size yang bisa menggantikannya. Continuous batching mengisinya kembali.
- Memori hampir penuh: KV cache menukar memori dengan kecepatan, dan weight 8-bit membebaskan memori yang dibutuhkannya.
Yang asli dan yang diskalakan
Bentuk biayanya mengikuti decoding sungguhan: setiap langkah membaca semua weight, hitungan per pesanan bertambah seiring batch, KV cache bertambah untuk setiap token yang sedang diproses, dan weight 8-bit memotong memori serta byte yang dibaca per langkah menjadi setengah. Angkanya diskalakan untuk game 60 detik, jadi baca sebagai perbandingan, bukan ukuran GPU sungguhan.
Pertanyaan umum
Kenapa batching membuat LLM serving lebih cepat?
Setiap langkah decode membaca semua weight model dari memori satu kali, berapa pun jumlah request dalam batch. Batch yang lebih besar berbagi biaya itu, sehingga menghasilkan lebih banyak token per detik, walaupun setiap langkah sedikit lebih lama.
Apa itu continuous batching?
Dengan static batching, server menunggu semua request dalam satu batch selesai sebelum memulai yang berikutnya, jadi balasan pendek meninggalkan slot kosong. Continuous batching mengisi ulang slot begitu request-nya selesai.
Apa fungsi KV cache?
KV cache menyimpan key dan value yang sudah dihitung model untuk token sebelumnya, jadi setiap token baru tidak mengulang kerja itu. Harganya adalah memori, yang bertambah untuk setiap token dari setiap request yang sedang diproses.
Kenapa weight perlu dikuantisasi?
Menyimpan weight dalam 8 bit, bukan 16 bit, memotong memorinya menjadi setengah, sehingga ada ruang untuk KV cache yang lebih besar. Decoding sebagian besar menunggu pembacaan weight dari memori, jadi byte yang lebih sedikit per langkah juga membuat setiap langkah lebih cepat.