Generasi autoregresif biasanya menetapkan satu token sebelum langkah model target berikutnya dapat dievaluasi. Speculative decoding mengubah pola eksekusi tersebut. Distribusi proposal yang lebih murah menghasilkan blok kandidat pendek, sementara model target mengevaluasi posisi-posisi kandidat itu bersama-sama. Aturan penerimaan kemudian menentukan seberapa banyak bagian blok yang dapat menjadi output.

Mekanisme ini bukan batching biasa. Token di dalam proposal tetap dihasilkan secara autoregresif, dan model target tetap menentukan distribusi output yang dituju ketika algoritma speculative sampling eksak digunakan. Perubahan yang berguna terletak pada verifikasi: satu pass yang mahal dapat mencakup beberapa posisi output jika cukup banyak proposal diterima.

Draft memindahkan kerja serial ke model yang lebih murah

Misalkan distribusi target pada suatu posisi adalah (p(x)) dan distribusi proposal adalah (q(x)). Model proposal mengambil sampel kandidat token secara berurutan karena setiap token proposal menjadi konteks bagi proposal berikutnya. Jika model itu membuat (k) token draft, model target dapat menghitung logit untuk posisi-posisi kandidat tersebut dalam satu forward pass dengan causal mask.

Hal ini tidak membuat komputasi target antarp posisi menjadi independen. Transformer dapat memverifikasi seluruh blok kandidat karena semua token prefix yang diusulkan sudah tersedia sebagai input pada pass tersebut. Causal attention tetap mencegah suatu posisi membaca posisi yang datang sesudahnya.

Karena itu, model draft harus cukup murah sehingga kerja proposal serialnya lebih kecil daripada langkah target yang berhasil dihilangkan. Model draft yang distribusinya dekat dengan target dapat meningkatkan penerimaan, tetapi tingkat kesesuaian saja tidak menentukan latensi akhir. Biaya draft, biaya verifikasi, panjang blok, bentuk batch, traffic memori, dan kernel runtime juga berpengaruh.

Sampling eksak memerlukan aturan koreksi

Menerima proposal hanya karena probabilitas targetnya tinggi pada umumnya akan mengubah distribusi target. Speculative sampling eksak memakai konstruksi penerimaan dan koreksi.

Untuk token proposal (x) yang diambil dari (q), salah satu probabilitas penerimaan standar adalah

[ a(x) = \min\left(1, \frac{p(x)}{q(x)}\right). ]

Jika proposal ditolak, token pengganti dapat diambil dari residual positif yang dinormalisasi

[ r(x) \propto \max(0, p(x)-q(x)). ]

Konstruksi ini mengompensasi bagian distribusi tempat proposal memberikan probabilitas lebih besar daripada target. Dengan algoritma lengkap dan asumsi yang dinyatakan, distribusi token hasilnya sama dengan sampling dari model target, bukan sekadar pendekatan.

Sifat tersebut berasal dari algoritma penerimaan, bukan dari istilah speculative decoding secara umum. Sistem dapat memakai verifikasi deterministik, penerimaan yang dilonggarkan, kandidat berbentuk tree, auxiliary head, atau varian lain. Setiap metode memerlukan klaim distribusinya sendiri; hasil dari sampling eksak tidak otomatis berlaku pada varian tersebut.

Penolakan memotong prefix yang diterima

Verifikasi bersifat berurutan. Misalkan draft mengusulkan (x_1, x_2, \ldots, x_k). Jika tiga token pertama lolos uji penerimaan dan token keempat ditolak, token draft sesudahnya dibentuk berdasarkan prefix yang tidak lagi ada setelah koreksi. Token-token itu tidak dapat langsung dipertahankan.

Decoder menyimpan prefix yang diterima, mengeluarkan token koreksi sesuai algoritma, lalu memulai putaran spekulatif baru dari konteks hasil tersebut. Sifat prefix ini membuat panjang penerimaan menjadi ukuran runtime yang relevan: satu pass verifikasi memberi nilai terbesar saat beberapa posisi dapat ditetapkan sekaligus.

Blok draft yang lebih panjang menyediakan lebih banyak peluang token diterima per pass target, tetapi juga menambah posisi tempat penolakan dapat menghentikan blok. Mekanismenya tidak menetapkan satu panjang blok yang cocok untuk semua konteks. Pemilihan praktis bergantung pada kualitas proposal dan biaya serving.

Verifikasi mengubah jalur cache

Eksekusi spekulatif juga memengaruhi pengelolaan KV cache. Pass target menghitung state untuk posisi kandidat sebelum runtime mengetahui kandidat mana yang bertahan. Setelah verifikasi, entri cache milik suffix yang dibuang tidak boleh menjadi bagian dari state decoding yang sudah ditetapkan.

Implementasi dapat menanganinya melalui pemotongan cache, staged write, pengelolaan indeks, atau strategi runtime lain. Persyaratan semantiknya lebih sederhana daripada desain penyimpanannya: putaran decoding berikutnya harus melihat state model target yang hanya sesuai dengan prefix yang telah ditetapkan.

Model draft juga memiliki state sendiri. Jika model tersebut merupakan model autoregresif terpisah, cache-nya harus dimajukan atau dibentuk kembali secara konsisten dengan prefix yang diterima dan token koreksi. Serving engine yang mengoptimalkan verifikasi target tetapi berulang kali membangun ulang state draft dapat kehilangan sebagian keuntungan latensi yang diharapkan.

Tingkat penerimaan tidak sama dengan speedup

Proporsi token draft yang diterima memang berguna, tetapi bukan metrik performa yang lengkap. Spekulasi menambahkan komputasi proposal, verifikasi beberapa posisi, logika penerimaan, dan pengelolaan cache. Pass target juga dapat memakai bentuk kernel yang berbeda dari decoding satu token.

Perbandingan yang relevan adalah kerja end-to-end per token output yang ditetapkan pada konfigurasi serving aktual. Utilisasi hardware, ukuran batch, panjang prompt dan generasi, ukuran model draft, ukuran model target, serta perilaku memori dapat mengubah hasil. Sebuah konfigurasi dapat menerima banyak proposal tetapi hanya menghasilkan perubahan latensi kecil jika overhead drafting atau verifikasi besar.

Sebaliknya, mekanisme ini paling sesuai ketika langkah decode model target mahal, generasi proposal jauh lebih murah, dan beberapa proposal sering bertahan dalam setiap putaran verifikasi.

Batas implementasi speculative decoding dapat dinyatakan secara spesifik. Mekanisme ini mengurangi jumlah putaran decode model target yang serial hanya ketika kelanjutan yang diusulkan dapat diverifikasi dan ditetapkan dalam bentuk blok. Pemeliharaan distribusi output secara eksak memerlukan prosedur penerimaan dan koreksi eksak yang sesuai; verifikasi paralel saja tidak memberikan jaminan tersebut.