Arsitektur Inferensi LLM: PagedAttention, KV-Cache & Speculative Decoding

aiDiperbarui: 16 Oktober 2026Sumber Primer

Panduan rekayasa sistem mendalam mengenai fondasi inferensi Large Language Model skala produksi: membedah batas Roofline antara fase prefill dan decode, matematika alokasi memori KV-Cache, kompresi Grouped-Query Attention (GQA), tabel halaman memori virtual PagedAttention di vLLM, tiling SRAM pada FlashAttention, penjadwalan Continuous Batching, hingga akselerasi Speculative Decoding.

tv
Redaksi tveniu
Divisi Analisis & Riset
Arsitektur Inferensi LLM: PagedAttention, KV-Cache & Speculative Decoding

Menjalankan model bahasa besar (Large Language Model/LLM) di lingkungan produksi berskala tinggi menghadirkan tantangan rekayasa sistem yang sangat berbeda dibandingkan pelatihan model (training). Jika fase pelatihan didominasi oleh perkalian matriks paralel berskala masif atas urutan token yang sudah diketahui seluruhnya di awal, maka penyajian inferensi (inference serving) bersifat berurutan (autoregressive), dinamis, dan sangat dibatasi oleh kapasitas serta bandwidth memori berkecepatan tinggi (High-Bandwidth Memory/HBM).

Tanpa optimasi tingkat sistem yang tepat, klaster akselerator modern dengan kapasitas komputasi ratusan TeraFLOPS sering kali hanya beroperasi pada tingkat utilisasi komputasi di bawah 15%, sementara hingga 70% memori HBM terbuang sia-sia akibat fragmentasi alokasi konteks. Panduan arsitektur evergreen ini membedah secara komprehensif mekanika internal mesin inferensi modern, mulai dari model kinerja Roofline, persamaan matematis Key-Value Cache (KV-Cache), manajemen memori virtual PagedAttention, algoritma IO-aware FlashAttention, penjadwalan Continuous Batching, hingga matematika Speculative Decoding.

1. Anatomi Dua Fase Eksekusi: Prefill yang Compute-Bound vs. Decode yang Memory-Bound

Setiap permintaan inferensi pada arsitektur Transformer dekoder-saja (decoder-only) terbagi menjadi dua fase komputasi yang memiliki karakteristik perangkat keras bertolak belakang:

Poin Kunci & Temuan
  1. Fase Prefill (Inisialisasi Konteks): Mesin memproses seluruh token prompt masukan pengguna secara paralel dalam satu lintasan maju (forward pass). Karena ratusan atau ribuan token dikalikan secara serentak terhadap matriks bobot model (operasi Matrix-Matrix Multiplication atau GEMM), fase ini memiliki intensitas aritmatika yang sangat tinggi dan dibatasi oleh kecepatan komputasi inti tensor (compute-bound). Metrik utama fase ini adalah Time-To-First-Token (TTFT).
  2. Fase Decode (Generasi Autoregressive): Setelah token pertama dihasilkan, model menghasilkan token berikutnya satu demi satu secara sekuensial. Setiap langkah hanya memproses satu token baru per permintaan terhadap seluruh matriks bobot dan riwayat konteks sebelumnya (operasi Matrix-Vector Multiplication atau GEMV). Akibatnya, unit komputasi menganggur menunggu bobot model dan tensor konteks ditransfer dari memori HBM ke SRAM on-chip (memory-bandwidth-bound). Metrik utama fase ini adalah Inter-Token Latency (ITL) atau Time-Per-Output-Token (TPOT).

Dalam kerangka model kinerja Roofline, batas transisi antara beban kerja memory-bound dan compute-bound ditentukan oleh titik balik perangkat keras (Operational Intensity Ridge Point), yaitu rasio antara puncak throughput komputasi (FLOPS) dengan bandwidth memori (Bytes/detik):

Persamaan Roofline & Intensitas Aritmatika
Intensitas Aritmatika (I) = Total Operasi Floating-Point (FLOPs) / Total Byte Data yang Ditransfer dari HBM

Titik Balik Perangkat Keras (I_ridge) = Peak Compute (FLOPS) / Memory Bandwidth (Bytes/s)

Contoh Akselerator Kelas H100 SXM5 (FP16):
- Peak FP16 Tensor Compute : 989 TFLOPS
- HBM3 Memory Bandwidth    : 3,35 TB/s
- I_ridge                  : 989 / 3,35 ≈ 295 FLOPs per Byte

Analisis Fase Decode (Batch Size = 1, Presisi FP16 = 2 Byte/parameter):
- Setiap parameter membutuhkan 2 operasi (1 multiply, 1 accumulate) dan membaca 2 Byte dari HBM.
- Intensitas Aritmatika Decode (B=1) ≈ 2 FLOPs / 2 Bytes = 1 FLOP/Byte (Jauh di bawah 295 FLOPs/Byte!).

Persamaan di atas menjelaskan mengapa pada ukuran batch kecil, kecepatan generasi token (token/detik) hampir tidak dipengaruhi oleh seberapa cepat inti komputasi GPU, melainkan berbanding lurus secara murni dengan bandwidth memori HBM dibagi ukuran byte bobot yang aktif ditambah ukuran KV-Cache yang harus dibaca pada setiap langkah token.

2. Kalkulus Memori KV-Cache: Mengapa Konteks Panjang Menghabiskan HBM

Agar model Transformer tidak perlu menghitung ulang vektor perhatian (attention keys dan values) untuk seluruh token terdahulu pada setiap langkah autoregressive, mesin inferensi menyimpan tensor proyeksi Key (K) dan Value (V) dari setiap layer dan setiap token di dalam memori HBM. Struktur penyimpanan ini disebut Key-Value Cache (KV-Cache). Tanpa KV-Cache, kompleksitas komputasi generasi sepanjang N token akan membengkak secara kuadratik O(N^2) per langkah, atau kubik O(N^3) secara kumulatif.

Namun, KV-Cache mengubah masalah komputasi menjadi masalah kapasitas memori yang ekstrem. Ukuran byte KV-Cache tumbuh secara linier terhadap jumlah lapisan (layers), jumlah kepala perhatian KV (KV heads), dimensi per kepala, panjang urutan konteks (sequence length), dan ukuran batch serentak:

Formula Eksak Kapasitas Memori KV-Cache
KV_Bytes_Per_Token = 2 (untuk K dan V) * n_layers * n_kv_heads * d_head * bytes_per_element
Total_KV_Cache (GB) = (KV_Bytes_Per_Token * seq_len * batch_size) / 10^9

Studi Kasus Model 70 Miliar Parameter (n_layers = 80, d_model = 8192, d_head = 128):

1. Arsitektur Multi-Head Attention Klasik (MHA, n_kv_heads = 64, FP16 = 2 Byte):
   - KV per Token = 2 * 80 * 64 * 128 * 2 = 2.621.440 Byte (~2,62 MB per token!)
   - Konteks 64.000 token, Batch = 16 -> 2,62 MB * 64.000 * 16 = 2.684 GB (2,68 Terabyte HBM!)

2. Arsitektur Grouped-Query Attention (GQA-8, n_kv_heads = 8, FP16 = 2 Byte):
   - KV per Token = 2 * 80 * 8 * 128 * 2 = 327.680 Byte (~327,7 KB per token, kompresi 8x)
   - Konteks 64.000 token, Batch = 16 -> 327,7 KB * 64.000 * 16 = 335,5 GB HBM

3. Arsitektur GQA-8 dengan Kuantisasi KV-Cache FP8 / INT8 (n_kv_heads = 8, 1 Byte):
   - KV per Token = 2 * 80 * 8 * 128 * 1 = 163.840 Byte (~163,8 KB per token, kompresi 16x)
   - Konteks 64.000 token, Batch = 16 -> 163,8 KB * 64.000 * 16 = 167,8 GB HBM

Perhitungan di atas menunjukkan fakta fundamental dalam rekayasa sistem AI: pada jendela konteks panjang (32k hingga 128k+ token) dan konkurensi produksi, memori yang dibutuhkan oleh KV-Cache dengan cepat melampaui ukuran bobot statis model itu sendiri.

3. Evolusi Arsitektur Perhatian: MHA, MQA, GQA, hingga Multi-Head Latent Attention (MLA)

Untuk menekan pembengkakan ukuran KV-Cache tanpa mengorbankan akurasi penalaran model, desain lapisan perhatian (attention layer) telah berevolusi melalui empat generasi utama:

Poin Kunci & Temuan
  • Multi-Head Attention (MHA): Setiap kepala Query (Q) memiliki pasangan kepala Key (K) dan Value (V) eksklusif dengan rasio 1:1. Memberikan kapasitas representasi maksimal namun menghasilkan jejak memori KV-Cache terbesar.
  • Multi-Query Attention (MQA): Seluruh kepala Query (misalnya 64 kepala) berbagi hanya satu kepala Key dan satu kepala Value tunggal (rasio 64:1). Memangkas KV-Cache hingga 64 kali lipat, namun sering menyebabkan penurunan kualitas penalaran pada tugas kompleks.
  • Grouped-Query Attention (GQA, Ainslie et al.): Titik keseimbangan industri modern di mana kepala Query dibagi menjadi G kelompok (umumnya 8 kelompok), dan setiap kelompok berbagi satu pasang kepala K dan V. GQA memangkas ukuran dan beban baca bandwidth KV-Cache sebesar 8 kali lipat dengan akurasi yang nyaris identik dengan MHA penuh.
  • Multi-Head Latent Attention (MLA): Memproyeksikan matriks Key dan Value ke dalam vektor laten berdimensi rendah (low-rank joint compression) sebelum disimpan ke dalam cache, lalu merekonstruksinya secara on-the-fly di dalam SRAM saat perhitungan perhatian, menghasilkan penghematan memori lebih lanjut di atas GQA.

4. PagedAttention: Mengadopsi Memori Virtual Sistem Operasi untuk Mengeliminasi Fragmentasi

Pada sistem penyajian generasi awal (seperti implementasi naif di PyTorch atau FasterTransformer), tensor KV-Cache untuk setiap permintaan wajib dialokasikan sebagai satu blok memori fisik yang berurutan (contiguous memory chunk) di dalam HBM. Karena panjang keluaran yang akan dihasilkan oleh LLM tidak pernah diketahui di awal, sistem terpaksa memesan blok memori berurutan sebesar panjang konteks maksimum (misalnya 32.768 atau 131.072 token) begitu permintaan masuk.

Penelitian Woosuk Kwon dkk. dari UC Berkeley (dipublikasikan di SOSP 2023 melalui mesin vLLM) membuktikan bahwa alokasi berurutan ini menyebabkan 60% hingga 80% memori HBM terbuang sia-sia akibat tiga jenis pemborosan:

Poin Kunci & Temuan
  1. Fragmentasi Internal (Internal Fragmentation): Ruang memori yang sudah dipesan untuk panjang maksimum (misalnya 32k token) akhirnya tidak pernah terpakai karena model berhenti menghasilkan jawaban setelah 400 token.
  2. Pemborosan Reservasi (Reservation Waste): Ruang memori yang sudah dikunci untuk token masa depan pada sebuah permintaan aktif tidak dapat dipinjamkan ke permintaan lain, meskipun ruang tersebut belum berisi data apa pun.
  3. Fragmentasi Eksternal (External Fragmentation): Ketika berbagai permintaan dengan ukuran berbeda selesai dan membebaskan memori, ruang HBM terpecah menjadi celah-celah kecil tidak beraturan yang tidak cukup besar untuk menampung alokasi berurutan permintaan baru.

PagedAttention menyelesaikan ketiganya dengan mengadopsi konsep paging memori virtual dan tabel halaman (page tables) dari kernel sistem operasi Unix/Linux. Alih-alih mengalokasikan satu tensor raksasa yang berurutan, PagedAttention membagi KV-Cache menjadi blok-blok kecil berukuran tetap (KV Blocks, umumnya menampung B = 16 atau 32 token per blok) yang dapat ditempatkan di mana saja secara tidak berurutan (non-contiguous) di dalam memori fisik HBM.

Mekanisme Translasi Alamat Blok PagedAttention
Parameter Konfigurasi Blok: Ukuran Blok (B) = 16 token per blok fisik

Urutan Token Logis Permintaan A (42 Token):
- Blok Logis 0 (Token 0..15)  --> Tabel Halaman memetakan ke --> Blok Fisik HBM #104 (Penuh: 16/16)
- Blok Logis 1 (Token 16..31) --> Tabel Halaman memetakan ke --> Blok Fisik HBM #019 (Penuh: 16/16)
- Blok Logis 2 (Token 32..41) --> Tabel Halaman memetakan ke --> Blok Fisik HBM #287 (Terisi: 10/16)

Keuntungan Sistem:
1. Pemborosan memori hanya terjadi pada blok terakhir yang belum penuh (maksimal B - 1 = 15 token per permintaan, atau < 4% dari total memori).
2. Copy-on-Write (CoW) untuk System Prompt & Parallel Sampling: Jika 50 pengguna menggunakan system prompt 4.000 token yang sama, tabel halaman ke-50 permintaan tersebut cukup menunjuk ke blok fisik HBM yang sama dengan penghitung referensi (reference count), menghemat 98% memori!

5. FlashAttention & Algoritma IO-Aware: Tiling SRAM dan Online Softmax

Sekalipun memori KV-Cache telah dikelola secara efisien oleh PagedAttention, perhitungan rumus inti Self-Attention, yakni Softmax((Q * K^T) / sqrt(d_k)) * V, menyimpan jebakan bandwidth memori yang serius jika dieksekusi secara standar. Pada implementasi perhatian standar, perkalian matriks Q dan K^T menghasilkan matriks skor perhatian berukuran N x N yang harus ditulis kembali ke memori HBM, dibaca lagi untuk fungsi Softmax, ditulis lagi ke HBM, lalu dibaca kembali untuk dikalikan dengan matriks V.

Tri Dao memperkenalkan FlashAttention (dan iterasinya FlashAttention-2 serta FlashAttention-3) sebagai algoritma perhatian eksak yang sadar-IO (IO-aware exact attention). Kuncinya adalah memanfaatkan hierarki memori internal GPU: meskipun kapasitas SRAM on-chip pada setiap Streaming Multiprocessor (SM) sangat kecil (~192 KB hingga 256 KB per SM) dibandingkan HBM (80 GB hingga 192 GB), kecepatan baca-tulis SRAM mencapai ~19 TB/s, atau hampir 6 hingga 10 kali lebih cepat daripada HBM.

Poin Kunci & Temuan
  • Kernel Fusion & Block Tiling: FlashAttention memecah matriks Q, K, dan V menjadi ubin-ubin kecil (tiles) yang muat sepenuhnya di dalam SRAM on-chip, lalu menggabungkan seluruh tahapan perkalian matriks, pembagian skala, masking, softmax, dan perkalian output V ke dalam satu kernel GPU tunggal tanpa pernah menulis matriks perantara N x N ke HBM.
  • Online Softmax Rescaling: Karena fungsi eksponensial pada Softmax memerlukan nilai maksimum dan jumlah pembagi dari seluruh baris sekaligus, FlashAttention melacak nilai maksimum berjalan (running maximum m_x) dan faktor normalisasi berjalan (running sum l_x) saat memproses setiap ubin blok di SRAM, lalu menyesuaikan ulang (rescale) akumulator output secara matematis hingga menghasilkan nilai yang 100% identik (bukan aproksimasi) dengan perhatian standar.
  • Eksekusi Asinkron pada FlashAttention-3: Memanfaatkan fitur perangkat keras Tensor Memory Accelerator (TMA) dan instruksi WGMMA asinkron untuk menumpangtindihkan (overlap) operasi perkalian matriks FP8/BF16 dengan perhitungan fungsi eksponensial Softmax secara simultan.

6. Continuous Batching (Penjadwalan Tingkat Iterasi) & Chunked Prefill

Pada sistem batching statis tradisional (Static Batching), apabila satu batch berisi 8 permintaan pengguna di mana 7 pengguna hanya meminta jawaban sepanjang 50 token sementara 1 pengguna meminta esai sepanjang 2.000 token, maka ke-7 slot permintaan yang sudah selesai sejak awal terpaksa menganggur dan menunggu hingga permintaan ke-8 selesai sepenuhnya. Fenomena ini menurunkan throughput klaster secara drastis.

Mesin inferensi modern menerapkan Continuous Batching (atau Iteration-Level Scheduling, awalnya dipelopori oleh sistem Orca). Alih-alih menjadwalkan antrean pada tingkat permintaan utuh, penjadwal beroperasi pada setiap satu iterasi langkah token:

Poin Kunci & Temuan
  • Penyisipan dan Pelepasan Dinamis: Begitu sebuah permintaan menghasilkan token akhir (EOS), blok KV-Cache miliknya segera dibebaskan pada milidetik itu juga, dan permintaan baru dari antrean langsung disuntikkan ke dalam batch pada langkah iterasi berikutnya tanpa menunggu permintaan lain selesai.
  • Masalah Stall Prefill (Head-of-Line Blocking): Jika sebuah permintaan baru dengan prompt raksasa sepanjang 32.000 token tiba-tiba disisipkan ke dalam batch yang sedang menjalankan fase decode, proses prefill 32.000 token tersebut akan memonopoli GPU selama ratusan milidetik dan menyebabkan jeda patah-patah (inter-token latency spike) bagi seluruh pengguna lain yang sedang membaca aliran teks.
  • Solusi Chunked Prefill: Mesin memotong prompt panjang menjadi potongan-potongan kecil berukuran tetap (misalnya 512 atau 1.024 token per iterasi) dan menggabungkannya (piggybacking) bersama token-token fase decode dalam satu batch terpadu. Dengan demikian, fase decode yang haus bandwidth memori dan fase prefill yang haus komputasi dapat berjalan beriringan, menjaga latensi antar-token tetap mulus sekaligus memaksimalkan utilisasi Tensor Core.

7. Matematika Speculative Decoding: Menembus Batas Sekuensial Autoregressive

Bagaimana cara mempercepat generasi token pada fase decode jika satu langkah hanya membaca seluruh bobot model untuk menghasilkan satu token? Jawabannya terletak pada fakta bahwa sebagian besar token dalam bahasa alami maupun kode sumber (seperti kata penghubung, tanda kurung tutup, atau indentasi standar) sangat mudah ditebak dan tidak memerlukan penalaran model 70B atau 600B penuh.

Diperkenalkan oleh Yaniv Leviathan dkk. (Google Research), Speculative Decoding memisahkan proses penebakan draf (drafting) dari proses verifikasi paralel (target verification):

Poin Kunci & Temuan
  1. Tahap Draf Cepat: Sebuah model draf berukuran sangat kecil (atau kepala prediksi multi-token/EAGLE/Medusa) menebak sebanyak gamma (misalnya 4 atau 5) kandidat token secara berurutan dengan biaya memori yang sangat ringan.
  2. Tahap Verifikasi Paralel: Model target utama yang berukuran besar kemudian dipanggil hanya satu kali untuk mengevaluasi seluruh gamma token draf tersebut secara paralel dalam satu lintasan maju (memanfaatkan kapasitas komputasi GPU yang sebelumnya menganggur pada operasi GEMV!).
  3. Rejection Sampling Tanpa Kehilangan Akurasi: Menggunakan kriteria penerimaan probabilistik p_target(x) / p_draft(x), seluruh prefix token yang diterima langsung dikeluarkan sekaligus ditambah satu token bonus dari distribusi residu model target. Secara matematis, distribusi probabilitas keluaran dijamin 100% identik (lossless) dengan menjalankan model besar secara normal.
Python / Konfigurasi Produksi vLLM dengan PagedAttention & Speculative Decoding
from vllm import LLM, SamplingParams

# Inisialisasi mesin inferensi produksi dengan PagedAttention, FP8 KV-Cache,
# Chunked Prefill, dan Speculative Decoding tanpa kehilangan akurasi (lossless)
llm = LLM(
    model="meta-llama/Llama-3.3-70B-Instruct",
    speculative_model="meta-llama/Llama-3.2-1B-Instruct",
    num_speculative_tokens=5,
    tensor_parallel_size=4,
    kv_cache_dtype="fp8",
    enable_chunked_prefill=True,
    max_num_batched_tokens=2048,
    enable_prefix_caching=True,  # Copy-on-Write KV block sharing
    gpu_memory_utilization=0.92,
    block_size=16
)

sampling_params = SamplingParams(temperature=0.0, max_tokens=1024)
outputs = llm.generate(
    ["Rancang skema partisi konsensus Raft untuk basis data terdistribusi:"],
    sampling_params
)
print(outputs[0].outputs[0].text)

Jika tingkat penerimaan rata-rata (acceptance rate) per token draf adalah alpha (misalnya 0,80) dengan panjang tebakan gamma = 5, maka jumlah ekspektasi token yang dihasilkan dalam satu kali pembacaan bobot model utama adalah (1 - alpha^(gamma + 1)) / (1 - alpha) = (1 - 0,8^6) / (1 - 0,8) ≈ 3,69 token per langkah maju, menghasilkan akselerasi latensi nyata sebesar 2,2x hingga 3x lipat.

8. Arsitektur Klaster Terpilah: Disaggregated Prefill-Decode Serving

Pada skala pusat data modern, menggabungkan beban prefill dan decode di dalam satu node GPU yang sama tetap menimbulkan tarik-ulur antara Service Level Objective (SLO) untuk Time-To-First-Token (TTFT) dan Inter-Token Latency (ITL). Sebagai contoh, fase prefill paling optimal dijalankan dengan Tensor Parallelism (TP) tingkat tinggi pada perangkat keras berkapasitas FLOPS masif, sedangkan fase decode paling efisien dijalankan dengan ukuran batch besar pada perangkat keras berkapasitas memori HBM besar.

Oleh karena itu, cetak biru arsitektur produksi mutakhir kini mengadopsi Disaggregated Prefill-Decode Serving: klaster dibagi secara fisik menjadi Kolam Node Prefill (Prefill Pool) dan Kolam Node Decode (Decode Pool). Begitu node prefill selesai menghitung blok KV-Cache untuk prompt pengguna dan mengeluarkan token pertama, blok-blok halaman PagedAttention tersebut langsung ditransfer secara asinkron dengan latensi mikrodetik melalui jaringan RDMA (InfiniBand atau RoCEv2 GPUDirect) menuju memori HBM di node decode yang akan melanjutkan aliran generasi token hingga selesai.

“Lompatan terbesar dalam efisiensi inferensi AI modern tidak lahir dari sekadar memperbesar ukuran klaster silikon, melainkan dari memperlakukan memori HBM dan SRAM sebagai sistem operasi terdistribusi melalui PagedAttention, algoritma sadar-IO FlashAttention, dan verifikasi paralel Speculative Decoding.”

Kompendium Rekayasa Sistem & Arsitektur Inferensi tveniu.

Rujukan & Sumber Primer

  1. UC Berkeley SOSP '23 Primary Paper: Efficient Memory Management for LLM Serving with PagedAttention (Kwon et al.)
  2. Google Research EMNLP '23 Primary Paper: GQA: Training Generalized Multi-Query Transformer Models (Ainslie et al.)
  3. Stanford / Princeton Primary Paper: FlashAttention-2: Faster Attention with Better Parallelism (Tri Dao)
  4. Google Research ICML '23 Primary Paper: Fast Inference from Transformers via Speculative Decoding (Leviathan et al.)
  5. vLLM Official Open-Source High-Throughput Inference Engine Repository
  6. vLLM Official Systems Architecture & Serving Documentation

Meta Muse Spark Open: Model 816B di Apple M5 Ultra

ai

Meta meluncurkan bobot model Muse Spark Open berkapasitas 816 miliar parameter dengan jendela konteks 1 juta token, menghadirkan eksekusi agen otonom dan multimodal langsung di desktop Mac Studio menggunakan framework Apple MLX.

Baca analisis→

Anthropic & METR: Audit Keselamatan AI Setara Karyawan

ai

Anthropic resmi memberikan employee-level access kepada enam peneliti independen dari METR, melengkapi mereka dengan laptop perusahaan, ruang kerja fisik, dan akses ke internal tools tanpa hak veto publikasi temuan risiko.

Baca analisis→

FLUX 3 Image Klein: Model Visual Open-Weight 5,6B 4K

ai

Black Forest Labs merilis FLUX 3 Image Klein, model visual open-weight berkapasitas 5,6 miliar parameter yang mendukung generasi gambar 4K native, kendali tata letak bounding-box, hingga 10 gambar referensi, serta mampu berjalan di GPU konsumen 8 GB VRAM.

Baca analisis→