CUDA Graphs, model penalaran, dan serving terpisah (disaggregated)

AI modern mendorong performa hingga batas fisik silikon dan klaster melalui penghapusan overhead CPU, loop penalaran saat inferensi, dan perutean klaster GPU yang terspesialisasi per fase. Ketiga teknik ini menggerakkan sistem AI produksi tercepat dan tercerdas saat ini.
1. CUDA Graphs dan Kernel Fusion: Menghilangkan Overhead CPU & Memori
Seiring GPU modern (seperti H100 dan B200) menjadi jauh lebih cepat secara eksponensial, mengeksekusi satu kernel GPU yang ringan bisa memakan waktu hanya 2 hingga 5 mikrodetik. Namun, CPU sering membutuhkan 10 hingga 20 mikrodetik hanya untuk menyiapkan, memvalidasi, dan meluncurkan kernel itu melalui driver PCIe, sehingga GPU senilai jutaan dolar menganggur sepenuhnya menunggu instruksi CPU.
- Kernel Fusion (Menggabungkan Operasi untuk Menghemat Memori & Peluncuran).
- Hambatan Tanpa Fusion. Satu layer Transformer standar mengeksekusi puluhan operasi kecil secara berurutan (misalnya LayerNorm → Linear → Add Residual → GeLU). Tanpa fusion, GPU meluncurkan kernel terpisah untuk setiap langkah, menulis tensor perantara ke HBM (VRAM) yang lambat lalu langsung membacanya kembali untuk langkah berikutnya.
- Eksekusi Fused. Compiler seperti torch.compile (TorchInductor) dan TensorRT-LLM menggabungkan beberapa operasi element-wise dan reduksi menjadi satu kernel CUDA/Triton kustom. Nilai dimuat dari HBM sekali, ditransformasi di dalam register/SRAM on-chip yang sangat cepat, dan ditulis kembali ke HBM hanya pada akhirnya, sehingga lalu lintas bandwidth memori dan jumlah peluncuran kernel berkurang drastis.
- CUDA Graphs (Memutar Ulang Seluruh Pipeline Eksekusi Sekaligus).
- Record and Replay. Bahkan setelah kernel fusion, satu forward pass LLM masih membutuhkan ratusan peluncuran kernel per token yang dihasilkan. CUDA Graphs mengatasi ini dengan menangkap seluruh urutan operasi GPU, yaitu kernel, salinan memori, dan dependensi, selama proses warmup dan mengompilasinya menjadi graf eksekusi statis yang disimpan langsung di memori GPU.
- Tanpa Intervensi CPU. Saat inferensi real-time, alih-alih CPU meluncurkan 300 kernel terpisah satu per satu, CPU mengeluarkan satu panggilan API (cudaGraphLaunch) yang memicu seluruh forward pass di GPU secara otonom.
- Menangani Bentuk Dinamis. Karena CUDA Graphs memerlukan alamat memori dan bentuk tensor yang statis, mesin inferensi melakukan padding pada batch masuk ke ukuran bucket tetap (misalnya ukuran batch 1, 2, 4, 8, 16) dan memperbarui pointer input di tempat sebelum memutar ulang graf yang telah ditangkap sebelumnya.
2. Test-Time Compute & Model Penalaran (o1/o3 & DeepSeek-R1)
Secara historis, lab AI menskalakan kecerdasan semata dengan menambah komputasi pada pra-pelatihan (model lebih besar dilatih pada lebih banyak teks internet). Model penalaran seperti o1/o3 dari OpenAI dan DeepSeek-R1 membuka sumbu penskalaan kedua: Test-Time Compute (Inference-Time Scaling), yang memungkinkan model "berpikir" lebih lama sebelum menjawab.
- Reinforcement Learning untuk Chain-of-Thought (CoT).
- Alih-alih hanya mengandalkan contoh penalaran langkah demi langkah yang ditulis manusia, model-model ini dilatih melalui Large-Scale Reinforcement Learning (RL) (seperti GRPO – Group Relative Policy Optimization pada DeepSeek-R1) pada domain yang dapat diverifikasi seperti matematika, pemrograman, dan logika formal.
- Model menghasilkan beberapa jalur penalaran kandidat, menerima imbalan objektif hanya ketika jawaban akhirnya lolos uji unit atau verifikasi matematis, dan secara otonom menemukan perilaku kognitif emergen, termasuk verifikasi diri, mundur ketika menemui jalan buntu, dan memecah masalah kompleks menjadi sub-tujuan.
- Bagaimana Komputasi Inferensi Berskala.
- Ketika diberi prompt yang sulit, model menghasilkan ribuan "token berpikir" internal di dalam scratchpad tersembunyi sebelum mengeluarkan jawaban akhir. Akurasi meningkat secara logaritmik seiring model menghabiskan lebih banyak token inferensi untuk menjelajahi hipotesis.
- Pergeseran Trade-Off Komputasi. Pada LLM tradisional, inferensi murah dan cepat (menghasilkan ~50 token keluaran). Pada model penalaran, satu kueri dapat menghasilkan 10.000 hingga 50.000 token berpikir, mengubah inferensi menjadi beban kerja batch-generation yang masif dan berkelanjutan, didominasi oleh pertumbuhan KV-cache dan efisiensi atensi konteks panjang.
3. Prefill dan Decode Terpisah (Disaggregated)
Melayani sebuah LLM terdiri dari dua fase komputasi yang pada dasarnya berlawanan. Menjalankan kedua fase pada GPU yang sama persis menimbulkan konflik penjadwalan yang parah dan pemanfaatan perangkat keras yang kurang.
| Fase | Sifat Beban Kerja | Hambatan Perangkat Keras | Metrik Latensi |
|---|---|---|---|
| Prefill (Pemrosesan Prompt) | Memproses semua token prompt (misalnya 10.000 token) secara paralel dalam satu forward pass. | Compute-Bound (menjenuhkan Tensor Core GPU dengan perkalian matriks masif). | TTFT (Time-To-First-Token) |
| Decode (Pembangkitan Token) | Menghasilkan token keluaran satu per satu secara berurutan, membaca seluruh KV cache pada setiap langkah. | Memory-Bandwidth-Bound (Tensor Core sebagian besar menganggur menunggu pembacaan VRAM). | TPOT (Time-Per-Output-Token) |
- Masalah Interferensi Co-Location.
- Pada serving terpadu tradisional, jika satu pengguna mengirim dokumen besar 32.000 token untuk Prefill sementara 50 pengguna lain sedang dalam proses streaming token Decode, matematika matriks prefill yang masif menguasai Tensor Core GPU, menyebabkan pembekuan dan lonjakan latensi ("stuttering") yang terasa bagi ke-50 pengguna streaming tersebut.
- Selain itu, Prefill membutuhkan FLOPs komputasi tinggi, sedangkan Decode membutuhkan bandwidth dan kapasitas memori HBM yang besar untuk menampung KV cache batch besar.
- Memisahkan Klaster (Arsitektur Disaggregated).
- Sistem inferensi hyperscale modern (seperti Mooncake, DistServe, dan NVIDIA Dynamo) membagi klaster GPU menjadi dua pool khusus:
- 1. Prefill Pool: Dioptimalkan untuk throughput komputasi mentah (pemanfaatan Tensor Core tinggi, tensor parallelism lebih kecil) untuk memproses prompt panjang dengan cepat dan mencapai target Time-To-First-Token (TTFT) yang agresif.
- 2. Decode Pool: Dioptimalkan untuk bandwidth memori tinggi dan kapasitas KV-cache besar (tensor/expert parallelism lebih lebar, ukuran batch besar) untuk men-stream token dengan mulus pada tokens-per-second puncak.
- High-Speed KV Cache Transfer. Setelah GPU Prefill selesai memproses prompt dan membangun KV Cache awalnya, ia men-stream KV Cache itu langsung melalui interkoneksi NVLink atau InfiniBand RDMA berkecepatan sangat tinggi ke VRAM sebuah GPU Decode, yang langsung mengambil alih pembangkitan token tanpa interferensi apa pun.