Model bahasa autoregresif menghasilkan teks satu token demi satu token. Meski accelerator memiliki komputasi paralel yang besar, model biasanya tidak dapat menentukan token ke-12 sebelum token ke-11 diketahui. Ketergantungan ini membuat latensi generasi sulit dikurangi hanya dengan menambahkan lebih banyak hardware paralel.

Speculative decoding mengatasi bottleneck ini dengan mengerjakan pekerjaan murah lebih dulu sebelum model yang mahal. Draft model yang lebih cepat mengusulkan beberapa token berikutnya. Target model lengkap kemudian mengevaluasi usulan tersebut bersama-sama dan menerima bagian yang konsisten dengan distribusinya sendiri. Dengan algoritma acceptance-and-correction yang tepat, cara komputasi generasi berubah tanpa mengubah distribusi yang didefinisikan target model.

Metode ini bergantung pada tiga hal: berapa banyak draft token yang diterima target, biaya drafting dan verifikasi, serta apakah prosedur sampling mempertahankan distribusi target.

Mulai dari bottleneck decoding sekuensial

Misalkan target language model telah menghasilkan:

The database connection

Secara konseptual, decoding autoregresif standar berjalan seperti ini:

prefix -> target model -> next token: "failed"
prefix + "failed" -> target model -> next token: "because"
prefix + "failed because" -> target model -> next token: "the"
...

Setiap keputusan next-token bergantung pada token yang dihasilkan sebelumnya. Menghasilkan empat token baru karena itu membutuhkan empat langkah decoding sekuensial, meski pekerjaan numerik di dalam setiap langkah sangat paralel.

Ketergantungan serial ini berbeda dari request batching biasa. Batching memungkinkan server memproses pekerjaan dari beberapa sequence secara bersamaan, tetapi tidak menghilangkan ketergantungan token demi token di dalam satu sequence.

Speculative decoding berusaha membuat satu verifikasi target model yang mahal memajukan sequence lebih dari satu token.

Model mental: usulkan dengan murah, verifikasi dengan mahal

Anggap draft model yang lebih kecil melihat prefix yang sama dan dengan cepat mengusulkan empat token:

prefix: The database connection

draft: failed because the password

Alih-alih meminta target model menghasilkan empat token ini satu per satu, serving system mengevaluasi continuation yang diusulkan dengan target model dalam satu verification pass.

Bayangkan target model menyetujui tiga posisi draft pertama tetapi menolak posisi keempat:

draft:  failed | because | the | password
verify:   yes  |   yes   | yes | reject

Sistem dapat mempertahankan prefix yang diterima:

The database connection failed because the

lalu melanjutkan dari titik penolakan sesuai algoritma decoding.

Unit yang penting adalah accepted prefix. Begitu satu speculative token ditolak, draft token setelahnya dikondisikan pada continuation yang sudah tidak valid. Karena itu, dalam speculative round linear sederhana, token-token berikutnya tidak dapat dipertahankan hanya karena tampak masuk akal secara terpisah.

Jika beberapa draft token diterima, satu verifikasi target model telah menggantikan beberapa langkah decoding target model yang sekuensial. Jika penolakan terjadi segera, sebagian besar pekerjaan spekulatif terbuang.

Cara target memverifikasi beberapa posisi sekaligus

Saat training dan pemrosesan prompt, transformer secara rutin menghitung prediksi untuk banyak posisi secara paralel sementara causal attention mask mencegah setiap posisi melihat token di masa depan.

Verifikasi dapat memanfaatkan sifat yang sama. Dengan prefix ditambah sequence yang diusulkan, target model dapat mengevaluasi distribusi kondisional yang diperlukan untuk beberapa posisi draft dalam satu forward pass atas posisi-posisi tersebut. Causal masking mempertahankan struktur dependensi yang benar: skor untuk token usulan hanya bergantung pada prefix dan token sebelumnya, bukan usulan setelahnya.

Ini bukan berarti generasi autoregresif menjadi sepenuhnya paralel. Usulan tetap harus berasal dari suatu proses, dan usulan yang ditolak memicu round sekuensial berikutnya. Spekulasi berguna karena drafter lebih murah daripada target dan karena verifikasi target dapat mengamortisasi pekerjaan mahal pada beberapa posisi usulan sekaligus.

Verifikasi greedy adalah contoh paling sederhana

Untuk greedy decoding deterministik, ide dasarnya mudah dilihat. Token dengan probabilitas tertinggi dari target model pada setiap posisi yang diverifikasi dapat dibandingkan dengan draft token yang sesuai.

Misalkan drafter mengusulkan:

A B C D

dan verifikasi greedy target menghasilkan:

A B X ...

Maka A dan B cocok dengan greedy continuation target. C adalah mismatch pertama, sehingga speculative prefix berakhir di sana dan continuation target menggunakan X sebagai gantinya.

Kasus sederhana ini menjelaskan mekanisme inti, tetapi production system sering menggunakan stochastic sampling. Untuk sampling, menerima draft token hanya ketika token itu sama dengan satu token target yang di-sample secara independen bukanlah algoritma lossless yang berlaku umum.

Speculative sampling yang exact memerlukan acceptance dan correction

Misalkan draft model memberikan probabilitas q(x) pada candidate token x, sedangkan target model memberikan p(x) pada posisi yang sama. Konstruksi speculative sampling standar menerima token yang diusulkan dengan probabilitas:

min(1, p(x) / q(x))

Ketika p(x) >= q(x), usulan dapat diterima. Ketika draft memberikan probabilitas lebih besar pada token tersebut daripada target, probabilitas acceptance dikurangi agar output akhir tidak merepresentasikan token itu secara berlebihan.

Jika usulan ditolak, replacement umumnya tidak cukup di-sample dari distribusi target asli p tanpa penyesuaian. Correction distribution proporsional terhadap residual positif:

max(0, p(x) - q(x))

yang dinormalisasi di seluruh vocabulary.

Correction inilah yang mengompensasi probability mass yang sudah direpresentasikan oleh proses draft proposal. Bersama acceptance rule, mekanisme ini memungkinkan distribusi token akhir cocok dengan distribusi sampling target model di bawah asumsi algoritmanya.

Pelajaran praktisnya penting: speculative decoding bukan sekadar “model kecil menebak, model besar menyetujui.” Sampling yang mempertahankan distribusi bergantung pada prosedur verifikasi tertentu. Implementasi serving sebaiknya memakai algoritma speculative decoding yang sudah teruji, bukan membuat shortcut accept/reject berdasarkan intuisi.

Kualitas dan biaya draft menentukan speedup yang berguna

Drafter yang baik memerlukan dua sifat yang saling tarik-menarik:

  1. Harus cukup murah sehingga biaya mengusulkan token jauh lebih kecil daripada menghasilkan token dengan target model.
  2. Prediksinya harus cukup dekat dengan target agar beberapa token usulan diterima dalam setiap round.

Drafter yang sangat kecil tetapi tidak akurat dapat menghasilkan usulan dengan cepat namun sering ditolak sejak awal. Drafter yang lebih besar dapat mencapai acceptance rate lebih tinggi, tetapi bisa menghabiskan cukup banyak compute hingga pekerjaan tambahan menghapus manfaat latensinya.

Model mental yang berguna untuk satu speculative round adalah:

round cost ~= draft cost + target verification cost
round benefit ~= number of useful tokens advanced

Timing tepatnya bergantung pada hardware dan implementasi. Memverifikasi beberapa posisi tidak gratis, dan biayanya tidak selalu sama dengan satu langkah decoding single-token biasa. Memory bandwidth, kernel shape, operasi KV cache, batch size, dan draft length semuanya memengaruhi hasil.

Karena itu, acceptance rate saja bukan metrik performa yang memadai. Ukur end-to-end latency dan throughput pada workload yang benar-benar penting.

Draft length menimbulkan trade-off lain

Draft length adalah jumlah token yang diusulkan sebelum verifikasi target.

Draft yang lebih panjang menawarkan potensi kemajuan lebih besar per round yang berhasil:

2-token draft -> at most a short accepted run
8-token draft -> potentially a much longer accepted run

Namun, usulan yang lebih akhir hanya berguna jika semua usulan sebelumnya dalam draft linear bertahan. Jika perbedaan cenderung muncul lebih awal, menghasilkan banyak draft token tambahan hanya membuang pekerjaan dan memperbesar verifikasi.

Draft length tetap bisa menjadi titik awal yang wajar. Serving system yang lebih canggih dapat menyesuaikan seberapa jauh melakukan spekulasi berdasarkan perilaku acceptance terbaru atau sinyal lain. Kebijakan seperti itu adalah pilihan implementasi, bukan jaminan dari speculative decoding itu sendiri.

Tuning draft length berdasarkan latensi terukur. Nilai yang cocok untuk code completion belum tentu cocok untuk dialog open-ended karena predictability, sequence length, dan sampling setting berbeda.

Sampling setting dapat mengubah perilaku acceptance

Distribusi target yang digunakan saat verifikasi harus sesuai dengan distribusi decoding yang memang ingin di-sample. Temperature dan metode probability truncation seperti top-k atau nucleus sampling dapat mengubah distribusi tersebut, sehingga implementasi speculative harus menerapkan pemrosesan yang kompatibel pada tahap yang tepat.

Drafter dan target juga memerlukan hubungan yang terdefinisi jelas antara token space keduanya untuk algoritma token-level sederhana. Banyak implementasi umum menggunakan model dengan tokenization kompatibel agar proposed token ID dapat langsung dievaluasi target. Metode untuk vocabulary heterogen memang ada, tetapi memerlukan mekanisme tambahan dan tidak boleh diasumsikan berperilaku seperti kasus shared-token sederhana.

Bahkan dengan vocabulary yang kompatibel, draft model dari training setup yang tidak terkait dapat memprediksi continuation yang sangat berbeda. Jadi kompatibilitas bukan sekadar tensor shape yang cocok: spekulasi yang berguna membutuhkan kesesuaian distribusi yang cukup untuk mengimbangi overhead drafting.

Ukur besaran yang menjelaskan performa

Saat mengevaluasi speculative decoding, catat lebih dari sekadar requests per second. Pengukuran yang berguna meliputi:

  • End-to-end generation latency: apakah pengguna benar-benar menerima output lengkap lebih cepat.
  • Inter-token latency: apakah streaming yang terlihat menjadi lebih mulus atau justru lebih bursty.
  • Accepted tokens per verification round: seberapa banyak pekerjaan target yang sekuensial digantikan setiap round.
  • Acceptance by draft position: apakah posisi spekulatif yang lebih akhir rutin terbuang.
  • Draft and target execution time: apakah drafter menghabiskan porsi latensi sesuai perkiraan.
  • Throughput under concurrency: apakah keuntungan untuk satu request bertahan pada beban server realistis.
  • Memory use: apakah mempertahankan model kedua dan runtime state-nya mengurangi batch size yang layak atau menimbulkan tekanan lain.

Bandingkan dengan target model yang sama menggunakan decoding policy yang sama tanpa spekulasi. Jika tidak, perubahan kualitas atau sampling dapat keliru dianggap sebagai optimasi inferensi.

Kesalahan umum

Menganggap draft token sebagai keputusan final

Drafter ada untuk mengusulkan pekerjaan murah, bukan menggantikan decision rule target. Menerima usulan berdasarkan confidence threshold arbitrer dapat mengubah distribusi hasil generasi dan dengan demikian perilaku model.

Jika mempertahankan distribusi target secara exact penting, gunakan algoritma verifikasi yang memang dirancang untuk menjaminnya.

Memilih drafter hanya berdasarkan jumlah parameter

Jumlah parameter adalah proxy yang tidak sempurna untuk serving cost. Arsitektur, precision, hardware utilization, memory movement, dan implementasi semuanya memengaruhi latensi. Benchmark pasangan model yang sebenarnya pada hardware tujuan.

Mengoptimalkan acceptance rate secara terpisah

Drafter yang lebih mahal dapat meningkatkan acceptance tetapi membuat total generasi lebih lambat. Tujuannya adalah useful tokens advanced per unit of end-to-end time, bukan persentase acceptance tertinggi.

Menganggap semua workload mendapat manfaat yang sama

Continuation yang sangat mudah diprediksi bisa lebih mudah dispekulasikan daripada yang tidak pasti. Prompt panjang, output pendek, batch besar, sampling temperature berbeda, dan deployment dengan keterbatasan memori semuanya dapat menggeser keseimbangan biaya.

Karena itu, speculative decoding harus diperlakukan sebagai optimasi yang bergantung pada workload, bukan sifat universal dari LLM serving.

Kapan speculative decoding cocok digunakan

Pertimbangkan metode ini ketika latensi generasi single-request atau low-concurrency penting, decoding target model mahal, dan drafter yang jauh lebih murah dapat memprediksi target dengan cukup baik untuk menghasilkan accepted run yang berguna. Metode ini terutama layak diuji ketika serving stack sudah mendukung metode verifikasi exact atau yang karakteristiknya sudah dipahami dengan baik.

Jalur decoding yang lebih sederhana mungkin lebih baik ketika output sangat pendek, target model sudah kecil, accelerator utilization didominasi batch concurrent yang besar, memori tidak cukup longgar untuk menampung drafter tambahan, atau acceptance terukur terlalu rendah untuk menutup pekerjaan ekstra.

Speculative decoding juga perlu dibedakan dari optimasi lain. Quantization dapat mengurangi memori model dan biaya aritmetika. Batching dapat meningkatkan pemanfaatan hardware secara agregat. KV caching menghindari perhitungan ulang attention key dan value untuk prefix yang sudah terbentuk. Speculative decoding menangani masalah yang berbeda: rangkaian keputusan decoding target model yang serial. Teknik-teknik ini dapat berinteraksi, tetapi satu teknik tidak otomatis menggantikan yang lain.

Kesimpulan

Speculative decoding mengurangi biaya serialisasi autoregresif dengan memindahkan sebagian pekerjaan prediksi ke proposer yang lebih murah dan memungkinkan target memverifikasi beberapa posisi usulan sekaligus. Nilainya berasal dari kemampuan memajukan beberapa token valid per target round yang mahal, bukan dari mempercayai tebakan model yang lebih kecil.

Drafting harus murah, kesesuaian model harus cukup tinggi, dan verifikasi harus menghemat lebih banyak pekerjaan target daripada biaya yang ditimbulkannya. Pertahankan distribusi target yang dimaksud dengan prosedur acceptance yang benar, lalu tuning draft length dan pasangan model menggunakan pengukuran end-to-end. Ketika kondisi ini terpenuhi, speculative decoding dapat mengurangi latensi generasi tanpa mengharuskan target model memprediksi token masa depan secara independen.