PANDUAN Teknis

Penyajian Pra-Pengisian dan Dekode Terpilah

Arsitektur penyajian yang membagi inferensi model bahasa besar menjadi dua fase terpisah—pengisian awal dan dekode—dan menjalankannya pada kumpulan GPU yang berbeda.

Dengarkan panduan iniDiceritakan oleh AI · ~2 min

Di halaman ini2 menit membaca
  1. Ikhtisar
  2. Menyelam Lebih Dalam
  3. Implementasi Dunia Nyata
  4. Masa Depan Penyajian Prefill dan Decode Terpilah
  5. Mempraktikkannya
  6. Terus Menjelajah
  7. Pertanyaan yang sering diajukan

Ikhtisar

Hal ini penting karena kedua fase ini memiliki kebutuhan perangkat keras yang berlawanan, dan memaksa keduanya ke mesin yang sama akan membuang-buang kapasitas dan merugikan latensi.

Menyelam Lebih Dalam

Ketika LLM menjawab, ia bekerja dalam dua tahap. Pra-pengisian membaca seluruh prompt sekaligus dan membuat cache nilai kunci (KV); ini adalah ledakan besar, paralel, dan terikat komputasi yang memenuhi unit matematika GPU. Dekode kemudian menghasilkan token satu per satu, setiap langkah membaca seluruh cache KV—tetesan yang terikat pada bandwidth memori dan dihitung dengan ringan. Dijalankan bersama-sama, pengisian awal yang panjang menghentikan dekode semua orang (pemblokiran head-of-line), dan pengelompokan keduanya akan menimbulkan gangguan. Disagregasi menempatkan pra-pengisian pada satu kumpulan GPU dan mendekode pada kumpulan GPU lainnya, mentransfer cache KV di antara keduanya melalui interkoneksi cepat seperti NVLink atau InfiniBand. Setiap kumpulan disetel dan diskalakan secara independen, sehingga meningkatkan keluaran yang baik, memperlancar latensi ekor, dan memungkinkan operator mencapai target waktu-ke-token pertama dan waktu-per-token keluaran yang ketat secara bersamaan.

Implementasi Dunia Nyata

Asisten obrolan merutekan perintah dokumen yang panjang ke kluster pra-pengisian yang banyak melakukan komputasi, lalu mengalirkan balasan dari kluster dekode yang memorinya dioptimalkan agar latensi pengetikan tetap lancar.

NVIDIA Dynamo dan vLLM memungkinkan operator menerapkan kelompok pekerja pra-pengisian dan dekode terpisah sehingga serangkaian perintah yang panjang tidak menghentikan generasi yang sedang berlangsung.

Mooncake (digunakan oleh Kimi dari Moonshot AI) memisahkan pra-pengisian dan dekode serta menambahkan kumpulan cache KV terdistribusi untuk memotong penghitungan ulang cepat yang berlebihan dalam skala besar.

Layanan penyelesaian kode mendedikasikan kumpulan pra-pengisian kecil untuk perintah singkat dan kumpulan dekode besar, karena sebagian besar biaya berasal dari streaming banyak token keluaran.

Masa Depan Penyajian Prefill dan Decode Terpilah

Harapkan disagregasi menjadi default di tumpukan produksi. Sistem seperti DistServe, Splitwise, dan Mooncake mempopulerkannya, dan vLLM serta NVIDIA Dynamo kini mengirimkan mode terpilah. Penelitian mendorong optimalisasi transfer cache KV, pengumpulan dan penggunaan kembali cache di seluruh permintaan, penyeimbangan ulang dinamis rasio pra-pengisian/dekode dalam lalu lintas yang berpindah, dan integrasi yang lebih erat dengan cache awalan dan pra-pengisian yang dipotong. Ketika jendela konteks berkembang menjadi jutaan token, pemisahan fase-fase ini menjadi semakin penting untuk penyajian latensi rendah dan hemat biaya.

Mempraktikkannya

Mengapa itu penting

  • Biaya dan anggaran. Keputusan arsitektur mendorong kinerja dan biaya pengoperasian selama bertahun-tahun.
  • Keputusan yang lebih jelas. Pendidikan teknis membantu tim memilih tumpukan yang tepat, bukan hanya yang terbaru.
  • Kontrol kualitas. Pilihan teknik yang lebih baik mengurangi insiden keandalan dalam produksi.

Hati-hati

  • Mengoptimalkan satu tolok ukur dapat menyembunyikan kelemahan sistem yang lebih luas.
  • Biaya infrastruktur dan pemeliharaan sering kali diremehkan.
  • Kesenjangan keamanan dan kemampuan observasi dapat tumbuh seiring dengan semakin kompleksnya sistem.

Langkah selanjutnya

  1. Tentukan target latensi, kualitas, dan biaya sebelum penerapan.
  2. Tolok ukur dalam kondisi beban dan data yang realistis.
  3. Pemantauan instrumen untuk kesalahan, penyimpangan, dan dampak pengguna.
  4. Siapkan jalur rollback dan respons insiden sebelum melakukan penskalaan.

Terus Menjelajah

Buletin gratis

Dapatkan pengarahan AI harian

Tiga cerita AI terverifikasi setiap pagi hari kerja, ditulis dalam bahasa Inggris sederhana. Gratis selamanya, tanpa iklan.

Satu email setiap hari kerja. Berhenti berlangganan dalam satu klik. Kami tidak pernah menjual atau membagikan alamat Anda.

Uji diri Anda sendiri

Take the Disaggregated Prefill and Decode Serving quiz

Umpan balik instan untuk setiap jawaban, dan sertifikat yang dapat dibagikan dengan ID yang dapat diverifikasi setelah Anda lulus kursus.

Mulai kuis

Mendukung pendidikan AI gratis. AI Understanding adalah organisasi nirlaba 501(c)(3) — tanpa iklan, tanpa paywall, selamanya. Berikan sumbangan

Pertanyaan yang sering diajukan

Apa yang dimaksud dengan Penyajian Pra-Pengisian dan Dekode Terpilah?

Arsitektur penyajian yang membagi inferensi model bahasa besar menjadi dua fase terpisah—pengisian awal dan dekode—dan menjalankannya pada kumpulan GPU yang berbeda. Hal ini penting karena kedua fase ini memiliki kebutuhan perangkat keras yang berlawanan, dan memaksa keduanya ke mesin yang sama akan membuang-buang kapasitas dan mengganggu latensi.

Apa alasan perangkat keras inti untuk memisahkan pra-pengisian dan dekode ke kumpulan GPU yang berbeda?

Pra-pengisian memproses seluruh prompt secara paralel dan menjenuhkan komputasi, sementara dekode membaca cache KV setiap langkah dan dibatasi oleh bandwidth memori—kebalikan dari kebutuhan yang membenarkan kumpulan yang terpisah dan disetel secara independen.

Struktur data apa yang harus ditransfer dari pekerja pra-pengisian ke pekerja dekode?

Pra-pengisian membuat cache KV untuk prompt; dekode memerlukan cache tersebut untuk terus dibuat, sehingga cache dikirimkan melalui interkoneksi cepat ke kumpulan dekode.

Masalah manakah yang secara khusus dikurangi oleh disagregasi dalam pengaturan GPU bersama?

Pada GPU bersama, ledakan pra-pengisian yang lama dapat memblokir langkah-langkah dekode yang sedang berlangsung; memisahkannya akan mencegah gangguan tersebut dan menstabilkan latensi ekor.

Mengapa pra-pengisian dapat dikelompokkan secara agresif tetapi dekode mendapat manfaat dari penyetelan yang berbeda?

Pra-pengisian memproses semua token cepat secara bersamaan, sehingga batch yang lebih besar memberi makan inti tensor dengan baik; decode menghasilkan satu token pada satu waktu dan dilindungi oleh memori, sehingga skalanya berbeda.

Interkoneksi mana yang biasanya digunakan untuk memindahkan cache KV antar kumpulan terpilah?

Tautan dengan bandwidth tinggi dan latensi rendah seperti NVLink (intra-node) dan InfiniBand (antar-node) diperlukan agar transfer KV-cache tidak menjadi hambatan baru.