Saat Anda memasukkan sebuah kalimat di ChatGPT, Claude, atau DeepSeek, model mulai menjawab kata demi kata dalam beberapa ratus milidetik—proses ini terasa sederhana, tetapi sebenarnya adalah salah satu rekayasa paling presisi dalam komputasi modern. Artikel ini merangkum analisis lengkap proses inferensi AI engineer Akshay Pachaar, mulai dari tokenization, embedding, attention, hingga tahapan prefill/decode dua fase, KV cache, kuantisasi, serta mengapa DeepSeek V4 memangkas ukuran cache hingga hanya 10% dari sebelumnya.
Model pikiran inti: LLM hanya “menebak token berikutnya”, lalu mengulang berkali-kali
Pada dasarnya, model bahasa besar hanya melakukan satu hal: memprediksi token berikutnya. Ia menerima urutan token dari masukan Anda, menghitung distribusi probabilitas token berikutnya, melakukan sampling untuk menghasilkan sebuah token, menempelkannya ke akhir masukan, lalu memprediksi token berikutnya lagi—tanpa henti—hingga model mengeluarkan token stop atau mencapai batas.
Masalah kunci dari seluruh proses inferensi bukan “bagaimana ia memprediksi”, melainkan “mengapa token kedua jauh lebih cepat daripada token pertama?” Jawaban untuk itu akan memunculkan dua konsep paling penting dalam layanan LLM modern: prefill dan decode dua tahap, serta KV cache.
Step 1:Tokenization mengubah teks menjadi angka
Jaringan saraf tidak membaca teks, hanya membaca vektor. Jadi, prompt Anda terlebih dahulu melewati tokenization, dipecah menjadi potongan-potongan “token”, dan setiap token memiliki ID bilangan bulat yang bersesuaian. Kebanyakan LLM modern menggunakan BPE (Byte Pair Encoding, pengodean pasangan byte): berawal dari karakter mentah, menggabungkan pasangan karakter yang paling sering muncul secara berulang, hingga akhirnya menghasilkan kosakata sekitar 50 ribu token yang umum.
Dampak langkah ini lebih besar daripada yang dipikir kebanyakan orang. Bahasa yang bobotnya rendah dalam data pelatihan tokenizer akan dipotong menjadi lebih banyak token, sehingga biaya inferensi naik dan kecepatan melambat. Bahasa Tionghoa dan aksara Tionghoa tradisional dalam banyak tokenizer yang berorientasi bahasa Inggris, sering kali setiap karakter dipisah menjadi 2 hingga 3 token—ini salah satu akar penyebab biaya inferensi pengguna bahasa Tionghoa cenderung tinggi.
Step 2:Embedding mengubah ID bilangan bulat menjadi vektor, lalu menyuntikkan informasi posisi
Setiap token ID akan mencari tabel “embedding” yang sangat besar. Jika kosakata model adalah 50K dan dimensi tersembunyi adalah 4096, bentuk tabel ini adalah [50000, 4096]. Setiap token mengambil satu baris vektor, yang merupakan representasi berdimensi 4096.
Vektor-vetor ini bukan acak—saat pelatihan, model membuat token yang memiliki kemiripan makna mengarah ke area ruang yang sama. king dan queen berada berdekatan pada satu arah, python (bahasa) dan javascript pada arah lain, python dan snake (ular) pada arah ketiga.
Informasi posisi juga disuntikkan di langkah ini, karena mekanisme attention sendiri tidak mengetahui token mana yang ada di depan dan mana yang di belakang. Mayoritas model arus utama menggunakan RoPE (Rotary Position Embedding, pengodean posisi berputar): memutar vektor berdasarkan posisi token, sehingga urutan bisa tersimpan secara implisit di dalam vektor itu sendiri.
Step 3:Self-Attention adalah inti Transformer
Urutan vektor kemudian masuk ke 32 lapisan (atau lebih) transformer; setiap lapisan melakukan dua hal: menggunakan self-attention untuk mencampur informasi antar token, lalu menggunakan feed-forward untuk mencampur informasi di dalam setiap token.
Cara kerja self-attention: setiap token melalui tiga matriks bobot terlatih, Wq, Wk, Wv, untuk menghasilkan tiga vektor—query (kueri), key (kunci), dan value (nilai). Untuk setiap token, query-nya melakukan dot product dengan key dari semua token lain, menghasilkan bobot “token ini perlu menarik informasi dari posisi mana saja di konteks”, lalu bobot itu digunakan untuk menggabungkan value secara berbobot.
Inilah keajaiban attention: setiap token memutuskan sendiri posisi mana dalam konteks yang perlu dilihat, lalu menarik informasi yang berguna ke dalam vektornya. Setelah 32 lapisan ditumpuk, model bisa melacak referensi lintas ribuan token. Feed-forward setelah attention menanggung sebagian besar “pengetahuan” model; attention bertugas memindahkan informasi, sedangkan feed-forward mengolah informasi.
Prefill dan Decode:GPU yang sama, dua bottleneck yang benar-benar berbeda
Inilah pembeda paling penting dalam artikel ini. Untuk menghasilkan respons 200 kata, sebenarnya ada dua tugas dengan sifat yang sepenuhnya berbeda, yang berjalan pada satu GPU yang sama.
Prefill—ketika Anda mengirim prompt, model harus terlebih dahulu menjalankan semua token masukan sekali untuk bisa menghasilkan token pertama. Langkah ini bisa diproses “secara paralel” untuk semua token masukan: Q, K, V setiap token dihitung bersamaan; attention adalah perkalian matriks besar dengan matriks. GPU memang dirancang untuk operasi seperti ini; unit komputasinya (Tensor Cores) penuh, sehingga bottleneck berada pada “daya hitung”. Indikator latensi pada tahap ini disebut TTFT (Time to First Token, latensi ke token pertama).
Decode—setelah token pertama keluar, model mengubah mode. Saat menghasilkan token ke-51, ia hanya perlu menghitung Q, K, V untuk token baru ini; K dan V dari 50 token sebelumnya sudah dihitung, jadi tidak perlu menghitung ulang. Masalahnya: meski perhitungan per token kecil, GPU tetap harus memuat bobot model serta seluruh riwayat KV dari memori video, menjalankan komputasi kecil, lalu mengembalikannya. Bottleneck berpindah dari “compute” ke “memory bandwidth”. Indikator latensi pada tahap ini disebut ITL (Inter-Token Latency, latensi antar token), yang menentukan apakah sensasi “mengetik” model terasa cepat atau tidak.
Jadi prefill adalah compute-bound, decode adalah memory-bound—model dan perangkat kerasnya sama, namun karakter performanya benar-benar berbeda.
KV Cache:optimasi kunci agar inferensi LLM bisa berjalan
Decode tidak mengulang perhitungan K, V token-token masa lalu; yang digunakan adalah KV cache. Setiap lapisan transformer memelihara dua tensor—berisi seluruh K dan V dari token historis. Setelah K dan V token baru dihitung, keduanya di-append. Saat attention dilakukan, model langsung membaca seluruh riwayat itu.
Tanpa KV cache, menghasilkan respons 1.000 token berarti setiap langkah harus menghitung ulang seluruh rangkaian yang terus bertambah; kompleksitasnya meledak secara kuadratik. Dengan KV cache, generasi panjang bisa dipercepat lebih dari 5 kali. Namun biayanya: cache disimpan di memori video GPU; setiap token yang dihasilkan menambah satu bagian cache. Untuk model skala 13B, setiap token memakan sekitar 1MB; konteks 4K menghabiskan sekitar 4GB memori video hanya untuk menyimpan cache ini.
Inilah alasan sebenarnya mengapa “context panjang itu lambat dan mahal”—bukan karena model “tidak sanggup”, melainkan karena cache menghabiskan memori video, sehingga jumlah pengguna yang bisa dilayani secara bersamaan pada satu GPU turun drastis. Metode optimasi umum meliputi: menguantisasi cache menjadi INT8 atau INT4, menggunakan sliding window untuk membuang token yang terlalu lama, memakai grouped-query attention (GQA) agar beberapa attention head berbagi K dan V, atau seperti PagedAttention pada vLLM yang membagi manajemen cache menjadi halaman (mirip manajemen memori oleh sistem operasi).
Revolusi cache DeepSeek V4:dari konteks 1M dipotong jadi 10% semula
Kuantisasi dan paginasi memperlakukan KV cache sebagai “biaya tetap” untuk dioptimalkan. DeepSeek seri V4 yang dipratinjau pada akhir 2025 mengambil jalur yang lebih agresif: mendesain ulang attention sejak awal, sehingga cache sejak awal sudah dibuat kecil.
V4 memakai mekanisme campuran, menggabungkan dua varian kompresi attention—yang jarang dan yang padat—keduanya bekerja pada KV stream yang sudah sangat dikompresi. Pada konteks 1 juta token, V4-Pro melaporkan ukuran KV cache hanya sekitar 10% dari generasi sebelumnya, dan komputasi per token hanya sekitar 27%. Artinya bukan cuma “DeepSeek makin murah”, melainkan bahwa KV cache sudah menjadi bottleneck yang dioptimalkan di seluruh ekosistem LLM—ketika mekanisme attention sendiri didesain ulang untuk mengecilkan cache, berarti “syarat pembatas” bagi komunitas teknis telah bergeser total.
Untuk pembaca Taiwan, informasi yang lebih praktis adalah: DeepSeek V4-Flash sudah tersedia di Ollama Cloud dan server AS (lihat laporan abmedia 4/24), serta Claude Code, OpenClaw sudah bisa dihubungkan dengan sekali klik, sehingga keunggulan attention generasi baru pada skenario context panjang bisa diverifikasi tanpa perlu membangun sendiri.
Quantization:tukar presisi untuk kecepatan dan memori
Pelatihan membutuhkan presisi tinggi, sedangkan inferensi tidak. Kebanyakan deployment resmi mengganti FP32 menjadi FP16 atau BF16, sehingga langsung menggandakan memori video dan throughput. Langkah yang lebih radikal meng-kuantisasi bobot menjadi INT8, bahkan INT4.
Angka yang mudah dibayangkan: model 7B parameter dengan FP32 butuh 28GB, FP16 14GB, INT8 7GB, dan INT4 hanya 3,5GB. Itulah mengapa kartu grafis laptop biasa pun bisa menjalankan model 7B. Metode seperti GPTQ dan AWQ memilih faktor skala tiap kanal, agar kehilangan kualitas akibat kompresi ber-bias bisa diminimalkan—INT4 yang dirancang baik, pada sebagian besar tolok ukur hanya kalah sekitar 1 poin persentase dibanding versi aslinya.
Gabungkan semua langkah:perjalanan lengkap sebuah prompt
Jika semua bagian di atas dirangkai, jalur lengkap inferensi sekali jalan adalah: (1) Tokenize—ubah teks menjadi ID bilangan bulat. (2) Embed—ID menjadi vektor, injeksikan informasi posisi. (3) Prefill—semua lapisan menjalankan komputasi paralel untuk semua token masukan, termasuk compute-bound, KV cache dibuat, dan token keluaran pertama dihasilkan. (4) Decode loop—setiap kali hanya memproyeksikan token baru: lakukan attention terhadap K dan V di cache, jalankan feed-forward, lakukan sampling untuk output, tulis K dan V baru kembali ke cache, termasuk memory-bound. (5) Detokenize—ubah ID token kembali menjadi karakter, lalu keluarkan secara streaming ke layar.
Framework layanan seperti vLLM, TensorRT-LLM, Text Generation Inference menambahkan hal-hal di luar siklus ini: batch kontinu (token dari pengguna berbeda bisa diinterleaving pada satu langkah GPU), speculative decoding (model kecil mengibaskan draf dulu, model besar memverifikasi), dan manajemen memori yang sangat halus—itulah cara melayani puluhan pengguna dari satu GPU.
Takeaway praktis untuk pengembang:Anda harus peduli TTFT atau ITL?
Ketika gambaran penuh alur inferensi sudah jelas, beberapa keputusan praktis akan muncul secara alami:
Prompt panjang memperbesar TTFT, dan output panjang memperbesar ITL—sumber tekanan berbeda, jadi jangan taruh sumber daya optimasi pada metrik yang keliru. Context tidak gratis; menggandakan konteks tidak hanya menggandakan komputasi, tetapi juga menekan ukuran cache KV yang bisa ditampung per batch. Kuantisasi adalah tombol tuas tertinggi saat ini; mengganti FP16 ke INT8 sering bisa memangkas sekitar setengah latensi dengan kerugian kualitas yang sangat kecil. Utilisasi GPU (utilization) juga sering menyesatkan—pada tahap prefill GPU bisa dipenuhi penuh, sedangkan pada tahap decode bisa hanya memakai sekitar 30%; solusinya bukan menambah daya hitung, melainkan mempercepat memori atau memperkecil cache.
Arsitektur Transformer mendapat perhatian terbanyak, tetapi efisiensi inferensi sebenarnya hidup di “detail membosankan”: konfigurasi memori, manajemen cache, dan lebar bit. Ketika ada yang mengatakan “model ini lambat”, pertanyaan berikutnya yang harus diajukan bukan “ganti GPU”, melainkan “lambatnya karena tahap ‘mulai’ atau tahap ‘streaming’?”—jawaban menentukan keseluruhan jalur optimasi.
Artikel tutorial inferensi LLM lengkap ini:KV cache dan revolusi cache DeepSeek V4 mula-mula muncul di Rantai Berita ABMedia.