Ring in-flight

Pipeline yang tak pernah dikosongkan: beberapa permintaan menempati stage yang berbeda pada saat bersamaan, jadi tak ada stage yang menunggu permintaan di depannya selesai.

Kvasir melayani sebuah model sebagai pipeline stage, masing-masing memegang irisan lapisan yang bersambung. Sebuah stage menjalankan lapisannya lalu meneruskan batasnya — sebuah hidden state, bukan bobot — ke stage berikutnya. Tak ada stage yang memegang seluruh model, dan tak ada apa pun yang duduk di tengah jalur data: bridge mengirim ke kepala dan membaca dari ekor, sementara stage-stage saling menyerahkan hasil lewat agen mereka sendiri.

Bagian in-flight-nya

Mengapa pipeline yang dikosongkan menyia-nyiakan sebagian besar mesin

Jika sebuah pipeline menuntaskan satu permintaan sebelum menerima yang berikutnya, setiap stage kecuali satu menganggur pada tiap saat — ring empat-stage berjalan pada seperempat perangkat kerasnya. Desain in-flight menjaga beberapa permintaan tetap bergerak sekaligus: sementara stage 3 mendekode satu permintaan, stage 0 sudah melakukan prefill untuk yang lain. Stage melaporkan berapa lama mereka menahan sebuah batch dan berapa lama mereka tak punya apa pun untuk dikirim, sehingga ring yang kelaparan terlihat berbeda dari ring yang jenuh.

Empat stage, tiga permintaan, satu saat dalam waktu.

           stage 0        stage 1        stage 2        stage 3
           layers 0-11    12-22          23-33          34-44

request A                                              decode
request B                 decode
request C  prefill

boundaries pass →  agent to agent, never through the caller
Keanggotaan

Apa persisnya sebuah batch

Baris dari permintaan yang berbeda dikemas menjadi satu batch fisik, dan keanggotaan persis itu diteruskan ke setiap stage hilir alih-alih diputuskan ulang tiap lompatan. Itulah yang memungkinkan satu prefill dan beberapa dekode berbagi satu lintasan, dan itulah sebabnya ukuran sebuah batch adalah properti dari pemuatan: rencana menyatakan lebar baris dan micro-batch di muka, dan lebar-lebar itu menetapkan hasil terbesar yang pernah bisa dikembalikan sebuah stage.

Sebuah pipeline butuh setidaknya dua stage. Pipeline satu-stage ditolak mentah-mentah — kepala dan ekor adalah peran yang berbeda, dan satu node yang meruntuhkan keduanya adalah mesin yang lain, bukan ring yang lebih kecil.

Ring adalah jalur latensi, dan granularitasnya adalah lapisan. Sharding pakar menghapus lantai itu dengan memotong di dalam sebuah lapisan, dan menyambung ke jalinan penyajian yang sama.