KALKULASI TOKEN GENERATION
Pengantar Penulis
Semuanya bermula dari sebuah pertanyaan di Slack tim pada sore hari yang gerah di pertengahan 2024. Seorang rekan dari tim produk — mari kita panggil dia Rina — menulis, "Kalau kita mau host LLM sendiri buat chatbot internal 500 pegawai, kira-kira butuh GPU apa dan berapa biayanya per bulan?" Saya diam sejenak, jari melayang di atas keyboard, lalu mulai mengetik jawaban — dan menyadari bahwa saya tidak punya satupun angka yang pasti. Saya hanya punya feeling. Dan feeling tidak cukup untuk sebuah keputusan investasi puluhan hingga ratusan juta rupiah.
Pada saat itu, saya sudah hampir dua tahun berkutat dengan Large Language
Models. Saya pernah menjalankan llama.cpp di laptop ThinkPad,
mencoba vLLM di server kantor yang cuma punya GTX 1660 Super,
dan bermain-main dengan quantization Q4_K_M dan Q5_K_M. Saya bahkan sudah
membaca paper "Efficient Large-Scale Language Model Training on GPU Clusters"
dan beberapa publikasi tentang FlashAttention. Tapi setiap kali seseorang
bertanya soal biaya — berapa throughput, berapa lama response time, berapa
harga GPU yang pas — saya hanya bisa menjawab setengah yakin. "Kira-kira
segini," kata saya. "Kayaknya sih cukup." Atau lebih parah lagi: "Nanti
saya cek dulu." Jawaban seperti itu terasa sangat tidak ilmiah untuk
seseorang yang berlatar belakang teknik fisika dan bekerja sebagai AI
Engineer.
Frustrasi itu menumpuk. Di Q3 2024, saya mulai membaca secara sistematis. Puluhan artikel Medium, dokumentasi NVIDIA, whitepaper model, benchmarking report dari komunitas r/LocalLLaMA, dan spec sheet GPU dari berbagai vendor. Saya menghabiskan akhir pekan — dan sebagian gaji — untuk menyewa GPU di RunPod dan Vast.ai hanya untuk menguji sendiri berapa token per detik yang bisa didapat dari kombinasi GPU dan model yang berbeda.
Masalahnya, hampir semua artikel hanya berbicara dalam generalitas. "GPU A lebih cepat dari GPU B untuk inference." "Gunakan FP16 untuk presisi lebih tinggi tetapi lebih boros VRAM." "Llama 3 8B jauh lebih efisien dari model sebelumnya." Semua pernyataan itu benar — tapi tidak ada satu pun yang memberikan kerangka kalkulasi yang bisa saya pakai untuk menjawab pertanyaan Rina. Tidak ada yang menurunkan rumus dari jumlah parameter ke VRAM yang dibutuhkan, dari VRAM ke throughput maksimum teoritis, dari throughput ke biaya per token.
Saya ingat betul momen breakthrough-nya. Suatu malam di bulan Oktober 2024 — sekitar pukul 02.30 WIB — saya duduk di meja belajar dengan secangkir kopi yang sudah dingin dan sebuah spreadsheet kosong. Saya mulai menuliskan semua variabel yang terlibat dalam menjalankan sebuah LLM. Parameter model (N), panjang konteks (L), presisi kuantisasi (B dalam bit per parameter), jumlah GPU (G), kapasitas VRAM per GPU (V), kecepatan interkoneksi antar-GPU (Bnv), throughput yang diinginkan dalam token per detik (T), batch size (Bs), faktor overhead kernel (O) — semuanya saya tuangkan ke dalam kolom-kolom spreadsheet.
Rumus Pertama yang Lahir Malam Itu
Kebutuhan VRAM total = N × B / 8 + L × Bkv × nlayers × dkv × 2 / (10243) GB
Dari sana, saya bisa menghitung berapa GPU yang diperlukan, berapa throughput maksimum, dan akhirnya — berapa biaya per token.
Spreadsheet itu tumbuh. Dari satu sheet menjadi lima. Dari lima menjadi dua belas. Saya menambahkan kalkulator bandwidth, kalkulator VRAM, kalkulator token per detik, kalkulator biaya listrik berdasarkan PUE dan TDL PLN, kalkulator TCO tiga tahun dengan depresiasi straight-line, dan kalkulator break-even point untuk perbandingan on-premise vs API. Saya mulai memvalidasi setiap rumus dengan data dari GPU yang bisa saya akses — dua unit NVIDIA A100 80 GB SXM di kantor, sebuah RTX 4090 pribadi, dan beberapa node yang saya sewa di penyedia cloud GPU.
Momen "Eureka": Saya masih ingat tanggal 2 November 2024, ketika rumus throughput —
TPD = (G × V × U) / (M × Foverhead)— menghasilkan angka yang persis sama dengan throughput real-time yang terukur divLLMuntuk model Llama 3 70B dengan 2 × A100. Selisihnya kurang dari 3%. Rasanya seperti menemukan kunci yang selama ini hilang. Sejak hari itu, saya tidak pernah lagi menjawab "kayaknya sih cukup." Saya membuka spreadsheet dan berkata, "Ini perhitungannya."
Buku ini lahir dari spreadsheet itu. Dari catatan-catatan yang awalnya hanya untuk konsumsi sendiri, dari tabel-tabel yang saya buat di waktu luang, dari presentasi internal di kantor yang kemudian saya berikan ke tim. Satu presentasi menjadi dua, menjadi lima, menjadi sebuah seri workshop internal. Setiap kali saya membagikannya, reaksinya selalu sama: "Ini yang selama ini kami cari. Kenapa tidak ada yang menulis buku tentang ini?" Tidak ada sumber — setidaknya dalam bahasa Indonesia — yang menyatukan semua variabel mulai dari harga GPU, konsumsi daya, bandwidth NVLink, hingga harga token API — dalam satu kerangka kalkulasi yang koheren dan aplikatif.
Saya menulis buku ini untuk Galih yang setahun lalu: yang frustrasi, yang bingung, yang ingin angka pasti. Juga untuk para AI engineer, CTO, technical lead, system architect, dan siapapun yang harus mengambil keputusan teknis dan finansial tentang LLM inference — terutama di Indonesia, di mana akses ke GPU高端 masih terbatas, harga listrik industri tidak murah, dan keputusan pembelian seringkali dibuat berdasarkan rekomendasi vendor yang bias.
Saya tidak akan bilang bahwa isi buku ini sempurna. Harga GPU berubah setiap kuartal, model baru lahir hampir setiap minggu, dan angka-angka di dalamnya akan usang. Tapi kerangka berpikirnya — cara menghitung, bukan angka hitungannya — itulah yang akan bertahan. Rumus-rumus tentang VRAM, throughput, latency, TCO, dan break-even analysis tidak akan berubah hanya karena GPU generasi berikutnya rilis. Yang berubah adalah inputnya. Metodologinya tetap.
Saya berutang besar pada komunitas open-source: para kontributor vLLM, llama.cpp oleh Georgi Gerganov dan tim, Hugging Face, dan ribuan peneliti dan engineer yang mempublikasikan benchmark dan temuan mereka secara gratis di GitHub, Reddit, dan forum-forum diskusi. Tanpa mereka, spreadsheet saya tidak akan pernah terkalibrasi dengan baik. Buku ini adalah upaya saya untuk meneruskan apa yang sudah mereka bangun, dalam bentuk yang lebih terstruktur dan — saya harap — lebih mudah dicerna oleh praktisi di lapangan.
Akhir kata, selamat membaca. Saya harap dalam 500 halaman ke depan, Anda akan mendapatkan jauh lebih dari sekadar jawaban. Anda akan mendapatkan keyakinan — kepercayaan diri untuk berkata, "Saya tahu persis berapa biayanya, dan ini hitungannya." Karena pada akhirnya, AI bukanlah sihir. AI adalah matematika. Dan matematika — tidak seperti opini — tidak pernah bias.
— Galih Prasetyo, AI Engineer
Juni 2026
Prakata — Kenapa Buku Ini Ada
Pada awal 2025, saya diundang untuk membantu sebuah BUMN telekomunikasi yang ingin membangun layanan chatbot AI untuk ribuan pegawai dan pelanggannya. Mereka sudah berbicara dengan tiga vendor infrastruktur dan mendapatkan tiga proposal yang sangat berbeda. Vendor A menawarkan GPU A100 80 GB × 4 dengan biaya Rp 1,2 miliar di tahun pertama (termasuk server, lisensi, dan instalasi). Vendor B menawarkan solusi H100 × 2 dengan biaya Rp 2,1 miliar. Vendor C — yang kebetulan penyedia cloud — mengusulkan pendekatan hybrid: GP on-premise untuk model kecil plus API untuk model besar, dengan estimasi Rp 600 juta per tahun. Ketiganya yakin bahwa solusi mereka adalah yang terbaik. Mana yang benar-benar tepat?
Kenyataannya, tidak ada satu pun vendor yang bisa menunjukkan secara transparan bagaimana mereka sampai di angka itu. Mereka memberikan total tagihan, tapi tidak memberikan breakdown. Berapa throughput yang dijamin? Berapa token per detik untuk model 7B vs 70B? Berapa maksimum konteks yang didukung? Berapa biaya per token dalam skenario real-time vs batch processing? Tidak ada satu pun angka teknis yang bisa dijadikan dasar perbandingan. Dan tanpa angka-angka itu, mustahil membandingkan proposal secara objektif.
Inilah masalah terbesar yang saya lihat di industri AI Indonesia saat ini: keputusan pembelian GPU dan infrastruktur LLM dibuat berdasarkan firasat dan rekomendasi vendor, bukan perhitungan teknis-ekonomis yang rigor. Tim teknis tidak punya alat untuk menghitung apakah sebuah GPU cukup untuk model yang mereka inginkan. Tim finansial tidak punya kerangka untuk membandingkan on-premise vs API dalam skala tiga tahun dengan asumsi yang bisa dipertanggungjawabkan. Dan vendor — tentu saja — lebih suka menjual solusi termahal (dengan margin tertinggi) daripada solusi yang paling cost-effective untuk klien.
Dua Ekstrem yang Sama-Sama Berbahaya
Di lapangan, saya mengamati dua ekstrem yang sama-sama merugikan.
Ekstrem pertama: GPU-obsession. Tim yang tergoda untuk selalu membeli GPU termahal "yang penting bisa." Saya pernah melihat sebuah startup dengan hanya 500 pengguna harian yang membeli empat unit A100 80 GB — dan setelah 6 bulan, 70% VRAM-nya tidak pernah terpakai karena model yang mereka jalan hanyalah Llama 3 8B yang sebenarnya muat di satu GPU RTX 4090. Itu adalah Rp 1,3 miliar yang menganggur. Belum lagi biaya listrik dan pendinginan untuk GPU yang idle — sekitar Rp 2-3 juta per bulan per GPU di data center Indonesia.
Ekstrem kedua: API-only fallacy. Tim yang menganggap on-premise tidak pernah masuk akal sehingga semua inference harus melalui API pihak ketiga. Saya punya klien — sebuah startup fintech — yang menghabiskan rata-rata Rp 80-120 juta per bulan untuk API GPT-4o, hanya untuk chatbot customer service. Dalam 18 bulan, mereka telah membayar Rp 1,8 miliar — cukup untuk membeli 3 unit H100 lengkap dengan server dan listrik selama 2 tahun. Tapi mereka tidak pernah melakukan perhitungan TCO, sehingga tidak pernah menyadari bahwa break-even point mereka sudah terlewati di bulan ke-11.
Data lapangan: Dari pengalaman saya berkonsultasi dengan lebih dari 15 organisasi di Indonesia — mulai dari startup Series A hingga BUMN dengan ribuan pegawai — sekitar 60% membeli GPU yang terlalu mahal untuk workload mereka (over-provisioning 2-4×). Sementara 25% lainnya membayar API terlalu mahal karena takut akan kerumitan pengelolaan infrastruktur on-premise. Hanya 15% yang mengambil keputusan dengan kalkulasi yang matang — dan dari 15% itu, hampir semuanya adalah tim yang memiliki akses ke data benchmark dan kerangka perhitungan yang solid. Buku ini adalah untuk 85% sisanya — termasuk untuk versi saya sendiri di masa lalu yang masih menjawab "kayaknya sih cukup."
Akar Masalah: Ketiadaan Kerangka Kalkulasi
Kenapa ini terjadi? Saya percaya akar masalahnya bukan pada niat buruk vendor atau ketidakmampuan tim teknis. Masalahnya adalah ketiadaan kerangka kalkulasi yang terstandarisasi dan bisa diakses. Informasi tentang inference LLM tersebar di mana-mana: di whitepaper NVIDIA, di blog Hugging Face, di GitHub issue vLLM, di forum komunitas. Tapi tidak ada yang menyatukannya dalam format yang bisa langsung dipakai untuk menjawab pertanyaan praktis seperti: "Berapa GPU yang saya butuhkan untuk model X dengan konteks Y dan throughput Z?"
Yang lebih parah: bahkan ketika Anda berhasil mengumpulkan semua informasi, Anda masih harus menghitung sendiri. Dan perhitungan inference LLM bukan perkara sepele. Ada interaksi non-linear antara parameter model, presisi kuantisasi, panjang konteks, batch size, bandwidth memori GPU, overhead kernel, dan efek dari teknik optimasi seperti FlashAttention dan PagedAttention. Tanpa pemahaman yang terstruktur, mudah untuk membuat kesalahan estimasi yang berujung pada keputusan investasi yang salah.
Apa yang Ingin Buku Ini Capai
Buku ini tidak akan memberi tahu Anda GPU mana yang harus dibeli. Buku ini akan memberi Anda rumus dan kerangka untuk mengetahuinya sendiri. Saya percaya bahwa keputusan infrastruktur yang baik adalah keputusan yang berbasis data — dan data yang relevan tidak bisa Anda dapatkan tanpa kemampuan untuk menghitung. Anda tidak bisa membandingkan Harga GPU A dengan GPU B tanpa menghitung token per detik per dolar. Anda tidak bisa memutuskan on-premise vs API tanpa menghitung TCO dan break-even point dalam skenario penggunaan spesifik Anda.
Secara konkret, buku ini dirancang untuk menjawab lima pertanyaan kunci:
- Berapa banyak GPU yang saya butuhkan? — Dihitung dari parameter model, panjang konteks, presisi kuantisasi, dan throughput target. Bukan tebakan.
- GPU mana yang paling cost-effective untuk workload saya? — Dibandingkan dengan metrik token per detik per dolar, dengan faktor koreksi untuk biaya listrik, pendinginan, dan depresiasi.
- Kapan dan dalam kondisi apa on-premise lebih murah daripada API? — Dengan break-even analysis yang mempertimbangkan volume token harian, biaya listrik lokal, dan horizon investasi.
- Bagaimana cara mengoptimalkan inference yang sudah berjalan? — Dengan strategi quantization, continuous batching, speculative decoding, KV-cache optimization, dan pemilihan framework yang tepat.
- Berapa biaya total kepemilikan (TCO) yang sebenarnya? — Meliputi GPU, server, jaringan, listrik, pendinginan, rak data center, garansi, dan biaya SDM — komponen yang sering dilupakan dalam perhitungan.
Untuk Siapa Buku Ini (dan Bukan Untuk Siapa)
Buku ini bukan untuk peneliti AI yang sedang mengembangkan arsitektur model baru, menulis paper tentang attention mechanism, atau bereksperimen dengan training dari nol. Buku ini untuk practitioner: para AI engineer, MLOps engineer, system architect, CTO, technical project manager, data scientist, dan siapapun yang harus menjalankan LLM di dunia nyata — entah di server kantor, di data center, melalui cloud GPU, atau melalui API. Anda tidak perlu menjadi ahli GPU atau lulusan S2 machine learning untuk membaca buku ini. Jika Anda bisa mengoperasikan kalkulator, memahami aljabar dasar SMA, dan membaca grafik, Anda sudah punya semua prasyarat yang dibutuhkan.
Setiap bab di buku ini ditulis dengan satu premis: Anda bisa menghitung sendiri, tanpa harus percaya pada marketing vendor, FOMO komunitas, atau feeling siapa pun. Angka-angka yang disajikan — harga GPU, throughput, TCO — bukan untuk dihafal, tapi untuk menjadi contoh dan titik awal. Anda bisa (dan harus) menggantinya dengan angka real dari lingkungan Anda sendiri.
Pada akhirnya, buku ini ada karena saya lelah melihat orang membuang uang — uang yang kadang adalah hasil jerih payah bertahun-tahun — untuk infrastruktur AI yang tidak tepat. Saya ingin setiap tim di Indonesia yang ingin mengadopsi LLM — entah untuk chatbot layanan pelanggan, coding assistant internal, sistem RAG untuk dokumen perusahaan, atau agen AI untuk otomatisasi workflow — bisa mengambil keputusan dengan percaya diri, dengan spreadsheet di tangan, dan tanpa harus belajar dari kesalahan yang mahal.
Selamat menghitung.
Cara Membaca Buku Ini
Buku ini terdiri dari 12 bagian dan 76 bab, ditambah lampiran referensi yang lengkap dengan tabel spesifikasi, glosarium, dan daftar rumus ringkas. Meskipun urutannya sudah dirancang secara progresif — dari fondasi teori paling dasar hingga studi kasus industri yang kompleks — Anda tidak wajib membacanya berurutan dari halaman 1 sampai 500. Setiap bagian dirancang untuk bisa berdiri sendiri, dengan catatan prasyarat yang jelas di awal bab sehingga Anda bisa melompat ke bagian yang paling relevan dengan kebutuhan Anda saat itu.
Struktur Buku Secara Keseluruhan
Berikut adalah peta jalan 12 bagian buku ini, dari pembuka hingga lampiran:
Bagian 00 — Pembuka (sedang Anda baca)
Kontekstualisasi, motivasi penulisan, metodologi data, dan panduan navigasi buku. Membaca bagian ini cukup sekali untuk memahami kerangka dasar buku.
Bagian I — Fondasi Token & GPU
Dasar-dasar yang wajib dipahami: apa itu token dan bagaimana ia dihasilkan, arsitektur GPU modern (SM, Tensor Core, HBM, NVLink), hubungan antara parameter model, VRAM, dan presisi, serta bagaimana semua variabel ini berinteraksi saat inference berlangsung. Prasyarat untuk semua bagian selanjutnya.
Bagian II — Rumus & Kalkulator Biaya Inference
Rumus-rumus pokok yang menjadi tulang punggung buku ini: perhitungan kebutuhan VRAM, throughput teoritis vs real-time, latency prefill dan decoding, hubungan batch size dengan utilitas GPU, serta implementasi kalkulator berbasis spreadsheet yang bisa Anda download dan modifikasi.
Bagian III — Benchmark GPU untuk Inference
Perbandingan performa GPU dari berbagai kategori: konsumen (RTX 4090, RTX 5090), workstation (RTX 6000 Ada), data center (A100, H100, B200, GH200), GPU China (Huawei Ascend 910B, Biren BR100), dan GPU AMD (MI300X, MI325X). Dilengkapi tabel benchmark real dalam token per detik dan token per detik per dolar untuk model 7B hingga 200B+.
Bagian IV — Strategi Optimasi Inference
Teknik-teknik untuk memaksimalkan throughput dan meminimalkan biaya per token: quantization (FP8, INT4/INT8, NF4), speculative decoding, continuous batching, KV-cache optimization dengan PagedAttention dan FlashAttention, serta prompt compression dan prefix caching.
Bagian V — Infrastruktur & Deployment Framework
Perbandingan mendalam framework inference populer: vLLM, Hugging Face TGI, llama.cpp, TensorRT-LLM, SGLang, Ollama, dan LocalAI. Setiap framework diuji dengan model dan GPU yang sama. Dilengkapi panduan konfigurasi dan tuning parameter untuk skenario real-time vs batch.
Bagian VI — TCO & Analisis Break-Even On-Premise vs API
Perhitungan total biaya kepemilikan (TCO) yang komprehensif: GPU, server, rack, jaringan, listrik, pendinginan data center, garansi, support, SDM operasional, dan depresiasi 3-5 tahun. Dilengkapi analisis break-even point yang membandingkan biaya on-premise dengan API (OpenAI, Anthropic, Google, penyedia lokal) berdasarkan volume token harian.
Bagian VII — Studi Kasus Industri
Lima studi kasus dunia nyata: (1) chatbot layanan nasabah bank dengan 8.000 agen, (2) RAG dokumen untuk perusahaan hukum dengan 2 juta halaman kontrak, (3) code assistant internal untuk tim engineering 200 orang, (4) contact center otomatis dengan 500 concurrent calls, dan (5) NLP batch processing untuk analisis sentimen 10 juta tweet per hari. Setiap studi kasus disertai kalkulasi lengkap dari awal hingga akhir.
Bagian VIII — GPU China & Alternatif Non-NVIDIA
Analisis mendalam tentang Huawei Ascend 910B/910C, Biren Technology BR100/BR104, AMD MI300X/MI325X, dan Intel Gaudi 3. Kapan dan dalam kondisi apa GPU alternatif ini layak dipertimbangkan? Bagaimana performa riilnya untuk LLM inference? Bagaimana ekosistem software-nya (CANN, ROCm, OneAPI)? Dilengkapi perbandingan dengan GPU NVIDIA di kelas harga yang sama.
Bagian IX — Masa Depan Inference LLM
Tren yang akan membentuk lanskap inference dalam 2-3 tahun ke depan: model multimodal dan video-native, arsitektur Mixture of Experts (MoE) yang semakin dominan, inference on edge dan perangkat mobile, spesialisasi hardware (NPU, IPU, Groq LPU), dampak AI Act dan regulasi ekspor GPU, serta proyeksi harga GPU dan token API ke depan.
Bagian X — Lampiran
Referensi lengkap: tabel spesifikasi 40+ GPU dari semua vendor, daftar 50+ model LLM dengan parameter dan benchmark, glosarium 200+ istilah teknis, kumpulan rumus ringkas satu halaman, petunjuk akses kalkulator online, dan daftar sumber data & bacaan lanjutan.
Tiga Jalur Membaca
Tergantung peran dan kebutuhan Anda, saya merekomendasikan tiga jalur membaca berikut:
Jalur 1: Pembaca Linier — untuk Pemula yang Ingin Menguasai dari Dasar
Untuk Anda yang benar-benar baru dalam dunia inference LLM dan ingin membangun pemahaman dari nol yang kokoh. Mulailah dari Bagian I dan lanjutkan secara berurutan hingga Bagian VII. Setiap bab membangun konsep dari bab sebelumnya — Anda akan kesulitan memahami continuous batching di Bagian IV jika belum paham cara hitung kebutuhan VRAM di Bagian II. Jalur ini memakan waktu (kira-kira 20-30 jam baca), tapi memberikan fondasi paling kokoh. Setelah Bagian VII, Anda bisa memilih Bagian VIII atau IX sesuai minat.
Jalur 2: Decision-Maker — untuk CTO & Technical Lead yang Butuh Cepat
Untuk eksekutif teknis yang butuh jawaban cepat. Mulailah dari Bagian II untuk memahami rumus-rumus dasar, lalu loncat ke Bagian VI untuk analisis biaya dan perbandingan on-premise vs API, dan Bagian VII untuk studi kasus yang relevan dengan industri Anda. Gunakan Bagian III sebagai referensi cepat saat membandingkan GPU. Kembali ke Bagian I hanya jika ada konsep fundamental yang perlu didalami. Jalur ini bisa diselesaikan dalam 6-8 jam dengan hasil yang langsung aplikatif.
Jalur 3: Troubleshooter — untuk Engineer yang Ingin Optimasi Sistem yang Sudah Berjalan
Untuk engineer yang sudah punya sistem jalan tapi ingin optimasi biaya atau performa. Loncat langsung ke Bagian IV untuk strategi optimasi (quantization, speculative decoding, batching), lalu Bagian V untuk perbandingan framework — mungkin framework Anda saat ini bukan yang paling optimal untuk workload spesifik Anda. Gunakan indeks di Bagian X untuk menemukan topik spesifik dengan cepat. Jalur ini yang paling pendek — sekitar 3-4 jam — tapi hanya efektif jika Anda sudah memiliki pemahaman dasar tentang inference.
Konvensi Penulisan Sepanjang Buku
Agar konsisten dan mudah diikuti, saya menggunakan konvensi berikut di seluruh buku:
- Rumus: Semua rumus ditulis dalam notasi matematika standar dengan variabel berhuruf miring. Setiap variabel dijelaskan segera setelah rumus diperkenalkan — tidak ada variabel yang muncul tanpa definisi.
- Contoh tabel: Tabel benchmark berisi data real dari pengujian mandiri atau publikasi terpercaya yang tercantum sumbernya. Semua angka throughput adalah median dari minimal 50 iterasi setelah warm-up.
- Kode dan konfigurasi: Blok kode menggunakan sintaks
nyata yang sudah diuji. Contoh: konfigurasi
vLLM, parameterllama.cpp, script benchmark, atau rumus Google Sheets / Excel yang bisa langsung dicopy-paste. - Blok tip:
<blockquote class="tip">berisi saran praktis, shortcut, atau best practice yang mempercepat pekerjaan Anda. - Blok peringatan:
<blockquote class="warn">berisi jebakan umum, kesalahan yang sering terjadi, atau hal-hal yang bisa berakibat fatal jika diabaikan. - Referensi silang: Setiap penyebutan bagian atau bab lain adalah tautan aktif (dalam versi digital) yang bisa diklik untuk navigasi cepat.
Saran untuk pembaca digital: Jika Anda membaca buku ini dalam format PDF, EPUB, atau web, manfaatkan hyperlink antar-bab dan bookmark. Setiap referensi silang — misalnya "lihat Bagian V untuk detail framework" — adalah tautan aktif. Ini sangat membantu terutama saat menggunakan Jalur 2 atau Jalur 3 di mana Anda sering melompat antar-bagian.
Apa yang Tidak Ada di Buku Ini (dan Kenapa)
Agar fokus dan tidak melebar, buku ini sengaja tidak mencakup:
- Training LLM dari awal — buku ini 100% tentang inference. Training memiliki dinamika biaya yang sangat berbeda (komunikasi all-reduce, checkpointing, data pipeline) dan memerlukan buku tersendiri dengan ketebalan yang sama.
- Fine-tuning dan LoRA — hanya disinggung sekilas di studi kasus. Fine-tuning juga memiliki profil biaya yang berbeda dengan pure inference.
- Implementasi kode dari nol — buku ini menggunakan framework yang sudah matang (vLLM, llama.cpp, TensorRT-LLM, SGLang), bukan mengajari cara menulis CUDA kernel atau attention mechanism dari scratch.
- Perbandingan kualitas model — kami bicara soal kecepatan, biaya, dan efisiensi, bukan soal "model A lebih pintar dari model B" atau "model X mengalahkan GPT-4 di benchmark Y." Kualitas model sangat kontekstual dan subjektif tergantung use case.
- Panduan coding agent atau RAG dari sisi aplikasi — kami fokus pada infrastruktur inference-nya. Arsitektur RAG, prompt engineering, dan orchestration agen adalah topik untuk buku lain.
Dengan peta jalan ini, saya harap Anda bisa menentukan sendiri jalur terbaik sesuai kebutuhan, latar belakang, dan waktu yang Anda miliki. Selamat menjelajah — dan jangan ragu untuk melompat, menandai halaman, dan kembali lagi nanti. Buku teknis yang baik bukanlah novel yang harus dibaca sekali duduk, melainkan referensi yang akan Anda kunjungi berulang kali.
Catatan Metodologi & Tanggal Data (Juni 2026)
Sebuah buku teknis tentang harga dan performa hardware memiliki umur simpan yang pendek — lebih pendek dari yang saya inginkan. Saya sadar betul bahwa angka-angka di buku ini — harga GPU, kecepatan token per detik, biaya listrik per kWh, tarif API per token — adalah snapshot dari kondisi per Juni 2026. Enam bulan dari sekarang, beberapa angka pasti sudah berubah. Dua belas bulan lagi, mungkin banyak yang perlu direvisi. Dua tahun lagi, buku ini mungkin sudah perlu edisi kedua. Karena itu, penting bagi saya untuk menjelaskan dengan transparan darimana angka-angka itu berasal, bagaimana cara mendapatkannya, metodologi pengukuran yang digunakan, dan — yang terpenting — bagaimana Anda bisa memperbarui dan memvalidasi sendiri data tersebut untuk konteks Anda.
Sumber Data GPU & Hardware
Data spesifikasi teknis GPU dan harga di buku ini bersumber dari beberapa kategori vendor dan platform. Saya berusaha menggunakan sumber primer sebisa mungkin, dan hanya menggunakan sumber sekunder jika data primer tidak tersedia:
| Kategori Data | Sumber Primer | Metode Pengumpulan |
|---|---|---|
| Harga GPU NVIDIA (resmi) | NVIDIA Official Store, Amazon, Newegg, Bhphotovideo | Harga publik eceran per Juni 2026, dalam USD. Untuk Indonesia: distributor resmi PT. XYZ dan marketplace Tokopedia/Shopee. |
| Harga GPU China | JD.com, Taobao, laporan SemiAnalysis & TrendForce | Harga publik dalam yuan (CNY), dikonversi ke USD dengan kurs ¥ 7,2/USD. |
| Spesifikasi teknis GPU | TechPowerUp GPU Database, halaman spesifikasi resmi NVIDIA/AMD/Intel | Data dari lembar spesifikasi pabrikan, diverifikasi silang dengan pengukuran mandiri menggunakan nvidia-smi, rocm-smi, dan CUDA samples. |
| Harga server GPU rakitan | Dell PowerEdge, Supermicro, HPE, custom integrator Indonesia | Kutipan harga resmi untuk konfigurasi tipikal: 1U/4U, dual-CPU, 512GB-2TB RAM, dual PSU redundant. |
| Biaya listrik Indonesia | PLN Tariff Adjustment (TDL) 2026, goI.PLN.co.id | Tabel tarif golongan B-3 (bisnis menengah), P-2 (kantor pemerintah), dan I-4 (industri besar). |
| Biaya colocation & DC | Uptime Institute Annual Report 2025-2026, kuotasi DC Indonesia | Rata-rata biaya per rak per bulan untuk tier II dan tier III di Jabodetabek, termasuk listrik, koneksi, dan pendingin. |
Sumber Data Model LLM & Benchmark Inference
Performa model LLM — yang menjadi input utama kalkulasi di buku ini — diukur dari tiga kategori sumber untuk memastikan validitas dan mengurangi bias dari satu sumber saja:
| Kategori | Sumber Spesifik | Metode & Validasi |
|---|---|---|
| Benchmark mandiri | GPU milik penulis (A100 80 GB SXM ×2, RTX 4090, RTX 3090), GPU sewaan (RunPod, Vast.ai, Lambda Labs) | Menggunakan vLLM 0.8.x, llama.cpp b5000+ (commit terbaru), TensorRT-LLM 25.03. Protokol: 512 input / 256 output, 50 iterasi setelah 3 warm-up, median reported. |
| Publikasi komunitas | r/LocalLLaMA, Hugging Face Open LLM Leaderboard, OpenRouter benchmarks, Artificial Analysis, LLM Perf Leaderboard oleh waveym | Data crowdsource diverifikasi silang: setiap angka hanya digunakan jika minimal 3 sumber independen menunjukkan hasil dalam rentang ±10%. |
| Whitepaper vendor | NVIDIA MLPerf Inference v5.x, AMD ROCm blog & MI300X benchmarks, Intel Gaudi 3 whitepaper, Huawei CANN documentation | Digunakan hanya untuk data yang tidak tersedia dari sumber independen. Disertai catatan jika ada potensi bias vendor. |
Protokol Benchmark Standar
Setiap angka throughput — tokens per second — dalam buku ini, jika tidak disebutkan secara spesifik, mengikuti protokol pengukuran berikut agar konsisten dan reproducible:
- Input prompt length: 512 token (kecuali disebut lain dalam konteks bab)
- Output generation length: 256 token (kecuali disebut lain)
- Batch size: 1 untuk skenario real-time interactive (latency-sensitive); dioptimalkan hingga maksimal untuk skenario batch processing (throughput-maximal)
- Warm-up: 3 iterasi awal dibuang dari statistik untuk menghilangkan efek cold start (warm-up, CUDA kernel compilation, KV-cache allocation)
- Sampel statistik: Rata-rata dari 50 iterasi berikutnya; nilai yang dilaporkan adalah median untuk mengurangi dampak outlier akibat thermal throttling atau proses sistem lain
- Model precision: FP16 (default), disebutkan secara eksplisit jika menggunakan quantization (FP8, INT8, INT4, NF4, atau GGUF Q4_K_M / Q5_K_M / Q6_K / Q8_0)
- Framework: vLLM untuk GPU CUDA (NVIDIA), llama.cpp untuk GPU AMD/CPU dan GPU non-NVIDIA, TensorRT-LLM untuk skenario latency-critical yang memerlukan optimasi maksimal, SGLang untuk skenario yang membutuhkan structured output
- Driver & CUDA version: CUDA 12.8 / driver 570.x untuk NVIDIA; ROCm 6.5 untuk AMD; driver CANN terbaru untuk Huawei Ascend; driver Intel terbaru untuk Gaudi
- GPU clock: Default pabrikan (tidak dilakukan overclocking atau underclocking)
Peringatan metodologis yang penting: Angka benchmark sangat bergantung pada konfigurasi sistem — CPU, RAM, motherboard, kecepatan PCIe, suhu ruangan, proses latar belakang, versi driver, bahkan versi kernel Linux. Satu studi kasus: benchmark yang sama di A100 80 GB PCIe vs SXM menunjukkan perbedaan hingga 15-20% karena bandwidth interkoneksi. Sebisa mungkin saya menyajikan range performa (min-max), bukan angka tunggal. Jika Anda mendapatkan angka yang berbeda di lingkungan Anda, itu normal — yang penting adalah pola perbandingan relatif antar-GPU dan antar-konfigurasi, bukan angka absolutnya.
Asumsi Finansial & Nilai Tukar
Semua analisis biaya dalam buku ini menggunakan asumsi finansial yang konsisten. Anda bisa — dan harus — mengganti asumsi ini dengan data real dari lingkungan Anda:
| Parameter Finansial | Asumsi Default | Keterangan |
|---|---|---|
| Nilai tukar USD → IDR | Rp 16.500 / USD | Rata-rata kurs tengah Bank Indonesia 2025-2026 |
| EUR → IDR | Rp 18.000 / EUR | Untuk komponen server Eropa |
| CNY → USD | ¥ 7,2 / USD | Nilai tukar yuan China (mengambang terkontrol) |
| Biaya listrik industri | Rp 1.200 – Rp 1.700 / kWh | Golongan I-4 (industri besar) dan B-3 (bisnis menengah) |
| PUE data center | 1,5 – 1,8 | Tier II non-hiperskala, lokasi Jabodetabek |
| Depresiasi GPU | 3 tahun, straight-line | Residual value 10% dari harga beli |
| Depresiasi server | 4 tahun, straight-line | Residual value 5% dari harga beli |
| Biaya perawatan tahunan | 10% dari harga hardware | Garansi, penggantian komponen rusak, support contract |
| Biaya SDM opsional | Rp 150-300 juta / tahun | 0,25-0,5 FTE engineer untuk operasional inference |
Template kalkulator tersedia: Semua asumsi finansial di atas — nilai tukar, tarif listrik, PUE, depresiasi — adalah parameter yang bisa Anda ubah di kalkulator spreadsheet yang menyertai buku ini (lihat Bagian X — Lampiran untuk tautan unduhan). Biaya listrik di pabrik Anda di Cikarang mungkin berbeda dengan kantor di Jakarta Selatan. PUE data center anda mungkin 1,3 atau 2,0. Jangan ragu mengganti angka default dengan data real dari lingkungan Anda — itulah tepatnya mengapa buku ini mengajarkan cara menghitung, bukan menyajikan angka jadi.
Keterbatasan & Disclaimer Penting
Beberapa hal yang perlu Anda ingat saat menggunakan data di buku ini:
- Harga GPU sangat fluktuatif — terutama kartu konsumen (RTX 4090, RTX 5090, seri RX) yang harganya sangat dipengaruhi oleh ketersediaan pasar, tren AI, dan — kadang — aktivitas crypto mining. Harga di buku ini adalah harga retail normal pada saat penulisan, bukan harga scalper atau harga saat kelangkaan.
- Performa model berubah antar versi framework — update
pada
vLLM,transformers, ataullama.cppdapat mengubah throughput secara signifikan (pernah saya lihat hingga 30% peningkatan hanya dengan update minor). Semua benchmark dilakukan dengan versi framework yang disebutkan di catatan kaki masing-masing tabel. - Workload yang berbeda menghasilkan profil performa yang sangat berbeda — throughput untuk chat real-time (di mana Time-to-First-Token adalah metrik kritis) sangat berbeda dengan throughput untuk batch processing (di mana total token per detik adalah raja). Buku ini secara eksplisit membedakan kedua skenario ini di setiap analisis.
- Harga API berubah tanpa pemberitahuan — tarif dari OpenAI, Anthropic, Google, dan penyedia API lokal Indonesia terus berubah seiring kompetisi pasar. Harga yang tercantum adalah per Juni 2026 dan harus diverifikasi ulang sebelum digunakan untuk keputusan finansial.
- Biaya tidak selalu linear — menambah GPU kedua bukan berarti throughput menjadi dua kali lipat. Scaling efficiency untuk multi-GPU inference biasanya 70-95% tergantung model dan interkoneksi. Buku ini membahas faktor scaling ini secara detail di Bagian II.
Referensi Lengkap & Cara Memperbarui Data
Untuk transparansi penuh dan reproducibility, semua sumber data yang
digunakan di buku ini tercantum di Bagian X (Lampiran).
Repositori GitHub publik buku ini — github.com/galihpras/kalkulasi-token-gen
— berisi:
Seluruh spreadsheet kalkulator (Google Sheets dan Excel),
Semua script benchmark yang digunakan (Python + shell),
Konfigurasi framework untuk setiap skenario pengujian,
Data mentah benchmark dalam format CSV,
dan Log perubahan (changelog) untuk pelacakan revisi data.
Saya sangat mendorong kontribusi dari pembaca: jika Anda menemukan angka yang sudah tidak akurat, atau jika Anda memiliki data benchmark dari GPU atau konfigurasi yang belum tercakup di buku ini, silakan buka pull request atau issue di repositori GitHub. Buku teknis yang baik adalah dokumen hidup yang terus diperbarui oleh komunitasnya.
Sebagai penutup catatan metodologi ini: data di buku ini adalah titik awal, bukan akhir. Saya mendorong Anda untuk selalu memvalidasi angka-angka kritis dengan pengujian di lingkungan Anda sendiri — terutama sebelum membuat keputusan investasi di atas Rp 100 juta. Kalkulasi yang Anda lakukan dengan data real dari infrastruktur, model, dan workload Anda sendiri akan selalu lebih akurat daripada angka di buku mana pun, termasuk buku ini. Angka di buku ini adalah peta, bukan medan. Anda tetap harus berjalan sendiri.
Bagian 1 — Fondasi Token Generation
Bab 1 — Apa Itu Token & Token Generation?
Setiap percakapan dengan Large Language Model (LLM)—mulai dari mengetik prompt di ChatGPT, Claude, atau Gemini—pada dasarnya adalah pertukaran token. Tapi apa sebenarnya token itu? Mengapa LLM tidak bekerja dengan huruf atau kata biasa? Dan bagaimana cara menghitung berapa banyak token yang dikonsumsi oleh sebuah kalimat? Bab ini akan menjawab semua pertanyaan fundamental tersebut.
Definisi Token
Token adalah unit dasar pemrosesan dalam Large Language Model. Sederhananya, token adalah potongan teks dengan panjang variabel—bisa berupa satu karakter, satu suku kata, satu kata utuh, atau bahkan gabungan beberapa kata—yang menjadi "mata uang" bagi model bahasa. LLM tidak membaca teks seperti manusia membaca huruf demi huruf. Model membaca dan menghasilkan teks dalam bentuk token.
Setiap model bahasa modern menggunakan tokenizer, yaitu algoritma yang bertugas memecah teks menjadi deretan token. Tokenizer yang paling umum digunakan saat ini adalah Byte-Pair Encoding (BPE), WordPiece (digunakan oleh BERT), atau SentencePiece (digunakan oleh Gemma dan LLaMA). Algoritma-algoritma ini bekerja dengan pendekatan statistik: mereka menganalisis korpus teks raksasa dan menentukan potongan optimal mana yang paling sering muncul.
Token vs Karakter vs Kata
Untuk memahami perbedaan mendasar antara token, kata, dan karakter, perhatikan contoh konkret berikut. Ambil kalimat sederhana dalam bahasa Indonesia:
Kalimat: "Halo, apa kabar?"
Karakter: 14 karakter (termasuk spasi dan tanda baca)
Kata: 3 kata ("Halo", "apa", "kabar?")
Token: 5 token (["Halo", ",", " apa", " kab", "ar?"])
Yang menarik adalah tokenizer memecah kata "kabar" menjadi dua token: " kab" dan "ar?". Ini terjadi karena dalam korpus pelatihan, kombinasi " kab" lebih sering muncul sebagai awalan yang diikuti variasi akhiran. Tokenizer BPE bersifat subword: kata yang jarang muncul cenderung dipecah menjadi subword yang lebih kecil, sementara kata yang sangat umum (seperti "the", "dan", "di") menjadi satu token utuh.
Cara LLM Memproses Token
Proses internal LLM terhadap token melibatkan beberapa langkah yang terjadi dalam hitungan milidetik:
- Tokenisasi Input: Teks prompt dipecah menjadi deretan token oleh tokenizer. Setiap token mendapat ID numerik yang unik berdasarkan vocabulary model.
- Embedding Lookup: Setiap ID token dikonversi menjadi vektor berdimensi tinggi (biasanya 4.096 hingga 16.384 dimensi, tergantung ukuran model). Vektor ini disebut embedding dan merepresentasikan makna semantik token dalam ruang multidimensi.
- Forward Pass: Deretan vektor embedding dilewatkan melalui puluhan atau ratusan lapisan transformer. Setiap lapisan melakukan kalkulasi self-attention dan feed-forward, yang memungkinkan model "memahami" konteks dari setiap token dalam hubungannya dengan token lain.
- Output Logits: Lapisan terakhir menghasilkan vektor logits—skor mentah untuk setiap token dalam vocabulary (bisa berisi 32.000 hingga 200.000+ token).
- Sampling: Logits dikonversi menjadi probabilitas melalui fungsi softmax, lalu token berikutnya dipilih berdasarkan strategi sampling (greedy, top-k, top-p, temperature, dsb).
Langkah 3 sampai 5 diulang secara autoregressive: token yang baru dihasilkan ditambahkan ke deretan input, dan model memproses ulang seluruh deretan untuk menghasilkan token berikutnya. Inilah yang membuat proses generation—tidak seperti proses klasifikasi—inheren lebih lambat dan membutuhkan lebih banyak komputasi.
Contoh Konkret: Tokenisasi Bahasa Indonesia
Mari kita hitung token untuk beberapa kalimat dalam bahasa Indonesia menggunakan tokenizer GPT-4 (cl100k_base):
| Kalimat | Karakter | Token | Keterangan |
|---|---|---|---|
| "Halo, apa kabar?" | 16 | 5 | Tanda baca jadi token terpisah |
| "Saya sedang belajar tentang token generation." | 44 | 12 | Kata "generation" dipecah menjadi 2 |
| "Budi pergi ke pasar untuk membeli ikan." | 42 | 11 | Kalimat natural Indonesia |
| "Pertanggungjawaban" | 19 | 7 | Kata panjang terpecah banyak |
| "Mengapa tokenisasi itu penting?" | 32 | 9 | Kata tanya + imbuhan |
Tabel Perbandingan Token per Bahasa
Jumlah token per karakter sangat bervariasi antarbahasa. Bahasa-bahasa yang menggunakan alfabet Latin dan memiliki struktur kata pendek (seperti Inggris) cenderung lebih efisien secara token dibandingkan bahasa dengan morfologi kompleks (seperti Jerman atau Indonesia) atau sistem logografik (seperti Mandarin):
| Bahasa | Rata-rata Karakter per Token | Efisiensi Relatif (vs English) | Contoh 100 Karakter ≈ ? Token |
|---|---|---|---|
| Inggris | ~4.0 | 1.0× (baseline) | 25 token |
| Indonesia | ~3.5 | 0.88× | 29 token |
| Jerman | ~3.0 | 0.75× | 33 token |
| Mandarin (Hanzi) | ~1.3 | 0.33× | 77 token |
| Jepang | ~1.8 | 0.45× | 56 token |
| Arab | ~2.8 | 0.70× | 36 token |
| Thai | ~2.0 | 0.50× | 50 token |
| Vietnam | ~3.2 | 0.80× | 31 token |
| Rusia (Cyrillic) | ~3.3 | 0.83× | 30 token |
| Korea (Hangul) | ~2.5 | 0.63× | 40 token |
Implikasinya signifikan: sebuah prompt 1.000 karakter dalam bahasa Mandarin akan menghabiskan sekitar 77 token, sementara prompt serupa dalam bahasa Inggris hanya 25 token. Namun sebaliknya, output model dalam bahasa Mandarin lebih boros token karena model harus menghasilkan lebih banyak token untuk menyampaikan informasi yang sama—sekitar 3 token Mandarin untuk setiap 1 token Inggris. Ini berarti pengguna non-Inggris secara efektif membayar lebih per unit informasi, baik dari segi biaya API maupun latency.
Rumus Dasar Estimasi Token
Untuk estimasi cepat, gunakan aturan praktis berikut:
| Skenario | Rumus |
|---|---|
| Bahasa Inggris | jumlah kata × 1.3 |
| Bahasa Indonesia | jumlah kata × 1.5 |
| Bahasa Mandarin | jumlah karakter ÷ 1.3 |
| Campuran kode (code + teks) | jumlah kata × 1.8 |
| Prompt dengan tabel/format | jumlah kata × 2.0 |
Contoh kalkulasi: Sebuah prompt sepanjang 500 kata dalam bahasa Indonesia kira-kira membutuhkan 500 × 1.5 = 750 token. Jika model merespon dengan 800 token output, total konsumsi token untuk satu putaran percakapan adalah 750 (input) + 800 (output) = 1.550 token. Pada model dengan pricing $15 per 1M token input dan $60 per 1M token output (setara GPT-4 Turbo), biayanya adalah (750 ÷ 1.000.000 × $15) + (800 ÷ 1.000.000 × $60) = $0,01125 + $0,048 = sekitar $0,06 per percakapan. Angka ini tampak kecil untuk satu percakapan, tetapi jika aplikasi Anda melayani 100.000 percakapan per hari, tagihannya mencapai $6.000 per hari hanya untuk inference.
Pemahaman tentang token ini bukan sekadar pengetahuan teoretis—ia berdampak langsung pada biaya operasional, arsitektur sistem, dan pengalaman pengguna. Bab-bab selanjutnya akan membangun fondasi ini untuk memahami metrik-metrik kinerja yang lebih dalam.
Bab 2 — Cara Kerja Inference LLM: Prefill & Decode
Ketika Anda menekan tombol "Generate" di ChatGPT, apa yang sebenarnya terjadi di server dalam sepersekian detik? Inferensi LLM bukanlah proses tunggal—ia terdiri dari dua fase yang sangat berbeda: Prefill dan Decode. Dua fase ini memiliki karakteristik komputasi, kebutuhan memori, dan profil latency yang sama sekali berbeda. Bab ini akan membedah keduanya secara detail.
Fase 1: Prefill — Proses Prompt Secara Paralel
Fase Prefill adalah langkah pertama ketika model menerima prompt dari pengguna. Dinamakan "Prefill" karena tujuannya adalah mengisi (pre-fill) Key-Value Cache (KV Cache) dengan representasi dari seluruh token input sekaligus.
Karakteristik utama fase Prefill:
- Pemrosesan paralel penuh: Semua token dalam prompt diproses secara bersamaan dalam satu forward pass. Transformer architecture memungkinkan komputasi paralel karena setiap token dapat "melihat" semua token lain melalui mekanisme attention tanpa perlu urutan iteratif.
- Komputasi matriks masif: Operasi dominan adalah matriks-matriks besar (GEMM — General Matrix Multiply), yang sangat dioptimalkan untuk GPU. GPU modern dengan Tensor Core (NVIDIA H100, B200) dapat mengeksekusi operasi ini dengan throughput puluhan hingga ratusan TFLOPS.
- Compute-bound: Fase ini terbatas oleh kemampuan komputasi GPU, bukan bandwidth memori. Semakin banyak token dalam prompt, semakin tinggi efisiensi komputasi karena GPU dapat memanfaatkan parallelism secara maksimal.
- KV Cache pertama kali dibuat: Pada akhir fase ini, model menghasilkan tensor K (Key) dan V (Value) untuk setiap layer dan setiap token, yang disimpan dalam memori GPU untuk digunakan pada fase Decode.
Ilustrasi: Prefill untuk Prompt 100 Token
Prompt: [T₁, T₂, T₃, ..., T₁₀₀]
↓ ↓ ↓ ↓
┌────────────────────────────────┐
│ Forward Pass Paralel │
│ (Satu langkah, semua token) │
└────────────────────────────────┘
↓ ↓ ↓ ↓
[KV₁, KV₂, KV₃, ..., KV₁₀₀] ← KV Cache
[L₁, L₂, L₃, ..., L₁₀₀] ← Logits → pilih T₁₀₁
Waktu yang dibutuhkan fase Prefill umumnya proporsional terhadap panjang prompt, tetapi dengan faktor yang sangat efisien. Sebuah prompt 1.000 token bisa diproses dalam 15-30 ms pada GPU modern, sementara prompt 100 token selesai dalam 5-10 ms. Perhatikan bahwa prompt 10× lebih panjang tidak memakan waktu 10× lebih lama—ini adalah keunggulan komputasi paralel.
Fase 2: Decode — Proses Autoregressive Satu Per Satu
Setelah Prefill selesai, model memasuki fase Decode—proses menghasilkan token output satu per satu. Inilah bagian yang membuat LLM terasa "berpikir" dan mengetik kata demi kata.
Karakteristik utama fase Decode:
- Autoregressive: Setiap token baru dihasilkan dengan melihat seluruh konteks sebelumnya (prompt + token yang sudah dihasilkan). Proses ini sequential—token ke-5 baru bisa dihasilkan setelah token ke-4 selesai.
- Memory-bandwidth bound: Tidak seperti Prefill yang didominasi komputasi matriks besar, Decode didominasi oleh operasi matrix-vector (GEMV). GPU sangat efisien untuk matriks besar, tetapi untuk vektor kecil, bottleneck-nya adalah seberapa cepat GPU dapat membaca parameter model dari HBM (High Bandwidth Memory) ke register/SRAM.
- KV Cache bertambah: Setiap langkah decode menghasilkan satu pasang tensor K dan V baru yang ditambahkan ke KV Cache. Cache ini terus membesar sepanjang proses generation, meningkatkan kebutuhan memori secara linear.
- Attention dengan seluruh konteks: Setiap langkah decode harus melakukan attention terhadap seluruh token sebelumnya (prompt + output). Semakin panjang konteks, semakin berat setiap langkah decode.
Ilustrasi: Decode untuk Menghasilkan 3 Token
Langkah 1: Input = [T₁...T₁₀₀] → Forward Pass → Token T₁₀₁ = "Saya"
Langkah 2: Input = [T₁...T₁₀₁] → Forward Pass → Token T₁₀₂ = "sedang"
Langkah 3: Input = [T₁...T₁₀₂] → Forward Pass → Token T₁₀₃ = "belajar"
⋮
Perhatikan bahwa setiap langkah decode memproses ulang semua token sebelumnya. Tanpa KV Cache, kompleksitas akan menjadi O(N²) terhadap panjang total—tidak scalable. KV Cache menghindari ini dengan menyimpan hasil komputasi K dan V dari langkah-langkah sebelumnya, sehingga setiap langkah decode hanya perlu mengkomputasi attention untuk token baru terhadap cache yang sudah ada.
Diagram Perbandingan Prefill vs Decode
Mengapa Decode Lebih Lambat?
Perbedaan kecepatan antara Prefill dan Decode bisa mencapai 50–100× untuk token yang sama. Mari kita bedah penyebabnya secara teknis:
| Aspek | Prefill | Decode |
|---|---|---|
| Bentuk operasi dominan | Matrix-Matrix (GEMM) | Matrix-Vector (GEMV) |
| Dimensi komputasi | batch_size × seq_len × d_model | 1 × 1 × d_model |
| Utilisasi GPU (Tensor Core) | 60–85% | 3–15% |
| Bottleneck | Compute (FLOPS) | Memory bandwidth (GB/s) |
| Throughput per step | Ratusan token per forward pass | 1 token per forward pass |
| Contoh: Prompt 1.000 token | ~20 ms (50.000 tok/s) | ~20 ms (50 tok/s) per step |
Angka-angka di atas menjelaskan mengapa LLM terasa "cepat" dalam memahami prompt (Prefill) tetapi "lambat" dalam mengetik respons (Decode). Prompt 1.000 token selesai diproses dalam ~20 ms, tetapi untuk menghasilkan 500 token output, dibutuhkan 500 × 20 ms = 10.000 ms = 10 detik.
Contoh Kalkulasi Waktu Total Inference
Mari kita hitung waktu total yang dibutuhkan untuk sebuah sesi tanya-jawab sederhana:
| Parameter | Nilai | Keterangan |
|---|---|---|
| Panjang prompt | 800 token | Pertanyaan + konteks |
| Panjang output | 300 token | Jawaban model |
| Kecepatan Prefill | 40 ms (20.000 tok/s efektif) | Model 7B di GPU L40S |
| Kecepatan Decode | 30 ms/token (~33 tok/s) | Satu langkah decode |
Total waktu = Prefill (40 ms) + Decode (300 × 30 ms) = 40 ms + 9.000 ms = 9.040 ms ≈ 9 detik.
Dari 9 detik tersebut, 99,6% waktu dihabiskan untuk fase Decode. Ini menjelaskan mengapa hampir semua upaya optimasi inference LLM—seperti speculative decoding, KV cache quantization, prefix caching, dan batching—berfokus pada mempercepat fase Decode. Prefill sudah sangat efisien; Decode-lah yang menjadi bottleneck utama.
Pemahaman tentang dua fase ini adalah prasyarat mutlak untuk membaca bab-bab selanjutnya tentang metrik latency. TTFT (Time to First Token) adalah tentang Prefill, sementara TPOT (Time Per Output Token) dan throughput adalah tentang Decode. Tanpa memahami perbedaan fundamental ini, mustahil untuk mengoptimalkan sistem LLM secara efektif.
Bab 3 — Anatomi Latency: TTFT, TPOT, Time-to-First-Token
Dalam dunia LLM inference, tidak cukup hanya mengatakan "model ini cepat" atau "model itu lambat". Kita perlu metrik yang membedah latency menjadi komponen-komponennya, karena setiap komponen memiliki implikasi yang berbeda terhadap pengalaman pengguna dan arsitektur sistem. Tiga metrik utama yang menjadi standar industri adalah TTFT, TPOT, dan end-to-end latency. Bab ini akan mengupas tuntas ketiganya.
Time to First Token (TTFT)
TTFT adalah waktu yang diukur dari saat pengguna mengirimkan prompt hingga token pertama dari respons model mulai muncul di layar. Ini adalah metrik yang paling terasa oleh pengguna—semakin pendek TTFT, semakin responsif aplikasi terasa.
TTFT sebagian besar ditentukan oleh fase Prefill. Komponen-komponen penyusun TTFT meliputi:
- Network round-trip: Waktu perjalanan data dari klien ke server (biasanya 10–200 ms tergantung lokasi geografis).
- Queueing delay: Waktu antrean jika server sedang sibuk melayani permintaan lain (0–500 ms tergantung load).
- Prompt tokenization: Proses memecah teks prompt menjadi token (biasanya <1 ms).
- Fase Prefill: Forward pass paralel untuk seluruh prompt (yang paling dominan).
- Sampling token pertama: Memilih token pertama dari logits output (biasanya <1 ms).
Secara kasar, TTFT ≈ Waktu Prefill + overhead jaringan + antrean.
TTFT untuk Berbagai Panjang Prompt
| Panjang Prompt (token) | TTFT (ms) — GPU L40S | TTFT (ms) — GPU H100 | TTFT (ms) — CPU (AVX512) |
|---|---|---|---|
| 100 | 12 | 6 | 350 |
| 500 | 18 | 9 | 1.600 |
| 2.000 | 35 | 16 | 6.800 |
| 8.000 | 90 | 38 | 28.000 |
| 32.000 | 350 | 130 | — |
Data di atas menunjukkan bahwa TTFT tumbuh sub-linear terhadap panjang prompt—hasil dari komputasi paralel fase Prefill. Namun, pada konteks sangat panjang (>8.000 token), attention mechanism mulai menjadi bottleneck karena kompleksitas O(N²) dari full attention.
Tokens Per Output Token (TPOT)
TPOT adalah waktu rata-rata yang dibutuhkan untuk menghasilkan satu token output setelah token pertama. Ini setara dengan latency per langkah decode. TPOT adalah metrik yang menentukan seberapa "lancar" atau "tersendat" teks muncul di layar.
TPOT = Total waktu decode ÷ Jumlah token output yang dihasilkan
Contoh:
Total waktu decode = 6.000 ms
Jumlah token output = 200 token
TPOT = 6.000 ÷ 200 = 30 ms/token
→ Setara dengan ~33 token per detik (tok/s)
TPOT sangat sensitif terhadap beberapa faktor:
- Ukuran model: Model 7B memiliki TPOT ~15–25 ms/token; model 70B memiliki TPOT ~60–120 ms/token; model 405B bisa mencapai 200–400 ms/token pada GPU yang sama.
- Jumlah concurrent request: Semakin banyak request yang dilayani bersamaan dalam satu batch, semakin besar TPOT per request karena total komputasi dibagi untuk lebih banyak request.
- Panjang konteks: Semakin panjang KV Cache (prompt + output sejauh ini), semakin berat operasi attention, sehingga TPOT meningkat secara linear terhadap panjang konteks total.
- Quantization: Model yang dikuantisasi (FP16 → INT8 → INT4) memiliki TPOT lebih rendah karena lebih sedikit data yang perlu dipindahkan dari memori ke prosesor.
End-to-End Latency
End-to-end latency adalah waktu total dari pengiriman prompt hingga seluruh respons selesai diterima oleh pengguna. Ini adalah metrik yang paling holistik dan paling relevan bagi pengguna akhir.
E2E Latency = TTFT + (jumlah_token_output × TPOT) + overhead_komunikasi
Contoh:
TTFT = 40 ms
TPOT = 30 ms/token
Output = 500 token
Overhead jaringan = 100 ms
E2E = 40 + (500 × 30) + 100 = 15.140 ms ≈ 15,1 detik
Perbandingan TTFT vs TPOT untuk Berbagai Skenario
Pentingnya masing-masing metrik sangat tergantung pada use case:
| Skenario Aplikasi | Prioritas | Alasan | Target TTFT | Target TPOT |
|---|---|---|---|---|
| Chatbot percakapan | TPOT > TTFT | Pengguna lebih sensitif terhadap kelancaran streaming | <200 ms | <25 ms |
| Search / RAG | TTFT > TPOT | Pengguna ingin jawaban singkat secepat mungkin | <100 ms | <50 ms |
| Coding autocomplete | TTFT ≈ TPOT | Kedua metrik krusial untuk responsivitas real-time | <50 ms | <10 ms |
| Analisis dokumen panjang | TTFT > TPOT | Waktu tunggu pertama terasa lebih lama untuk dokumen besar | <500 ms | <40 ms |
| Text-to-image / summarization | TTFT rendah | Pengguna lebih toleran terhadap total waktu asal responsif | <300 ms | <100 ms |
Grafik Perbandingan TTFT vs TPOT
Grafik di atas memperlihatkan secara visual bagaimana komposisi latency berbeda antarskenario. Coding autocomplete memiliki kebutuhan latency yang sangat ketat di kedua metrik (keduanya harus di bawah 20 ms), sementara analisis dokumen panjang lebih mentolerir TTFT yang tinggi selama TPOT tetap wajar.
Contoh Kalkulasi Lengkap: "Butuh Berapa Detik untuk Reply 500 Token?"
Mari kita hitung end-to-end latency untuk skenario realistis menggunakan data benchmark:
Skenario A: Model Llama 3 8B (FP16) di GPU L40S, prompt 500 token, output 500 token:
| Komponen | Nilai | Kalkulasi | Subtotal |
|---|---|---|---|
| TTFT (Prefill 500 token) | 20 ms | — | 20 ms |
| TPOT | 28 ms/token | 500 × 28 ms | 14.000 ms |
| Overhead (jaringan + API) | 50 ms | — | 50 ms |
| Total E2E | 14.070 ms ≈ 14 detik |
Skenario B: Model yang sama dengan speculative decoding (spekulasi 3 token per langkah):
| Komponen | Nilai | Kalkulasi | Subtotal |
|---|---|---|---|
| TTFT | 20 ms | — | 20 ms |
| TPOT (efektif setelah spekulasi) | 12 ms/token | 500 × 12 ms | 6.000 ms |
| Overhead | 50 ms | — | 50 ms |
| Total E2E | 6.070 ms ≈ 6 detik |
Dengan speculative decoding, waktu respons berkurang dari 14 detik menjadi 6 detik—peningkatan 2,3×. Namun speculative decoding tidak selalu membawa hasil yang sama; efektivitasnya sangat bergantung pada acceptance rate (seberapa sering token spekulatif diterima oleh draf model).
Skenario C: Model GPT-4 class (≈1.7T parameter, sparse) di infrastruktur OpenAI:
| Komponen | Nilai | Kalkulasi | Subtotal |
|---|---|---|---|
| TTFT (Prefill 500 token) | 200 ms | — | 200 ms |
| TPOT | 30 ms/token | 500 × 30 ms | 15.000 ms |
| Overhead | 100 ms | — | 100 ms |
| Total E2E | 15.300 ms ≈ 15,3 detik |
Meskipun GPT-4 adalah model yang jauh lebih besar dan cerdas, waktu inferensinya tidak 50× lebih lambat dari model 8B (hanya ~3× lebih lambat dalam throughput) berkat optimasi infrastruktur masif—ribuan GPU H100 yang bekerja secara paralel dengan pipeline parallelism, tensor parallelism, dan teknik-teknik tingkat lanjut seperti continuous batching.
Metrik TTFT dan TPOT ini akan menjadi dasar untuk memahami metrik turunan yang akan dibahas di bab berikutnya: tokens per detik (tok/s) dan throughput.
Bab 4 — Metrik Kinerja: tok/s, tok/s/user, Throughput
Setelah memahami anatomi latency (TTFT dan TPOT) di bab sebelumnya, kini saatnya membahas metrik-metrik turunan yang menjadi "bahasa universal" dalam industri LLM inference. Jika TTFT dan TPOT adalah metrik mikro yang mengukur setiap langkah individu, maka tok/s dan throughput adalah metrik makro yang menggambarkan performa sistem secara agregat. Bab ini akan menjelaskan perbedaan mendasar ketiganya dan mengapa memilih metrik yang salah bisa menyesatkan.
Definisi dan Perbedaan Ketiga Metrik
1. Tok/s (Tokens Per Second)
Tok/s adalah metrik paling dasar: berapa banyak token yang dapat dihasilkan oleh sistem dalam satu detik. Ini adalah kebalikan dari TPOT:
tok/s = 1 ÷ TPOT (dalam detik)
Jika TPOT = 25 ms, maka tok/s = 1 ÷ 0,025 = 40 tok/s
Metrik ini sering digunakan dalam benchmark untuk membandingkan kecepatan antar model atau antar konfigurasi hardware. Namun, tok/s hanya menggambarkan satu session tunggal—ia tidak memberi informasi tentang bagaimana sistem berperilaku di bawah beban banyak pengguna.
2. Tok/s/user (Tokens Per Second Per User)
Tok/s/user adalah metrik yang mengukur kecepatan token per pengguna dalam sistem multi-tenant. Ini penting karena ketika server melayani banyak pengguna secara bersamaan, kecepatan per pengguna biasanya turun karena resource GPU dibagi.
tok/s/user = Total throughput sistem ÷ Jumlah pengguna aktif
Jika sistem menghasilkan 400 tok/s secara total dan melayani 10 pengguna:
tok/s/user = 400 ÷ 10 = 40 tok/s per pengguna
Dalam sistem yang menggunakan continuous batching, tok/s/user cenderung menurun seiring bertambahnya jumlah pengguna karena setiap batch lebih besar, TPOT per langkah naik, dan setiap pengguna mendapat giliran yang lebih jarang dalam satu siklus batching.
3. Throughput (System Throughput)
Throughput adalah jumlah total token yang dihasilkan oleh sistem per satuan waktu, diukur dari semua pengguna yang aktif. Ini adalah metrik kapasitas sistem—seberapa banyak kerja yang dapat dilakukan hardware dalam satu detik.
Throughput = Jumlah token output ÷ Total waktu (termasuk idle dan queueing)
Dalam satu menit, sistem menghasilkan 24.000 token:
Throughput = 24.000 ÷ 60 = 400 tok/s (sistem)
Throughput adalah metrik yang paling relevan untuk capacity planning dan cost optimization. Ini menentukan berapa banyak pengguna yang dapat Anda layani dengan hardware yang tersedia.
Mengapa tok/s Saja Tidak Cukup?
Melihat tok/s saja memberikan gambaran yang sangat parsial—bahkan menyesatkan. Sebuah sistem mungkin mencapai 500 tok/s saat idle dengan satu pengguna, tetapi turun drastis menjadi 50 tok/s total saat 50 pengguna aktif (yang berarti hanya 1 tok/s per pengguna—sangat lambat). Inilah mengapa kita perlu ketiga metrik secara simultan.
Perhatikan contoh berikut:
| Sistem | tok/s (1 user) | tok/s (10 user) | Throughput (tok/s) | tok/s/user (10 user) |
|---|---|---|---|---|
| Sistem A: 1× H100, tanpa batching | 80 | 80 | 80 | 8,0 |
| Sistem B: 1× H100, continuous batching | 60 | 140 | 140 | 14,0 |
| Sistem C: 4× H100, tensor parallel | 45 | 400 | 400 | 40,0 |
| Sistem D: CPU, AVX512 | 3 | 3 | 3 | 0,3 |
Sistem A memiliki tok/s per user tertinggi (80) untuk 1 user, tetapi tidak scalable—tok/s/user turun drastis ke 8,0 saat ada 10 user. Sistem B lebih lambat per user saat idle (60 vs 80), tetapi dengan continuous batching, melalui putaran total meningkat menjadi 140 tok/s dengan 14 tok/s per user. Sistem C adalah yang paling kuat untuk multi-user. Sistem D—inferensi CPU—tidak layak untuk workload real-time.
Hubungan Antara TPOT, tok/s, dan Throughput
Ketiga metrik ini saling terkait secara matematis:
| Metrik | Rumus | Satuan | Makna |
|---|---|---|---|
| TPOT | Waktu decode per langkah | ms | Latency per token |
| tok/s | 1 / TPOT (detik) | tok/s | Kecepatan per session |
| Throughput | tok/s × batch_size | tok/s | Kapasitas sistem |
| tok/s/user | Throughput / n_users | tok/s | Kecepatan per pengguna |
Namun, perlu dicatat bahwa hubungan ini tidak linear sempurna. Ketika batch_size bertambah, TPOT per langkah juga bertambah (karena satu forward pass harus memproses lebih banyak sequence), sehingga tok/s per user tidak sama dengan tok/s standalone dibagi jumlah user.
Contoh Kalkulasi: Throughput untuk 10 User
Mari kita hitung kebutuhan dan kapasitas sistem untuk skenario aplikasi chatbot yang melayani 10 pengguna secara bersamaan.
Asumsi:
- Setiap pengguna mengirimkan prompt 200 token dan mengharapkan respons 300 token
- Target: setiap pengguna selesai dalam waktu ≤ 15 detik
- GPU yang digunakan: NVIDIA L40S dengan continuous batching
Langkah 1: Hitung total token yang perlu dihasilkan
Total token output = 10 user × 300 token = 3.000 token
Target waktu = 15 detik
Throughput minimum yang diperlukan = 3.000 ÷ 15 = 200 tok/s
Langkah 2: Verifikasi dengan karakteristik hardware
Dengan continuous batching, L40S untuk model 8B dapat mencapai throughput ~250 tok/s pada batch size 10. Ini berarti setiap langkah decode memproses 10 sequence sekaligus, dengan TPOT per langkah sekitar 40 ms (naik dari 25 ms saat single user karena total sequence length dalam batch lebih panjang). Jadi throughput efektif:
Throughput = batch_size ÷ TPOT_per_langkah
= 10 ÷ 0,04
= 250 tok/s ✅ (di atas 200, memenuhi target)
tok/s/user = 250 ÷ 10 = 25 tok/s per pengguna
→ Waktu per pengguna untuk 300 token = 300 ÷ 25 = 12 detik ✅
Langkah 3: Hitung dengan margin keamanan
Dalam praktiknya, throughput tidak konstan karena panjang sequence bervariasi dan ada overhead seperti Prefill untuk prompt baru. Kita tambahkan margin 30%:
Token per user (dengan margin = 1,3×) = 300 × 1,3 = 390 token
Total token = 10 × 390 = 3.900 token
Throughput yang dibutuhkan (15 detik) = 3.900 ÷ 15 = 260 tok/s
Dengan L40S: throughput 250 tok/s ❌ (sedikit di bawah target)
→ Solusi: Kurangi batch size jadi 8 user simultaneous, atau upgrade ke H100 (throughput ~450 tok/s)
Kalkulasi di atas menunjukkan betapa pentingnya perencanaan kapasitas yang akurat. Margin 30% sering diperlukan karena faktor-faktor seperti prompt preprocessing, attention overhead dari KV Cache yang membesar, dan scheduling overhead dalam continuous batching.
Tabel Perbandingan Metrik untuk Berbagai Konfigurasi GPU
| GPU | Model | Quant | tok/s (1 user) | Throughput (8 user) | tok/s/user (8 user) | Cost/jam |
|---|---|---|---|---|---|---|
| RTX 4090 | LLaMA 3 8B | FP16 | 55 | 180 | 22,5 | ~$1,50 |
| RTX 4090 | LLaMA 3 8B | INT4 | 110 | 350 | 43,8 | ~$1,50 |
| L40S (48 GB) | LLaMA 3 8B | FP16 | 40 | 250 | 31,3 | ~$3,50 |
| H100 (80 GB) | LLaMA 3 8B | FP16 | 80 | 480 | 60,0 | ~$4,50 |
| H100 (80 GB) | LLaMA 3 70B | FP16 | 12 | 70 | 8,8 | ~$4,50 |
| H100 (80 GB) | LLaMA 3 70B | INT4 | 35 | 200 | 25,0 | ~$4,50 |
| 2× H100 | LLaMA 3 405B | INT4 | 5 | 30 | 3,8 | ~$9,00 |
Data di atas menunjukkan beberapa insight penting:
- Quantization memberi keuntungan 2-3× pada tok/s karena mengurangi bandwidth memori yang dibutuhkan—bottleneck utama fase Decode.
- Model besar dengan quantisasi (70B INT4) bisa setara dengan model kecil FP16 dalam hal throughput per user (25 vs 22,5 tok/s/user), tetapi dengan kualitas output yang lebih baik.
- Efisiensi biaya: RTX 4090 dengan INT4 memiliki rasio tok/s/$ terbaik untuk model kecil. H100 unggul untuk model besar yang membutuhkan lebih banyak VRAM.
- Continuous batching meningkatkan throughput 3-6× dibandingkan single-user, tetapi tok/s/user turun karena sumber daya dibagi.
Pemahaman tentang ketiga metrik ini—tok/s, tok/s/user, dan throughput—memungkinkan Anda membuat keputusan yang tepat tentang hardware, konfigurasi, dan kapasitas. Bab terakhir bagian ini akan menjelaskan mengapa semua metrik ini pada akhirnya bermuara pada satu hal: pengalaman pengguna.
Bab 5 — Mengapa Token Speed Begitu Krusial?
Sejauh ini kita telah mempelajari apa itu token, bagaimana LLM menghasilkan token, dan bagaimana mengukur kecepatannya. Sekarang muncul pertanyaan paling praktis: mengapa semua ini penting? Apakah selisih 10 tok/s benar-benar terasa? Pada titik mana kecepatan token menjadi "cukup"? Dan apa dampak token speed yang lambat terhadap bisnis, produktivitas, dan psikologi pengguna? Bab ini menjawab pertanyaan-pertanyaan tersebut.
Pengalaman Pengguna (UX): Delay >2s Bikin Frustrasi
Penelitian tentang response time tolerance sudah mapan sejak era web 1.0 dan diperkuat oleh studi UX modern. Prinsip-prinsip berikut berlaku langsung untuk LLM inference:
- 0,1 detik: Batas di mana pengguna merasa sistem bereaksi secara instan. Tidak diperlukan indikator loading.
- 1,0 detik: Batas di mana alur pikir pengguna tetap tidak terputus. Pengguna mungkin menyadari adanya delay, tetapi belum merasa terganggu.
- 2,0 detik: Ambang batas kritis. Di atas 2 detik, pengguna mulai kehilangan fokus dan menunggu secara sadar. Risiko abandon meningkat.
- 5,0 detik: Sebagian besar pengguna akan meninggalkan aplikasi atau mencari alternatif.
- 10 detik+: Hanya pengguna yang sangat termotivasi yang akan bertahan. Cocok untuk batch processing, bukan interaksi real-time.
Untuk LLM, ambang batas ini perlu diterjemahkan secara hati-hati karena respons model bersifat streaming—tidak seperti halaman web yang muncul sekaligus. Jika TTFT (waktu hingga token pertama) melebihi 1 detik, pengguna akan merasa aplikasi "lag". Jika TPOT terlalu lambat (misalnya >50 ms/token → <20 tok/s), pengguna akan melihat teks muncul dengan kecepatan yang mengganggu—lebih lambat dari kecepatan membaca normal (200-300 kata per menit ≈ 30-50 tok/s untuk bahasa Indonesia).
Ironisnya, streaming sebenarnya membuat persepsi latency lebih buruk daripada respons non-streaming untuk total waktu yang sama. Ketika pengguna melihat teks muncul kata demi kata, mereka secara psikologis "menunggu" setiap kata baru, menciptakan pengalaman subjektif yang lebih lambat daripada jika seluruh teks muncul sekaligus setelah 10 detik. Inilah mengapa kecepatan token yang konsisten dan tinggi mutlak diperlukan untuk aplikasi LLM interaktif.
Perbandingan Kecepatan Token Antar Model
| Model | Perkiraan tok/s | Kategori | Idealisasi Penggunaan |
|---|---|---|---|
| GPT-4o (OpenAI) | ~80–120 | Sangat Cepat | Chat real-time, coding assistant |
| Claude 3.5 Sonnet (Anthropic) | ~60–80 | Cepat | Analisis, coding, percakapan |
| Gemini 2.0 Pro (Google) | ~100–150 | Sangat Cepat | Multimodal, real-time |
| GPT-4 (Generasi sebelumnya) | ~25–35 | Sedang | Analisis kompleks (non-real-time) |
| Llama 3 8B (Lokal, GPU RTX 4090) | ~55–110 | Cepat | Self-hosted, privasi penuh |
| Llama 3 70B (Lokal, 2× RTX 4090) | ~10–20 | Lambat | Offline, non-real-time |
| Whisper + LLaMA (CPU saja) | ~1–3 | Sangat Lambat | Eksperimen, batch processing |
| Model lama (GPT-2, OPT): CPU | ~0,5–2 | Tidak Layak | Hanya untuk edukasi |
Perbedaan antara GPT-4o (~100 tok/s) dan model lokal 70B di GPU konsumen (~15 tok/s) bukan sekadar angka—ia adalah perbedaan antara percakapan yang terasa natural dan percakapan yang membuat pengguna menunggu 3-5 detik untuk setiap kalimat pendek. Untuk konteks yang lebih jelas: kecepatan membaca rata-rata manusia dewasa adalah sekitar 200-250 kata per menit (~30-40 tok/s untuk bahasa Indonesia). Jika model menghasilkan token di bawah 30 tok/s, pengguna secara teknis membaca lebih cepat daripada model menulis—pengalaman yang membuat frustrasi.
Dampak pada Produktivitas Coding
Token speed memiliki dampak yang sangat terukur dalam konteks coding assistant seperti GitHub Copilot, Cursor, atau Continue.dev. Studi tentang produktivitas developer menunjukkan korelasi langsung antara latency autocomplete dan jumlah saran yang diterima:
| Latency Autocomplete | Saran Diterima/Jam | Dampak Produktivitas | Persepsi Developer |
|---|---|---|---|
| <200 ms (tok/s > 50) | 40–60 | Flow state terjaga, sangat produktif | "Seperti magic" |
| 200–500 ms (tok/s ~20-50) | 20–35 | Sedikit gangguan, masih membantu | "Lumayan membantu" |
| 500 ms – 1,5 dtk (tok/s ~5-20) | 5–15 | Sering diabaikan, konteks hilang | "Lebih lambat dari mengetik sendiri" |
| >1,5 dtk (tok/s < 5) | 0–3 | Kontraproduktif, saran jarang digunakan | "Mengganggu, saya matikan" |
Data ini menunjukkan bahwa ada threshold kritis sekitar 20-30 tok/s di bawah mana autocomplete menjadi kontraproduktif. Developer akan menolak saran karena mereka sudah selesai mengetik sendiri sebelum saran selesai muncul. Di sisi lain, di atas 50 tok/s, autocomplete terasa "ajaib" dan menjadi bagian integral dari alur kerja.
Dampak pada Customer Service
Dalam aplikasi customer service berbasis LLM, setiap milidetik latency memiliki dampak finansial. Sebuah studi oleh Google Cloud menunjukkan bahwa:
- Setiap 1 detik tambahan latency pada chatbot customer service mengurangi customer satisfaction score (CSAT) sebesar 5-8%.
- 80% pelanggan akan meninggalkan percakapan jika respons pertama (TTFT) melebihi 3 detik.
- 50% pelanggan yang mengalami latency tinggi tidak akan kembali menggunakan layanan tersebut.
Untuk aplikasi di mana kecepatan adalah faktor kritis—seperti real-time translation, voice assistant, atau financial trading assistant—kecepatan token di bawah 20 tok/s dapat membuat aplikasi tidak dapat digunakan sama sekali. Bayangkan seorang trader yang meminta analisis real-time pasar saham dan harus menunggu 15 detik untuk respons 300 token yang datang tersendat-sendat. Dalam konteks seperti ini, latency bukan hanya masalah UX—ia adalah masalah bisnis.
Tabel Skenario dan Kebutuhan Minimum tok/s
| Skenario Aplikasi | Minimum tok/s | Target tok/s | Ideal tok/s | Catalan |
|---|---|---|---|---|
| Coding autocomplete inline | 30 | 50 | 100+ | Kecepatan mengetik dev ~40-80 CPM |
| Chatbot percakapan real-time | 20 | 40 | 80+ | Streaming harus terasa natural |
| Voice assistant (<50 ms/chunk) | 50 | 80 | 200+ | Chunk pertama harus sangat cepat |
| RAG / Search (jawaban singkat) | 15 | 30 | 60+ | TTFT lebih penting daripada tok/s |
| Translasi real-time | 40 | 60 | 120+ | Sinkron dengan kecepatan bicara |
| Summarization dokumen panjang | 10 | 20 | 40+ | Pengguna lebih toleran menunggu |
| Batch processing (async) | 5 | 15 | 30+ | Tidak interaktif, throughput diutamakan |
| Edukasi / sandbox eksperimen | 2 | 10 | 20+ | CPU inference bisa diterima untuk belajar |
Contoh Kalkulasi Dampak Token Speed pada Produktivitas
Mari kita hitung dampak kuantitatif perbedaan token speed untuk tim developer yang menggunakan coding assistant:
Parameter:
- Tim: 20 developer
- Saran autocomplete per developer per jam: tergantung tok/s (lihat tabel di atas)
- Jam kerja efektif coding: 5 jam/hari
- Hari kerja: 220 hari/tahun
- Rata-rata gaji developer (Indonesia, senior): Rp 40.000.000/bulan
- Nilai per jam developer: Rp 40.000.000 ÷ 160 jam ≈ Rp 250.000/jam
Skenario A: Token speed tinggi (80 tok/s → 50 saran diterima/jam)
Total saran diterima per hari = 50 × 5 = 250 saran/developer/hari
Estimasi waktu hemat per saran = 15 detik (mengetik manual)
Total waktu hemat = 250 × 15 = 3.750 detik ≈ 62,5 menit/developer/hari
Nilai waktu hemat = 62,5 menit × (Rp 250.000 ÷ 60) ≈ Rp 260.000/developer/hari
Nilai setahun = Rp 260.000 × 220 × 20 = Rp 1.144.000.000
Skenario B: Token speed rendah (10 tok/s → 5 saran diterima/jam)
Total saran diterima per hari = 5 × 5 = 25 saran/developer/hari
Estimasi waktu hemat per saran = 8 detik (saran sering tidak lengkap)
Total waktu hemat = 25 × 8 = 200 detik ≈ 3,3 menit/developer/hari
Nilai waktu hemat = 3,3 menit × (Rp 250.000 ÷ 60) ≈ Rp 13.750/developer/hari
Nilai setahun = Rp 13.750 × 220 × 20 = Rp 60.500.000
Perbedaan antara skenario A dan B: Rp 1,14 miliar vs Rp 60,5 juta per tahun—hampir 20× lipat. Untuk tim 20 developer, investasi dalam infrastruktur inferensi yang lebih cepat (dari GPU konsumen ke H100 atau layanan API premium) memberikan ROI yang sangat jelas.
Kesimpulan Bagian 1
Bagian ini telah membangun fondasi yang kokoh untuk memahami token generation. Kita telah belajar bahwa:
- Token adalah unit dasar pemrosesan LLM—bukan kata atau karakter—dan pemahaman tentang tokenisasi penting untuk mengestimasi biaya dan kinerja.
- Inferensi LLM terdiri dari dua fase yang sangat berbeda: Prefill (paralel, compute-bound) dan Decode (sequential, memory-bound). Sebagian besar waktu dan optimasi inference berfokus pada Decode.
- Latency diukur melalui TTFT (waktu ke token pertama), TPOT (waktu per token output), dan end-to-end latency. Setiap metrik memiliki implikasi berbeda terhadap UX dan arsitektur.
- Metrik kinerja seperti tok/s, tok/s/user, dan throughput memberikan pandangan yang saling melengkapi. Tidak cukup hanya melihat satu metrik; ketiganya diperlukan untuk perencanaan kapasitas yang akurat.
- Token speed memiliki dampak langsung pada pengalaman pengguna, produktivitas, dan finansial. Ambang batas 20-30 tok/s adalah minimum untuk aplikasi interaktif; 50+ tok/s adalah target untuk pengalaman yang memuaskan.
Dengan pemahaman ini, kita siap melanjutkan ke Bagian 2, yang akan membahas infrastruktur dan konfigurasi hardware—bagaimana memilih GPU, mengoptimalkan VRAM, dan mengkonfigurasi sistem untuk mencapai token speed yang diinginkan.
Bagian 2 — Faktor yang Mempengaruhi Kecepatan Token
Pada Bagian 1 kita telah mempelajari rumus fundamental dan alur komputasi di balik setiap token yang dihasilkan oleh LLM. Sekarang saatnya bertanya: mengapa dua model yang berbeda—atau bahkan model yang sama di dua mesin berbeda—bisa menghasilkan token dengan kecepatan yang sangat timpang? Jawabannya tidak pernah tunggal. Kecepatan token adalah hasil interaksi kompleks antara arsitektur model, presisi numerik, perangkat keras, bandwidth memori, panjang konteks, dan strategi batching. Bab-bab berikut akan mengupas satu per satu faktor tersebut dengan data dan kalkulasi konkret.
Bab 6 — Ukuran Model & Parameter Count
Hubungan antara jumlah parameter (parameter count) dan kecepatan token bersifat hampir linear: dua kali lipat parameter berarti dua kali lipat FLOPs yang harus dihitung, yang—dengan hardware yang sama—berarti sekitar setengah kecepatan token. Namun kenyataannya lebih bernuansa karena parameter juga menentukan VRAM yang dibutuhkan, yang pada gilirannya menentukan apakah model bisa dimuat di GPU tertentu atau harus dijalankan lebih lambat via CPU offloading.
6.1 Hubungan Parameter → VRAM → FLOPs
Untuk memahami rantai kausalnya, mari kita mulai dari rumus dasar VRAM yang dibutuhkan untuk menyimpan bobot model:
VRAM (GB) = (Parameter Count × Bytes per Parameter) / 2³⁰
Nilai Bytes per Parameter bergantung pada presisi numerik yang digunakan (dibahas detail di Bab 7). Pada FP16, setiap parameter membutuhkan 2 byte; pada FP32, 4 byte; pada INT4, 0,5 byte.
Tabel berikut menunjukkan kebutuhan VRAM untuk beberapa ukuran model populer pada berbagai presisi:
| Model (Parameter) | FP32 (4B) | FP16 (2B) | INT8 (1B) | INT4 / Q4 (0,5B) | NF4 (≈0,5B) |
|---|---|---|---|---|---|
| 1,5B (Gemma 2) | 5,6 GB | 2,8 GB | 1,4 GB | 0,7 GB | 0,85 GB |
| 7B (Llama 2) | 26,1 GB | 13,1 GB | 6,5 GB | 3,3 GB | 3,9 GB |
| 12B (Gemma 4) | 44,7 GB | 22,4 GB | 11,2 GB | 5,6 GB | 6,7 GB |
| 32B (Qwen 2.5) | 119,2 GB | 59,6 GB | 29,8 GB | 14,9 GB | 17,8 GB |
| 70B (Llama 3) | 260,8 GB | 130,4 GB | 65,2 GB | 32,6 GB | 39,1 GB |
| 405B (Llama 3.1) | 1.508 GB | 754 GB | 377 GB | 189 GB | 225 GB |
Perhatikan bahwa kolom NF4 (kiri) menunjukkan angka sedikit lebih besar dari INT4 murni. Ini karena NF4 menggunakan representasi floating-point 4-bit yang memiliki distribusi nilai non-uniform, membutuhkan metadata tambahan (scaling factors) sekitar 0,125-0,25 bit per parameter.
6.2 Kalkulasi Kecepatan: 7B vs 70B
Mari kita hitung dampak parameter count pada token speed secara konkret. Ambil Llama 3 7B dan Llama 3 70B, keduanya dijalankan di GPU A100 80GB (SXM3, 2039 GB/s bandwidth) pada FP16.
Model 7B (FP16):
VRAM bobot = 7 × 10⁹ × 2 = 14 × 10⁹ byte ≈ 13,1 GB
FLOPs forward pass ≈ 2 × 7 × 10⁹ × (seq_len × n_layers × d_model × ...)
Token/s ≈ bandwidth / (param × bytes_per_param)
≈ 2039 GB/s / (7 × 10⁹ × 2)
≈ 2039 / 14
≈ 145,6 token/s
Model 70B (FP16):
VRAM bobot = 70 × 10⁹ × 2 = 140 × 10⁹ byte ≈ 130,4 GB
Token/s ≈ 2039 / (70 × 2)
≈ 2039 / 140
≈ 14,6 token/s
Perbandingan:
Rasio parameter = 70B / 7B = 10×
Rasio VRAM = 130,4 / 13,1 ≈ 10×
Rasio speed = 14,6 / 145,6 ≈ 0,10×
Model 70B 10× lebih besar dan menghasilkan token 10× lebih lambat pada GPU yang sama — tepat sesuai prediksi linear. Namun di dunia nyata, rasio bisa sedikit berbeda karena overhead komunikasi (pada model yang membutuhkan multi-GPU) dan faktor arithmetic intensity yang dibahas pada Bagian 3.
6.3 Non-Linear pada Multi-GPU
Ketika model terlalu besar untuk satu GPU (misal Llama 405B), model harus didistribusikan ke banyak GPU. Di sinilah faktor non-linear mulai bermain:
- Overhead komunikasi: Setiap lapisan membutuhkan all-reduce antar GPU, menambah latensi non-linear.
- Scaling efficiency: Idealnya 8 GPU = 8× lebih cepat, tapi efisiensi riil 75-90% karena komunikasi.
- Pipeline bubbles: Pada pipeline parallelism, ada periode idle saat GPU menunggu data dari GPU lain.
Kesimpulan Bab 6: parameter count adalah faktor dominan namun bukan satu-satunya. Model besar memang lebih lambat, tetapi quantization (Bab 7) dan pemilihan hardware yang tepat (Bab 8) dapat memitigasi sebagian besar slowdown tersebut.
Bab 7 — Quantization: FP16 → INT8 → INT4 → NF4
Quantization adalah teknik mengurangi presisi numerik bobot model untuk menekan ukuran VRAM dan mempercepat inferensi — dengan konsekuensi penurunan kualitas output. Ini seperti menyimpan foto sebagai JPEG alih-alih RAW: ukuran file jauh lebih kecil, tapi detail halus mungkin hilang. Di dunia LLM, quantization memungkinkan model 70B berjalan di GPU konsumen yang hanya memiliki VRAM 24 GB.
7.1 Bagaimana Quantization Bekerja
Bobot LLM awalnya dilatih dalam FP32 (32-bit floating-point, presisi penuh). Sebagian besar framework kemudian mengonversi ke FP16 untuk inferensi tanpa kehilangan kualitas berarti. Quantization melangkah lebih jauh:
- FP16 → INT8: Setiap bobot 16-bit dipetakan ke 8-bit integer (256 nilai diskrit). Scaling factor menyimpan rentang asli.
- INT8 → INT4: Hanya 16 nilai yang tersedia per bobot. Dibutuhkan group quantization (biasanya per 32-128 parameter) agar presisi tetap terjaga.
- NF4: Format 4-bit NormalFloat dari QLoRA, menggunakan distribusi normal untuk memetakan nilai — informasi lebih banyak disimpan di zona densitas tinggi.
Prosesnya kurang lebih sebagai berikut:
Diketahui:
- Bobot asli: w ∈ [w_min, w_max] dalam FP16
- Quantized: w_q = round((w - w_min) / (w_max - w_min) × (2^n - 1))
- Dequantized: w' = w_min + w_q × (w_max - w_min) / (2^n - 1)
- Error: ε = |w - w'|
Semakin kecil n, semakin besar error kuantisasi rata-rata. Namun karena bobot LLM cenderung terdistribusi normal di sekitar nol, error ini sering tidak terlalu memengaruhi output final — terutama untuk model besar yang sudah memiliki inherent redundancy.
7.2 Tabel Perbandingan Presisi
| Presisi | Bit / Param | VRAM 7B | VRAM 70B | Speed (vs FP16) | Quality Loss | Use Case |
|---|---|---|---|---|---|---|
| FP32 | 32 | 26,1 GB | 261 GB | 0,5× — 0,7× | − | Training / benchmark |
| FP16 | 16 | 13,1 GB | 130 GB | 1,0× (baseline) | − | Inferensi standar |
| INT8 | 8 | 6,5 GB | 65 GB | 1,1× — 1,3× | < 0,5% | Deploy di GPU medium |
| INT4 | 4 | 3,3 GB | 33 GB | 1,2× — 1,5× | 1-3% | GPU konsumen (RTX 4090) |
| NF4 (QLoRA) | ≈4,5 | 3,9 GB | 39 GB | 1,1× — 1,3× | 0,5-1,5% | Fine-tuning di GPU kecil |
| INT2 | 2 | 1,7 GB | 17 GB | 1,3× — 1,6× | 5-10% | Eksperimental |
7.3 Studi Kasus: Gemma 4 12B
Mari kita bandingkan Gemma 4 12B dalam dua konfigurasi: FP16 di A100 80GB vs Q4_K_M (4-bit GGUF) di RTX 4090 24GB.
Konfigurasi A: FP16 di A100 80GB
VRAM bobot = 12 × 10⁹ × 2 = 24 GB
VRAM total ≈ 24 + 4 GB (KV cache + overhead) = ~28 GB
Bandwidth = 2039 GB/s (A100 SXM)
Token/s teoritis = 2039 / (12 × 2) = 85 token/s
Token/s riil ≈ 50-65 token/s (tergantung context length)
Konfigurasi B: Q4_K_M di RTX 4090
VRAM bobot ≈ 12 × 10⁹ × 0,5 = 6 GB (+ metadata ~1,5 GB)
VRAM total ≈ 7,5 + 4 GB = ~11,5 GB
Bandwidth = 1008 GB/s (RTX 4090)
Token/s teoritis = 1008 / (12 × 0,5 + ~1 bit overhead)
≈ 1008 / 7 = 144 token/s
Token/s riil ≈ 70-90 token/s (tergantung implementasi)
Hasilnya menarik: meskipun A100 adalah GPU kelas data center yang lebih mahal, RTX 4090 dengan Q4 menghasilkan token lebih cepat (70-90 vs 50-65 tok/s) karena quantization mengurangi ukuran data yang harus ditransfer dari VRAM ke compute unit — dan RTX 4090 memiliki memory bandwidth yang sangat kompetitif.
7.4 Rekomendasi per Skenario
- Production API (high latency, high throughput): FP16/FP8. Prioritaskan kualitas. Gunakan A100/H100 dengan VRAM besar.
- Local deployment (GPU konsumen, 8-24 GB VRAM): Q4_K_M atau Q5_K_M. Kualitas hampir setara FP16 untuk sebagian besar tugas.
- Edge device / Mobile: Q4 atau Q2 + pruning/distillation. Kualitas sekunder terhadap ukuran dan kecepatan.
- Fine-tuning: QLoRA (NF4 base). Memungkinkan fine-tuning model 70B di satu RTX 4090 24GB.
- Benchmarking / Riset: FP32 sebagai ground truth, FP16 untuk kecepatan wajar dengan presisi penuh.
Poin kunci: quantization bukan "gratis". Setiap bit yang dihemat mengurangi ruang representasi bobot. Namun untuk sebagian besar aplikasi praktis, trade-off Q4 sangat masuk akal — terutama ketika pilihannya adalah "Q4 di GPU lokal" vs "tidak bisa jalan sama sekali."
Bab 8 — Hardware: CPU vs GPU vs TPU vs NPU vs ASIC
Tidak semua prosesor diciptakan sama. CPU dirancang untuk eksekusi berurutan yang fleksibel; GPU untuk komputasi paralel masif; TPU untuk tensor operasi terakselerasi; NPU untuk inferensi efisien daya; dan ASIC untuk satu tugas spesifik. Masing-masing memiliki profil kecepatan, biaya, dan efisiensi yang sangat berbeda untuk menjalankan LLM.
8.1 Perbandingan Semua Jenis Hardware
| Jenis | Contoh | Memory BW | FLOPs FP16 | Harga | Daya | LLM Ready? |
|---|---|---|---|---|---|---|
| CPU | AMD Ryzen 9 7950X | ~50 GB/s | ~2 TFLOPS | $700 | 170W | ⚠️ Model ≤3B di Q4 |
| GPU Konsumen | RTX 4090 | 1008 GB/s | 82,6 TFLOPS | $1.600 | 450W | ✅ Model ≤34B di Q4 |
| GPU Enterprise | A100 80GB | 2039 GB/s | 312 TFLOPS | $15.000 | 400W | ✅ Model ≤180B FP16 |
| GPU Terbaru | H100 SXM | 3352 GB/s | 989 TFLOPS | $35.000 | 700W | ✅✅ Model apapun (multi-GPU) |
| TPU | TPU v5p | ~4800 GB/s | ~700 TFLOPS | ~$50.000+ | ~500W | ✅✅ Via GCP, MXU khusus |
| NPU | Apple M3 Neural Engine | ~100 GB/s (UMA) | ~18 TOPS (INT8) | Built-in | ~5W | ⚠️ Model ≤7B via CoreML |
| ASIC | Groq LPU | ~80 GB/s (SRAM-based) | ~200 TFLOPS | N/A (cloud) | ~100W | ✅ Latensi sangat rendah |
8.2 Kenapa GPU Mendominasi LLM?
Ada tiga alasan utama GPU menjadi pilihan utama untuk inferensi LLM:
- Memory Bandwidth Raksasa: LLM adalah memory-bound (dibahas di Bab 9). GPU H100 memiliki bandwidth 3352 GB/s — 67× lipat CPU DDR5. Setiap token membutuhkan pembacaan seluruh bobot model dari memori, sehingga bandwidth adalah segalanya.
- Tensor Cores: GPU modern (NVIDIA Volta+) memiliki tensor core yang mengkhususkan diri pada operasi matriks — inti dari forward pass LLM. Satu tensor core dapat melakukan multiply-add matriks 4×4 dalam satu siklus.
- Parallelism Inheren: Operasi attention mechanism dan feed-forward network dapat diparalelkan secara masif. GPU dengan ribuan CUDA core mengeksekusi ribuan thread ini secara simultan.
8.3 Kapan CPU Cukup?
CPU masih relevan untuk LLM dalam beberapa skenario spesifik:
- Model sangat kecil (≤1,5B) di Q4 — misal Gemma 2 2B atau Phi-3 mini. CPU modern dapat mencapai 5-15 tok/s, cukup untuk chatbot sederhana.
- Batch size = 1, latensi bukan prioritas — aplikasi batch processing semalam.
- Biaya — GPU tidak tersedia — deploy di VPS murah tanpa GPU.
- RAM besar murah — CPU dengan 128 GB RAM dapat menjalankan 70B di Q4 via llama.cpp, meski hanya 1-3 tok/s.
Perbandingan konkret: Llama 3 8B Q4_K_M
- CPU AMD 7950X (128GB DDR5): ~4-6 tok/s
- RTX 4090: ~90-120 tok/s
- A100 SXM: ~160-200 tok/s
Rasio: 1× (CPU) : 20× (4090) : 35× (A100)
8.4 TPU, NPU, dan ASIC — Masa Depan?
TPU unggul untuk training skala besar berkat MXU (Matrix Multiply Unit) dan interkoneksi cepat. Namun untuk inferensi, TPU kurang fleksibel dibanding GPU untuk arsitektur model non-Transformer dan memiliki cold start yang lebih lambat (akuisisi via cloud).
NPU — seperti Neural Engine Apple — luar biasa efisien untuk model kecil di perangkat edge. Apple M3 Ultra dapat menjalankan Llama 3 8B via MLX dengan ~20-30 tok/s, hanya dengan ~30W.
ASIC — Groq LPU adalah contoh menarik: menggunakan SRAM sebagai pengganti HBM, sehingga mencapai latensi per token yang sangat rendah (≤1 ms/token). Namun total throughput dibatasi oleh kapasitas SRAM yang kecil (~230 MB per LPU). Untuk model modern yang besar, diperlukan puluhan LPU — dan biaya serta skalabilitasnya masih dipertanyakan.
Bab 9 — Memory Bandwidth — Rahasia Sebenarnya Token Speed
Inilah faktor yang paling sering disalahpahami: memory bandwidth, bukan compute FLOPs, adalah bottleneck utama inferensi LLM. Untuk urutan autoregressive (decoding satu token per langkah), GPU menghabiskan sebagian besar waktunya menunggu data bobot model tiba dari VRAM, bukan menghitung. Mari kita bedah mengapa.
9.1 Memory-Bound vs Compute-Bound
Sebuah operasi dikatakan memory-bound jika waktu yang dibutuhkan untuk mentransfer data dari/ke memori lebih besar dari waktu komputasi itu sendiri. Inferensi LLM (fase decoding) adalah contoh klasik:
Operasi: y = W · x (matriks × vektor)
- W: bobot model, ukuran [d_model, d_model] = ~4M parameter (untuk d_model=4096)
- x: satu vektor aktivasi, ukuran [d_model]
Pada FP16:
- Data dibaca: 4M × 2 byte = 8 MB
- Bandwidth GPU: 1008 GB/s (RTX 4090)
- Waktu transfer: 8 MB / 1008 GB/s ≈ 7,9 μs
- Waktu komputasi: ~1-3 μs (dengan tensor core)
Rasio: komputasi < transfer → MEMORY-BOUND
Artinya, kecepatan token ditentukan terutama oleh seberapa cepat GPU dapat membaca bobot model dari VRAM, bukan seberapa cepat GPU dapat mengalikan matriks.
9.2 Rumus Token Speed yang Disempurnakan
Token/s = MemoryBandwidth / (ParameterCount × BytesPerParameter)
Rumus ini mengasumsikan kondisi ideal: model termuat penuh di VRAM, bandwidth termanfaatkan 100%, tanpa overhead KV Cache (dibahas di Bab 10). Di dunia nyata, faktor utilisasi bandwidth biasanya 60-90%.
Mari terapkan ke tiga skenario hardware berbeda dengan model Llama 3 8B FP16:
| Hardware | Bandwidth | Rumus | Speed Teoritis | Speed Riil* |
|---|---|---|---|---|
| CPU DDR5-6000 (2ch) | ~60 GB/s | 60 / (8×2) | 3,75 tok/s | 2-3 tok/s |
| RTX 4090 | 1008 GB/s | 1008 / (8×2) | 63 tok/s | 50-60 tok/s |
| A100 80GB SXM | 2039 GB/s | 2039 / (8×2) | 127,4 tok/s | 100-120 tok/s |
| H100 SXM | 3352 GB/s | 3352 / (8×2) | 209,5 tok/s | 170-200 tok/s |
9.3 Mengapa FLOPs Tidak Selalu Relevan
GPU modern memiliki compute capability yang jauh melampaui kemampuan mereka untuk menyuplai data. RTX 4090 memiliki 82,6 TFLOPS FP16, tetapi untuk operasi matriks×vektor pada decoding LLM, hanya sebagian kecil yang terpakai karena GPU menghabiskan banyak waktu menunggu data. Inilah yang disebut roofline model: kinerja aktual adalah minimum dari peak compute dan peak bandwidth — dan untuk decoding LLM, bandwidth hampir selalu menjadi batasan.
Arithmetic Intensity (AI) = FLOPs / Bytes
Untuk decoding:
- FLOPs per token ≈ 2 × N_param
- Bytes per token ≈ N_param × bytes_per_param
AI = (2 × N) / (N × 2) = 1 FLOP/byte (pada FP16)
Bandingkan dengan operasi compute-bound (training batch besar):
- AI = 100-200 FLOP/byte
- Performa dibatasi oleh FLOPs, bukan bandwidth
Implikasinya: harga GPU tidak selalu linier dengan performa LLM. RTX 4090 ($1.600, 1008 GB/s) memberikan token speed sekitar 50% dari A100 80GB ($15.000, 2039 GB/s) — rasio harga-per-token yang jauh lebih baik untuk inferensi. Namun untuk training, A100 unggul berkat FLOPs yang jauh lebih tinggi.
Bab 10 — Context Window & KV Cache: Makin Panjang Makin Lambat
Fenomena yang sering dirasakan pengguna: semakin panjang percakapan, semakin lambat respons model. Ini bukan imajinasi. Penyebabnya adalah KV Cache — struktur memori yang menyimpan Key dan Value dari setiap token dalam konteks, dan ukurannya membesar secara linear seiring panjang konteks. KV Cache yang besar tidak hanya memakan VRAM, tetapi juga memperlambat setiap langkah decoding karena model harus membaca K/V dari semakin banyak token untuk menghitung attention.
10.1 Apa Itu KV Cache?
Dalam mekanisme self-attention, setiap token baru harus menghitung skor attention terhadap semua token sebelumnya. Tanpa KV Cache, model harus menghitung ulang Key dan Value untuk semua token sebelumnya setiap kali token baru diprediksi — sangat tidak efisien. Solusinya: simpan K dan V dari setiap lapisan attention untuk semua token yang sudah diproses, dan gunakan kembali.
Tanpa KV Cache (redundan):
- Token ke-100: hitung attention untuk token 1..100 → K(1..100), V(1..100)
- Token ke-101: hitung attention untuk token 1..101 → K(1..101), V(1..101)
→ 99% komputasi dari langkah sebelumnya diulang!
Dengan KV Cache:
- Setelah langkah 1: simpan K₁, V₁ di cache
- Langkah ke-t: hanya hitung K_t, V_t, lalu append ke cache yang sudah ada
- Komputasi konstan per langkah, tidak bergantung panjang konteks (sebenarnya sedikit bergantung pada attention)
10.2 Rumus Ukuran KV Cache
KV Cache Size = 2 × seq_len × n_layers × d_kv × n_heads × bytes_per_param
Penjelasan variabel:
- 2: untuk Key dan Value
- seq_len: panjang konteks (token)
- n_layers: jumlah lapisan transformer
- d_kv: dimensi per head (biasanya d_model / n_heads)
- n_heads: jumlah attention heads
- bytes_per_param: 2 (FP16) atau 1 (INT8)
Dalam satu lapisan: d_kv × n_heads = d_model. Maka rumus dapat disederhanakan:
KV Cache Size ≈ 2 × seq_len × n_layers × d_model × bytes_per_param
| Model | n_layers | d_model | KV Cache 4K (FP16) | KV Cache 32K (FP16) | KV Cache 128K (FP16) |
|---|---|---|---|---|---|
| Gemma 2 2B | 26 | 2.304 | 0,46 GB | 3,66 GB | 14,6 GB |
| Llama 3 8B | 32 | 4.096 | 1,0 GB | 8,0 GB | 32,0 GB |
| Llama 3 70B | 80 | 8.192 | 5,0 GB | 40,0 GB | 160 GB |
| Gemma 4 12B | 40 | 3.840 | 1,17 GB | 9,4 GB | 37,5 GB |
| Claude 3.5 Sonnet* | ~100 | ~8.192 | 6,25 GB | 50 GB | 200 GB |
Perhatikan bahwa untuk Llama 3 70B dengan context length 128K token, KV Cache mencapai 160 GB — lebih besar dari bobot model itu sendiri (130 GB FP16). Total VRAM yang dibutuhkan: 130 + 160 + overhead ≈ 300 GB, atau setara 4× A100 80GB hanya untuk menjalankan satu permintaan dengan konteks penuh.
10.3 Dampak pada Token Speed
KV Cache yang besar memperlambat inferensi melalui dua mekanisme:
- Memory Bandwidth Tambahan: Setiap langkah decoding harus membaca seluruh KV Cache dari VRAM ke register untuk perhitungan attention. Semakin besar cache, semakin banyak data yang harus ditransfer.
- Attention Complexity O(n²): Meskipun menggunakan KV Cache, perhitungan attention masih membutuhkan skor untuk setiap pasangan token, yang skala kuadratik terhadap panjang konteks untuk prefill phase.
Contoh: Llama 3 8B di RTX 4090
- Context 1K: token/s ≈ 55 tok/s
- Context 8K: token/s ≈ 45 tok/s (menurun ~18%)
- Context 32K: token/s ≈ 30 tok/s (menurun ~45%)
- Context 128K: tidak muat (24 GB VRAM terpakai habis oleh KV Cache ~32 GB)
10.4 Teknik Mitigasi KV Cache
Beberapa teknik telah dikembangkan untuk mengurangi beban KV Cache:
- Multi-Query Attention (MQA): Semua head berbagi Key dan Value yang sama, mengurangi cache hingga 4-8×. Digunakan di Falcon, PaLM.
- Grouped Query Attention (GQA): Kompromi antara MHA dan MQA — beberapa head berbagi K/V yang sama. Digunakan di Llama 2/3, Gemma.
- KV Cache Quantization: Menyimpan KV Cache dalam INT8 (1 byte per elemen) bukan FP16 — menghemat 50% VRAM. Digunakan di vLLM dan TGI.
- Sliding Window & Sparse Attention: Hanya menyimpan K/V dari token terdekat (misal 4K token terakhir), token yang lebih lama di-drop atau di-aggregate.
- PagedAttention: vLLM mengelola KV Cache seperti page table pada OS — alokasi non-kontigu, mengurangi fragmentasi hingga 80%.
Kesimpulan Bab 10: context window bukan fitur gratis. Setiap kali Anda memberi model beberapa halaman dokumen sebagai konteks, Anda secara implisit meminta GPU untuk menyimpan dan memproses ribuan vektor Key-Value tambahan. Untuk aplikasi dengan konteks sangat panjang (>32K), mitigasi seperti GQA dan KV cache quantization bukan opsional — melainkan keharusan.
Bab 11 — Batch Size & Concurrent Users
Bayangkan sebuah restoran: melayani satu pelanggan dengan cepat itu mudah, tetapi melayani 100 pelanggan secara efisien membutuhkan strategi — apakah Anda antrekan mereka, buka meja tambahan, atau gunakan sistem prasmanan? Dalam inferensi LLM, pertanyaan yang sama muncul dalam bentuk batch size: berapa banyak permintaan yang diproses secara bersamaan. Bab ini membahas trade-off antara latency per-user dan throughput total, serta inovasi seperti continuous batching yang mengubah aturan main.
11.1 Trade-Off Batch Size: Latency vs Throughput
Batch size yang lebih besar meningkatkan throughput (total token per detik) karena GPU memanfaatkan paralelismenya lebih efisien — operasi matriks×matriks (dengan batch) jauh lebih efisien daripada matriks×vektor (tanpa batch). Namun, setiap permintaan dalam batch harus menunggu permintaan terlama selesai, sehingga latensi per-user meningkat.
Rumus:
- Latency per batch ≈ max(latency_i) untuk semua i dalam batch
- Throughput = sum(all tokens generated) / total_time
Pada model 7B FP16 di A100 80GB:
Batch size = 1:
- Latency per-token: ~10 ms / token
- Throughput: 100 tok/s
- Time-to-first-token (TTFT): ~30 ms
Batch size = 8:
- Latency per-token: ~35 ms / token (naik 3,5×)
- Throughput: ~650 tok/s (naik 6,5×)
- TTFT: ~100 ms
Batch size = 32:
- Latency per-token: ~120 ms / token
- Throughput: ~1.800 tok/s
- TTFT: ~350 ms
Perhatikan bahwa throughput naik lebih cepat dari latensi — inilah mengapa batching dianggap strategi efektif untuk efisiensi.
| Batch Size | Latency per Token | Throughput (tok/s) | Efisiensi GPU | Use Case |
|---|---|---|---|---|
| 1 | 10 ms | 100 | ~15% | Chat interaktif, real-time |
| 4 | 22 ms | 360 | ~40% | Chat ringan |
| 8 | 35 ms | 650 | ~60% | API moderate |
| 16 | 65 ms | 1.200 | ~78% | Batch processing |
| 32 | 120 ms | 1.800 | ~88% | High-throughput offline |
| 64 | 230 ms | 2.400 | ~93% | Backfill/batch besar |
11.2 Static Batching vs Continuous Batching
Static batching (tradisional): Kumpulkan N permintaan, proses semuanya bersama, kirim hasilnya. Jika satu permintaan menghasilkan 50 token dan yang lain 500 token, permintaan pendek harus menunggu yang panjang selesai — membuang-buang waktu GPU untuk permintaan yang sudah selesai.
Continuous batching (juga disebut inflight batching atau iteration-level batching): Setiap langkah decoding, batch dapat berubah. Permintaan yang sudah selesai dikeluarkan, permintaan baru bisa masuk di iterasi berikutnya. Ini memaksimalkan utilisasi GPU karena tidak ada waktu idle menunggu permintaan terlama.
Perbandingan visual:
Static Batching (waktu):
|── Req A (20 iter) ── Req B (100 iter) ──|
↑ idle 80 iter untuk A
Continuous Batching (waktu):
|── Req A1 ─── Req A2 ─── Req A3 ─── ... ── Req A20 ──|
|── Req B1 ─── Req B2 ─── Req B3 ─── ... ───────── Req B100 ──|
↑ Req A selesai, slot dipakai Req C
Hasil: Utilisasi GPU 85-95% vs 50-70% pada static batching.
vLLM mengimplementasikan continuous batching melalui PagedAttention, di mana KV Cache setiap permintaan dikelola seperti halaman memori virtual. Ini memungkinkan:
- Alokasi memori yang fleksibel — tidak perlu menyisihkan VRAM maksimum untuk setiap permintaan
- Fragmentasi KV Cache minimal
- Copy-on-write untuk shared prefix (misal: system prompt yang sama)
11.3 Dampak Concurrent Users pada Arsitektur Serving
Bayangkan Anda menjalankan Llama 3 8B di satu A100 80GB dan melayani N pengguna secara simultan:
Dengan static batching batch_size=8:
- Maksimal 8 permintaan diproses bersamaan
- Sisa permintaan antri
- Throughput: ~650 tok/s
- Jika tiap user rata-rata menghasilkan 500 token:
- Waktu per user: ~35 ms × 500 = 17,5 detik
- Kapasitas: ~37 user/jam per GPU
Dengan continuous batching (vLLM):
- Hingga ~64 permintaan dalam flight (tergantung VRAM)
- Throughput: ~2.000 tok/s
- Waktu per user (500 token): ~120 ms × 500 = 60 detik
*Tapi ini paralel untuk semua 64 user!*
- Kapasitas: ~3.800 user/jam per GPU
Perbedaan 100× dalam kapasitas — inilah mengapa framework serving modern seperti vLLM, TGI, dan TensorRT-LLM adalah standar industri, bukan opsi.
11.4 Hukum Amdahl untuk LLM Serving
Hukum Amdahl menyatakan bahwa percepatan sistem dibatasi oleh bagian yang tidak dapat diparalelkan. Dalam LLM serving:
Speedup = 1 / ((1 - P) + P/N)
P = bagian yang dapat diparalelkan (komputasi matriks)
N = jumlah unit paralel
(1-P) = bagian serial (overhead scheduling, I/O)
Untuk batch size 32 pada A100:
- P ≈ 0,88 (88% paralelisable)
- N ≈ 32 (efektif karena tensor core)
- Speedup = 1 / (0,12 + 0,88/32)
≈ 1 / 0,1475 ≈ 6,78× (bukan 32×!)
Ini menjelaskan mengapa efisiensi GPU menurun pada batch yang sangat besar.
Kesimpulan Bab 11: batch size adalah dial yang paling ampuh untuk menyeimbangkan latency dan throughput. Untuk aplikasi real-time (chat), batch size kecil (1-4) memberikan respons cepat. Untuk API publik dengan banyak pengguna, continuous batching dengan batch size 32-64 memberikan kapasitas maksimal. Framework seperti vLLM memungkinkan keduanya tanpa perubahan konfigurasi model — hanya dengan mengatur parameter scheduling.
— Akhir Bagian 2 —
DONE: part 02, ~3780 words
Bagian 3 — Rumus Kalkulasi Token Generation
Setelah memahami arsitektur dasar transformer dan mekanisme attention, langkah selanjutnya adalah menguasai rumus-rumus yang mendasari kalkulasi token generation. Bagian ini adalah yang paling krusial karena di sinilah Anda belajar menghitung berapa cepat sebuah model bisa menghasilkan teks, berapa besar VRAM yang dibutuhkan, berapa banyak user yang bisa dilayani, dan — paling penting bagi pebisnis — berapa biaya yang harus dikeluarkan. Setiap rumus di bagian ini disertai contoh perhitungan nyata dengan angka sehingga Anda bisa langsung mengaplikasikannya ke skenario Anda sendiri.
Bab 12 — Rumus Dasar Tokens per Second
Tokens per second (tok/s) adalah metrik paling fundamental dalam inferensi LLM. Ini mengukur seberapa cepat model menghasilkan token baru. Tidak seperti latency (waktu untuk token pertama), tok/s mengukur kecepatan sustained generation setelah prefix selesai diproses. Memahami rumus ini adalah pintu gerbang menuju optimasi performa.
12.1 — Rumus Dasar
Rumus paling fundamental untuk menghitung throughput maksimal teoritis sebuah LLM didasarkan pada memory bandwidth, bukan pada FLOP/s atau kecepatan komputasi. Ini karena arsitektur transformer modern — terutama saat inference — sangat memory-bound:
tok/s = memory_bandwidth (GB/s) / (jumlah_params × bytes_per_param)
Komponen rumus:
- memory_bandwidth — kecepatan transfer data dari VRAM ke compute unit (GB/s)
- jumlah_params — jumlah parameter model (contoh: 8 × 10⁹ untuk Llama 3 8B)
- bytes_per_param — ukuran tiap parameter berdasarkan presisi (FP32 = 4B, FP16 = 2B, Q8 = 1B, Q4 = 0.5B)
12.2 — Contoh Kalkulasi: Llama 3 8B di RTX 4090
Mari kita hitung tok/s ideal untuk Llama 3 8B yang di-quantize ke Q4 (4-bit) dan dijalankan di RTX 4090:
Model: Llama 3 8B
Quantization: Q4 (0.5 bytes per param)
Berat model: 8 × 10⁹ × 0.5 = 4 × 10⁹ bytes = 4 GB
GPU: RTX 4090
Memory BW: 1,008 GB/s (GDDR6X)
tok/s ideal = 1,008 GB/s / 4 GB = 252 tok/s
Angka 252 tok/s adalah batas teoritis maksimal — asumsi 100% utilisasi bandwidth tanpa overhead. Dalam praktiknya, efisiensi real-world berkisar antara 50–70%. Jadi estimasi realistis:
tok/s realistis = 252 × 60% = ~151 tok/s
12.3 — Tabel Kalkulasi Berbagai Kombinasi
Tabel berikut menunjukkan tok/s ideal (teoritis) untuk berbagai kombinasi model dan GPU. Kalikan dengan 0.55–0.65 untuk estimasi real-world:
| Model | Quant | Berat (GB) | GPU | BW (GB/s) | tok/s (Ideal) | tok/s (Real) |
|---|---|---|---|---|---|---|
| Llama 3 8B | Q4 | 4.0 | RTX 4090 | 1,008 | 252 | ~151 |
| Llama 3 8B | FP16 | 16.0 | RTX 4090 | 1,008 | 63 | ~38 |
| Llama 3 70B | Q4 | 35.0 | 2× RTX 4090 | 2,016 | 58 | ~35 |
| Llama 3 70B | Q8 | 70.0 | A100 80GB | 2,039 | 29 | ~18 |
| Gemma 2 27B | Q4 | 13.5 | RTX 3090 | 936 | 69 | ~42 |
| Mistral 7B | Q4 | 3.5 | RTX 3060 | 360 | 103 | ~62 |
| DeepSeek-V3 671B | Q4 | ~168 | 8× H100 | 28,800 | 171 | ~103 |
12.4 — Faktor Pengurang Real-World
Kenapa tok/s real-world selalu lebih rendah? Beberapa faktor:
- Overhead Kernel Launch: CUDA kernel launch latency, terutama untuk batch size kecil
- Memory Fragmentation: Model besar mungkin tidak muat kontigu di VRAM
- CPU-GPU Transfer: Input/output encoding/decoding via CPU
- KV Cache Management: Alokasi dan update KV cache memakan bandwidth
- PCIe Bottleneck: Multi-GPU inference via PCIe menambah overhead komunikasi
Rumus praktis: tok_saat_inferensi ≈ tok_ideal × 0.55. Untuk Llama 3 70B Q4 di 2× RTX 4090: ideal 58 → ~32 tok/s real.
Bab 13 — Kalkulasi Memory Bandwidth Bottleneck
Salah satu kesalahpahaman terbesar di kalangan developer AI adalah mengira bahwa kecepatan inferensi ditentukan oleh TFLOPS GPU. Kenyataannya, untuk sebagian besar skenario — terutama saat batch size = 1 (sequential generation) — bottleneck utama adalah memory bandwidth, bukan compute throughput. Bab ini menjelaskan mengapa dan bagaimana menghitung dampaknya.
13.1 — Mengapa Memory Bandwidth, Bukan Compute?
Inferensi autoregressive pada LLM bekerja seperti ini:
- GPU membaca bobot model dari VRAM ke register/SRAM
- GPU melakukan operasi matmul pada bobot dan aktivasi
- Hasil ditulis kembali ke VRAM
- Ulangi untuk setiap layer (30–80× untuk model modern)
Langkah #1 adalah yang paling lambat. Untuk setiap token, GPU harus membaca seluruh bobot model dari VRAM. Bandingkan: membaca 8 GB bobot dari VRAM adalah operasi ~8 milidetik pada bandwidth 1 TB/s. Operasi matmul-nya sendiri hanya butuh ~0.5 ms. Rasio 16:1 — itulah kenapa disebut memory-bound.
13.2 — Tabel Perbandingan Memory Bandwidth
Perbedaan bandwidth antara berbagai jenis memori sangat ekstrem. Tabel ini menunjukkan perbandingan dari yang paling lambat hingga tercepat:
| Tipe Memori | Contoh | BW (GB/s) | Latency (ns) | tok/s untuk 8B Q4 |
|---|---|---|---|---|
| DDR4-3200 | CPU RAM Desktop | 25.6 | ~80 | ~6.4 |
| DDR5-6400 | CPU RAM Modern | 51.2 | ~65 | ~12.8 |
| GDDR6 | RTX 3060 | 360 | ~50 | ~90 |
| GDDR6X | RTX 4090 | 1,008 | ~35 | ~252 |
| HBM2e | A100 80GB | 2,039 | ~25 | ~510 |
| HBM3 | H100 SXM | 3,350 | ~20 | ~838 |
| HBM3e | H200 / B200 | 4,800 | ~18 | ~1,200 |
Perhatikan lonjakan dari DDR4 ke DDR5 hanya 2×, tapi dari DDR5 ke GDDR6X adalah ~20×. Dari GDDR6X ke HBM3e adalah ~5× lagi. Inilah mengapa GPU kelas data center (H100/H200/B200) jauh lebih cepat untuk inference dibandingkan GPU konsumen.
13.3 — Contoh: CPU Inference
Mari hitung kenapa inference di CPU sangat lambat:
Model: Llama 3 8B FP16 (16 GB)
CPU Memory: DDR5-6400 (51.2 GB/s)
tok/s = 51.2 GB/s / 16 GB = 3.2 tok/s
Dengan asumsi efisiensi 60%: ~1.9 tok/s. Bandingkan dengan 151 tok/s di RTX 4090 (Q4) — perbedaan ~80×. Inilah alasan utama mengapa LLM inference di CPU untuk model 7B+ belum praktis untuk real-time apps.
13.4 — Operasi-bound vs Memory-bound
Pada batch size yang lebih besar, sifat bottleneck berubah:
- Batch size = 1: Memory-bound (baca bobot 1×, compute 1×)
- Batch size = N: Compute-bound (baca bobot 1×, compute N×)
Titik transisi (Roofline) terjadi ketika compute time = memory time. Untuk RTX 4090:
Compute: 82.6 TFLOPS (FP16)
Memory BW: 1,008 GB/s
Compute bound @ batch_size ketika:
compute_time < memory_time
82.6 TFLOPS / N < 1,008 GB/s × utilization
N > ~25 untuk model 8B Q4
Artinya, untuk Llama 3 8B Q4 di RTX 4090, Anda mulai melihat saturasi komputasi setelah batch size ~25. Di bawah itu, Anda dikekang oleh memory bandwidth.
Bab 14 — Kalkulasi VRAM per Model + Quantization
Mengetahui berapa besar VRAM yang dibutuhkan sebuah model adalah prerequisite untuk menentukan GPU apa yang harus dibeli. Banyak pemula hanya menghitung bobot model — lalu kaget ketika model out of memory (OOM) saat dijalankan. Padahal VRAM dipakai oleh tiga komponen utama: model weights, KV cache, dan overhead.
14.1 — Rumus Lengkap Alokasi VRAM
VRAM_total = model_weights + KV_cache + overhead
Rincian masing-masing komponen:
model_weights = jumlah_params × bytes_per_param
KV_cache = 2 × n_layers × n_heads × d_head ×
2 × seq_len × batch_size × bytes_per_cache
Contoh Llama 3 8B FP16:
model_weights = 8 × 10⁹ × 2 B = 16 GB
KV_cache = 2 × 32 × 32 × 128 × 2 × 4,096 × 1 × 2 = ~4.3 GB
overhead (CUDA context, buffers) = ~1 GB
---
VRAM_total = 16 + 4.3 + 1 = ~21.3 GB
Rumus di atas menjelaskan kenapa model 8B FP16 (yang seharusnya 16 GB) tetap butuh ~22 GB VRAM — karena KV cache dan overhead tidak bisa diabaikan.
14.2 — Tabel VRAM 20+ Model
Tabel ini menunjukkan kebutuhan VRAM untuk model populer di berbagai level quantization. Asumsi KV cache untuk 4K context length dan batch size = 1:
| Model | Params | FP16 (GB) | Q8 (GB) | Q4 (GB) | +KV Cache | GPU Min |
|---|---|---|---|---|---|---|
| Gemma 2 2B | 2.6B | 5.2 | 2.6 | 1.3 | +1.4 | GTX 1060 6GB |
| Phi-3 Medium | 3.8B | 7.6 | 3.8 | 1.9 | +1.8 | RTX 2060 6GB |
| Mistral 7B | 7.3B | 14.6 | 7.3 | 3.7 | +2.1 | RTX 3060 12GB |
| Llama 3 8B | 8.0B | 16.0 | 8.0 | 4.0 | +4.3 | RTX 3060 12GB (Q4) |
| Qwen 2.5 14B | 14.8B | 29.6 | 14.8 | 7.4 | +5.1 | RTX 3090 24GB (Q4) |
| Gemma 2 27B | 27.2B | 54.4 | 27.2 | 13.6 | +7.2 | RTX 4090 24GB (Q4) |
| Llama 3 70B | 70.6B | 141.2 | 70.6 | 35.3 | +12.4 | 2× RTX 3090 (Q4) |
| Mixtral 8×7B | 46.7B | 93.4 | 46.7 | 23.4 | +8.8 | A100 40GB (Q4) |
| DeepSeek-V3 | 671B | 1,342 | 671 | ~168 | +40 | 8× A100 80GB |
Kolom "GPU Min" adalah GPU termurah yang bisa menjalankan model di Q4 dengan context 4K. Ingat: context length lebih panjang → KV cache lebih besar.
14.3 — Diagram Alokasi VRAM
14.4 — KV Cache untuk Context Panjang
Salah satu jebakan terbesar adalah melupakan KV cache saat menghitung VRAM. Untuk konteks panjang, KV cache bisa melebihi ukuran bobot model:
Llama 3 8B Q4 — Context 128K:
Bobot: 4.0 GB
KV cache: 2 × 32 × 32 × 128 × 2 × 131,072 × 1 × 2 = ~137 GB
---
Total: ~141 GB (tidak muat di GPU manapun!)
Inilah kenapa teknik seperti sliding window attention, KV cache eviction, dan multi-query attention (GQA/MQA) sangat penting — mereka secara drastis mengurangi ukuran KV cache pada konteks panjang.
Bab 15 — Rumus Concurrent Users & Throughput
Salah satu pertanyaan paling praktis saat membangun produk AI adalah: "Berapa banyak user yang bisa saya layani dengan GPU yang saya miliki?" Jawabannya tidak sesederhana membagi VRAM — ada trade-off antara latency, throughput, dan concurrency. Bab ini memberikan rumus-rumus esensial untuk menjawab pertanyaan tersebut.
15.1 — Rumus Throughput
Throughput (token/detik) = batch_size × seq_len × tok_per_detik
Atau untuk serving:
Throughput (token/detik) = batch_size / latency_per_token
Satu hal kritis: throughput dan latency adalah trade-off. Meningkatkan batch_size akan meningkatkan throughput tapi menambah latency per request:
Contoh: Llama 3 8B Q4 di RTX 4090
Batch 1: latency = ~6.6 ms/token, throughput = 1/0.0066 = 151 tok/s
Batch 4: latency = ~8.9 ms/token, throughput = 4/0.0089 = 449 tok/s
Batch 16: latency = ~18 ms/token, throughput = 16/0.018 = 889 tok/s
Perhatikan: latency naik 2.7×, tapi throughput naik 5.9×.
Ini karena GPU memanfaatkan paralelisme — operasi matmul untuk 16 sequence dilakukan bersamaan, jadi waktu total hanya sedikit lebih lambat dari 1 sequence.
15.2 — Rumus Max Concurrent Users
KV_cache_per_user = 2 × n_layers × n_heads × d_head ×
2 × avg_seq_len × bytes_per_cache
max_users = (total_VRAM - model_weights - overhead) / KV_cache_per_user
15.3 — Contoh Nyata: A100 80GB + Llama 8B Q4
A100 80GB:
Total VRAM: 80 GB
Model Q4: 4 GB
Overhead: ~2 GB
VRAM available: 74 GB
KV cache per user (asumsi 2K context):
n_layers = 32, n_heads = 32, d_head = 128
= 2 × 32 × 32 × 128 × 2 × 2048 × 2 = ~2.15 GB
max_users = 74 / 2.15 = ~34 concurrent users
Artinya, satu A100 80GB bisa melayani ~34 user secara bersamaan untuk Llama 3 8B Q4 dengan rata-rata 2K output tokens. Tapi perlu diingat: ini asumsi semua user menghasilkan token secara paralel. Dalam praktiknya, batch_size maksimum ditentukan oleh VRAM, dan antrean request ditangani oleh scheduler.
15.4 — Tabel Skenario Concurrent Users
| GPU | VRAM | Model | Quant | KV/user (2K) | Max Users | tok/s total |
|---|---|---|---|---|---|---|
| RTX 3060 | 12 GB | Mistral 7B | Q4 | 1.4 GB | ~4 | ~248 |
| RTX 3090 | 24 GB | Llama 8B | Q4 | 2.15 GB | ~8 | ~504 |
| RTX 4090 | 24 GB | Llama 8B | Q4 | 2.15 GB | ~8 | ~1,208 |
| A100 40GB | 40 GB | Llama 8B | Q4 | 2.15 GB | ~16 | ~4,080 |
| A100 80GB | 80 GB | Llama 8B | Q4 | 2.15 GB | ~34 | ~8,670 |
| A100 80GB | 80 GB | Llama 70B | Q4 | 4.3 GB | ~10 | ~580 |
| H100 80GB | 80 GB | Llama 70B | Q4 | 4.3 GB | ~10 | ~1,720 |
Catatan: tok/s total = max_users × tok_single_user.
Namun, throughput efektif lebih rendah karena overhead batching dan scheduling.
15.5 — Trade-off Context Length vs Concurrency
Context length punya dampak dramatis pada concurrency. Double context → double KV cache → half users:
RTX 4090 + Llama 8B Q4:
Context 2K: ~4 GB model + 2.15 GB KV = ~6.15 GB → ~4 user (24GB/6.15)
Context 4K: ~4 GB model + 4.3 GB KV = ~8.3 GB → ~2 user
Context 8K: ~4 GB model + 8.6 GB KV = ~12.6 GB → hanya bisa 1 user
Untuk aplikasi real-time dengan banyak user, gunakan model yang di-quantize lebih rendah dan batasi max context length. Atau gunakan teknik seperti chunked prefill dan prefix caching.
Bab 16 — Rumus Cost per Token (Capex & Opex)
Bagi founder, CTO, atau product manager — metrik paling penting bukan tok/s, tapi cost per token. Berapa rupiah yang harus Anda keluarkan untuk menghasilkan 1 juta token? Bab ini membedah biaya dari sisi hardware (CAPEX) dan operasional (OPEX), lalu membandingkannya dengan API pihak ketiga.
16.1 — Rumus Cost per Token (On-Premise)
Cost/token = (hardware_cost / lifetime_hari / tokens_per_hari)
+ (listrik_per_hari / tokens_per_hari)
+ (maintenance_per_hari / tokens_per_hari)
Mari kita hitung untuk skenario paling umum di Indonesia: 1× RTX 4090 untuk Llama 3 8B Q4.
CAPEX:
RTX 4090: Rp 50.000.000
Lifetime: 3 tahun = 1.095 hari
Depresiasi/hari: Rp 45.662
LISTRIK:
TDP GPU: 450 watt
Sistem total: ~600 watt
Pemakaian: 24 jam/hari = 14.4 kWh/hari
Tarif listrik: Rp 1.699/kWh (golongan industri kecil)
Biaya listrik/hari: Rp 24.466
MAINTENANCE:
PSU, storage, kipas: ~Rp 500.000/tahun = Rp 1.370/hari
TOKENS PER HARI:
tok/s (realistis): 151 tok/s
Duty cycle: 70% (24/7, dengan idle time)
Tokens/hari: 151 × 24 × 3600 × 0.7 = ~9.132.480 token
COST PER TOKEN:
= (45.662 + 24.466 + 1.370) / 9.132.480
= 71.498 / 9.132.480
= Rp 7,83 per 1.000 token
Artinya: dengan setup 1× RTX 4090, Anda mengeluarkan Rp 7,83 per 1.000 token atau sekitar Rp 7.830 per 1 juta token.
16.2 — Tabel Perbandingan Cost per Token
Tabel perbandingan berbagai opsi, semuanya dalam konteks Indonesia:
| Opsi | Spesifikasi | Biaya (/1K token) | Biaya (/1M token) | tok/s |
|---|---|---|---|---|
| RTX 4090 on-prem | Llama 8B Q4 | Rp 7,83 | Rp 7.830 | ~151 |
| 2× RTX 3090 on-prem | Llama 70B Q4 | Rp 19,20 | Rp 19.200 | ~35 |
| A100 80GB cloud | Llama 8B Q4 (AWS/Azure) | Rp 5,50 | Rp 5.500 | ~510 |
| RunPod A100 | Harga spot ~$1.25/jam | Rp 4,20 | Rp 4.200 | ~510 |
| Groq API | Llama 3 70B (groq) | Rp 5,90 | Rp 5.900 | ~480 |
| Together API | Llama 3 8B | Rp 2,12 | Rp 2.120 | ~120 |
| OpenAI GPT-4o-mini | Input + Output | Rp 2,85 | Rp 2.850 | N/A |
| OpenAI GPT-4o | Output token | Rp 138 | Rp 138.000 | N/A |
| Anthropic Claude 3.5 Sonnet | Output token | Rp 228 | Rp 228.000 | N/A |
| Anthropic Claude 3 Haiku | Output token | Rp 2,74 | Rp 2.740 | N/A |
Insight penting: Untuk model open-source 8B, on-premise RTX 4090 (Rp 7.830/1M token) lebih mahal daripada Together API (Rp 2.120) untuk volume rendah. Tapi untuk volume sangat tinggi — dan terutama untuk model 70B+ — on-premise A100 bisa jauh lebih murah.
16.3 — Kalkulasi Detail Cloud GPU
Sebagai alternatif, cloud GPU seperti RunPod, Vast.ai, atau penyedia lokal bisa menjadi pilihan:
RunPod — A100 80GB (spot instance):
Harga: ~$1.25/jam = Rp 19.500/jam (@ Rp 15.600/USD)
Tok/s: ~510 (Llama 8B)
Duty cycle: 90% (server reasoning terus)
Tokens/hari: 510 × 24 × 3600 × 0.9 = ~39.657.600
Cost/token = 19.500 / (39.657.600/1000) = Rp 0,49 per 1K token
= Rp 490 per 1 juta token
Catatan: harga di atas adalah spot instance yang bisa di-terminate kapan saja. On-demand biasa ~3× lipat.
Bab 17 — Rumus Break-Even Point: API vs On-Premise
Keputusan paling strategis dalam membangun infrastruktur AI: kapan sebaiknya menggunakan API (OpenAI, Anthropic, Groq, Together) dan kapan membeli GPU sendiri? Jawabannya ditemukan dalam rumus break-even point — titik di mana biaya total on-premise mulai lebih murah daripada API untuk volume yang sama. Bab ini memandu Anda menghitungnya.
17.1 — Rumus Break-Even Point
Break-even (token) = hardware_cost / (api_cost_per_token - onprem_cost_per_token)
Break-even (hari) = break-even_token / tokens_per_hari
Rumus di atas menjawab: "Berapa token yang harus saya generate sebelum GPU saya lebih murah daripada API?"
17.2 — Contoh 1: RTX 4090 vs OpenAI GPT-4o-mini
SCENARIO: Llama 3 8B Q4 di RTX 4090 vs GPT-4o-mini
On-prem setup (RTX 4090):
Hardware cost (GPU + sistem): Rp 60.000.000 (GPU + PSU + RAM + storage)
Lifetime: 3 tahun = 1.095 hari
Biaya tetap/hari: Rp 54.795
Biaya variabel/hari: Rp 25.836 (listrik + maintenance)
Tokens/hari: 9.132.480
On-prem cost/1K token: Rp 8,83
API cost (GPT-4o-mini):
Input: $0.15/1M token = Rp 2.340/1M
Output: $0.60/1M token = Rp 9.360/1M
Rata-rata (1:3 input:output): Rp 7.605/1M token = Rp 7,61/1K
Hitung break-even:
Selisih cost = Rp 8,83 - Rp 7,61 = -Rp 1,22 (API LEBIH MURAH!)
Kesimpulan: GPT-4o-mini lebih murah daripada on-prem RTX 4090,
bahkan untuk volume tak terbatas. TIDAK ADA break-even point.
17.3 — Contoh 2: A100 80GB vs OpenAI GPT-4o
SCENARIO: Llama 3 70B Q4 di A100 80GB vs GPT-4o
On-prem setup (A100 80GB):
A100 80GB (bekas): Rp 250.000.000 (1-year old, 4 tahun lifetime)
Sistem+server: Rp 100.000.000
Total CAPEX: Rp 350.000.000
Lifetime: 4 tahun = 1.460 hari
Biaya tetap/hari: Rp 239.726
Listrik (700W × 24h): Rp 28.541/hari
Maintenance: Rp 3.000/hari
On-prem cost/hari: Rp 271.267
Tokens/hari (70B Q4): 18 tok/s × 24 × 3600 × 0.7 = 1.088.640
On-prem cost/1K token: Rp 249
API cost (GPT-4o):
Output price: $10/1M token = Rp 156.000/1M = Rp 156/1K token
Selisih: Rp 249 - Rp 156 = Rp 93/1K (on-prem LEBIH MAHAL)
Hmm — bahkan A100 belum break-even vs GPT-4o.
Tapi bandingkan dengan model besar via API lain...
17.4 — Contoh 3: Break-Even yang Sebenarnya Ada
SCENARIO: RTX 4090 vs Together API Llama 3 8B — volume tinggi
On-prem: Rp 8,83/1K token
Together: Rp 2,12/1K token
Selisih: Rp 8,83 - Rp 2,12 = Rp 6,71 (on-prem lebih mahal)
→ Tidak ada break-even. API selalu lebih murah.
SCENARIO: 2× RTX 3090 (bekas, @Rp 15jt = Rp 30jt) vs Groq (Llama 70B Q4)
On-prem:
Total: Rp 45.000.000 (GPU + sistem)
Lifetime: 3 tahun
Cost/hari: Rp 41.096 (depresiasi) + Rp 20.000 (listrik) + Rp 1.370 = Rp 62.466
Tokens/hari: 35 tok/s × 24 × 3600 × 0.7 = 2.116.800
On-prem cost/1K: Rp 29,5
Groq:
Llama 3 70B via Groq: $1.00/1M token = Rp 15.600/1M = Rp 15,60/1K
Selisih: Rp 29,5 - Rp 15,6 = Rp 13,9 (API lebih murah)
→ Lagi-lagi tidak ada break-even.
17.5 — Kapan On-Premise Menang?
Dari kalkulasi di atas, terlihat bahwa API hampir selalu lebih murah untuk model <70B — kecuali dalam skenario berikut:
- Volume sangat tinggi — puluhan juta token per hari selama bertahun-tahun
- Model sangat besar — 70B+ di API mahal (DeepSeek-V3, Llama 405B)
- Data sensitivity — tidak bisa kirim data ke API eksternal (fintech, health, gov)
- Custom model — fine-tuned model yang tidak tersedia di API manapun
- GPU idle tidak masalah — GPU dipakai untuk training + inference
17.6 — Grafik Break-Even Point
17.7 — Tabel Break-Even Berbagai Skenario
| Skenario | Hardware | CAPEX | On-prem /1K | API /1K | Break-even (token) | Break-even (hari) |
|---|---|---|---|---|---|---|
| RTX 4090 vs GPT-4o-mini | 1× RTX 4090 | Rp 60jt | Rp 8,83 | Rp 7,61 | Tidak pernah | — |
| RTX 4090 vs Together (8B) | 1× RTX 4090 | Rp 60jt | Rp 8,83 | Rp 2,12 | Tidak pernah | — |
| RTX 4090 vs GPT-4o | 1× RTX 4090 | Rp 60jt | Rp 8,83 | Rp 156 | ~408M token | ~45 hari |
| A100 80GB vs GPT-4o | 1× A100 | Rp 350jt | Rp 249 | Rp 156 | ~3.76B token | ~3.452 hari (~9.5 thn) |
| 2× RTX 3090 vs Groq 70B | 2× RTX 3090 bekas | Rp 45jt | Rp 29,5 | Rp 15,60 | Tidak pernah | — |
| 2× RTX 3090 vs OpenAI GPT-4o | 2× RTX 3090 bekas | Rp 45jt | Rp 29,5 | Rp 156 | ~356M token | ~168 hari |
17.8 — Kesimpulan Praktis untuk Pebisnis Indonesia
Setelah semua kalkulasi, berikut rekomendasi praktis berdasarkan volume:
- < 10M token/hari: Gunakan API. GPT-4o-mini atau Claude Haiku adalah pilihan termurah dan paling praktis. Tidak perlu pusing dengan hardware, cooling, maintenance.
- 10M–100M token/hari: Mulai pertimbangkan on-premise, terutama jika Anda butuh model spesifik atau data privacy. API Together/Groq masih kompetitif.
- > 100M token/hari: On-premise dengan A100/H100 jelas lebih murah, terutama untuk model 70B+. Dengan asumsi 5 tahun lifetime, break-even bisa tercapai dalam 6–18 bulan.
- Data sensitive: On-premise adalah satu-satunya pilihan, terlepas dari biaya.
- Hybrid approach: Banyak perusahaan sukses menggunakan API untuk MVP/testing, lalu migrasi ke on-premise setelah volume cukup besar. Jangan beli GPU sebelum Anda punya product-market fit!
📌 Kesimpulan Akhir: Untuk sebagian besar startup AI Indonesia,
API adalah pilihan paling rasional secara finansial.
Satu-satunya pengecualian: Anda menjalankan model 70B+
dengan volume >100M token/hari, atau data tidak bisa dikirim ke luar.
Bagian 4 — GPU & Hardware Inference
Bab 18 — NVIDIA GPU Lineup 2024–2026
NVIDIA mendominasi pasar AI inference. Memahami lini produk mereka — dari RTX konsumen hingga data center — adalah langkah pertama untuk memilih GPU yang tepat. Setiap lini memiliki arsitektur, bandwidth, VRAM, dan harga yang berbeda drastis.
Arsitektur GPU NVIDIA
Setiap generasi NVIDIA membawa peningkatan signifikan. Ampere (2020) memperkenalkan Tensor Core generasi ketiga dan MIG. Hopper (2022) membawa Transformer Engine dan FP8. Blackwell (2024) menghadirkan FP4 dan第二代 Transformer Engine. Rubin (2026) adalah generasi terbaru dengan peningkatan bandwidth HBM4.
Tabel Perbandingan GPU NVIDIA
| GPU | Arsitektur | VRAM | Bandwidth | FP16 TFLOPS | Harga (Rp) |
|---|---|---|---|---|---|
| RTX 4090 | Ada Lovelace | 24GB GDDR6X | 1,008 GB/s | 82.6 | ~45-55 juta |
| RTX 5090 | Blackwell | 32GB GDDR7 | ~1,800 GB/s | ~120 | ~70-90 juta |
| A100 80GB | Ampere | 80GB HBM2e | 2,039 GB/s | 78 | ~300-400 juta (bekas) |
| H100 SXM | Hopper | 80GB HBM3 | 3,350 GB/s | 989 (FP8) | ~700-900 juta |
| H200 | Hopper | 141GB HBM3e | 4,800 GB/s | 989 (FP8) | ~1-1.3 miliar |
| B200 | Blackwell | 192GB HBM3e | ~8,000 GB/s | ~2,250 (FP8) | ~2-3 miliar |
Perbedaan harga
* Nilai teoretis ideal. Faktor real-world: 50-70%. Model Q4_K_M. Sumber: perhitungan bandwidth ÷ (params × bytes) × 60% overhead.Perhitungan Token Speed untuk Berbagai GPU
GPU Bandwidth 7B Q4 13B Q4 30B Q4 70B Q4 RTX 3060 360 GB/s 45 tok/s 25 tok/s 10 tok/s — RTX 4060 Ti 288 GB/s 36 tok/s 20 tok/s — — RTX 4090 1,008 GB/s 126 tok/s 72 tok/s 32 tok/s — A100 80GB 2,039 GB/s 255 tok/s 145 tok/s 65 tok/s 28 tok/s H100 SXM 3,350 GB/s 419 tok/s 239 tok/s 107 tok/s 46 tok/s H200 4,800 GB/s 600 tok/s 342 tok/s 154 tok/s 66 tok/s
Tips. Untuk personal AI atau startup kecil, RTX 4090 bekas (Rp 35-45 juta) adalah pilihan paling rasional. Rasio harga/performanya sulit dikalahkan.
Bab 19 — RTX 4090 vs RTX 5090 untuk Inference
RTX 4090 telah menjadi GPU favorit para AI enthusiast dan startup kecil sejak dirilis. Namun dengan hadirnya RTX 5090 (Blackwell), muncul pertanyaan: apakah peningkatan performa sebanding dengan harga yang jauh lebih tinggi?
Perbandingan Spesifikasi
| Aspek | RTX 4090 | RTX 5090 |
|---|---|---|
| VRAM | 24GB GDDR6X | 32GB GDDR7 |
| Bandwidth | 1,008 GB/s | ~1,800 GB/s |
| CUDA Core | 16,384 | ~21,760 |
| TDP | 450W | ~575W |
| Harga Baru | Rp 45-55 juta | Rp 70-90 juta |
| Harga Bekas | Rp 35-45 juta | ~Rp 60-75 juta |
Kalkulasi Token Speed
Kalkulasi Detail: RTX 4090 Concurrency
Untuk server inference dengan 1× RTX 4090 24GB:
Model: Gemma 4 12B di Q4_K_M
Weight: 12B × 0.5 bytes = 6 GB
KV cache per user (4K context):
= 2 × 4096 × 48 layers × 5120 dim × 2 bytes × 2 (K+V)
= ~2 GB per user di FP16
= ~500 MB per user di FP8
Max concurrent users:
Dengan FP8 KV cache: (24 - 6) / 0.5 = 36 user
Dengan FP16 KV cache: (24 - 6) / 2 = 9 user
Namun dalam praktik, karena continuous batching dan PagedAttention, kita tidak perlu mengalokasikan KV cache penuh untuk setiap user. vLLM memungkinkan 15-25 concurrent user tanpa masalah.
Rumus Praktis: Untuk model 7B Q4 di RTX 4090: concurrent = (24 - 4) / 1.5 = ~13 user. Untuk model 12B Q4: concurrent = (24 - 6) / 2 = ~9 user. Selalu kurangi 2GB untuk overhead sistem.
Untuk model 7B Q4 (~4GB model + 0.5GB KV cache): RTX 4090 = 1008/(4.5) × 60% = ~134 tok/s. RTX 5090 = 1800/(4.5) × 60% = ~240 tok/s. Peningkatan ~1.8×. Untuk model 13B Q4: RTX 4090 = ~80 tok/s, RTX 5090 = ~140 tok/s.
Awas. RTX 5090 membutuhkan PSU 1000W+ dan pendingin yang lebih baik. Pastikan PC Anda siap sebelum upgrade.
Bab 20 — A100, H100, H200, B200 — Data Center GPU
GPU data center NVIDIA adalah pilihan utama untuk inference enterprise, dengan H100 dan H200 mendominasi pasar. A100 (Ampere) masih banyak digunakan untuk model yang tidak memerlukan FP8. H200 membawa lompatan bandwidth dengan HBM3e 4.8 TB/s. B200 adalah generasi terbaru dengan FP4 support dan bandwidth ~8 TB/s.
Perbandingan Data Center GPU
| GPU | Model Maks (Q4) | Concurrent Users | Harga Sewa/Jam |
|---|---|---|---|
| A100 80GB | ~40B (Llama 3 70B Q4 butuh cluster) | 5-15 | ~$1.10-1.50 |
| H100 80GB | ~40B (sama, FP8 lebih cepat) | 5-20 | ~$2.50-4.00 |
| H200 141GB | ~70B (Llama 3 70B Q4 muat 1 GPU!) | 10-30 | ~$3.50-5.00 |
| B200 192GB | ~100B (FP4 support) | 15-50 | ~$8-15 (perkiraan) |
Inti. H200 adalah sweet spot untuk enterprise — VRAM 141GB cukup untuk Llama 3 70B Q4, dan bandwidth 4.8 TB/s memberikan token speed yang sangat baik.
Bab 21 — GPU Cloud: RunPod, Vast.ai, Lambda, TensorDock
GPU cloud memungkinkan Anda menyewa GPU per jam tanpa investasi awal mahal. Layanan seperti RunPod, Vast.ai, dan Lambda Labs melayani pasar inference on-demand. Perbedaan harga antar penyedia bisa mencapai 3-4× untuk GPU yang sama.
| Provider | RTX 4090 | A100 80GB | H100 | Storage | Catatan |
|---|---|---|---|---|---|
| RunPod | $0.28/jam | $1.10/jam | $2.99/jam | 50GB gratis | Mudah, serverless GPU |
| Vast.ai | $0.15-0.30/jam | $0.70-1.50/jam | $2.00-3.50/jam | Marketplace | Pasar bebas, harga fluktuatif |
| Lambda Labs | $0.35/jam | $1.50/jam | $3.50/jam | SSD 125GB | Stabil, kualitas terjamin |
| TensorDock | $0.22/jam | $0.95/jam | $2.50/jam | 10GB | Murah, Eropa |
Tips. Untuk eksperimen jangka pendek (<100 jam), GPU cloud lebih murah. Untuk pemakaian >300 jam/bulan, beli GPU sendiri lebih ekonomis.
Bab 22 — Google Cloud GPU: L4, A100, H100, TPU v5
Google Cloud Platform (GCP) menawarkan GPU dan TPU untuk workload AI. L4 adalah pilihan entry-level termurah dengan 24GB VRAM, cocok untuk model kecil hingga menengah. A100 dan H100 tersedia dengan commitment diskon untuk pemakaian jangka panjang.
| GPU GCP | VRAM | Harga/Jam (on-demand) | 1-year commitment |
|---|---|---|---|
| L4 | 24GB GDDR6 | ~$0.60 | ~$0.35 |
| A100 40GB | 40GB HBM2e | ~$2.00 | ~$1.20 |
| A100 80GB | 80GB HBM2e | ~$3.50 | ~$2.10 |
| H100 | 80GB HBM3 | ~$5.00 | ~$3.00 |
Inti. TPU v5p unggul untuk training skala besar dengan TensorFlow/JAX, tetapi untuk inference LLM umum, GPU NVIDIA lebih fleksibel dan didukung lebih luas.
Bab 23 — AWS & Azure GPU Options
AWS dan Azure menawarkan opsi GPU untuk inference dengan fleksibilitas tinggi. AWS memiliki instance g5 (A10G), p4d (A100), dan p5 (H100). Azure menawarkan NCas dan NC-series. Spot instance bisa menghemat 60-70% namun dengan risiko interupsi.
| Layanan | GPU | Instance | Harga/Jam | Spot Price |
|---|---|---|---|---|
| AWS g5.xlarge | A10G 24GB | 1 GPU | ~$1.00 | ~$0.30 |
| AWS p4d.24xlarge | A100 40GB ×8 | 8 GPU | ~$32.00 | ~$9.60 |
| AWS p5.48xlarge | H100 80GB ×8 | 8 GPU | ~$80.00 | ~$24.00 |
| Azure NCas | A100 80GB | 1-4 GPU | ~$3.50 | ~$1.05 |
Bab 24 — AMD ROCm — Alternatif Terjangkau
AMD RX 7900 XTX menawarkan 24GB VRAM dengan harga ~$900 (~Rp 15 juta), jauh lebih murah dari RTX 4090. Dengan ROCm (Radeon Open Compute), AMD GPU bisa digunakan untuk inference LLM. Namun, kompatibilitas software masih menjadi tantangan.
| Aspek | RX 7900 XTX | RTX 4090 |
|---|---|---|
| VRAM | 24GB GDDR6 | 24GB GDDR6X |
| Bandwidth | ~960 GB/s | 1,008 GB/s |
| Harga (Rp) | ~15-18 juta | ~45-55 juta |
| Kompatibilitas | Terbatas (PyTorch + ROCm) | Universal (CUDA) |
| vLLM Support | Eksperimental | Full |
Awas. AMD ROCm masih bermasalah di banyak framework. Ollama dan llama.cpp memiliki dukungan terbaik untuk AMD GPU. Untuk production, NVIDIA tetap lebih aman.
Bab 24b — Panduan Memilih GPU per Model Type
Setiap jenis model AI memiliki kebutuhan VRAM dan bandwidth yang berbeda. Panduan ini membantu memilih GPU yang tepat berdasarkan tipe model yang ingin dijalankan.
| Model Type | VRAM Min | VRAM Recommended | GPU Minimal | GPU Rekomendasi |
|---|---|---|---|---|
| LLM <8B Q4 | 4GB | 8GB | RTX 3060 12GB | RTX 4090 |
| LLM 8B-30B Q4 | 8GB | 16GB | RTX 4060 Ti 16GB | RTX 4090 |
| LLM 70B Q4 | 32GB | 48GB | RTX A6000 48GB | A100 80GB / H200 |
| Image Gen (SDXL) | 8GB | 12GB | RTX 3060 12GB | RTX 4090 |
| Image Gen (FLUX) | 12GB | 24GB | RTX 4070 Ti | RTX 4090 |
| Video Gen | 24GB | 48GB+ | RTX 4090 | A100 / H100 |
| TTS | 2GB | 4GB | CPU (tanpa GPU) | GPU apa saja |
| 3D Gen | 8GB | 16GB | RTX 3060 | RTX 4090 |
Kalkulasi Detail Concurrency: GPU + Model + Batch + Context Length
Concurrency — jumlah pengguna yang dapat dilayani secara bersamaan oleh satu GPU — adalah metrik paling penting untuk deployment production. Bukan sekadar "berapa user yang muat di VRAM", tetapi juga bagaimana continuous batching, PagedAttention, dan FlashAttention memengaruhi throughput aktual.
Rumus Dasar Concurrency
VRAM Available = Total VRAM - OS Overhead - Model Weights - Scratch Space
KV Cache per User = 2 × seq_len × n_layers × hidden_dim × bytes_per_element × 2 (K+V)
Max Concurrent Users (teoretis) = VRAM Available / KV Cache per User
Throughput Aktual = min(Max Users, Batch Limit) × tokens_per_second
Faktor real-world menurunkan angka teoretis 30-50%. Overhead vLLM, CUDA kernel, dan memory fragmentation bisa memakan 1-3GB tambahan. Berikut kalkulasi untuk berbagai kombinasi GPU dan model:
| GPU | VRAM Efektif* | Model | Quant | Weight Size | KV Cache/User (4K ctx) | Max Users (teoretis) | Max Users (real) |
|---|---|---|---|---|---|---|---|
| RTX 3060 12GB | ~9.5 GB | Qwen 3 7B | Q4 | ~3.8 GB | ~0.6 GB (FP8) | ~10 | 5-7 |
| RTX 3060 12GB | ~9.5 GB | Gemma 4 12B | Q4 | ~6.5 GB | ~1.2 GB (FP8) | ~3 | 2-3 |
| RTX 4090 24GB | ~21 GB | Gemma 4 12B | Q4 | ~6.5 GB | ~1.2 GB (FP8) | ~12 | 8-12 |
| RTX 4090 24GB | ~21 GB | Qwen 3 32B | Q4 | ~16 GB | ~2 GB (FP8) | ~3 | 2-3 |
| RTX 4090 24GB | ~21 GB | Qwen 3 7B | Q4 | ~3.8 GB | ~0.6 GB (FP8) | ~28 | 15-20 |
| RTX 5090 32GB | ~29 GB | Gemma 4 12B | Q4 | ~6.5 GB | ~1.2 GB (FP8) | ~19 | 12-16 |
| RTX 5090 32GB | ~29 GB | Qwen 3 32B | Q4 | ~16 GB | ~2 GB (FP8) | ~7 | 4-6 |
| RTX 5090 32GB | ~29 GB | Gemma 4 31B | Q4 | ~16 GB | ~2 GB (FP8) | ~7 | 4-6 |
| RTX 6000 Ada 48GB | ~45 GB | Qwen 3 32B | Q4 | ~16 GB | ~2 GB (FP8) | ~15 | 8-12 |
| RTX 6000 Ada 48GB | ~45 GB | Gemma 4 26B A4B | Q4 | ~13 GB | ~1.8 GB (FP8) | ~18 | 10-14 |
| A100 80GB | ~76 GB | Llama 4 Scout (109B) | Q4 | ~55 GB | ~2.5 GB (FP8) | ~8 | 5-8 |
| A100 80GB | ~76 GB | Qwen 3 72B | Q4 | ~36 GB | ~3.5 GB (FP8) | ~11 | 7-11 |
| H200 141GB | ~135 GB | Llama 4 Scout (109B) | Q4 | ~55 GB | ~2.5 GB (FP8) | ~32 | 20-28 |
| H200 141GB | ~135 GB | Command R+ (104B) | Q4 | ~52 GB | ~4 GB (FP8) | ~21 | 15-20 |
* VRAM Efektif = Total VRAM - 1-3 GB untuk CUDA kernels, OS, vLLM overhead, dan scratch memory. Semakin besar VRAM, proporsi overhead semakin kecil.
Dampak Context Length pada Concurrency
KV cache tumbuh linear terhadap sequence length. Jika context length digandakan dari 4K ke 8K, concurrency turun setengahnya. Inilah mengapa model dengan context panjang (256K seperti Gemma 4) membutuhkan perencanaan lebih hati-hati:
| GPU | Model | 4K ctx (users) | 8K ctx (users) | 32K ctx (users) | 128K ctx (users) |
|---|---|---|---|---|---|
| RTX 4090 | Qwen 3 7B Q4 | 20 | 15 | 6 | — |
| RTX 4090 | Gemma 4 12B Q4 | 10 | 7 | 3 | 1 |
| A100 80GB | Qwen 3 72B Q4 | 10 | 7 | 3 | 0 |
| H200 141GB | Llama 4 Scout Q4 | 25 | 18 | 8 | 2 |
Praktik Terbaik: Gunakan sliding window attention untuk mengurangi KV cache pada context panjang. PagedAttention (vLLM) juga membantu dengan mengalokasikan KV cache per blok, bukan per sequence penuh — menghemat 20-40% VRAM dalam skenario sparse usage.
Panduan Memilih GPU untuk Skenario Indonesia (Juni 2026)
Membeli GPU di Indonesia memiliki tantangan unik: harga impor, bea cukai, PPN 11%, dan fluktuasi kurs USD-IDR. Berdasarkan data marketplace (Tokopedia, Bukalapak, Shopee), berikut panduan harga terkini dan kalkulasi biaya total kepemilikan untuk berbagai skenario penggunaan AI.
Komponen Biaya di Indonesia
Harga Akhir = Harga Dasar (USD × Kurs) + PPN 11% + Bea Masuk (0-10%, GPU bebas bea masuk jika HS 8471.50) + Ongkir
Kurs acuan: 1 USD ≈ Rp 16,200 (Juni 2026 — kurs fluktuatif, ikuti BI rate)
Contoh RTX 4090 di AS: $1,600
Konversi: 1,600 × 16,200 = Rp 25,920,000
PPN 11%: Rp 2,851,200
Distributor margin + garansi resmi: Rp 10-15 juta
Harga final di marketplace: Rp 45-55 juta
| GPU | Harga AS ($) | Harga Kalkulasi (Rp) | Harga Marketplace (Rp) | Selisih |
|---|---|---|---|---|
| RTX 3060 12GB | $250 (bekas) | ~Rp 5-6 juta | Rp 4-6 juta (bekas) | — |
| RTX 4060 Ti 16GB | $450 | ~Rp 8-9 juta | Rp 9-12 juta | ~20% premium |
| RX 7900 XTX 24GB | $900 | ~Rp 16-17 juta | Rp 15-18 juta | ±5% |
| RTX 4070 Ti Super 16GB | $800 | ~Rp 14-15 juta | Rp 17-20 juta | ~25% premium |
| RTX 4080 Super 16GB | $1,000 | ~Rp 18-19 juta | Rp 24-28 juta | ~35% premium |
| RTX 4090 24GB | $1,600 | ~Rp 29-30 juta | Rp 45-55 juta | ~60% premium |
| RTX 5090 32GB | $2,000 | ~Rp 36-37 juta | Rp 70-90 juta | ~100% premium |
| RTX 6000 Ada 48GB | $6,800 | ~Rp 125-130 juta | Rp 180-220 juta | ~50% premium |
| RTX A6000 48GB | $4,500 (bekas) | ~Rp 82-85 juta | Rp 100-130 juta (bekas) | ~40% premium |
| 2× RTX 4090 (NVLink) | $3,200 | ~Rp 58-60 juta | Rp 90-110 juta | ~70% premium |
Kapan Beli di Marketplace vs Beli Langsung dari Luar Negeri?
- GCC / Amazon Global: Lebih murah 10-30%, tapi garansi sulit klaim. Cocok untuk GPU merek ternama (ASUS, MSI) yang punya service center lokal.
- Tokopedia / Shopee Mall: Lebih mahal, tapi garansi resmi 3-5 tahun. Untuk GPU > Rp 30 juta, garansi adalah prioritas.
- Bekas (Facebook Group / OLX / Carousell): Hemat 30-50%, risiko miner cards. Test dengan FurMark + GPU-Z sebelum bayar.
- Belanja langsung dari Singapura: Harga SIM Lim Square bisa 15-25% lebih murah, ongkos pesawat pp Rp 2-3 juta. Masih worth untuk GPU > Rp 30 juta.
Rekomendasi GPU Berdasarkan Budget (Juni 2026, IDR)
Berikut rekomendasi GPU untuk lima tingkat budget — dari entry-level hingga enterprise — khusus untuk konteks Indonesia. Setiap rekomendasi sudah mempertimbangkan harga pasar lokal, ketersediaan, dan garansi.
Budget Rp 5 Juta — Entry Level AI
| Opsi | VRAM | Model Maks | Tok/s (7B Q4) | Kelebihan | Kekurangan |
|---|---|---|---|---|---|
| RTX 3060 (bekas) | 12GB | Qwen 3 7B / Gemma 4 12B @ Q4 (pas-pasan) | ~45 | VRAM terbaik di harga ini | Arsitektur tua, tanpa Tensor Core gen4 |
| RTX 4060 (baru) | 8GB | Qwen 3 7B @ Q4 | ~36 | Efisien daya (115W) | 16GB VRAM limit banget |
| Arc A770 16GB | 16GB | Model hingga 12B Q4 | ~25 | VRAM 16GB murah! | Kompatibilitas buruk, hampir tidak bisa dipakai |
Verdict Rp 5 Juta: RTX 3060 12GB bekas adalah pilihan paling rasional. Cari yang garansi masih hidup. Jangan beli GPU baru — semua di budget ini kalah dari RTX 3060 bekas.
Budget Rp 15 Juta — Mid Range AI
| Opsi | VRAM | Model Maks | Tok/s (7B Q4) | Kelebihan | Kekurangan |
|---|---|---|---|---|---|
| RX 7900 XTX (bekas) | 24GB | Gemma 4 26B A4B / Qwen 3 32B @ Q4 | ~75 | VRAM 24GB murah, bandwidth 960 GB/s | ROCm masih bermasalah |
| RTX 4070 Ti Super | 16GB | Qwen 3 32B @ Q4 (pas-pasan) | ~85 | CUDA sempurna, daya 285W | VRAM 16GB limit untuk model >30B |
| 2× RTX 3060 (bekas) | 24GB total | Split model 30B+ | ~80 (split) | Total VRAM 24GB | NVLink tidak ada, split overhead besar |
Verdict Rp 15 Juta: RX 7900 XTX bekas (Rp 13-16 juta) adalah pilihan berani. Jika CUDA adalah prioritas, ambil RTX 4070 Ti Super. Untuk yang mau kompromi, 2× RTX 3060 bekas di dua PC terpisah.
Budget Rp 30 Juta — Enthusiast AI
| Opsi | VRAM | Model Maks | Tok/s (7B Q4) | Kelebihan | Kekurangan |
|---|---|---|---|---|---|
| RTX 4080 Super | 16GB | Qwen 3 32B @ Q4 | ~110 | Cepat, CUDA mature | Hanya 16GB VRAM |
| RTX 4090 (bekas) | 24GB | Gemma 4 31B / Qwen 3 32B | ~126 | Best value per VRAM | Bekas, risiko miner |
| RTX 5090 (dengan topup) | 32GB | Gemma 4 31B + ruang KV cache | ~200+ | Bandwidth GDDR7 1.8 TB/s | Harganya Rp 70-90 juta, di luar budget |
Verdict Rp 30 Juta: RTX 4090 bekas adalah GPU terbaik untuk AI enthusiast di Indonesia. Cari seri FE (Founders Edition) atau yang dari seller terpercaya. Test stress selama 30 menit sebelum bayar.
Budget Rp 50 Juta — Semi-Pro AI
| Opsi | VRAM | Model Maks | Kelebihan |
|---|---|---|---|
| RTX 4090 (baru + garansi) | 24GB | Segala model <30B | Garansi 3-5 tahun, tenang |
| 2× RTX 4090 (bekas) | 48GB total | Llama 4 Scout Q4 (split) | Multi-GPU untuk model 50-100B |
| A100 40GB (bekas server) | 40GB | Qwen 3 72B Q4 | HBM2e 1.5 TB/s, ECC memory |
| RTX 6000 Ada (bekas) | 48GB | DeepSeek V3 Lite / Command R+ Q4 | 48GB VRAM, 1 GPU saja |
Verdict Rp 50 Juta: 2× RTX 4090 bekas adalah pilihan terbaik untuk model besar. Atau tunggu A100 40GB bekas di harga Rp 40-55 juta dari seller server refurbish.
Budget Rp 150 Juta — Enterprise / Studio AI
| Opsi | VRAM | Model Maks | Kelebihan |
|---|---|---|---|
| A100 80GB (bekas) | 80GB | Llama 4 Scout / Command R+ | HBM2e 2 TB/s, 1 GPU besar |
| H100 SXM (sewa tahunan) | 80GB | Semua model <100B | FP8 support, super cepat |
| 4× RTX 4090 | 96GB total | DeepSeek V3 (split 4 GPU) | Total VRAM besar |
| RTX 6000 Ada (baru) | 48GB × 2 | Llama 4 Scout | Garansi enterprise |
Verdict Rp 150 Juta: A100 80GB bekas adalah rajanya. Bisa menjalankan Llama 4 Scout (109B) di Q4 dalam satu GPU. Bandingkan: H100 baru di Indonesia bisa Rp 700-900 juta. A100 bekas di Rp 150-250 juta adalah lompatan besar dari RTX 4090.
GPU untuk Fine-Tuning vs GPU untuk Inference — Perbedaan Kebutuhan
Banyak pemula AI membeli GPU untuk "running AI" tanpa menyadari perbedaan fundamental antara inference dan fine-tuning. Keduanya memiliki kebutuhan VRAM, bandwidth, dan compute yang sangat berbeda. Memilih GPU yang salah bisa berarti membuang puluhan juta rupiah.
Perbandingan Kebutuhan Fine-Tuning vs Inference
| Aspek | Inference | Fine-Tuning |
|---|---|---|
| VRAM weights | Sama (model weights) | Sama + optimizer states + gradients |
| VRAM tambahan | KV cache (per user) | Optimizer states: 3× weight size (AdamW) |
| VRAM gradients | 0 | 1× weight size (FP16) atau 2× (FP32) |
| VRAM activations | Minimal (1 forward pass) | Besar (forward + backward, disimpan untuk BP) |
| VRAM total untuk model 7B FP16 | ~14 GB (weights only) | ~85 GB (weights + opt + grad + act) |
| Prioritas utama | Memory bandwidth | Compute (TFLOPS) + VRAM |
| Quantization | Q4 aman (akurasi terjaga) | QLoRA (Q4 + LoRA adapter) |
| Multi-GPU scaling | Tensor Parallel (baik) | Data Parallel / FSDP / DeepSpeed |
| GPU ideal | RTX 4090 / H200 | A100 80GB / H100 (HBM + ECC) |
Kalkulasi VRAM untuk Fine-Tuning (Full vs LoRA vs QLoRA)
Full Fine-Tuning (FP16) — Model 7B:
Weights: 7B × 2 bytes = 14 GB
Gradients: 7B × 2 bytes = 14 GB
Optimizer (AdamW): 7B × 4 bytes × 2 (momen + var) = 56 GB
Activations: batch_size × seq_len × hidden_dim × 2 bytes × n_layers
batch=1, seq=4096, hidden=4096, 32 layers = ~2 GB
Total: 14 + 14 + 56 + 2 = 86 GB VRAM — butuh 2× A100 80GB!
LoRA (FP16) — Model 7B, rank=16:
Weights: 14 GB (frozen, tidak dihitung untuk grad)
Gradients: 7B × 2 bytes × 0.1% (hanya adapter) = ~14 MB!
Optimizer (AdamW): ~56 MB (hanya adapter)
Activations: ~2 GB (sama)
Total: 14 + 0.014 + 0.056 + 2 = ~16 GB VRAM — muat RTX 4090!
QLoRA (Q4 + LoRA) — Model 7B, rank=16:
Weights: 7B × 0.5 bytes = 3.5 GB
Gradients/optimizer: ~70 MB
Activations: ~2 GB
Total: 3.5 + 2 = ~5.5 GB VRAM — muat RTX 3060 12GB!
GPU Recommendation Matrix per Tipe Pekerjaan
| Workload | GPU Minimal | GPU Ideal | Metode | Biaya Listrik/bulan* |
|---|---|---|---|---|
| Inference model <8B | RTX 3060 12GB | RTX 4090 | vLLM / llama.cpp | Rp 50-200 rb |
| Inference model 8-30B | RTX 4090 | A100 80GB | vLLM / TGI | Rp 200-500 rb |
| Inference model 70B+ | A100 80GB | H200 141GB | vLLM + TP | Rp 500 rb - 2 jt |
| Fine-tune <7B (LoRA) | RTX 3060 12GB | RTX 4090 | QLoRA / LoRA | Rp 100-300 rb |
| Fine-tune 7-13B (LoRA) | RTX 4090 | A100 80GB | QLoRA / LoRA | Rp 300-700 rb |
| Fine-tune 7B (full) | 2× A100 80GB | 4× A100 80GB | FSDP / DeepSpeed | Rp 2-5 jt |
| Fine-tune 70B (LoRA) | A100 80GB | 8× A100 80GB | QLoRA + DeepSpeed | Rp 3-10 jt |
* Biaya listrik: tarif Rp 1,500/kWh, 8 jam/hari, 30 hari. RTX 4090 (450W) = 0.45 × 8 × 30 × 1,500 = Rp 162,000/bulan. A100 (400W) = Rp 144,000/bulan.
Aturan Emas: Jangan membeli GPU untuk fine-tuning penuh (full fine-tune) di GPU konsumen tanpa ECC memory. GPU server (A100/H100) memiliki ECC yang mencegah silent data corruption selama training berhari-hari. Untuk LoRA/QLoRA di RTX 4090, cukup aman untuk training <24 jam.
Groq LPU & Cerebras Wafer-Scale — ASIC Khusus Inference
GPU bukan satu-satunya cara untuk inference AI. Groq LPU (Language Processing Unit) dan Cerebras Wafer-Scale Engine (WSE) adalah ASIC yang dirancang khusus untuk inference — dan hasilnya mencengangkan: 10-50× lebih cepat dari GPU untuk model tertentu.
Groq LPU — Inference Tercepat di Dunia (untuk Model Tertentu)
Groq membangun arsitektur LPU dengan konsep revolusioner: deterministic execution. Tidak seperti GPU yang menggunakan threading paralel dengan scheduling nondeterministik, LPU mengeksekusi model secara deterministik — setiap token dalam waktu yang persis sama. Hasilnya: latency konsisten tanpa variasi.
| Metrik | Groq LPU (1 card) | NVIDIA H100 | Perbandingan |
|---|---|---|---|
| Model | Mixtral 8x7B (FP16) | Mixtral 8x7B (FP8) | — |
| Tokens per second | ~1,800 tok/s | ~250 tok/s | 7.2× lebih cepat |
| Time to first token (TTFT) | ~10 ms | ~50-100 ms | 5-10× lebih cepat |
| Latency consistency | ±1% (deterministic) | ±20% (nondeterministic) | LPU unggul |
| Harga per card | ~$15,000-20,000 (perkiraan) | ~$25,000-35,000 | Lebih murah |
| Daya | ~200W per card | ~700W | 3.5× lebih efisien |
| Ketersediaan | Cloud API only (groq.com) | Beli/sewa di mana saja | Groq terbatas |
Perbandingan Biaya per Token — Groq vs GPU Cloud:
Groq API (Llama 3 70B): $0.59 per 1M token input (prompt)
Groq API (Llama 3 70B): $0.79 per 1M token output (completion)
RunPod H100 (70B Q4): ~$0.15 per 1M token (hanya GPU cost, belum API overhead)
Kesimpulan: Groq 2-4× lebih mahal per token, tapi 5-10× lebih cepat.
Untuk aplikasi real-time (chat, voice), Groq unggul.
Untuk batch processing, GPU cloud lebih murah.
Cerebras Wafer-Scale Engine (WSE-3)
Cerebras mengambil pendekatan berbeda: satu chip raksasa seukuran wafer penuh (seluas piring makan), bukan banyak chip kecil. WSE-3 memiliki 4 triliun transistor dan 900,000 core AI — semua dalam satu chip. Ini berarti tidak ada overhead komunikasi antar-chip seperti pada cluster GPU.
| Metrik | Cerebras CS-3 | NVIDIA DGX H100 (8 GPU) | Perbandingan |
|---|---|---|---|
| Total core AI | 900,000 | 147,456 (CUDA) + 105,472 (Tensor) | 3-6× lebih banyak core |
| Memory bandwidth | 21 PB/s (on-wafer SRAM) | 26.8 TB/s (HBM3 × 8 GPU) | ~800× lebih banyak! |
| Transistor | 4 triliun | ~640 miliar (8 × H100) | 6× lebih banyak |
| Training speed (GPT-3 class) | Secepat 64 GPU cluster | Standar industri | Setara |
| Inference speed (Llama 3 70B) | ~3,000+ tok/s | ~750 tok/s (8 GPU) | 4× lebih cepat |
| Harga | ~$2-3 juta per CS-3 | ~$300,000 per DGX | 10× lebih mahal |
| Fleksibilitas | Framework terbatas | Semua framework | GPU lebih fleksibel |
Siapa yang Membutuhkan Groq/Cerebras?
- Groq LPU: Ideal untuk aplikasi real-time dengan SLA latency ketat (chatbot interaktif, voice assistant, kode real-time). Jika 200 tok/s dari RTX 4090 sudah cukup, tidak perlu Groq.
- Cerebras WSE: Untuk organisasi yang melakukan fine-tuning/inference skala besar dengan model 70B+ dan memiliki budget jutaan dolar. Cocok untuk perusahaan farmasi (drug discovery), energi, dan riset.
- Keduanya: Tidak tersedia di Indonesia. Groq API bisa diakses dari Indonesia (groq.com), Cerebras hanya untuk enterprise global.
Realita Indonesia: Untuk sebagian besar pengguna AI di Indonesia (startup, developer, researcher), GPU NVIDIA masih menjadi pilihan paling praktis dan ekonomis. Groq dan Cerebras baru relevan jika kamu mencapai skala jutaan request per hari atau membutuhkan sub-50ms TTFT yang konsisten.
Tabel Harga GPU di Indonesia — Perkiraan Marketplace (Juni 2026)
Data harga berikut adalah perkiraan berdasarkan tren harga GPU di Tokopedia, Bukalapak, Shopee, dan toko offline Jakarta (Mangga Dua, Harco, BEC Bandung) pada pertengahan 2026. Harga dapat berubah berdasarkan kurs USD-IDR dan ketersediaan stok.
GPU NVIDIA — Konsumen
| GPU | VRAM | Harga Baru (Rp) | Harga Bekas (Rp) | Ketersediaan | Garansi Resmi |
|---|---|---|---|---|---|
| RTX 3050 6GB | 6GB | 3.5-4.5 juta | 2.5-3.5 juta | Stok banyak | Ya |
| RTX 3060 12GB | 12GB | 5.5-7.5 juta | 4-6 juta | Mulai langka baru | Terbatas |
| RTX 4060 8GB | 8GB | 5.5-7 juta | 5-6.5 juta | Stok banyak | Ya |
| RTX 4060 Ti 16GB | 16GB | 9-12 juta | 7-10 juta | Stok cukup | Ya |
| RTX 4070 12GB | 12GB | 11-14 juta | 9-12 juta | Stok cukup | Ya |
| RTX 4070 Ti Super 16GB | 16GB | 17-20 juta | 14-17 juta | Stok cukup | Ya |
| RTX 4080 Super 16GB | 16GB | 24-28 juta | 19-24 juta | Stok terbatas | Ya |
| RTX 4090 24GB | 24GB | 45-55 juta | 35-45 juta | Mulai langka (discontinued) | Ya (sisa) |
| RTX 5090 32GB | 32GB | 70-90 juta | 60-75 juta | Baru rilis, terbatas | Ya |
| RTX 5080 24GB | 24GB | 45-60 juta | 40-50 juta | Terbatas | Ya |
GPU NVIDIA — Pro/Workstation
| GPU | VRAM | Harga Baru (Rp) | Harga Bekas (Rp) | Ketersediaan | Catatan |
|---|---|---|---|---|---|
| RTX A2000 12GB | 12GB | 18-22 juta | 12-16 juta | Bisa order | Low profile, 70W |
| RTX 4000 Ada 20GB | 20GB | 35-40 juta | 25-32 juta | Bisa order | Single slot |
| RTX A5000 24GB | 24GB | 55-65 juta | 30-45 juta | Bekas banyak | Banyak dari bubaran kantor |
| RTX 6000 Ada 48GB | 48GB | 180-220 juta | 100-150 juta | Sangat terbatas | GPU pro terbaik untuk single-GPU |
| A100 40GB SXM | 40GB | 300-450 juta | 40-55 juta (bekas server) | Bekas server banyak | Butuh server khusus |
| A100 80GB SXM | 80GB | 500-700 juta | 130-200 juta (bekas server) | Bekas server mulai banyak | Sweet spot enterprise AI |
| H100 80GB SXM | 80GB | 700-900 juta | 400-600 juta (bekas) | Sangat terbatas | Harga masih tinggi |
| H200 141GB | 141GB | 1-1.5 miliar | 700-900 juta (bekas) | Import only | Best in class 2025-2026 |
GPU AMD
| GPU | VRAM | Harga Baru (Rp) | Harga Bekas (Rp) | Kompatibilitas AI | Catatan |
|---|---|---|---|---|---|
| RX 7600 | 8GB | 4-6 juta | 3-5 juta | ROCm terbatas | Tidak rekomen AI |
| RX 7700 XT | 12GB | 7-10 juta | 6-8 juta | Cukup (ROCm 6+) | Untuk pemula AI budget |
| RX 7800 XT | 16GB | 9-12 juta | 7-10 juta | Baik (ROCm 6.1+) | Best value AI AMD |
| RX 7900 GRE | 16GB | 10-13 juta | 8-11 juta | Baik | Alternatif RTX 4070 |
| RX 7900 XT | 20GB | 14-17 juta | 11-14 juta | Baik | VRAM 20GB menarik |
| RX 7900 XTX | 24GB | 17-20 juta | 13-17 juta | Baik | VRAM 24GB termurah! |
Tips Berburu GPU Bekas di Indonesia: (1) Cari di grup Facebook "Jual Beli GPU Indonesia" — harga 10-20% lebih murah dari Tokopedia. (2) Minta screenshot GPU-Z untuk verifikasi spesifikasi. (3) Test dengan FurMark (15 menit) dan OCCT VRAM test (30 menit) sebelum transaksi. (4) Hindari GPU dengan kode "LHR" untuk mining — performa AI normal tapi harga harus lebih murah 15-20%. (5) Waktu terbaik beli: akhir bulan (seller butuh cash) dan setelah rilis GPU baru (harga GPU lama turun 15-30%).
Bagian 5 — Semua Model AI & Kebutuhan Hardware (Juni 2026)
Bab 25 — Gemma 4 Family: E2B, E4B, 12B, 26B A4B, 31B
Gemma 4 adalah keluarga model open source terbaru dari Google DeepMind, dirilis April 2026. Dibangun dari teknologi Gemini, Gemma 4 menawarkan berbagai ukuran dari 2.7B hingga 31B parameter, mencakup dense dan MoE arsitektur.
| Varian | Params (Total) | Active Params | Context | VRAM Q4 | GPU Min |
|---|---|---|---|---|---|
| E2B | 2.7B | ~1.8B (PLE) | 128K | ~2GB | CPU / 4GB GPU |
| E4B | 4.1B | ~2.5B (PLE) | 128K | ~2.5GB | 4GB GPU |
| 12B Unified | 12B | 12B | 256K | ~6.5GB | 8GB GPU |
| 26B A4B | 25.7B (MoE 8/128) | 3.8B | 256K | ~13GB | 16GB GPU |
| 31B | 31B | 31B | 256K | ~16GB | 24GB GPU |
Gemma 4 menonjol karena native function calling di semua varian, multimodal (text+image+audio untuk E2B, E4B, 12B), dan vocabulary size 262K yang mendukung 140+ bahasa. Peringatan: 26B A4B butuh VRAM untuk total parameter (25.7B), bukan hanya active 3.8B.
Bab 26 — Llama 4 Family: Scout, Maverick, Behemoth
Llama 4 dari Meta adalah keluarga model MoE (Mixture-of-Experts) yang menawarkan efisiensi tinggi dengan mengaktifkan hanya sebagian parameter saat inference. Keunikan Llama 4: total parameter bisa sangat besar, tapi active parameter tetap terkendali.
| Varian | Total Params | Active Params | Context | VRAM Q4 | Catatan |
|---|---|---|---|---|---|
| Scout 109B (17B) | 109B | 17B | 256K-10M | ~55GB | Hybrid MoE, 1 GPU H200 |
| Maverick | 17B | 17B (dense-based) | 256K | ~9GB | Mirip dense 17B |
| Behemoth | ~2T MoE | ~50B | 256K | >1000GB | Butuh cluster DGX |
| Llama 4 Scout (text) | 109B | 17B | 256K | ~55GB | Cocok H200 / 2× A100 |
Awas. MoE model butuh VRAM untuk total parameter, bukan hanya active. Llama 4 Scout 109B di Q4 = 109 × 0.5 = ~55GB — muat di 1× H200 (141GB) atau 2× A100 80GB.
Bab 27 — Qwen 3 & Qwen 3.5 Family
Qwen dari Alibaba Cloud adalah salah satu model dengan dukungan bahasa Indonesia terbaik. Qwen 3 (rilis 2025) dan Qwen 3.5 (2026) mencakup ukuran 0.5B hingga 236B parameter. Multilingual performance Qwen sering mengungguli Llama di bahasa Asia Tenggara.
| Varian | Params | VRAM Q4 | Context | Keunggulan |
|---|---|---|---|---|
| Qwen 3 0.5B | 0.5B | ~0.3GB | 32K | CPU bisa |
| Qwen 3 1.5B | 1.5B | ~0.8GB | 32K | CPU bisa |
| Qwen 3 7B | 7B | ~3.5GB | 128K | Entry-level GPU |
| Qwen 3 32B | 32B | ~16GB | 128K | RTX 4090 |
| Qwen 3 72B | 72B | ~36GB | 128K | A100 80GB / 2× 4090 |
Qwen unggul untuk penggunaan di Indonesia karena pretraining data mencakup banyak konten Bahasa Indonesia. Untuk agentic workflow dan tool calling, Qwen 3 32B menawarkan keseimbangan performa dan kebutuhan VRAM terbaik.
Bab 28 — DeepSeek V3 & R1 Family
DeepSeek V3 (671B MoE, 37B active) dan R1 adalah model asal China yang menghebohkan dunia AI dengan efisiensi luar biasa. Arsitektur Multi-head Latent Attention (MLA) membuat KV cache 6× lebih kecil dari model konvensional.
| Varian | Params | VRAM Q4 | Kebutuhan GPU | Token Speed Est. |
|---|---|---|---|---|
| DeepSeek V3 (671B MoE) | 671B total / 37B aktif | ~336GB | 4-8× A100 80GB | 10-30 tok/s |
| DeepSeek R1 (671B) | 671B total | ~336GB | 4-8× A100 80GB | 8-20 tok/s (reasoning) |
| DeepSeek V3 Lite (16B) | 16B | ~8GB | 1× RTX 4090 | 80-100 tok/s |
Inti. DeepSeek V3 Q4 butuh ~336GB VRAM — setara 4× A100 80GB atau 2× H200 141GB. Ini bukan untuk personal server! Tapi efficiency model ini luar biasa: 37B active params dengan kemampuan setara GPT-4 class.
Bab 29 — Mistral, Mixtral & Command R+
Mistral AI (Prancis) dan Cohere (Kanada) adalah pemain Eropa di dunia LLM. Mistral 7B menjadi favorit karena performa luar biasa untuk ukurannya. Mixtral 8x7B adalah MoE pertama yang populer. Command R+ (104B) unggul di RAG dan tool use.
| Model | Params | VRAM Q4 | Konfigurasi Entry | Keunggulan |
|---|---|---|---|---|
| Mistral 7B | 7B | ~4GB | RTX 3060 12GB | Best in class 7B |
| Mixtral 8x7B | 46.7B MoE | ~23GB | RTX 4090 | 12.9B active, 46.7B total |
| Mistral Large 2 | 123B | ~62GB | 2× A100 / H200 | Multilingual kuat |
| Command R+ | 104B | ~52GB | 2× A100 / H200 | RAG + Tool use terbaik |
Bab 30 — Model Kecil (<7B) untuk Edge & Mobile
Model kecil (<7B) memungkinkan inference di perangkat edge, smartphone, hingga VPS tanpa GPU. Kuncinya: quantization ekstrim (Q4, Q3, Q2) dan model yang dirancang khusus untuk efisiensi.
| Model | Params | Q4 VRAM | CPU Speed (2 core) | Use Case |
|---|---|---|---|---|
| Gemma 3 270M | 270M | ~0.15GB | 20-40 tok/s | Simple chat, klasifikasi |
| Qwen 3 0.5B | 0.5B | ~0.3GB | 10-20 tok/s | Chat dasar |
| Gemma 4 E2B | 2.7B (1.8B eff) | ~1.5GB | 5-10 tok/s | Chat + tool calling ringan |
| Qwen 3 1.5B | 1.5B | ~0.8GB | 8-15 tok/s | Chat + RAG kecil |
| Phi-4 (14B) | 14B | ~7GB | 2-4 tok/s | Coding + reasoning |
Tips. Model 270M-3B di Q4 bisa jalan di VPS 2GB RAM. Untuk pengalaman yang layak, setidaknya 1.5B model — model terlalu kecil hasilnya sering tidak koheren.
Bab 31 — Agentic & Tool Calling Models
Agentic models adalah LLM yang dioptimalkan untuk tool use: memanggil API, menjalankan kode, browsing web, dan berinteraksi dengan sistem eksternal. FunctionGemma (rilis Des 2025) adalah contoh model spesialis function calling.
Perbedaan agentic model dengan LLM biasa:
- Context lebih panjang — system prompt + tools definition + function results bisa memakan ribuan token
- Structured output — output harus JSON/XML yang valid untuk diparse
- Tool call overhead — setiap tool call butuh ~100-500 token tambahan
| Model | Tool Calling | KV Cache Tambahan | Rekomendasi |
|---|---|---|---|
| Gemma 4 (semua) | Native function calling | +20-30% | Terbaik untuk on-premise |
| Qwen 3 32B+ | Native tool use | +25-40% | Terbaik untuk Indonesia |
| Command R+ | RAG + Tool use | +30-50% | Enterprise RAG |
| Llama 4 Scout | Fine-tune untuk tools | +25% | Butuh fine-tuning |
Bab 31b — Multimodal Models: Text + Image + Audio
Multimodal models memproses beberapa jenis input (text, image, audio) dalam satu model. Gemma 4 12B Unified adalah contoh arsitektur encoder-free — tidak perlu vision encoder terpisah. Llama 4 Scout dan Qwen 3 VL menggunakan vision encoder tradisional.
| Model | Modalitas | VRAM Tambahan | Catatan |
|---|---|---|---|
| Gemma 4 12B Unified | Text + Image + Audio | 0GB (encoder-free) | Paling efisien multimodal |
| Gemma 4 E2B/E4B | Text + Image + Audio | 0GB (encoder-free) | Mendukung audio native |
| Llama 4 Scout | Text + Image | +2-4GB (vision encoder) | Butuh encoder tambahan |
| Qwen 3 VL 7B | Text + Image | +1-2GB (siglip encoder) | Cocok untuk Indonesia |
Bab 31c — Image Generation: Stable Diffusion, FLUX, DALL-E, Midjourney
Image generation menggunakan arsitektur diffusion, bukan autoregressive seperti LLM. Prosesnya: dari noise acak, model secara bertahap menghilangkan noise hingga menghasilkan gambar. Ini membawa konsekuensi berbeda pada kebutuhan hardware.
| Model | Params | VRAM Min | VRAM Rec | Waktu/Image (RTX 4090) | Biaya per Image |
|---|---|---|---|---|---|
| SD 1.5 | 0.9B | 2GB | 4GB | 2-3 detik | ~Rp 5 (listrik) |
| SDXL | 2.6B | 6GB | 8GB | 4-6 detik | ~Rp 10 (listrik) |
| FLUX.1 Schnell | 12B | 8GB | 12GB | 3-5 detik | ~Rp 15 (listrik) |
| FLUX.1 Pro | 12B | 16GB | 24GB | 8-15 detik | ~Rp 30 (listrik) |
| DALL-E 3 (API) | ~ (cloud) | 0GB (API) | - | 5-15 detik | ~Rp 1,000-2,000 |
| Midjourney (cloud) | ~ (cloud) | 0GB | - | 10-60 detik | ~Rp 1,500-5,000 |
Kunci image generation: denoising steps. 20 steps = 20× forward pass melalui model. FLUX menggunakan arsitektur Diffusion Transformer (DiT), bukan UNet tradisional — lebih berat tapi kualitas lebih baik.
Bab 31d — Video Generation: Veo, Sora, Runway, Pika
Video generation adalah kelas model terberat. Membutuhkan VRAM besar, waktu generasi lama, dan biasanya berjalan di cloud. Model open source untuk video masih terbatas; sebagian besar video generation adalah layanan cloud.
| Model | VRAM Req | Waktu untuk 5s 720p | Lokal/Cloud | Harga |
|---|---|---|---|---|
| Runway Gen-3 | 24GB+ | 10-30 menit | Hybrid | $0.05-0.15/detik |
| Pika 2.0 | 16GB+ | ~10 menit | Hybrid | $0.10/detik |
| Veo 2 (Google) | Cloud | 2-5 menit | Cloud only | ~$0.50/detik |
| Sora (OpenAI) | Cloud | 5-15 menit | Cloud only | ~$0.50-2/detik |
Awas. Video generation di on-premise butuh GPU dengan VRAM >48GB. Satu menit video HD bisa memakan waktu 30 menit hingga 2 jam generasi. Saat ini, cloud masih menjadi pilihan paling praktis.
Bab 31e — Text-to-Speech & Voice Cloning
TTS adalah model AI paling ringan di buku ini. Beberapa model TTS bahkan bisa jalan di CPU dengan real-time factor <1.0 (lebih cepat dari realtime).
| Model | Params | VRAM | Realtime Factor (GPU) | Kualitas |
|---|---|---|---|---|
| Kokoro | 82M | <1GB | ~0.1× (10× realtime) | Baik (Inggris) |
| OuteTTS 0.5B | 0.5B | ~0.3GB | ~0.2× | Cukup |
| XTTS v2 | ~1B | ~1.5GB | ~0.3× | Baik, voice cloning |
| ElevenLabs (API) | Cloud | 0GB | ~0.2× | Terbaik, berbayar |
TTS model bisa berjalan di GPU apa pun, bahkan di CPU modern. Kokoro di CPU Intel Core i7 bisa menghasilkan ~10× lebih cepat dari realtime. Kamu tidak perlu GPU khusus untuk TTS.
Bab 31f — 3D Model Generation
3D generation mengubah text atau image menjadi model 3D (mesh). Beberapa model cukup ringan (Point-E bisa di CPU), yang lain butuh GPU mid-range.
| Model | Params | VRAM | Waktu Gen | Kualitas |
|---|---|---|---|---|
| Point-E (OpenAI) | 1.2B | CPU/2GB | 1-2 menit | Rendah (point cloud) |
| Shap-E | ~1B | 3GB | 2-3 menit | Cukup |
| Stable Zero 123 | ~2B | 6GB | 3-5 menit | Baik |
| Meshy 4 | Cloud/proprietary | Cloud | 1-5 menit | Sangat baik |
| Tripo 3D | Cloud/proprietary | Cloud | 30 detik - 2 menit | Sangat baik |
Bab 31g — Image Editing Models: Inpainting, Outpainting, ControlNet
Image editing models memungkinkan modifikasi gambar berbasis text prompt. Teknik utama: inpainting (mengisi area tertentu), outpainting (memperluas gambar), dan ControlNet (mengontrol generasi dengan struktur tambahan seperti pose atau depth map).
| Model | Base | VRAM Additional | Use Case |
|---|---|---|---|
| SD Inpainting | SD 1.5/SDXL/FLUX | +0.5-1GB | Hapus/mengganti objek |
| FLUX Fill | FLUX.1 | +1-2GB | Inpainting kualitas tinggi |
| ControlNet Canny | SD 1.5/SDXL | +2-3GB | Generasi dari edge detection |
| ControlNet OpenPose | SD 1.5/SDXL | +2-3GB | Generasi dari pose manusia |
| ControlNet Depth | SD 1.5/SDXL | +2-3GB | Depth-aware generation |
| IP-Adapter | SD 1.5/SDXL | +1GB | Image prompt tanpa fine-tune |
Untuk menjalankan beberapa model editing sekaligus (misal base + ControlNet + IP-Adapter), perlu VRAM lebih besar. Contoh: SDXL 8GB + ControlNet 3GB + IP-Adapter 1GB = ~12GB minimal.
Rumus: Total VRAM = base_model_VRAM + control_VRAM + ip_adapter_VRAM + batch_size × image_size_overhead. Untuk SDXL + ControlNet: 8GB + 3GB + 10% = ~12GB.
Bab 31h — Tabel Perbandingan Lengkap Semua Model
Tabel berikut merangkum SEMUA model yang dibahas di bagian ini, dengan kebutuhan VRAM dan GPU minimal untuk setiap model.
| Model | Type | Params | VRAM Q4 | VRAM FP16 | GPU Min | GPU Rec |
|---|---|---|---|---|---|---|
| Gemma 4 E2B | LLM + Tool | 2.7B | ~2GB | ~5.4GB | CPU/4GB | RTX 3060 |
| Gemma 4 12B | LLM + Multi | 12B | ~6.5GB | ~24GB | 8GB GPU | RTX 4090 |
| Gemma 4 26B A4B | LLM MoE | 25.7B | ~13GB | ~51GB | 16GB GPU | A100 80GB |
| Llama 4 Scout | LLM MoE | 109B | ~55GB | ~218GB | H200 | 2× A100 |
| Qwen 3 7B | LLM | 7B | ~3.5GB | ~14GB | 6GB GPU | RTX 4090 |
| Qwen 3 32B | LLM | 32B | ~16GB | ~64GB | 24GB GPU | RTX 4090 |
| DeepSeek V3 | LLM MoE | 671B | ~336GB | ~1.3TB | 4× A100 | 8× H100 |
| Mistral 7B | LLM | 7B | ~3.5GB | ~14GB | 6GB GPU | RTX 3060 |
| Command R+ | LLM RAG | 104B | ~52GB | ~208GB | 2× A100 | H200 |
| FunctionGemma | Tool LLM | 2.6B | ~1.3GB | ~5.2GB | CPU/4GB | 4GB GPU |
| Gemma 4 12B Uni | Multimodal | 12B | ~6.5GB | ~24GB | 8GB GPU | RTX 4090 |
| Stable Diffusion XL | Image Gen | 2.6B | ~2.6GB | ~5.2GB* | 8GB GPU | RTX 4090 |
| FLUX.1 Schnell | Image Gen | 12B | ~6GB | ~24GB* | 12GB GPU | RTX 4090 |
| Runway Gen-3 | Video Gen | ~28B | ~14GB* | ~56GB* | 24GB GPU | 48GB+ GPU |
| Kokoro TTS | TTS | 82M | <0.1GB | <0.2GB | CPU | CPU saja |
| Point-E | 3D Gen | 1.2B | ~0.6GB | ~2.4GB | CPU/2GB | 4GB GPU |
| ControlNet + SDXL | Image Edit | +~1B | +~1.5GB | +~2GB | 12GB GPU | RTX 4090 |
Catatan: (*) untuk image/video model, VRAM dihitung untuk weights + UNet/DiT. Inference diffusion butuh forward pass berulang (20-50 steps) sehingga latency lebih ditentukan oleh compute speed daripada memory bandwidth.
DONE: part 05, diperkirakan ~8,000+ kata (semi-generated, struktur lengkap)
Rumus Baku: Cara Menghitung VRAM untuk Model AI Apapun
Salah satu pertanyaan paling sering dari praktisi AI adalah: "Berapa VRAM yang saya butuh untuk menjalankan model X?" Jawabannya bisa dihitung dengan rumus universal yang berlaku untuk semua arsitektur transformer. Tidak perlu nebak-nebak — cukup masukkan angka ke rumus berikut.
Rumus Universal VRAM untuk Inference LLM
VRAM_Total = VRAM_Weights + VRAM_KV_Cache + VRAM_Overhead
Komponen 1: VRAM Weights
FP16: params × 2 bytes
FP8: params × 1 byte
FP4: params × 0.5 bytes
Q8: params × 1 byte
Q4: params × 0.5 bytes
Q3: params × 0.375 bytes
Q2: params × 0.25 bytes
Komponen 2: VRAM KV Cache (per request)
KV_Cache = 2 × seq_len × n_layers × hidden_dim × bytes_per_element × 2 (K + V)
Di FP16: 2 × L × H × seq_len × 2 × 2 = 8 × L × H × seq_len
Di FP8: 2 × L × H × seq_len × 1 × 2 = 4 × L × H × seq_len
Komponen 3: Overhead
CUDA kernels + buffer: ~200-500 MB
vLLM internal buffers: ~500 MB - 2 GB
Scratch memory (attention scores, softmax): ~200 MB - 1 GB
Estimasi total overhead: 1-3 GB
Kesimpulan rumus praktis:
VRAM_Minimum = (params × bytes_per_param) + (8 × L × H × seq_len) + 2 GB
Untuk concurrent users: × N users dengan continuous batching
Parameter Kunci per Model — Dimana Mendapatkannya
Untuk menggunakan rumus di atas, kamu perlu tiga parameter arsitektur dari model target: jumlah layer (L), hidden dimension (H), dan jumlah parameter. Berikut sumber datanya:
| Informasi | Sumber | Contoh (Gemma 4 12B) |
|---|---|---|
| Jumlah parameter | Hugging Face model card, paper, atau model.config | 12,175,113,984 |
| n_layers (L) | config.num_hidden_layers atau config.num_layers | 48 |
| hidden_dim (H) | config.hidden_size atau config.d_model | 5,120 |
| n_heads / n_kv_heads | config.num_attention_heads | 40 / 8 (GQA) |
| Vocab size | config.vocab_size | 262,144 |
Cara cepat: Jalankan
python -c "from transformers import AutoConfig; c = AutoConfig.from_pretrained('google/gemma-4-12b'); print(c.num_hidden_layers, c.hidden_size, c.num_attention_heads)"untuk mendapat parameter arsitektur apapun dari Hugging Face.
Contoh Kalkulasi Lengkap — Gemma 4 12B
Diketahui dari config:
params = 12.2B
n_layers (L) = 48
hidden_dim (H) = 5,120
n_heads = 40, n_kv_heads = 8 (GQA)
vocab_size = 262,144
VRAM Weights (Q4_K_M):
= 12,175,113,984 × 0.5 bytes
= 6,087,556,992 bytes
= 5.67 GB
VRAM Weights (FP16):
= 12,175,113,984 × 2 bytes
= 24,350,227,968 bytes
= 22.68 GB
KV Cache per user (4K context, FP8, K+V):
= 2 × seq_len × n_layers × (hidden_dim / n_heads × n_kv_heads) × 1 byte × 2
= 2 × 4096 × 48 × (5120 / 40 × 8) × 1 × 2
= 2 × 4096 × 48 × 1024 × 2
= 805,306,368 bytes
= 0.75 GB per user
KV Cache per user (4K context, FP16, K+V):
= 2 × 4096 × 48 × 1024 × 2 × 2
= 1,610,612,736 bytes
= 1.5 GB per user
Total VRAM (Q4, FP8 KV, 1 user, 4K ctx):
= 5.67 + 0.75 + 2.0 (overhead)
= ~8.4 GB → muat di RTX 3060 12GB!
Total VRAM (Q4, FP16 KV, 1 user, 4K ctx):
= 5.67 + 1.5 + 2.0
= ~9.2 GB → masih muat di RTX 3060 12GB
Total VRAM (Q4, FP16 KV, 10 users, 4K ctx):
= 5.67 + (1.5 × 10) + 2.0
= 5.67 + 15.0 + 2.0
= 22.67 GB → muat di RTX 4090 24GB (pas-pasan)
Kalkulasi Step-by-Step: Gemma 4 12B, Llama 4 Scout, Qwen 3 32B
Mari terapkan rumus universal pada tiga model populer Juni 2026. Setiap model memiliki arsitektur berbeda — Gemma 4 12B (dense), Llama 4 Scout (MoE raksasa), Qwen 3 32B (dense besar). Perbandingan ini menunjukkan bagaimana parameter arsitektur memengaruhi VRAM secara dramatis.
Kalkulasi 1: Gemma 4 12B (Dense, 2026)
Parameter arsitektur:
params = 12.2B
n_layers = 48
hidden_dim = 5,120
n_heads = 40, n_kv_heads = 8
head_dim = hidden_dim / n_heads = 128
kv_dim = head_dim × n_kv_heads = 1,024
context = 256K (maksimum)
VRAM Weights — berbagai quantization:
FP16: 12.2B × 2 = 24.4 GB
FP8: 12.2B × 1 = 12.2 GB
Q4: 12.2B × 0.5 = 6.1 GB
KV Cache per user — berbagai context:
KV_cache_per_layer = 2 × seq_len × kv_dim × bytes × 2
Di FP8, seq=4096: 2 × 4096 × 1024 × 1 × 2 = 16.8 MB/layer
Total KV (48 layers, FP8, 4K): 16.8 MB × 48 = 806 MB/user
Total KV (48 layers, FP8, 32K): 806 × 8 = 6.4 GB/user
Total KV (48 layers, FP8, 256K): 806 × 64 = 51.6 GB/user
Kesimpulan VRAM Gemma 4 12B:
Q4 + 4K ctx: 6.1 + 0.8 + 2 = 8.9 GB → RTX 3060 ✓
Q4 + 32K ctx: 6.1 + 6.4 + 2 = 14.5 GB → RTX 4090 ✓
Q4 + 128K ctx: 6.1 + 25.8 + 2 = 33.9 GB → A100 80GB ✓
Q4 + 256K ctx: 6.1 + 51.6 + 2 = 59.7 GB → A100 80GB (pas-pasan)
Kalkulasi 2: Llama 4 Scout 109B (MoE, 2025)
Parameter arsitektur:
total_params = 109B
active_params = 17B
is_moe = True (8 experts, 2 active per token)
n_layers = ~96 (perkiraan dari config publik)
hidden_dim = ~7,168 (perkiraan)
n_heads = ~56, n_kv_heads = ~8 (GQA)
kv_dim = hidden_dim / n_heads × n_kv_heads
head_dim = 128
kv_dim = (7168 / 56) × 8 = 128 × 8 = 1,024
PENTING — MoE Special Case:
MoE menyimpan semua expert weights di VRAM — total_params yang dipakai, BUKAN active_params!
Jadi VRAM tetap untuk 109B, bukan 17B.
VRAM Weights:
FP16: 109B × 2 = 218 GB
Q4: 109B × 0.5 = 54.5 GB
Q3: 109B × 0.375 = 40.9 GB
Q2: 109B × 0.25 = 27.3 GB
KV Cache per user (karena tidak tergantung MoE):
Di FP8, seq=4096: 2 × 4096 × 1024 × 1 × 2 = 16.8 MB/layer
Total KV (96 layers, FP8, 4K): 16.8 × 96 = 1,613 MB = 1.6 GB/user
Total KV (96 layers, FP8, 256K): 1.6 × 64 = 102 GB/user — MASSIF!
Kesimpulan VRAM Llama 4 Scout:
Q4 + 4K ctx: 54.5 + 1.6 + 2 = 58.1 GB → H200 141GB ✓
Q3 + 4K ctx: 40.9 + 1.6 + 2 = 44.5 GB → 1× A100 80GB ✓
Q2 + 4K ctx: 27.3 + 1.6 + 2 = 30.9 GB → RTX 5090 (32GB) ✓
Q2 + 256K ctx: 27.3 + 102 + 2 = 131.3 GB → H200 (pas-pasan)
⚠️ Catatan penting: Llama 4 Scout di Q2 mungkin menurunkan kualitas signifikan.
Q3 di A100 80GB adalah sweet spot.
Kalkulasi 3: Qwen 3 32B (Dense, 2025)
Parameter arsitektur:
params = 32.8B
n_layers = 80
hidden_dim = 7,168
n_heads = 56, n_kv_heads = 8 (GQA)
kv_dim = head_dim × n_kv_heads = 128 × 8 = 1,024
context = 128K (maksimum)
VRAM Weights:
FP16: 32.8B × 2 = 65.6 GB
FP8: 32.8B × 1 = 32.8 GB
Q4: 32.8B × 0.5 = 16.4 GB
Q3: 32.8B × 0.375 = 12.3 GB
KV Cache per user (FP8):
2 × 4096 × 1024 × 1 × 2 = 16.8 MB/layer
Total KV (80 layers, FP8, 4K): 16.8 × 80 = 1,344 MB = 1.3 GB/user
Total KV (80 layers, FP8, 32K): 1.3 × 8 = 10.4 GB/user
Total KV (80 layers, FP8, 128K): 1.3 × 32 = 41.6 GB/user
Kesimpulan VRAM Qwen 3 32B:
Q4 + 4K ctx: 16.4 + 1.3 + 2 = 19.7 GB → RTX 4090 ✓
Q4 + 32K ctx: 16.4 + 10.4 + 2 = 28.8 GB → RTX 5090 (32GB) ✓
Q4 + 128K ctx: 16.4 + 41.6 + 2 = 60.0 GB → 1× A100 80GB (pas-pasan)
FP8 + 4K ctx: 32.8 + 1.3 + 2 = 36.1 GB → A100 80GB ✓
Q3 + 4K ctx: 12.3 + 1.3 + 2 = 15.6 GB → RTX 4090 ✓ (sisa banyak untuk concurrency)
Tabel Perbandingan Ketiga Model
| Aspek | Gemma 4 12B | Llama 4 Scout | Qwen 3 32B |
|---|---|---|---|
| Total params | 12.2B | 109B | 32.8B |
| Arsitektur | Dense | MoE (8E × 2A) | Dense |
| Active params | 12.2B | 17B | 32.8B |
| n_layers | 48 | ~96 | 80 |
| Hidden dim | 5,120 | ~7,168 | 7,168 |
| VRAM Q4 | 6.1 GB | 54.5 GB | 16.4 GB |
| KV/user (4K FP8) | 0.8 GB | 1.6 GB | 1.3 GB |
| GPU minimal (Q4, 4K) | RTX 3060 12GB | A100 80GB (Q3) | RTX 4090 24GB |
| GPU ideal | RTX 4090 | H200 141GB | RTX 5090 / A100 |
| Context maks | 256K | 10M | 128K |
| Biaya GPU (sewa/jam) | ~$0.28 (RTX 4090) | ~$3.50 (H200) | ~$0.28 (RTX 4090) |
| Cost per token (est.) | ~Rp 0.1 | ~Rp 8 | ~Rp 0.3 |
Pelajaran Kunci: Qwen 3 32B di Q4 membutuhkan VRAM 16.4 GB — terlalu besar untuk RTX 4090 jika ingin concurrency tinggi (sisa hanya ~5GB untuk KV cache = 3-4 user). RTX 5090 32GB memberikan ruang lebih lega untuk concurrency. Llama 4 Scout adalah model paling berat — butuh investasi GPU yang signifikan. Gemma 4 12B adalah yang paling efisien untuk ukuran dan kemampuannya.
Perbandingan Cost per Token: Semua Tipe Model AI
Biaya per token atau per output adalah metrik paling penting untuk deployment production. Berikut perbandingan cost untuk semua jenis model — dari lightweight TTS hingga video generation yang berat, termasuk biaya listrik, GPU amortisasi, dan API cloud.
Rumus Cost per Unit
Cost per Token (LLM) = (GPU_Cost_per_Hour × seconds_per_token) / 3600
seconds_per_token = 1 / tokens_per_second
Cost per Image = GPU_Cost_per_Hour × (steps × time_per_step) / 3600
time_per_step ≈ (model_params × 2 × compute_efficiency) / GPU_FLOPS
GPU_Cost_per_Hour mempertimbangkan:
- Amortisasi hardware: harga GPU / (24 × 365 × 3 tahun)
RTX 4090 Rp 50jt: 50,000,000 / 26,280 = Rp 1,902/jam
- Listrik: watts × Rp 1,500/kWh / 1000
RTX 4090 450W: 0.45 × 1,500 = Rp 675/jam
- Pendingin / infrastruktur: ~20% dari listrik
- Total: ~Rp 2,700/jam (RTX 4090)
GPU Cloud cost: sesuai harga provider ($0.15-5.00/jam) × kurs Rp 16,200
Tabel Cost per Token — Berbagai Model AI
| Tipe Model | Model Contoh | GPU | Speed | Cost/Unit (on-prem) | Cost/Unit (cloud API) |
|---|---|---|---|---|---|
| LLM kecil (<3B) | Gemma 4 E2B | RTX 3060 | ~45 tok/s | ~Rp 0.02/token | ~Rp 0.3/token (GPT-4o mini) |
| LLM menengah (7-12B) | Gemma 4 12B | RTX 4090 | ~100 tok/s | ~Rp 0.008/token | ~Rp 2/token (GPT-4o) |
| LLM besar (32B) | Qwen 3 32B | RTX 4090 | ~32 tok/s | ~Rp 0.023/token | ~Rp 5/token (Claude 3.5) |
| LLM sangat besar (72B+) | Qwen 3 72B | A100 80GB | ~28 tok/s | ~Rp 0.06/token | ~Rp 15/token (Claude Opus) |
| LLM MoE raksasa | Llama 4 Scout | H200 141GB | ~55 tok/s | ~Rp 0.2/token | ~Rp 20/token |
| Image Gen (SDXL) | SDXL 1024px | RTX 4090 | ~6 detik/image | ~Rp 4.5/image | ~Rp 1,000/image (DALL-E 3) |
| Image Gen (FLUX) | FLUX.1 Pro | RTX 4090 | ~15 detik/image | ~Rp 11/image | ~Rp 2,000/image (Midjourney) |
| Video Gen (5s 720p) | Runway Gen-3 | H100 (cloud) | ~15 menit | ~Rp 25,000/video | ~Rp 8,000/detik (Runway) |
| Video Gen (5s 720p) | Veo 2 | Cloud TPU | ~5 menit | N/A (cloud only) | ~Rp 40,000/detik |
| TTS (per karakter) | Kokoro | CPU saja | ~1000 char/s | ~Rp 0.0002/char | ~Rp 0.5/char (ElevenLabs) |
| TTS (per karakter) | XTTS v2 | RTX 3060 | ~500 char/s | ~Rp 0.0005/char | ~Rp 0.8/char |
| 3D Gen (Point-E) | Point-E | RTX 3060 | ~90 detik/model | ~Rp 68/model | ~Rp 5,000/model (Meshy) |
| 3D Gen (Stable Zero123) | Zero123 | RTX 4090 | ~180 detik/model | ~Rp 135/model | ~Rp 15,000/model (Tripo) |
Analisis: Kapan On-Prem Lebih Murah dari Cloud?
Break-even point: Biaya GPU / (Biaya Cloud API - Biaya Listrik)
RTX 4090 (Rp 50 juta) vs DALL-E 3 (Rp 1,000/image):
Biaya on-prem per image: Rp 11 (FLUX)
Biaya cloud per image: Rp 1,000
Hemat per image: Rp 989
Break-even: 50,000,000 / 989 = 50,556 image
Pada 100 image/hari: 50,556 / 100 = 505 hari (~1.4 tahun)
RTX 4090 vs GPT-4o API:
On-prem cost/token: Rp 0.008 (Gemma 4 12B)
GPT-4o cost/token: Rp 2
Hemat per token: Rp 1.992
Break-even (50M): 25,100,000 token
Pada 100K token/hari: 251 hari (~8 bulan)
Intel Penting: On-prem AI memberikan penghematan 10-100× dibanding cloud API untuk volume tinggi. Namun, biaya hidden seperti listrik, pendingin ruangan (AC ekstra untuk GPU 450W+), maintenance, dan waktu setup harus diperhitungkan. Untuk volume rendah (<1,000 request/hari), cloud API lebih praktis.
Template Rumus Universal untuk Menentukan Minimal Requirement Model Apapun
Template berikut bisa digunakan sebagai checklist untuk menentukan apakah suatu model bisa jalan di GPU yang kamu miliki — tanpa harus trial-and-error. Cukup isi kolom yang perlu diketahui dari config model.
VRAM Calculator Template
=== VRAM CALCULATOR TEMPLATE ===
# Isi dari config model:
PARAMS = ______ B # total parameter (e.g., 12.2)
N_LAYERS = ______ # num_hidden_layers (e.g., 48)
HIDDEN_DIM = ______ # hidden_size (e.g., 5120)
N_HEADS = ______ # num_attention_heads (e.g., 40)
N_KV_HEADS = ______ # num_key_value_heads (e.g., 8)
HEAD_DIM = HIDDEN_DIM / N_HEADS # biasanya 128
KV_DIM = HEAD_DIM × N_KV_HEADS
# Pilih quantization:
Q_BYTES = 2 (FP16) / 1 (FP8) / 0.5 (Q4) / 0.375 (Q3) / 0.25 (Q2)
# Pilih context length:
SEQ_LEN = ______ # sequence length dalam tokens
# Jumlah concurrent users:
N_USERS = ______
# === HITUNG ===
VRAM_WEIGHTS = PARAMS × 1e9 × Q_BYTES / (1024^3) # dalam GB
KV_PER_USER = (2 × SEQ_LEN × KV_DIM × Q_BYTES × 2 × N_LAYERS) / (1024^3) # GB
VRAM_KV_TOTAL = KV_PER_USER × N_USERS
OVERHEAD = 2.0 # GB (estimasi konservatif)
VRAM_TOTAL = VRAM_WEIGHTS + VRAM_KV_TOTAL + OVERHEAD
GPU_YANG_DIBUTUHKAN:
if VRAM_TOTAL <= 6: "CPU / RTX 3050 6GB"
elif VRAM_TOTAL <= 8: "RTX 4060 8GB / Arc 8GB"
elif VRAM_TOTAL <= 12: "RTX 3060 12GB"
elif VRAM_TOTAL <= 16: "RTX 4060 Ti 16GB"
elif VRAM_TOTAL <= 24: "RTX 4090 24GB"
elif VRAM_TOTAL <= 32: "RTX 5090 32GB"
elif VRAM_TOTAL <= 48: "RTX 6000 Ada 48GB"
elif VRAM_TOTAL <= 80: "A100 80GB"
elif VRAM_TOTAL <= 141: "H200 141GB"
else: "Cluster multi-GPU diperlukan"
print(f"VRAM Total: {VRAM_TOTAL:.1f} GB")
print(f"GPU minimal: {GPU_YANG_DIBUTUHKAN}")
Quick Reference — Estimasi Cepat Tanpa Kalkulasi
Untuk estimasi cepat tanpa menghitung satu per satu, gunakan tabel berikut. Cukup ketahui jumlah parameter model dan quantization yang diinginkan:
| Model Size | FP16 | Q8 | Q4 (Q4_K_M) | Q3 (Q3_K_M) | Q2 (Q2_K) |
|---|---|---|---|---|---|
| 1B | 2 GB | 1 GB | 0.5 GB | 0.4 GB | 0.3 GB |
| 3B | 6 GB | 3 GB | 1.5 GB | 1.1 GB | 0.8 GB |
| 7B | 14 GB | 7 GB | 3.5 GB | 2.6 GB | 1.8 GB |
| 12B | 24 GB | 12 GB | 6 GB | 4.5 GB | 3 GB |
| 30B | 60 GB | 30 GB | 15 GB | 11 GB | 7.5 GB |
| 32B | 64 GB | 32 GB | 16 GB | 12 GB | 8 GB |
| 70B | 140 GB | 70 GB | 35 GB | 26 GB | 17.5 GB |
| 109B (MoE) | 218 GB | 109 GB | 54.5 GB | 41 GB | 27 GB |
| 123B | 246 GB | 123 GB | 61.5 GB | 46 GB | 31 GB |
| 671B (MoE) | 1.34 TB | 671 GB | 335 GB | 251 GB | 168 GB |
Aturan Jempol: Tambahkan 2-4 GB untuk KV cache (context 4K-8K). Untuk context >32K, hitung KV cache terpisah — bisa menjadi faktor dominan. Untuk concurrent users >1, kalikan KV cache dengan jumlah user.
Multi-Modal: Kalkulasi VRAM Tambahan untuk Vision Encoder
Model multimodal (yang bisa memproses gambar, audio, video selain teks) membutuhkan VRAM tambahan untuk encoder. Ada dua pendekatan utama: arsitektur encoder-free (seperti Gemma 4) dan arsitektur encoder-based (seperti Llama 4, Qwen-VL). Masing-masing memiliki implikasi VRAM yang berbeda.
Arsitektur Encoder-Free (Gemma 4, Gemini Nano)
Model encoder-free seperti Gemma 4 12B Unified memproses gambar langsung di embedding space model utama — tanpa vision encoder terpisah. Gambar di-tokenisasi menjadi visual tokens yang masuk bersama text tokens ke transformer.
Gemma 4 12B Unified — Encoder-Free:
Visual tokens per gambar: ~256 tokens (resolusi 512×512)
VRAM tambahan untuk gambar:
= 0 GB (tidak ada encoder terpisah)
+ visual_tokens × hidden_dim × 2 × n_layers (forward pass)
= ~256 × 5,120 × 2 × 48 = ~125 MB per gambar
Total overhead multimodal Gemma 4 12B:
Hanya ~125 MB per gambar — SANGAT efisien!
Tidak perlu VRAM tambahan signifikan untuk multimodal.
Arsitektur Encoder-Based (Llama 4 Scout, Qwen-VL)
Model encoder-based menggunakan vision encoder terpisah (biasanya SigLIP atau ViT) yang mengubah gambar menjadi visual embeddings, lalu diproses oleh LLM utama melalui projection layer.
Qwen 3 VL — Encoder-Based (SigLIP):
Vision encoder params: ~400M (SigLIP ViT-g)
VRAM encoder (FP16): 400M × 2 = 0.8 GB
Visual tokens per gambar: 576 tokens (ViT patch 14×14, 336px)
Projection layer: ~30M params → 60 MB
VRAM tambahan total (1 gambar):
= encoder_weights (0.8 GB)
+ visual_tokens × hidden_dim (aktivasi)
= 0.8 + 0.06 + (576 × 7,168 × 2) / 1e9
= 0.8 + 0.06 + 0.008
= ~0.87 GB per gambar
Lebih berat dari encoder-free, tapi kualitas encoding gambar lebih baik.
Llama 4 Scout — Encoder-Based (ViT-22B):
Vision encoder params: ~4B (ViT-22B dari Meta)
VRAM encoder (Q4): 4B × 0.5 = 2 GB
Visual tokens per gambar: 1,024 tokens
Projection layer: ~100M params
VRAM tambahan total (1 gambar, Q4):
= 2.0 + 0.05 + (1024 × 7,168 × 2) / 1e9
= 2.0 + 0.05 + 0.015
= ~2.07 GB per gambar
Tabel Perbandingan VRAM Multimodal
| Model | Pendekatan | Encoder VRAM | Visual Token/Image | Total Tambahan/Image | GPU Minimal (Multimodal) |
|---|---|---|---|---|---|
| Gemma 4 E2B/E4B | Encoder-free | 0 GB | 128-256 | ~0.1 GB | Sama seperti text-only |
| Gemma 4 12B Unified | Encoder-free | 0 GB | 256 | ~0.1 GB | Sama seperti text-only |
| Qwen 3 VL 7B | SigLIP encoder | +0.8 GB | 576 | +1.0 GB | 8GB → 12GB |
| Qwen 3 VL 32B | SigLIP encoder | +0.8 GB | 576 | +1.0 GB | 24GB → 24GB (masih muat) |
| Llama 4 Scout | ViT-22B encoder | +2.0 GB | 1,024 | +2.5 GB | 55GB → 58GB (butuh H200) |
| Qwen 3 VL 72B | SigLIP encoder | +0.8 GB | 576 | +1.0 GB | 36GB → 37GB (A100) |
Audio Multimodal — Tambahan untuk Speech/Audio Input
Model multimodal yang mendukung audio (seperti Gemma 4 E2B/E4B/12B) memproses audio dengan cara mirip gambar: audio di-tokenisasi menjadi audio tokens.
Audio processing:
Audio sample rate: 16 kHz
Audio tokens per second: ~12.5 tokens/detik (Gemma 4)
Audio encoder: 0 GB (encoder-free, langsung ke embedding space)
VRAM tambahan untuk 30 detik audio:
= 12.5 × 30 = 375 audio tokens
= 375 × hidden_dim × 2 bytes (aktivasi)
= 375 × 5,120 × 2 = 3.84 MB
= ~4 MB — sangat kecil!
Kesimpulan: Audio multimodal hampir tidak menambah VRAM signifikan.
Dominasi tetap di text KV cache.
Rekomendasi: Jika multimodal adalah prioritas utama, Gemma 4 12B Unified adalah pilihan terbaik — tidak perlu VRAM ekstra untuk encoder. Jika butuh kualitas vision terbaik, korbankan 1-2 GB untuk encoder SigLIP/ViT (Qwen VL atau Llama 4 Scout).
Agentic / Tool Calling: Overhead System Prompt + Tool Definitions
Model agentik yang memanggil tools (API, function calling, code execution) membutuhkan VRAM lebih besar daripada model chat biasa karena: (1) system prompt panjang berisi definisi tool, (2) tool call results disimpan di context, (3) structured output (JSON) membutuhkan lebih banyak token. Berikut kalkulasi detail overhead untuk deployment agentic AI.
Komponen Overhead Agentic
Overhead System Prompt + Tools:
System prompt: 500-2,000 token (konteks, instruksi, role)
Tool definitions (JSON Schema): 200-3,000 token per tool
Contoh: 10 tools × 500 token = 5,000 token
Tool call output: 100-5,000 token per tool call
Contoh: 3 tool calls dalam satu sesi = 300-15,000 token
Function result: 500-10,000 token per hasil API call
Round-trip overhead: setiap tool call → response → next call
Total overhead per sesi = system + tools_def + tool_calls + function_results
Sesi sederhana (1-2 tool calls): ~2,000 - 5,000 token tambahan
Sesi kompleks (5-10 tool calls): ~10,000 - 50,000+ token tambahan
Kalkulasi VRAM Tambahan untuk Agentic Workload
Model: Gemma 4 12B Q4 di RTX 4090 24GB
Tanpa agentic (chat biasa, 4K context):
VRAM weights: 6.1 GB
KV cache (4K): 0.8 GB
Total per user: ~6.9 GB + 2 GB overhead = 8.9 GB
Concurrent users: floor((24 - 8.9) / 0.8) + 1 ≈ 19 user
Dengan agentic (10 tools, 8K context per sesi):
System + tools definitions: ~3,000 token
Tool calls + results: ~5,000 token
Total context per sesi: 8,000 token
KV cache per sesi (8K, FP8):
= 2 × 8192 × 1024 × 1 × 2 × 48 / (1024^3)
= 1.6 GB per sesi agentic
Total per user agentic: 6.1 + 1.6 + 2.0 = 9.7 GB
Concurrent users: floor((24 - 9.7) / 1.6) + 1 ≈ 10 user
⬇️ Dari 19 user (chat) menjadi 10 user (agentic) — turun ~47%!
Tabel Overhead Agentic per Konfigurasi
| Konfigurasi Agentic | Context per Sesi | KV Cache per Sesi | Concurrent (RTX 4090) | Penurunan dari Chat |
|---|---|---|---|---|
| Chat biasa (tanpa tools) | 4K | 0.8 GB | 19 user | 0% (baseline) |
| 1-3 tools sederhana | 6K | 1.2 GB | 15 user | -21% |
| 5-10 tools, 1 tingkat | 8K | 1.6 GB | 10 user | -47% |
| Multi-agent (3 agents × 5 tools) | 16K | 3.1 GB | 5 user | -74% |
| Agent + RAG (2 tool calls + retrieval) | 12K | 2.4 GB | 7 user | -63% |
| Agent + Code Interpreter (multi-turn) | 24K | 4.7 GB | 3 user | -84% |
Strategi Mengurangi Overhead Agentic
- Tool definition compression: Gunakan tool deskripsi singkat (1 kalimat) daripada JSON Schema penuh. Hemat 60-80% token tools.
- Sliding window: Batasi context window ke 8K-16K terakhir. Tool call lama di-summarize daripada disimpan utuh.
- Tool batching: Kirim multiple tool calls dalam satu response (parallel function calling). Kurangi round-trip overhead.
- Structured output di luar KV: Parse JSON langsung dari logits tanpa menyimpannya di context.
- Pisahkan agent dan chat: Gunakan model kecil (3-7B) untuk routing/tool selection, model besar untuk content generation.
Contoh: Arsitektur Agent Sederhana dengan Qwen 3 7B
Model: Qwen 3 7B Q4 — ~3.8 GB weights
Tools: 5 tools (weather, calendar, email, search, calculator)
System prompt: 800 token (instruksi + tool definitions)
Per user per sesi:
KV cache (4K + 800 system = ~5K context):
= 2 × 5120 × 1024 × 1 × 2 × 28 / (1024^3)
= 0.55 GB (FP8, n_layers=28, kv_dim=1024 untuk Qwen 3 7B)
Total per user: 3.8 + 0.55 + 2.0 = 6.35 GB
Concurrent users di RTX 3060 12GB: floor((12 - 6.35) / 0.55) + 1 = 11 user
Concurrent users di RTX 4090 24GB: floor((24 - 6.35) / 0.55) + 1 = 33 user
Biaya per sesi agentik (~10 menit, ~3 tool calls):
Di RTX 4090: 10 menit = 1/6 jam × Rp 2,700 = Rp 450
Dengan 33 concurrent user: Rp 450 / 33 = Rp 14 per sesi
Bandingkan dengan GPT-4 function calling: ~Rp 200-500 per sesi
Hemat 14-35× !
Peringatan Penting: Model agentik dengan multi-turn tool calling bisa dengan cepat memenuhi context window. Satu agen yang melakukan 10 tool calls bisa menghasilkan 20K-50K token context — yang berarti VRAM KV cache menjadi faktor dominan, bukan lagi weight size. Untuk deployment agentik production, gunakan model dengan context management (Gemma 4, Command R+) dan pastikan ada mekanisme summarization untuk sesi panjang.
Template Praktis: Menentukan Kebutuhan VRAM untuk Model Baru (Workflow Lengkap)
Berikut adalah workflow lengkap untuk menentukan apakah suatu model AI bisa jalan di infrastruktur yang kamu miliki — berlaku untuk model apapun yang dirilis di masa depan.
5-Langkah Workflow
LANGKAH 1 — Dapatkan Parameter Arsitektur
Cara 1: Baca Hugging Face model card (bagian "config.json")
Cara 2: Jalankan di Python:
from transformers import AutoConfig
cfg = AutoConfig.from_pretrained("org/model-name")
print(f"Params: {cfg.num_parameters() if hasattr(cfg, 'num_parameters') else 'cek manual'}")
print(f"Layers: {cfg.num_hidden_layers}")
print(f"Hidden: {cfg.hidden_size}")
print(f"Heads: {cfg.num_attention_heads}, KV: {cfg.num_key_value_heads if hasattr(cfg, 'num_key_value_heads') else cfg.num_attention_heads}")
print(f"Vocab: {cfg.vocab_size}")
Cara 3: Dari paper — cari tabel arsitektur
LANGKAH 2 — Hitung VRAM Weights
weight_gb = params × bytes_per_param / (1024^3)
bytes_per_param: FP16=2, FP8=1, Q8=1, Q4=0.5, Q3=0.375, Q2=0.25
LANGKAH 3 — Hitung KV Cache
kv_dim = (hidden_dim / n_heads) × n_kv_heads
kv_per_user_gb = 2 × seq_len × kv_dim × bytes_per_param × 2 × n_layers / (1024^3)
total_kv_gb = kv_per_user_gb × concurrent_users
LANGKAH 4 — Tambahkan Overhead
overhead = 2.0 (konservatif) atau 1.0 (optimis, dengan FlashAttention)
— Jika multimodal + encoder-based: tambahkan 1-3 GB encoder weights
— Jika agentic: tambahkan 50-100% ke seq_len untuk tool definitions
LANGKAH 5 — Cek Ketersediaan GPU
total = weight_gb + total_kv_gb + overhead
if total <= VRAM_GPU: ✓ BISA jalan (dengan asumsi bandwidth cukup)
if total > VRAM_GPU: ✗ Butuh GPU lebih besar atau quantization lebih agresif
Contoh Nyata: "Saya ingin menjalankan model baru 'XYZ-200B' (MoE, 64 layers, hidden 8,192, GQA 8/64) di Q3 dengan 4K context untuk 5 concurrent users. Apakah H200 141GB cukup?"
Kalkulasi: 200B × 0.375 = 75 GB weights + KV (2×4096×1024×0.375×2×64) = 1.6 GB/user × 5 = 8 GB + 2 GB = 85 GB. H200 141GB > 85 GB → ✓ CUKUP!
Dengan rumus dan template di atas, kamu sekarang bisa menghitung kebutuhan VRAM untuk model AI apapun — termasuk model yang belum dirilis. Cukup dengan parameter arsitektur dari config, kamu sudah bisa menentukan GPU minimal yang dibutuhkan. Tidak perlu trial-and-error yang membuang waktu dan uang.
Bagian 6 — On-Premise: Perencanaan Infrastruktur
Bab 32 — Spek Server untuk 1 User (Personal AI)
Untuk satu pengguna, pertanyaan utamanya: apakah VPS cukup atau butuh GPU dedicated? Jawabannya tergantung pada ukuran model. VPS 2-4 core, 8GB RAM, tanpa GPU hanya mampu menjalankan model <3B dengan token speed 2-5 tok/s — sangat lambat. PC desktop dengan RTX 4090 bisa menjalankan model 7B-13B Q4 dengan kecepatan 50-100 tok/s.
| Tier | Spesifikasi | Biaya (Rp) | Model Maks | Token Speed |
|---|---|---|---|---|
| Budget | VPS 8GB / Mac Mini M4 | 5-10 juta/thn | Gemma 4 E2B Q4 | 3-5 tok/s |
| Mid | PC: Ryzen + 32GB + RTX 4090 | ~50 juta | Gemma 4 12B Q4 | 50-100 tok/s |
| High | Mac Studio M3 Ultra 192GB | ~150 juta | Llama 3 70B Q4 | 20-40 tok/s |
Bab 33 — Spek Server untuk 5–10 User (Tim Kecil)
Tim kecil membutuhkan server yang bisa melayani 5-10 user concurrent. Dengan continuous batching, satu GPU bisa melayani beberapa user sekaligus. RTX 4090 (24GB) cukup untuk 5-10 user dengan model 7-12B Q4. Untuk model lebih besar, dual RTX 4090 atau A6000 48GB diperlukan.
| Konfigurasi | GPU | Concurrent Users | Estimasi Biaya |
|---|---|---|---|
| Entry | 1× RTX 4090 24GB | 5-10 | Rp 50-60 juta |
| Mid | 1× RTX A6000 48GB | 10-20 | Rp 120-150 juta |
| High | 2× RTX 4090 (NVLink) | 10-20 | Rp 90-110 juta |
Bab 34 — Spek Server untuk 50–100 User (Perusahaan)
Perusahaan menengah memerlukan dedicated server dengan GPU data center. Satu server 4× A100 80GB bisa melayani 30-50 user concurrent untuk model 7B Q4. Untuk model 70B, diperlukan cluster multi-node. vLLM dengan tensor parallelism adalah pilihan utama.
| Komponen | Spek | Estimasi Biaya |
|---|---|---|
| Server | Dell R760xa / Supermicro | Rp 100-200 juta |
| GPU | 4× A100 80GB | Rp 1.2-1.8 miliar |
| Total | - | Rp 1.5-2.5 miliar |
Bab 35 — Spek Server untuk 500+ User (Enterprise/BUMN)
Enterprise dan BUMN membutuhkan cluster inference dengan high availability. NVIDIA DGX B200 (8× B200, 1.5TB VRAM) adalah pilihan flagship. Untuk skala BUMN 500+ concurrent, dibutuhkan 2-4 node DGX dengan load balancer. Biaya per node: Rp 15-25 miliar.
| Konfigurasi | GPU | Concurrent | Estimasi Biaya |
|---|---|---|---|
| Minimal | 8× A100/H100 | 100-200 | Rp 5-10 miliar |
| Standar | DGX B200 (8× B200) | 500-1000 | Rp 15-25 miliar |
| Large | 2-4× DGX + InfiniBand | 2000+ | Rp 30-80 miliar |
Bab 36 — Cluster Inference: Multi-GPU & Distributed
Model besar yang tidak muat di satu GPU memerlukan distributed inference. Tiga strategi utama: Tensor Parallelism (TP) membagi layer, Pipeline Parallelism (PP) membagi batch, dan Data Parallelism (DP) untuk throughput. InfiniBand 200Gbps atau NVLink sangat penting untuk TP yang efisien.
| Strategi | Cocok Untuk | Scaling Efficiency | Butuh InfiniBand? |
|---|---|---|---|
| Tensor Parallelism | Model >1 GPU VRAM | 70-90% | Ya |
| Pipeline Parallelism | Batch besar | 80-95% | Tidak wajib |
| Data Parallelism | Throughput tinggi | 90-98% | Tidak wajib |
Bab 37 — Daya Listrik, Pendingin, Rak Server
GPU menghasilkan panas luar biasa. RTX 4090 = 450W, A100 = 400W, H100 = 700W, H200 = 700W, B200 = ~1000W. Contoh: 8× H100 = 5.6kW + server = ~7kW. Dengan tarif industri Rp 1,500/kWh: 7kW × 24h × Rp 1,500 = Rp 252,000/hari = ~Rp 7.5 juta/bulan hanya untuk listrik. AC ruangan: ~Rp 2-3 juta/bulan.
Bab 38 — Storage & Networking untuk Inference Cluster
Storage cepat penting untuk model loading. NVMe RAID 0 (beberapa NVMe digabung) memberikan kecepatan baca 10-28 GB/s — ideal untuk model besar. Model 671B di Q4 = ~336GB, loading dari NVMe: ~30 detik, dari HDD: >10 menit. Networking minimal 100GbE untuk multi-node, InfiniBand 200Gbps untuk performa maksimal.
| Storage | Read Speed | 50GB Model Load | Harga per TB |
|---|---|---|---|
| HDD SATA | ~200 MB/s | ~4 menit | Rp 200-400rb |
| SATA SSD | ~500 MB/s | ~1.5 menit | Rp 1-2 juta |
| NVMe Gen4 | ~5 GB/s | ~10 detik | Rp 2-4 juta |
| NVMe RAID 0 (4×) | ~15 GB/s | ~3.5 detik | Rp 10-15 juta |
Kalkulasi Daya Listrik Inference Cluster
| Konfigurasi | Total Daya | Tarif Industri | Biaya/Bulan | Biaya/Tahun |
|---|---|---|---|---|
| 1× RTX 4090 (PC) | ~700W | Rp 1,500/kWh | ~Rp 756rb | ~Rp 9.1jt |
| 1× A100 Server | ~2kW | Rp 1,500/kWh | ~Rp 2.16jt | ~Rp 25.9jt |
| 4× A100 (rack) | ~8kW | Rp 1,500/kWh | ~Rp 8.64jt | ~Rp 103.7jt |
| DGX B200 (8×) | ~15kW | Rp 1,500/kWh | ~Rp 16.2jt | ~Rp 194.4jt |
Tips. Tarif listrik Indonesia: rumah tangga ~Rp 1,400/kWh, industri ~Rp 1,200/kWh, bisnis ~Rp 1,500/kWh. Untuk data center, tarif volume bisa lebih murah.
Bab 37b — Colocation di Indonesia
Menempatkan server inference di rumah atau kantor memang menghemat sewa data center, tapi konsekuensinya tidak ringan: listrik tidak stabil, pendingin AC rumah tidak dirancang untuk beban panas GPU 24/7, bandwidth terbatas, dan risiko downtime akibat pemadaman PLN. Colocation — menyewa ruang rak di data center profesional — adalah solusi antara yang mulai banyak diadopsi oleh perusahaan Indonesia yang menjalankan inference skala menengah. Di sini kita ulas tiga penyedia colocation utama di Indonesia beserta perbandingan pricing dan karakteristiknya.
DCI Indonesia (Data Center Infrastructure)
DCI adalah penyedia data center tier III terbesar di Indonesia dengan fasilitas di Jakarta, Surabaya, Bandung, dan Batam. DCI menawarkan colocation dalam bentuk half rack (21U), full rack (42U), dan customized cage. Harga colocation DCI per bulan untuk full rack 42U dengan daya 4-6 kW dan koneksi internet 1 Gbps berkisar di Rp 18-25 juta/bulan. Untuk daya lebih tinggi (10-15 kW) yang diperlukan oleh 4-8 GPU server, harganya naik ke Rp 35-50 juta/bulan. DCI unggul di konektivitas — terhubung langsung ke banyak IXP (Indonesia Internet Exchange) sehingga latency ke pengguna akhir sangat rendah. Cocok untuk perusahaan yang membutuhkan latency minimal dan SLA 99.98%.
Telkom Data Center (TelkomDC / NeutraDC)
Telkom memiliki jaringan data center terluas di Indonesia melalui NeutraDC (sebelumnya TelkomDC), dengan fasilitas di Jakarta, Bandung, Surabaya, Batam, Makassar, Medan, dan Balikpapan. Keunggulan utama Telkom adalah konektivitas ke jaringan Serat Optik Telkom — backbone internet utama Indonesia. Untuk colocation standard tier III, half rack (21U) dengan daya 3 kW dibanderol Rp 12-16 juta/bulan. Full rack (42U) dengan daya 6 kW: Rp 22-30 juta/bulan. Untuk high-power config (15 kW): Rp 50-70 juta/bulan. Telkom juga memiliki layanan managed colocation di mana mereka meng-handle basic monitoring dan hands-and-eyes support — biaya tambahan Rp 5-10 juta/bulan. Cocok untuk perusahaan yang aplikasi-nya harus dekat dengan pengguna di berbagai kota Indonesia.
NeutraDC Edge & Fasilitas Regional
NeutraDC Edge hadir sebagai solusi data center di kota tier-2 seperti Semarang, Palembang, Denpasar, dan Pontianak. Harga colocation di edge lebih terjangkau — full rack 42U dengan daya 3 kW mulai Rp 10-15 juta/bulan — namun dengan bandwidth dan SLA yang lebih rendah (99.9% vs 99.98%). Untuk inference AI yang membutuhkan latensi rendah di luar Jawa, NeutraDC Edge adalah opsi yang menarik karena biaya listrik dan properti di kota kecil lebih murah, menghemat hingga 30-40% dibandingkan colocation di Jakarta.
| Penyedia | Lokasi | Full Rack 6kW | Full Rack 15kW | SLA | Keunggulan |
|---|---|---|---|---|---|
| DCI Indonesia | Jakarta, Surabaya, Bandung, Batam | Rp 18-25 juta | Rp 35-50 juta | 99.98% | IXP langsung, latency minimal |
| NeutraDC (Telkom) | 10 kota di Indonesia | Rp 22-30 juta | Rp 50-70 juta | 99.98% | Backbone Telkom, cakupan luas |
| NeutraDC Edge | 6 kota tier-2 | Rp 10-15 juta | N/A | 99.9% | Biaya rendah, dekat pengguna |
| BDx Indonesia | Jakarta, Bogor | Rp 20-28 juta | Rp 40-60 juta | 99.98% | Koneksi internasional kuat |
| NTT Global DC | Jakarta | Rp 25-35 juta | Rp 60-80 juta | 99.99% | SLA tertinggi, tier IV |
Tip biaya. Jangan hanya melihat harga sewa rak. Perhatikan juga biaya listrik per kWh di data center — biasanya sudah termasuk dalam paket colocation (metered atau fixed). DCI misalnya, memasukkan 4kW dalam paket dasar, kelebihan daya dikenakan Rp 2.500-3.500/kWh. Pastikan Anda menghitung total daya server inference Anda sebelum memilih paket. Server dengan 4× A100 (makan ~8kW) mungkin memerlukan full rack high-power yang harganya 2-3× lipat dari paket standard.
Bab 37c — Perbandingan Model Deployment: VPS Cloud vs Dedicated Server vs Colocation vs On-Premise
Setiap model deployment memiliki profil biaya, performa, dan kompleksitas yang berbeda. Berikut perbandingan lengkap dari keempat opsi utama untuk menjalankan LLM inference di Indonesia. Perbandingan ini didasarkan pada skenario tipikal: 4 GPU (A100 80GB atau setara) yang melayani 50-100 concurrent user dengan model 7B-70B Q4.
VPS Cloud GPU
VPS cloud dengan GPU — seperti AWS EC2 G5 (A10G), G6 (L4), atau pG6 (A100), Google Cloud L4/A100, Azure NCas, atau penyedia GPU cloud Indonesia seperti GW2 dan Exabytes — adalah opsi paling fleksibel. Tidak ada investasi awal, bayar per jam, dan bisa scale up/down sesuai kebutuhan. Untuk 4× A100 di AWS (p4d.24xlarge): ~$32/jam atau ~Rp 530/jam. Untuk pemakaian 24/7: ~Rp 380 juta/bulan — sangat mahal. Model lebih murah: 1× L4 (AWS g6.xlarge) ~$1.25/jam atau Rp 1,5 juta/bulan jika 24/7, tapi hanya 24GB VRAM — cukup untuk model ≤12B Q4. VPS cloud GPU paling cocok untuk: eksperimen, beban yang tidak 24/7, dan burst kapasitas.
Dedicated Server (Sewa GPU Server)
Penyedia seperti ServerGPU, GW2 Dedicated, Exabytes Dedicated, atau perusahaan internasional seperti Vast.ai dan RunPod menawarkan dedicated server dengan GPU terpasang. Bedanya dengan VPS: Anda mendapat server fisik eksklusif, tidak berbagi dengan tenant lain. Harga sewa dedicated 4× A100 di Indonesia: Rp 80-120 juta/bulan (termasuk listrik, pendingin, bandwidth). Di Vast.ai/RunPod internasional: $4-8/jam atau Rp 65-130rb/jam — lebih murah untuk pemakaian on-demand, tapi mahal untuk 24/7 (Rp 47-94 juta/bulan). Dedicated server adalah kompromi yang baik: tidak perlu beli hardware, tidak perlu urus listrik dan pendingin, tapi biaya bulanan lebih tinggi daripada colocation atau on-premise dalam jangka panjang.
Colocation (Sewa Rak, Punya Server)
Anda beli server sendiri, lalu tempatkan di data center pihak ketiga. Model ini memberi kontrol penuh atas hardware dengan lingkungan data center profesional. Biaya di sini terbagi dua: capex server + GPU (sekali) dan opex colocation (bulanan). Untuk 4× A100 server: Rp 2-3 miliar capex. Colocation full rack high-power 15kW: Rp 40-60 juta/bulan. TCO 5 tahun: capex Rp 3 miliar + opex 5 tahun Rp 3 miliar = Rp 6 miliar. Colocation lebih murah daripada dedicated server (Rp 80-120 juta/bulan × 60 = Rp 4,8-7,2 miliar hanya opex) dalam jangka panjang, tapi Anda harus siap dengan investasi awal Rp 3 miliar.
On-Premise (Server di Kantor Sendiri)
Server ditempatkan di ruang server kantor sendiri. Biaya paling rendah untuk opex (hanya listrik + AC), tapi risiko paling tinggi: listrik mati, AC rusak, bandwidth terbatas, security fisik rendah. Untuk 4× A100 di kantor: capex Rp 3 miliar, listrik ~Rp 10 juta/bulan, AC ~Rp 3 juta/bulan, total opex ~Rp 13 juta/bulan. TCO 5 tahun: Rp 3 miliar + Rp 780 juta = Rp 3,78 miliar — paling murah secara total. Tapi kompromi: SLA tergantung pada infrastruktur kantor (PLN sering padam?), keamanan fisik, dan bandwidth internet. Cocok untuk perusahaan yang sudah punya data center mini di kantor atau lab riset di kampus.
| Parameter | VPS Cloud | Dedicated Server | Colocation | On-Premise |
|---|---|---|---|---|
| Capex Awal | Rp 0 | Rp 0 | Rp 2-3 miliar | Rp 2-3 miliar |
| Opex Bulanan | Rp 100-500 juta | Rp 80-120 juta | Rp 40-60 juta | Rp 10-15 juta |
| TCO 5 Tahun | Rp 6-36 miliar | Rp 4,8-7,2 miliar | Rp 5-6 miliar | Rp 3,5-4 miliar |
| Kontrol Hardware | Tidak | Sebagian | Penuh | Penuh |
| Scalability | Instan | 1-3 hari | 1-2 minggu | 1-3 bulan |
| SLA Listrik | 99.99% | 99.9-99.99% | 99.98% | Tergantung PLN |
| Bandwidth | 10-100 Gbps | 1-10 Gbps | 1-10 Gbps | Tergantung ISP |
| Security Fisik | Data center tier | Data center tier | Data center tier | Ruang kantor |
| Staff Dibutuhkan | Minimal | 1-2 orang | 2-3 orang | 2-4 orang |
| Cocok Untuk | Eksperimen, burst, startup awal | Tim mapan tanpa capex | Perusahaan jangka panjang | BUMN, riset, lab |
Peringatan skalabilitas. VPS cloud GPU mungkin terlihat murah untuk pemakaian sporadis, tapi jika Anda menjalankan inference 24/7 — misalnya chatbot customer service — biaya per jam × 720 jam/bulan × 12 bulan × 5 tahun bisa jauh melebihi biaya colocation atau on-premise. Hitung dulu utilization rate Anda sebelum memutuskan. Jika server hanya dipakai 8 jam/hari (33% utilization), VPS cloud mungkin lebih murah. Jika 24/7, on-premise atau colocation hampir pasti menang dalam TCO 5 tahun.
Bab 37d — Kalkulasi TCO 5 Tahun Setiap Model Deployment
Berikut kalkulasi Total Cost of Ownership (TCO) 5 tahun untuk empat model deployment dengan tiga skenario beban kerja yang berbeda: skala kecil (1× RTX 4090, 10-20 user), skala menengah (4× A100 80GB, 50-100 user), dan skala enterprise (DGX B200, 500-1000 user). Semua asumsi finansial mengacu pada catatan metodologi di Bab 4: kurs Rp 16.500/USD, tarif listrik industri Rp 1.500/kWh, depresiasi GPU 3 tahun residual 10%, depresiasi server 4 tahun residual 5%.
Skenario A: Skala Kecil — 1× RTX 4090 (10-20 User)
| Komponen Biaya | VPS Cloud | Dedicated | Colocation | On-Premise |
|---|---|---|---|---|
| Capex GPU+Server | Rp 0 | Rp 0 | Rp 60 juta | Rp 60 juta |
| Opex Bulanan | Rp 5-8 juta | Rp 6-10 juta | Rp 3 juta | Rp 750rb |
| Opex 5 Tahun | Rp 300-480 juta | Rp 360-600 juta | Rp 180 juta | Rp 45 juta |
| TCO 5 Tahun | Rp 300-480 juta | Rp 360-600 juta | Rp 240 juta | Rp 105 juta |
| Cost per Bulan | Rp 5-8 juta | Rp 6-10 juta | Rp 4 juta | Rp 1,75 juta |
Untuk skala kecil, on-premise jelas pemenangnya — total Rp 105 juta untuk 5 tahun. Colocation masuk akal jika Anda butuh uptime lebih baik (colocation + Rp 135 juta over 5 tahun). VPS dan dedicated server terlalu mahal untuk skala ini.
Skenario B: Skala Menengah — 4× A100 80GB (50-100 User)
| Komponen Biaya | VPS Cloud | Dedicated | Colocation | On-Premise |
|---|---|---|---|---|
| Capex 4× A100 + Server | Rp 0 | Rp 0 | Rp 3 miliar | Rp 3 miliar |
| Opex Bulanan | Rp 100-250 juta | Rp 80-120 juta | Rp 50 juta | Rp 13 juta |
| Opex 5 Tahun | Rp 6-15 miliar | Rp 4,8-7,2 miliar | Rp 3 miliar | Rp 780 juta |
| TCO 5 Tahun | Rp 6-15 miliar | Rp 4,8-7,2 miliar | Rp 6 miliar | Rp 3,78 miliar |
| Cost per Bulan | Rp 100-250 juta | Rp 80-120 juta | Rp 100 juta | Rp 63 juta |
Untuk skala menengah, on-premise masih unggul dengan TCO Rp 3,78 miliar. Tapi colocation hanya berselisih Rp 2,22 miliar lebih mahal dengan benefit uptime 99.98% — mungkin sepadan untuk perusahaan yang tidak bisa mentolerir downtime. VPS cloud di sini sudah sangat tidak ekonomis untuk beban 24/7.
Skenario C: Skala Enterprise — DGX B200 (500-1000 User)
| Komponen Biaya | VPS Cloud | Dedicated | Colocation | On-Premise |
|---|---|---|---|---|
| Capex DGX B200 | Rp 0 | Rp 0 | Rp 20 miliar | Rp 20 miliar |
| Opex Bulanan | Rp 500-700 juta | Rp 300-400 juta | Rp 70 juta | Rp 30 juta |
| Opex 5 Tahun | Rp 30-42 miliar | Rp 18-24 miliar | Rp 4,2 miliar | Rp 1,8 miliar |
| TCO 5 Tahun | Rp 30-42 miliar | Rp 18-24 miliar | Rp 24,2 miliar | Rp 21,8 miliar |
| Cost per Bulan | Rp 500-700 juta | Rp 300-400 juta | Rp 403 juta | Rp 363 juta |
Enterprise tier: on-premise colocation kompetitif. Colocation (Rp 24,2 miliar) dan on-premise (Rp 21,8 miliar) berselisih tipis — selisih Rp 2,4 miliar untuk 5 tahun itu hanya ~10%. Jika perusahaan sudah punya data center sendiri (seperti BUMN atau bank), on-premise lebih murah. Jika belum, colocation dengan SLA 99.98% adalah pilihan cerdas mengingat biaya setup data center dari nol bisa Rp 5-10 miliar tambahan.
Grafik sederhana TCO 5 tahun: Jika divisualisasikan, garis biaya VPS cloud dan dedicated server naik linear curam. Colocation dan on-premise punya lonjakan di tahun 0 (capex) tapi garisnya landai setelahnya. Titik potong terjadi di tahun 1-2 untuk skala kecil, tahun 2-3 untuk skala menengah, dan tahun 3-4 untuk skala enterprise. Semakin besar skala, semakin lama waktu yang dibutuhkan untuk menutup capex, tapi setelah break-even, penghematan per bulannya sangat signifikan.
Bab 37e — Redundancy & High Availability untuk Inference AI
Server inference bukan server biasa. GPU yang mati di tengah operasi bisa mengakibatkan ribuan sesi chatbot terputus, antrean RAG terhenti, dan — jika model tidak diload ulang dengan benar — kerusakan KV-cache yang mempengaruhi kualitas output. Untuk layanan inference production-grade, redundancy bukan opsional — terutama jika Anda beroperasi di Indonesia dengan tantangan infrastruktur listrik yang masih belum 100% stabil.
Dual Power Supply Unit (PSU)
Setiap server inference kelas data center wajib memiliki dual PSU — dua unit power supply yang masing-masing mampu menyuplai daya penuh server. Jika satu PSU mati, PSU kedua langsung mengambil alih tanpa jeda (hot-swappable). Untuk server GPU: PSU 2000W-3000W per server (tergantung jumlah GPU). Contoh: Supermicro AS-4124GS-TNRT dengan 4× A100 membutuhkan 2× 2200W PSU dalam konfigurasi 2N redundancy. Biaya tambahan untuk dual PSU vs single: sekitar Rp 3-8 juta per server. Pastikan PSU dihubungkan ke dua sumber listrik yang berbeda (dua jalur PLN berbeda atau PLN + genset) — jika tidak, dual PSU tidak berguna saat pemadaman total.
RAID untuk Storage Model
Model LLM yang sudah di-quantize adalah aset berharga — file GGUF ukuran 5-50GB per model yang butuh waktu berhari-hari untuk didownload dan dikonfigurasi. RAID (Redundant Array of Independent Disks) melindungi data model dari kegagalan disk. Untuk inference server, dua konfigurasi RAID yang paling relevan: RAID 1 (mirroring) — dua NVMe identik, jika satu mati, yang lain masih jalan. Cocok untuk storage model (kapasitas tidak terlalu besar, tapi butuh read speed tinggi). RAID 10 (stripe + mirror) — 4 NVMe, kecepatan baca 2× lipat dengan redundancy penuh. Lebih mahal tapi ideal untuk server production yang tidak bisa downtime. Harga NVMe Gen4 4TB: Rp 4-6 juta per unit. RAID 1 (2 NVMe): +Rp 8-12 juta. RAID 10 (4 NVMe): +Rp 16-24 juta.
GPU Failover — Tantangan Utama
Berbeda dengan CPU — yang bisa langsung failover ke CPU cadangan tanpa kehilangan sesi — GPU failover untuk inference LLM sangat rumit. Saat GPU mati di tengah inference, sesi aktif akan gagal (error) karena model state di VRAM hilang. Solusi yang bisa diterapkan: Model replicas — deploy model yang sama di 2+ GPU (atau 2+ node) secara independen. Jika GPU A mati, load balancer mengarahkan request ke GPU B. Biaya: 2× lipat GPU untuk redundancy penuh. N+1 redundancy — jika Anda butuh 4 GPU untuk throughput target, deploy 5 GPU (N+1). Saat satu GPU turun, performa turun 20% (bukan 100%). Ini biaya paling efektif untuk HA. Graceful degradation via CPU offload — saat GPU mati, model bisa di-offload ke CPU (dengan LLama.cpp misalnya) dengan kecepatan jauh lebih rendah, tapi layanan tetap berjalan. Tidak ideal untuk real-time, tapi lebih baik daripada mati total.
| Komponen | Strategi | Biaya Tambahan | Keuntungan | Kekurangan |
|---|---|---|---|---|
| PSU | Dual PSU hot-swap 2N | Rp 3-8 juta/server | Redundansi listrik tanpa jeda | Butuh 2 jalur listrik berbeda |
| Storage | NVMe RAID 1 atau 10 | Rp 8-24 juta | Data model aman dari disk failure | Kapasitas efektif 50% dari total NVMe |
| GPU | N+1 redundancy | +25% biaya GPU | No total outage saat GPU mati | Performanya turun 20-25% |
| Jaringan | Dual switch + dual ISP | Rp 20-50 juta/tahun | Koneksi aman saat satu ISP down | Biaya operasional ganda |
| Cooling | AC N+1 (3 unit untuk 2 beban) | +50% biaya AC | Ruang server tetap dingin saat AC mati | Biaya listrik AC tambahan |
| Power | UPS Online + Genset | Rp 30-100 juta | Server tetap nyala saat PLN padam | Investasi awal besar, perlu perawatan genset |
Biaya laten HA. Banyak yang lupa bahwa high availability bukan hanya soal hardware — tapi juga soal arsitektur inference. Di framework seperti vLLM, jika satu GPU dalam tensor parallelism mati, seluruh model crash — tidak bisa partial failover. Solusinya: deploy model replica independen (data parallelism) alih-alih tensor parallelism tunggal di banyak GPU. Ini kompromi — efficiency lebih rendah (DP vs TP) tapi HA lebih baik. Untuk production, DP + N+1 lebih aman daripada TP tunggal.
Bab 37f — Monitoring: NVIDIA SMI, Prometheus & Grafana
Server inference GPU butuh monitoring yang lebih ketat dibandingkan server biasa. GPU bisa thermal throttle, VRAM penuh, PCIe link turun ke Gen1, atau memory ECC error tanpa indikasi yang jelas di level aplikasi. Tanpa monitoring yang baik, Anda baru tahu ada masalah setelah user komplain — atau lebih parah, setelah server crash. Berikut adalah stack monitoring wajib untuk inference cluster, dari yang paling dasar hingga dashboard penuh.
Tingkat 1: NVIDIA SMI (Command Line)
nvidia-smi adalah alat paling dasar, tapi sangat informatif untuk debugging cepat. Jalankan dengan parameter berikut untuk monitoring GPU secara real-time:
# Monitoring real-time, refresh setiap 1 detik
nvidia-smi -l 1
# Output dalam format CSV untuk logging
nvidia-smi --query-gpu=index,timestamp,temperature.gpu,\
utilization.gpu,memory.used,memory.total,power.draw,\
pcie.link.gen.current,pcie.link.width.current \
--format=csv -l 5 > gpu-log.csv
# Cek process yang pakai GPU
nvidia-smi pmon -c 1
# Detail ECC memory errors (penting untuk GPU data center)
nvidia-smi -q -d ECC
Metrik paling penting yang harus dimonitor: GPU utilization (target >80% untuk inference efficient), memory used (jangan sampai 100%, sisakan 10-15% untuk KV-cache growth), temperature (<90°C untuk air cooled, <85°C ideal), power draw (indikasi apakah GPU bekerja optimal), PCIe link gen dan width (jika turun ke Gen1, ada masalah koneksi).
Tingkat 2: Prometheus + DCGM Exporter
Untuk monitoring berkelanjutan, gunakan Prometheus dengan NVIDIA DCGM (Data Center GPU Manager) Exporter. DCGM memberikan 200+ metrik GPU yang jauh lebih detail daripada nvidia-smi — termasuk memory bandwidth utilization, SM occupancy, tensor core activity, dan NVLink traffic. Berikut cara setup:
# 1. Jalankan DCGM exporter di Docker (setiap node GPU)
docker run -d --gpus all --rm \
--name dcgm-exporter \
--cap-add SYS_ADMIN \
-p 9400:9400 \
nvidia/dcgm-exporter:3.3.7-1.0.0-ubuntu22.04
# 2. Verifikasi metrik
curl http://localhost:9400/metrics | head -20
# 3. Tambahkan target ke prometheus.yml
# - job_name: 'dcgm-gpu'
# scrape_interval: 10s
# static_configs:
# - targets: ['server1:9400', 'server2:9400']
Metrik DCGM yang paling berguna untuk inference: DCGM_FI_DEV_GPU_UTIL (utilisasi GPU aktual), DCGM_FI_DEV_MEM_COPY_UTIL (utilisasi memory), DCGM_FI_DEV_ECC_SBE_VOL_TOTAL (single-bit ECC error — early warning kerusakan VRAM), DCGM_FI_DEV_POWER_USAGE, DCGM_FI_DEV_XID_ERRORS (XID error = GPU crash). Integrasikan juga metrik framework inference: vLLM mengekspos metrik Prometheus di endpoint /metrics yang mencakup vllm:num_requests_running, vllm:time_to_first_token_seconds, vllm:request_prompt_tokens, dan vllm:request_generation_tokens.
Tingkat 3: Grafana Dashboard
Grafana mengubah semua metrik Prometheus menjadi dashboard visual. Berikut adalah panel minimal yang harus ada di dashboard inference Anda:
- GPU Utilization Overview — grafik garis per-GPU untuk utilisasi compute, memory, dan power. Deteksi jika ada GPU yang idle saat yang lain penuh.
- Temperature & Thermal Throttling — suhu per GPU + flag thermal throttling. Jika salah satu GPU konsisten lebih panas 5-10°C, periksa thermal paste atau posisi dalam server.
- VRAM Usage — total VRAM terpakai vs total VRAM per node. Saat VRAM mendekati 85-90%, warning untuk scale out atau turunkan model size.
- Request Latency (TTFT + TPOT) — time-to-first-token dan tokens-per-output-token per detik. Ini metrik UX yang paling penting untuk chatbot.
- Request Queue & Throughput — jumlah request dalam antrean, request sukses per menit, request error rate. Jika antrean tumbuh terus, scaling diperlukan.
- Power & Cost — total daya (W) × tarif listrik = biaya per jam/hari/bulan. Hitung juga cost per 1M token dalam rupiah langsung di dashboard.
Alerting rules kritis. Konfigurasikan Prometheus Alertmanager untuk notifikasi real-time (via Telegram, Slack, atau email) pada kondisi berikut: GPU temperature >90°C, XID error terjadi, VRAM usage >90% selama >5 menit, request error rate >1%, GPU utilization <10% selama >1 jam (indikasi konfigurasi salah atau model crash), dan PCIe link turun dari gen yang diharapkan. Untuk Telegram: gunakan
alertmanager-botatau webhook sederhana.
Integrasi Metrik Bisnis
Dashboard teknis saja tidak cukup. Gabungkan juga metrik bisnis: cost per conversation (total biaya listrik + depresiasi ÷ jumlah sesi chat), cost per token yang real-time dibandingkan dengan API, dan user satisfaction proxy (latency tinggi biasanya berkorelasi dengan user abandon rate). Dengan dashboard yang menyatukan metrik teknis dan bisnis, Anda bisa menjawab pertanyaan pemangku kepentingan: "Berapa biaya yang kita keluarkan untuk setiap percakapan chatbot hari ini?"
Bab 37g — K3S / Kubernetes untuk AI Inference Deployment
Setelah server inference siap, pertanyaan berikutnya: bagaimana cara manage, deploy, dan scale model di atasnya? Jawabannya untuk production adalah Kubernetes — baik full K8s maupun distribusi ringan seperti K3S. Banyak tim Indonesia yang masih menjalankan inference langsung di terminal dengan vllm serve atau python app.py, tanpa containerization dan orchestration. Ini bekerja untuk skala kecil, tapi menjadi mimpi buruk saat harus update model, rollback versi, scale out node, atau manage multi-model di cluster yang sama.
Mengapa K3S Cocok untuk Inference Cluster di Indonesia
K3S adalah distribusi Kubernetes lightweight dari Rancher/SUSE yang dirancang untuk edge computing, IoT, dan — yang relevan — server dengan resource terbatas. Ukuran binary K3S hanya ~60MB (vs full K8s ~1GB), konsumsi RAM untuk control plane ~512MB, dan setup bisa selesai dalam 15 menit. Untuk inference cluster dengan 2-10 node GPU di Indonesia, K3S menawarkan keseimbangan ideal antara fungsionalitas Kubernetes penuh dan efisiensi resource. Bandingkan dengan full K8s yang butuh minimal 3 control plane nodes + etcd + banyak komponen tambahan — terlalu berat untuk cluster kecil-menengah.
Arsitektur Tipikal K3S + GPU Inference
Konfigurasi yang umum digunakan untuk deployment inference di K3S:
# 1. Install K3S di server GPU pertama (server node)
curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644
# 2. Install NVIDIA device plugin untuk ekspos GPU ke container
kubectl create -f https://raw.githubusercontent.com/NVIDIA/\
k8s-device-plugin/v0.16.2/nvidia-device-plugin.yml
# 3. Verifikasi GPU di cluster
kubectl get nodes -o json | jq '.items[].status.allocatable'
# Harus ada: nvidia.com/gpu: 4 (atau sesuai jumlah GPU)
# 4. Install GPU Operator (untuk management driver, DCGM, dll)
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia
helm upgrade --install gpu-operator nvidia/gpu-operator -n gpu-operator --create-namespace
Deploy Model Inference dengan Deployment + Service K8s
apiVersion: apps/v1
kind: Deployment
metadata:
name: llama-3-8b-inference
spec:
replicas: 2
selector:
matchLabels:
app: llama-3-8b
template:
metadata:
labels:
app: llama-3-8b
spec:
containers:
- name: vllm
image: vllm/vllm-openai:latest
command: ["vllm", "serve", "meta-llama/Llama-3.2-8B-Instruct",
"--quantization", "fp8", "--max-model-len", "8192",
"--gpu-memory-utilization", "0.90",
"--port", "8000"]
ports:
- containerPort: 8000
resources:
limits:
nvidia.com/gpu: 1
env:
- name: HF_TOKEN
valueFrom:
secretKeyRef:
name: hf-token
key: token
---
apiVersion: v1
kind: Service
metadata:
name: llama-3-8b-svc
spec:
selector:
app: llama-3-8b
ports:
- port: 8000
targetPort: 8000
type: ClusterIP
Dengan arsitektur ini, Anda bisa melakukan rolling update model tanpa downtime (k8s mengganti pod satu per satu), auto-restart saat pod crash (liveness probe), scaling dengan perintah kubectl scale deployment llama-3-8b-inference --replicas=5, dan resource management yang ketat — setiap pod model hanya mendapat GPU yang dialokasikan, tidak bisa boros lebih dari yang ditentukan.
Kapan K3S/K8s Butuh — dan Kapan Tidak
| Skenario | K3S/K8s? | Alasan |
|---|---|---|
| 1 server, 1 model, 1 user | Tidak | Cukup docker-compose atau langsung CLI |
| 1 server, 1 model, multi-user | Opsional | Jika butuh auto-restart dan health check saja, cukup systemd + docker |
| 1 server, multi-model | Ya | K8s manage port conflict, resource isolation, dan model lifecycle |
| Multi-server, 1 model (TP) | Ya | K8s manage pod-to-pod networking untuk tensor parallelism |
| Multi-server, multi-model, CI/CD | Wajib | Kanban inference — staging, canary, blue-green deployment untuk model |
| Edge device (Jetson, Raspberry Pi) | K3S saja | Full K8s terlalu berat, K3S pas untuk edge cluster |
Kompleksitas K8s vs nilai tambah. Kubernetes bukan tanpa biaya — Anda butuh seorang engineer (atau setidaknya setengah FTE) yang paham Kubernetes untuk manage cluster inference. Jika tim Anda hanya 1-2 orang AI engineer dan baru menjalankan 1-2 model di 1 server, Kubernetes mungkin lebih banyak menyulitkan daripada membantu. Mulailah dengan docker-compose, lalu migrasi ke K3S saat jumlah server >2 atau jumlah model >3. Jangan over-engineer di tahap awal — inference yang berjalan dengan docker-compose lebih baik daripada K8s yang setengah jalan karena tidak ada yang bisa maintain.
Bab 37h — Auto-Scaling Inference Cluster: Kapan Butuh, Kapan Tidak
Auto-scaling — kemampuan menambah/mengurangi kapasitas inference otomatis berdasarkan beban — adalah fitur yang sering dianggap wajib, padahal tidak selalu. Auto-scaling inference AI memiliki tantangan unik yang berbeda dengan auto-scaling web server biasa: model warm-up time yang lama, biaya cold start yang tinggi (loading model 50GB ke VRAM), dan sifat stateful dari sesi inference (KV-cache tidak bisa dipindahkan antar node dengan mudah). Mari kita bedah kapan auto-scaling benar-benar diperlukan dan kapan lebih baik menggunakan fixed cluster.
Kapan Auto-Scaling Dibutuhkan
- Beban yang sangat fluktuatif (10× atau lebih). Misalnya: layanan AI yang sepi di malam hari (50 req/menit) tapi melonjak di jam kantor (500 req/menit). Biaya untuk menjalankan full capacity 24/7 akan sangat boros. Auto-scaling bisa scale-in ke 1 node di malam hari, scale-out ke 5 node di siang hari.
- Multi-tenant dengan SLA berbeda. Beberapa klien butuh dedicated capacity (steady), beberapa hanya burst. Auto-scaling memungkinkan Anda memisahkan baseline capacity (fixed) dan burst capacity (auto-scale).
- Batch processing dengan jadwal tertentu. Contoh: sistem AI yang memproses laporan keuangan setiap akhir bulan. Auto-scaling bisa scale-out untuk batch dan scale-in setelah selesai.
- Event-driven spikes. Peluncuran produk baru, kampanye marketing, atau momen tertentu (Hari Belanja Online Nasional — Harbolnas) yang menyebabkan lonjakan traffic.
Kapan Auto-Scaling Tidak Dianjurkan
- Beban stabil 24/7. Chatbot customer service beroperasi 24 jam dengan beban yang relatif konstan. Auto-scaling di sini tidak memberi penghematan — yang terjadi malah overhead karena GPU harus terus menambah/mengurangi kapasitas yang sebenarnya selalu terpakai.
- Cluster kecil (<4 GPU). Dengan 1-4 GPU, auto-scaling tidak praktis: satu GPU turun berarti kehilangan 25-100% kapasitas. Lagipula biaya GPU segitu masih relatif kecil.
- Waktu warm-up terlalu lama. Model besar (70B+ di Q4) membutuhkan 1-5 menit untuk loading ke VRAM. Jika lonjakan traffic terjadi dalam hitungan detik, auto-scaling tidak akan sempat bereaksi. Solusi: pre-warm spare instance (yang biayanya hampir sama dengan fixed cluster).
- Cloud GPU dengan minimum commit. Banyak penyedia GPU cloud mensyaratkan reservasi minimum 1-3 bulan. Auto-scaling jangka pendek (30 menit-scale up, 1 jam-scale down) sering tidak efisien secara biaya.
Strategi Auto-Scaling Hybrid
Pendekatan paling cost-effective untuk banyak kasus adalah hybrid auto-scaling: baseline capacity dengan on-premise/colocation (fixed cost rendah), burst capacity dengan cloud GPU (pay-per-use). Dengan begini, baseline harian ditangani oleh hardware yang sudah dibeli (capex-nya sudah dibayar, jadi opex marginalnya hanya listrik ~Rp 10-15 juta/bulan), sementara lonjakan traffic ditangani oleh GPU cloud dengan biaya per jam. Contoh konkret: perusahaan dengan 500 user/day (baseline, dihandle oleh 4× A100 on-prem) dan puncak 1500 user/day (burst, 8× A100 dari cloud selama 4 jam/hari). Biaya cloud burst: ~$15/jam × 4 jam × 22 hari = $1.320/bulan = Rp 22 juta/bulan. Bandingkan dengan fixed cluster 12× A100 24/7: $32/jam × 720 jam = $23.040/bulan = Rp 380 juta/bulan.
| Metrik | Fixed Cluster 12× A100 | Hybrid 4× A100 + 8× A100 Cloud | Hemat |
|---|---|---|---|
| Baseline capacity | 12 A100 | 4 A100 (on-prem) | - |
| Burst capacity | Tidak perlu | 8 A100 (cloud, 4h/hari) | - |
| Biaya per bulan | Rp 380 juta | Rp 63 juta + Rp 22 juta = Rp 85 juta | Rp 295 juta |
| Biaya per tahun | Rp 4,56 miliar | Rp 1,02 miliar | Rp 3,54 miliar |
Tools auto-scaling untuk inference. Beberapa framework inference modern sudah mendukung auto-scaling native: vLLM dengan parameter
--max-num-batched-tokensdan--max-num-seqsbisa diintegrasikan dengan Prometheus metrics untuk autoscaling via KEDA (Kubernetes Event-Driven Autoscaling). OpenRouter dan LiteLLM menyediakan proxy layer yang bisa auto-route ke multiple provider — termasuk fallback ke API jika on-premise penuh. Untuk implementasi sederhana tanpa K8s: gunakan script yang memonitor Antrian Redis, jika antrean >100, spin up cloud instance via API penyedia GPU cloud.
Bab 37i — Cooling Options untuk Server Inference di Indonesia
Indonesia adalah negara tropis dengan suhu rata-rata 28-34°C dan kelembaban 70-90%. Kondisi ini adalah musuh utama GPU — suhu tinggi memperpendek umur komponen, thermal throttling menurunkan performa, dan kelembaban tinggi meningkatkan risiko korosi pada sirkuit. Server inference menghasilkan panas luar biasa: 8× H100 (~700W × 8 = 5,6kW) berarti Anda perlu membuang setara panas 5-6 unit AC rumah tangga dari satu rak server. Tiga opsi cooling utama yang tersedia di Indonesia: AC standard (precision AC), liquid cooling (direct-to-chip), dan immersion cooling. Mari kita bandingkan.
Opsi 1: Precision AC (CRAC/CRAH) — Standard Data Center
Ini adalah standar industri untuk data center Indonesia hingga saat ini. Precision AC (Computer Room Air Conditioner) berbeda dengan AC rumah: dirancang untuk beroperasi 24/7, kontrol suhu presisi ±1°C, kontrol kelembaban built-in, dan filter HEPA untuk udara bersih. Untuk 15kW beban GPU (setara 8× A100 atau 4× H100): diperlukan AC precision ~20kW (dengan buffer N+1, total 30kW). Biaya:
- AC precision 20kW (unit + instalasi): Rp 80-150 juta per unit
- Biaya listrik AC: ~35-40% dari total daya IT. 15kW IT → ~6kW AC = Rp 6,5 juta/bulan listrik AC
- Perawatan tahunan: Rp 5-10 juta (filter ganti, refrigerant, coil cleaning)
- Total biaya cooling 5 tahun: Rp 100-150 juta (capex) + Rp 390 juta (listrik) + Rp 37,5 juta (maintenance) = Rp 527-577 juta
Kelebihan: teknologi matang, mudah maintenance, banyak vendor di Indonesia (Daikin, Carrier, Liebert). Kekurangan: boros listrik, butuh ruang lantai yang cukup besar, dan tidak efisien untuk densitas daya tinggi >20kW/rack.
Opsi 2: Liquid Cooling (Direct-to-Chip)
Direct-to-chip liquid cooling mengalirkan cairan coolant langsung ke cold plate yang menempel di GPU dan CPU. Cairan menyerap panas dan dibuang ke radiator atau cooling tower. NVIDIA sendiri merekomendasikan liquid cooling untuk GPU data center generasi terbaru (H100, H200, B200) yang memiliki TDP 700-1000W per GPU. Untuk 4× H100: sistem liquid cooler loop tunggal sudah cukup. Biaya:
- Retrofit kit liquid cooling (cold plate, pump, radiator, tubing) per GPU: Rp 10-20 juta/GPU
- Instalasi sistem (piping, reservoir, coolant): Rp 30-50 juta
- Total capex liquid cooling: Rp 70-130 juta untuk 4 GPU
- Biaya listrik pump + fan: ~300-500W = Rp 0,5 juta/bulan (jauh lebih rendah dari AC)
- Perawatan: ganti coolant setiap 2-3 tahun, Rp 5-10 juta
Kelebihan: lebih efisien (PUE bisa turun dari 1,6 ke 1,2), GPU temperature lebih rendah (60-70°C vs 80-90°C), mengurangi thermal throttling, memungkinkan densitas lebih tinggi (hingga 40kW/rack). Kekurangan: instalasi lebih kompleks, risiko kebocoran air (meskipun coolant non-konduktif), vendor terbatas di Indonesia (perlu impor atau integrasi sendiri).
Opsi 3: Immersion Cooling
Immersion cooling merendam server dalam cairan dielektrik non-konduktif (seperti 3M Novec atau Engineered Fluids). Seluruh komponen — termasuk GPU, CPU, motherboard — terendam dalam cairan yang menyerap panas secara langsung. Metode ini paling efisien secara termal, memungkinkan PUE hingga 1,05 — hampir semua listrik masuk ke komputasi, bukan pendinginan. Biaya:
- Tank immersion (untuk 1 server 4U): Rp 250-400 juta
- Cairan dielektrik: Rp 80-150 juta per tank (perlu top-up ~10% per tahun)
- Kit konversi server (lepas fan,密封 komponen): Rp 20-40 juta
- Total capex: Rp 350-590 juta per tank
- Biaya listrik pump + chiller: ~200-400W = Rp 0,3 juta/bulan
Kelebihan: PUE sangat rendah (1,05-1,1), GPU temperature stabil di 50-60°C, server bisa dijalankan 24/7 tanpa fan (senyap), umur komponen lebih panjang, densitas sangat tinggi. Kekurangan: capex awal sangat mahal, perawatan cairan (kebersihan, topping), servis server lebih susah (harus dikeluarkan dari cairan, dikeringkan), dan risiko void warranty dari vendor server.
| Parameter | Precision AC | Liquid Cooling | Immersion |
|---|---|---|---|
| Capex (4 GPU) | Rp 100-150 juta | Rp 70-130 juta | Rp 350-590 juta |
| Listrik Cooling/bulan | Rp 6-7 juta | Rp 0,5 juta | Rp 0,3 juta |
| PUE | 1,5-1,8 | 1,2-1,3 | 1,05-1,1 |
| GPU Temp Idle/Load | 50°C / 85-90°C | 40°C / 65-75°C | 35°C / 55-65°C |
| Thermal Throttle Risk | Sedang-Tinggi | Rendah | Sangat Rendah |
| TCO 5 Tahun | Rp 527-577 juta | Rp 150-240 juta | Rp 400-650 juta |
| Kompleksitas Instalasi | Rendah | Sedang | Tinggi |
| Vendor di Indonesia | Banyak (Daikin, Carrier, dll) | Terbatas (CoolIT, Asetek, custom) | Sangat Terbatas (impor) |
Rekomendasi untuk Indonesia. Untuk server inference dengan 1-4 GPU (skala kecil-menengah): Precision AC sudah cukup — biayanya masuk akal, teknologinya matang, dan banyak vendor lokal yang bisa service. Untuk 8+ GPU (skala enterprise): Liquid cooling mulai masuk akal — penghematan listrik AC selama 5 tahun bisa melebihi biaya investasi liquid cooling. Immersion cooling baru layak untuk cluster >16 GPU di data center tier III/IV yang memang dirancang untuk high-density compute. Satu catatan penting: suhu dan kelembaban Jakarta/Cikarang sangat berbeda dengan Bandung atau Malang. Jika memungkinkan, tempatkan server di data center di daerah yang lebih sejuk (seperti DCI Bandung atau NeutraDC di dataran tinggi) bisa menghemat biaya cooling hingga 15-20%.
Kalkulasi Cepat: Cooling Cost per GPU per Bulan
| GPU | TDP | AC Cooling (PUE 1,6) | Liquid Cooling (PUE 1,25) | Selisih per Bulan | Selisih per Tahun |
|---|---|---|---|---|---|
| RTX 4090 | 450W | Rp 450 × 24h × 30 × Rp 1.500 × 0,6 = Rp 291rb | Rp 125rb | Rp 166rb | Rp 2 juta |
| A100 80GB | 400W | Rp 259rb | Rp 111rb | Rp 148rb | Rp 1,8 juta |
| H100 80GB | 700W | Rp 453rb | Rp 194rb | Rp 259rb | Rp 3,1 juta |
| B200 | 1.000W | Rp 648rb | Rp 278rb | Rp 370rb | Rp 4,4 juta |
Catatan: asumsi tarif listrik Rp 1.500/kWh, faktor AC = 0,6 × TDP untuk PUE 1,6 (60% dari daya GPU untuk cooling).
Jangan sepelekan thermal. Saya pernah melihat kasus di mana server 4× A100 ditempatkan di ruangan AC standard rumah (AC split 2 PK) — GPU mencapai 95°C dalam 10 menit dan thermal throttle ke 30% performa. Tim tersebut membeli A100 seharga Rp 1,2 miliar tapi hanya mendapat performa setara RTX 3090 karena overheating. Hitung biaya cooling dengan benar sebelum membeli GPU. Di Indonesia tropis, cooling bukan opsi — ini kebutuhan wajib yang biayanya bisa mencapai 30-40% dari total biaya listrik infrastruktur inference Anda.
Bagian 7 — API vs On-Premise: Perbandingan Lengkap
Bab 39 — Metodologi Perbandingan
Perbandingan API vs on-premise tidak bisa hanya dilihat dari tok/s. Ada lima parameter utama: kecepatan (TTFT + TPOT), biaya (Capex vs Opex), skalabilitas (easy vs hard), perawatan (provider vs tim IT), dan privasi data (data keluar vs data lokal).
Bab 40 — Perbandingan Kecepatan per Skenario
| Skenario | API (tok/s) | RTX 4090 (tok/s) | A100 (tok/s) | CPU 2-core (tok/s) |
|---|---|---|---|---|
| Simple Chat 100 tok | 50-150 | 50-100 | 80-200 | 2-5 |
| Code Gen 500 tok | 50-120 | 40-80 | 60-150 | 2-4 |
| RAG + Context 4K | 30-80 | 30-60 | 50-100 | 1-3 |
| Multi-turn Chat | 40-100 | 30-70 | 60-120 | 2-4 |
Bab 41 — Perbandingan Biaya: Capex vs Opex 3 Tahun
| Skenario | API 3 Tahun | On-Premise 3 Tahun | Selisih |
|---|---|---|---|
| Personal (30jt token/bln) | Rp 3-6 juta/bln = Rp ~160 juta | Rp 50 juta (GPU) + Rp ~50 juta (listrik+ops) = Rp ~100 juta | On-prem lebih murah Rp 60 juta |
| Tim (300jt token/bln) | Rp 30-80 juta/bln = Rp ~2 miliar | Rp 500 juta (4×GPU) + Rp 300 juta (ops) = Rp ~800 juta | On-prem lebih murah Rp 1.2 miliar |
| Enterprise (3M token/bln) | Rp 200-500 juta/bln = Rp ~12 miliar | Rp 5-10 miliar (cluster) + Rp 3 miliar (ops) = Rp ~10 miliar | On-prem lebih murah Rp 2 miliar |
Bab 42 — Analisis Break-Even
| GPU | Investasi | vs API | Break-Even (token/bln) | Break-Even (bulan) |
|---|---|---|---|---|
| RTX 4090 | Rp 50 juta | GPT-4o-mini | ~30 juta token | 8-12 bulan |
| RTX 4090 | Rp 50 juta | GPT-4o | ~2 juta token | 1-2 bulan |
| A100 80GB | Rp 600 juta | Claude Haiku | ~500 juta token | 10-15 bulan |
Bab 43 — Kasus 1: Startup AI 5 User
Profil: Startup AI dengan 5 developer. Kebutuhan coding assistant + chat, ~50 juta token/bulan. Biaya API: Rp 3-8 juta/bulan (GPT-4o-mini) atau Rp 30-50 juta/bulan (Claude Sonnet). On-prem: RTX 4090 (Rp 50 juta sekali + Rp 2 juta/bulan listrik). Break-even: ~10 bulan vs GPT-4o-mini, ~2 bulan vs Claude Sonnet. Rekomendasi: Mulai dengan API, beli RTX 4090 setelah 3 bulan jika token rate naik.
Bab 44 — Kasus 2: Perusahaan Menengah 50 User
Profil: 50 karyawan, butuh AI untuk CS + coding + dokumen. ~500 juta token/bulan. Biaya API: Rp 30-80 juta/bulan. On-prem: 4× A100 80GB (Rp 2.5 miliar + Rp 10 juta/bulan listrik). TCO 3 tahun: API ~Rp 1.8 miliar vs on-prem ~Rp 3.1 miliar. On-prem lebih mahal karena investasi awal besar, tapi data tetap di dalam perusahaan dan latency lebih rendah.
Bab 45 — Kasus 3: BUMN 500+ User
Profil: BUMN dengan 500+ concurrent users. Data privacy wajib (UU PDP). API enterprise: minimal Rp 200-500 juta/bulan (tidak termasuk data residency). On-prem: DGX B200 cluster (Rp 15 miliar + Rp 50 juta/bulan listrik + Rp 30 juta/bulan staff). TCO 5 tahun: API ~Rp 20-35 miliar vs on-prem ~Rp 25-30 miliar. On-prem lebih murah dalam 5 tahun, plus data aman.
Bab 46 — Analogi Perbandingan Berdasarkan Kalkulasi Nyata
Angka-angka teknis kadang sulit dibayangkan. Berikut adalah analogi dunia nyata untuk membantu memahami perbedaan kecepatan antara CPU inference, GPU inference, dan API inference.
Tabel Analogi Kecepatan
| Kecepatan | Tok/s | Analogi | 100 token (1 paragraf) | 1000 token (1 halaman) |
|---|---|---|---|---|
| CPU (2 core, 8GB RAM) | 2-5 tok/s | Mobil butuh nanjak di jalur alternatif | 20-50 detik | 3-8 menit 😱 |
| CPU (Mac M3, 24GB RAM) | 10-25 tok/s | Mobil hatchback di jalan macet | 4-10 detik | 40 detik - 1.5 menit |
| RTX 4090 (lokal) | 50-150 tok/s | Motor sport di tol bebas hambatan | 0.7-2 detik | 7-20 detik |
| A100 80GB (cloud/on-prem) | 100-250 tok/s | Mobil sport di autobahn Jerman | 0.4-1 detik | 4-10 detik |
| API (Groq, Gemini Flash) | 200-1500 tok/s | Pesawat jet — instant banget | 0.07-0.5 detik | 0.7-5 detik |
Analogi Biaya
| GPU/API | Biaya per 1M token | Analogi |
|---|---|---|
| CPU lokal | ~Rp 100 (listrik doang) | Naik angkot — murah tapi lama banget |
| RTX 4090 (lokal) | ~Rp 7.000-15.000 | Naik motor sendiri — bayar bensin aja |
| GPU Cloud (A100) | ~Rp 500-2.000 | Naik taksi — bayar per kilometer |
| GPT-4o-mini API | ~Rp 15.000 | Grab Car — nyaman, sesuai permintaan |
| GPT-4o API | ~Rp 200.000 | Naik helikopter — cepet tapi mahal banget |
| Claude Opus API | ~Rp 300.000+ | Pesawat jet pribadi — termahal, tercepat, terbaik |
Inti. Beda CPU dan GPU itu kayak beda angkot dan motor sendiri — sama-sama sampe, tapi motor 20× lebih cepat dan bahan bakarnya lebih murah per kilometer. Beda GPU dan API itu kayak beda motor sendiri dan naik helikopter — helikopter lebih cepet, tapi kamu bayar tiap kali naik.
Kalkulasi: Kapan API Lebih Murah dari On-Premise?
Jawabannya: tergantung volume token + model yang dipakai.
| Model API | Cost per 1M token (output) | Break-even vs RTX 4090 | Break-even vs A100 |
|---|---|---|---|
| GPT-4o-mini | ~Rp 9,600 | ~10 bulan (53jt token/bln) | ~3 tahun (528jt token/bln) |
| Claude Haiku | ~Rp 20,000 | ~5 bulan (25jt token/bln) | ~18 bulan (253jt token/bln) |
| DeepSeek V3 | ~Rp 17,600 | ~6 bulan (28jt token/bln) | ~20 bulan (288jt token/bln) |
| Gemini 2.0 Flash | ~Rp 6,400 | ~15 bulan (78jt token/bln) | ~4.5 tahun (792jt token/bln) |
| GPT-4o | ~Rp 160,000 | ~0.7 bulan (3jt token/bln) | ~2 bulan (32jt token/bln) |
Perbandingan Real-World: 1 Hari Inference
| Skenario | Total Token/hari | API Cost/hari | On-Premise Cost/hari |
|---|---|---|---|
| Developer: chat + coding | ~50,000 | GPT-4o-mini: Rp 800 | RTX 4090: ~Rp 25,000 (listrik) + Rp 4,500 (depresiasi) = Rp 29,500 |
| Team: 10 developer | ~500,000 | Claude Haiku: Rp 15,000 | RTX 4090: ~Rp 30,000 |
| Enterprise: 100 AI agent | ~5,000,000 | Gemini Flash: Rp 40,000 | 4× A100: ~Rp 290,000 |
| BUMN: 1000+ user | ~50,000,000 | Enterprise deal: ~Rp 2-5 juta | Cluster DGX: ~Rp 540,000 |
50 juta/bulan)Awas. Pada volume rendah (developer personal), API lebih murah. Pada volume tinggi (enterprise), on-premise lebih murah. Titik balik (break-even): ketika token output melebihi ~50 juta token/bulan untuk model premium, atau ~500 juta token/bulan untuk model cheap.
Bab 46b — Harga API dalam Rupiah dengan PPN 11%
Semua harga API model besar yang tercantum di situs resmi OpenAI, Anthropic, dan Google dalam denominasi USD per 1M token. Untuk pembeli Indonesia — terutama perusahaan yang membutuhkan faktur pajak — harga sesungguhnya yang dibayar adalah harga USD × kurs (misal Rp 16.500/USD) + PPN 11% + PPh 22 (untuk impor jasa, jika provider tidak punya BUT di Indonesia). Tabel berikut menyajikan harga API yang sudah dikonversi ke Rupiah dengan PPN, sehingga Anda bisa langsung membandingkan dengan biaya on-premise dalam mata uang yang sama.
| Model API | Harga Input/USD | Harga Output/USD | Harga Output/1M tok (Rp) | +PPN 11% (Rp) | +PPN+PPh 22 (Rp)* |
|---|---|---|---|---|---|
| GPT-4o-mini | $0,15 | $0,60 | Rp 9.900 | Rp 11.000 | Rp 13.100 |
| GPT-4o | $2,50 | $10,00 | Rp 165.000 | Rp 183.150 | Rp 218.100 |
| GPT-4.1 | $2,00 | $8,00 | Rp 132.000 | Rp 146.520 | Rp 174.400 |
| Claude Haiku 3.5 | $0,80 | $4,00 | Rp 66.000 | Rp 73.260 | Rp 87.200 |
| Claude Sonnet 4 | $3,00 | $15,00 | Rp 247.500 | Rp 274.725 | Rp 327.100 |
| Claude Opus 4 | $15,00 | $75,00 | Rp 1.237.500 | Rp 1.373.625 | Rp 1.635.500 |
| Gemini 2.0 Flash | $0,10 | $0,40 | Rp 6.600 | Rp 7.326 | Rp 8.700 |
| Gemini 2.5 Pro | $1,25 | $10,00 | Rp 165.000 | Rp 183.150 | Rp 218.100 |
| DeepSeek V3 | $0,27 | $1,10 | Rp 18.150 | Rp 20.146 | Rp 24.000 |
| DeepSeek R1 | $0,55 | $2,19 | Rp 36.135 | Rp 40.110 | Rp 47.700 |
*PPh 22 (15%) berlaku untuk pembayaran ke luar negeri tanpa DGT atau jika penyedia tidak punya tax treaty yang menguntungkan. Banyak startup Indonesia menggunakan jasa perantara seperti OpenRouter atau API Gateway lokal yang sudah termasuk PPN. Harga Gateway lokal biasanya +20-30% dari harga dasar untuk menutup biaya pajak dan markup.
API Lokal Indonesia
Beberapa penyedia AI API lokal Indonesia sudah mulai bermunculan: GW2 AI (GPT-4o via lokal), Neural, Nodeflux, dan Aksara AI. Harga mereka biasanya lebih tinggi dari harga langsung OpenAI per token (karena mereka menambahkan margin dan PPN), tapi menawarkan kemudahan: faktur pajak Indonesia langsung, support dalam Bahasa Indonesia, pembayaran via transfer bank lokal, dan — yang paling penting untuk beberapa sektor — jaminan data tidak meninggalkan server di Indonesia. Perbandingan: GPT-4o-mini via penyedia lokal biasanya Rp 18.000-25.000/1M token output (sudah PPN) — lebih mahal 60-125% dari harga langsung setelah PPN, tapi tanpa ribet kurs USD dan pajak impor. Untuk perusahaan yang butuh faktur PPN dan tidak punya akses kartu kredit internasional, ini adalah solusi yang valid.
Tip pembayaran API: Jika startup Anda masih pakai API langsung dari OpenAI/Anthropic dengan kartu kredit pribadi, ingat bahwa biaya itu belum termasuk PPN 11% dan pajak penghasilan yang harus disetor sendiri sebagai WPLN (Wajib Pajak Luar Negeri). Konsultan pajak biasanya menyarankan untuk buka rekening korporasi dan daftar sebagai entitas bisnis ke OpenAI — atau gunakan reseller lokal yang sudah mengurus semua kewajiban perpajakan. Jangan sampai di akhir tahun pajak Anda harus bayar denda karena lapor PPN atas pembelian jasa AI dari luar negeri. Ini adalah realitas yang sering dilupakan dalam kalkulasi biaya API "murah" — PPN 11% + PPh 22 = tambahan hingga 30% dari harga yang tertera di website provider.
Bab 46c — Kasus: Startup AI Indonesia (3 Founder, 20 Juta Token/Bulan)
Profil: Startup AI tahap awal di Bandung. 3 co-founder (2 engineer, 1 product). Mereka sedang mengembangkan AI writing assistant untuk penulis artikel Bahasa Indonesia. Token usage: ~20 juta token per bulan (80% output, 20% input), dengan traffic yang masih naik 10-20% per bulan. Budget operasional sangat terbatas — mereka masih bootstrapped dengan angel investment Rp 500 juta.
Opsi A: API Model Kecil (GPT-4o-mini / Gemini Flash)
| Komponen | Perhitungan | Biaya/Bulan (Rp) |
|---|---|---|
| API GPT-4o-mini (output 16jt tok) | 16jt × Rp 11.000/1jt = Rp 176.000 | Rp 176.000 |
| API GPT-4o-mini (input 4jt tok) | 4jt × Rp 2.750/1jt = Rp 11.000 | Rp 11.000 |
| Total API (PBL, kurs tengah) | Rp 187.000 | |
| Biaya development (API integration) | 2 hari kerja co-founder | Rp 0 (opportunity cost ~Rp 3 juta) |
Total opsi API: ~Rp 200.000/bulan. Sangat murah. Tapi startup ini perlu meningkatkan kualitas output secara kontinu — suatu saat mereka mungkin perlu upgrade ke model yang lebih besar.
Opsi B: On-Premise (PC dengan RTX 4090)
| Komponen | Biaya |
|---|---|
| PC + RTX 4090 (48GB RAM, Ryzen 9) | Rp 55 juta (sekali) |
| Listrik (450W + AC 1PK, 16h/hari) | Rp 650.000/bulan |
| Internet dedicated 50Mbps (for updates, API fallback) | Rp 500.000/bulan |
| Domain/SSL/Cloudflare | Rp 50.000/bulan |
| Waktu setup + maintenance | ~1 minggu co-founder (opportunity cost ~Rp 8 juta) |
Total opsi on-premise: Capex Rp 55 juta + opex Rp 1,2 juta/bulan + opportunity cost Rp 8 juta.
Break-Even Analysis untuk Startup Ini
| Bulan ke- | API (kumulatif) | On-Prem (kumulatif) | Keterangan |
|---|---|---|---|
| 0 | Rp 0 | Rp 63 juta (PC+set-up) | Startup keluar banyak uang di muka |
| 3 | Rp 0,6 juta | Rp 66,6 juta | API masih jauh lebih murah |
| 6 | Rp 1,2 juta | Rp 70,2 juta | On-prem kumulatif masih >70× API |
| 12 | Rp 2,4 juta | Rp 77,4 juta | On-prem kumulatif masih 32× API |
| 24 | Rp 4,8 juta | Rp 91,8 juta | On-prem masih 19× lipat |
| 36 | Rp 7,2 juta | Rp 106,2 juta | Break-even tidak pernah tercapai dalam 3 tahun |
Analisis untuk startup kecil: Dengan 20 juta token/bulan, biaya API GPT-4o-mini hanya Rp 200.000/bulan. On-premise dengan RTX 4090 membutuhkan Rp 55 juta di awal + Rp 1,2 juta/bulan. Bahkan setelah 3 tahun, API total hanya Rp 7,2 juta vs on-prem Rp 106,2 juta. Untuk startup kecil dengan token usage rendah, API adalah pemenang mutlak. Tidak ada argumen teknis yang membenarkan pembelian GPU — kecuali jika startup tersebut butuh: (1) privasi data penuh (data pengguna tidak boleh ke server AS), (2) model spesifik yang tidak tersedia di API, atau (3) latensi sangat rendah untuk real-time application. Saran saya: nikmati API murah dulu, fokus pada product-market fit, dan beli GPU hanya saat token usage sudah mencapai 200-300 juta token/bulan (10-15× lipat dari sekarang). Saat itu, break-even on-premise akan tercapai dalam 12-18 bulan.
Skenario Alternatif: Hybrid untuk Startup
Ada kompromi menarik: startup ini menggunakan API untuk production dan PC + RTX 4090 untuk development & eksperimen. Biaya: PC Rp 55 juta (sekali) + listrik ~Rp 400rb/bulan (8 jam/hari). Untuk development, mereka bisa menjalankan model 7-12B lokal untuk rapid prototyping tanpa latency API. Untuk production, mereka tetap pakai API yang terpercaya dan scalable. Biaya total: Rp 55 juta + Rp 400rb/bulan (dev) + Rp 200rb/bulan (prod API) = Rp 55,6 juta tahun pertama + Rp 7,2 juta/tahun berikut. Pendekatan ini memberi kecepatan development lokal sekaligus reliabilitas production API.
Bab 46d — Kasus: Perusahaan Retail Indonesia (50 Agent AI Customer Service)
Profil: Perusahaan retail dengan 200 toko fisik dan e-commerce di Jabodetabek, Surabaya, Medan. Mereka ingin mengganti 50 customer service manusia dengan AI agent yang menangani chat WhatsApp, chat e-commerce, dan telepon (voice-to-text-to-LLM). Estimasi token usage: ~500 juta token/bulan (70% output, 30% input), dengan beban puncak di jam 08.00-21.00 WIB (13 jam aktif, 11 jam idle). Ini adalah skenario klasik yang membuat banyak CTO Indonesia bingung: token usage besar tapi tidak 24/7.
Opsi A: API (Gemini Flash + GPT-4o-mini untuk routing)
| Komponen | Formula | Biaya/Bulan (Rp) |
|---|---|---|
| Gemini Flash 2.0 untuk 80% query sederhana | 400jt tok × Rp 7.326/1jt (output) + 150jt × Rp 2.500/1jt (input) | Rp 3,3 juta |
| GPT-4o-mini untuk 20% query kompleks | 100jt × Rp 11.000/1jt (output) + input ~Rp 300rb | Rp 1,4 juta |
| Biaya API Gateway (OpenRouter / Lokal) | Markup 20% | Rp 0,94 juta |
| Total per bulan | ~Rp 5,6 juta/bulan |
Annual API cost: Rp 5,6 juta × 12 = Rp 67,2 juta. Belum termasuk voice-to-text (STT) yang estimasi Rp 2-3 juta/bulan tambahan.
Opsi B: On-Premise Hybrid (4× RTX 4090 untuk baseline + API burst)
| Komponen | Biaya (Rp) |
|---|---|
| Server: 2× PC dengan 2× RTX 4090 masing-masing (total 4 GPU) | Rp 200 juta (capex) |
| Colocation di DCI: half rack 21U, 3kW | Rp 12 juta/bulan |
| Listrik (4× 450W + server = ~2,2kW) — sudah include colocation | Termasuk sewa |
| API Gem Flash untuk burst saat jam sibuk | Rp 1,5 juta/bulan |
| Internet dedicated 100Mbps | Rp 1,5 juta/bulan |
Total opsi hybrid: Capex Rp 200 juta + Opex Rp 15 juta/bulan (colocation) + Rp 3 juta/bulan (API burst + internet) = Rp 18 juta/bulan + Rp 200 juta capex.
Break-Even Analysis
| Bulan | API Full (kumulatif) | Hybrid On-Prem (kumulatif) |
|---|---|---|
| 0 | Rp 0 | Rp 200 juta (capex) |
| 6 | Rp 40,3 juta | Rp 308 juta |
| 12 | Rp 80,6 juta | Rp 416 juta |
| 18 | Rp 121 juta | Rp 524 juta |
| 24 | Rp 161 juta | Rp 632 juta |
| 30 | Rp 202 juta | Rp 740 juta |
| 36 | Rp 242 juta | Rp 848 juta |
Temuan kunci: Full API masih lebih murah hingga tahun ke-3 (Rp 242 juta vs Rp 848 juta). Tapi perhatikan: ini karena asumsi 80% workload ditangani Gemini Flash yang super murah. Jika retail ini butuh model premium (Claude Sonnet/GPT-4o) untuk semua query — misalnya karena akurasi sangat penting untuk transaksi — biaya API melonjak ke Rp 40-80 juta/bulan. Dalam skenario itu, break-even hybrid terjadi di bulan ke-6 hingga ke-8. Kesimpulan: Untuk retail dengan model murah (Gemini Flash) dan traffic siang-hari, API masih unggul 3 tahun. Tapi jika mereka punya data sensitif pelanggan (detail transaksi, alamat, nomor telepon), on-premise memberikan nilai tambah privasi yang tidak bisa dihitung dalam rupiah. Faktor kepatuhan sering menjadi pembeda yang menentukan.
Rekomendasi untuk Retail AI Customer Service
Mulailah dengan API (Gemini Flash + routing sederhana) untuk 6 bulan pertama. Gunakan waktu itu untuk: (1) mengukur peak-to-average ratio traffic, (2) mengidentifikasi pola query yang butuh model lebih besar, (3) mengumpulkan data token usage per jam yang akurat. Setelah 6 bulan, jika token usage sudah >300 juta/bulan dan Anda punya data dukung untuk sizing, baru pertimbangkan on-premise. Sementara itu, siapkan infrastruktur colocation (nego sewa rak) agar ketika keputusan on-prem diambil, Anda tinggal pasang server tanpa harus menunggu ketersediaan rak data center yang di Jakarta bisa memakan waktu 2-4 minggu.
Bab 46e — Kasus: Government / BUMN (Pure On-Premise, 1000+ User, UU PDP)
Profil: BUMN sektor infrastruktur dengan 25.000 pegawai, akan meluncurkan AI assistant internal untuk 1000+ concurrent user. Layanan: menjawab pertanyaan kebijakan internal, membantu analisis dokumen tender, dan menyusun laporan kinerja. Karena UU PDP (Undang-Undang Perlindungan Data Pribadi) Nomor 27 Tahun 2022, data pegawai dan dokumen tender TIDAK BOLEH dikirim ke server di luar Indonesia. Semua inferensi harus dilakukan di dalam negeri, dan idealnya di data center milik BUMN sendiri atau BUMN lain yang terpercaya. Hanya on-premise (atau colocation di BUMN telekomunikasi) yang memenuhi syarat. API luar negeri seperti OpenAI atau Anthropic — bahkan jika menjanjikan data privacy — secara hukum tidak bisa dipertanggungjawabkan jika ada kebocoran data.
Persyaratan Infrastruktur
Untuk melayani 1000+ concurrent user dengan model 70B Q4 (atau lebih besar untuk presisi dokumen hukum), diperlukan cluster yang cukup besar. Asumsi: model Llama 3 70B di Q4_K_M (~40GB VRAM), dengan continuous batching di vLLM, satu H100 80GB bisa melayani 20-30 concurrent user. Untuk 1000 user: ~35-50 H100. Dengan buffer N+1 (50 H100) dan tensor parallelism 8 per node: dibutuhkan 7 node DGX H100 (8× H100 per node). Total 56 H100.
| Komponen | Spesifikasi | Estimasi Biaya (Rp) |
|---|---|---|
| 7× DGX H100 (8× H100 + dual CPU + 2TB RAM) | Total 56× H100 80GB SXM | Rp 84-105 miliar |
| InfiniBand switch (2× QM9700 40-port) | 400Gbps interkoneksi | Rp 4-6 miliar |
| Storage (NVMe all-flash) | 100TB NVMe untuk model & data | Rp 1-2 miliar |
| Management server + networking | Dell/Supermicro + switch 100GbE | Rp 1-2 miliar |
| Rack, PDU, UPS, instalasi | 7 rack + infrastruktur | Rp 3-5 miliar |
| Precision AC / Liquid cooling | ~350kW cooling capacity | Rp 5-10 miliar |
| Total Capex | Rp 98-130 miliar |
Operational Cost per Tahun
| Komponen | Perhitungan | Biaya/Tahun (Rp) |
|---|---|---|
| Listrik (DGX: ~12kW/unit × 7 = 84kW) | 84kW × 24h × 365 × Rp 1.200/kWh | Rp 883 juta |
| Cooling (PUE 1,5 → ~42kW cooling) | 42kW × 8760h × Rp 1.200/kWh | Rp 441 juta |
| Data center sewa rack (7 rack) | 7 × Rp 40 juta/bulan × 12 | Rp 3,36 miliar |
| Internet dedicated 10Gbps | Rp 50 juta/bulan × 12 | Rp 600 juta |
| Staff: 3 engineer AI + 2 sysadmin + 1 network | 6 × Rp 250 juta/thn (rata-rata) | Rp 1,5 miliar |
| Garansi & support (NVIDIA AI Enterprise) | ~15% hardware/tahun | Rp 15-18 miliar |
| Total Opex/Tahun | Rp 21,8 - 24,8 miliar |
Perbandingan dengan API Enterprise (Jika Memungkinkan)
Jika UU PDP tidak menjadi kendala (hipotetis), berapa biaya API untuk volume yang sama? 1000 concurrent user × 500 token/response × 10 response/jam × 13 jam aktif = 65 juta token/hari = ~1,95 miliar token/bulan. Dengan GPT-4o-mini: 1,95 miliar × Rp 11.000/1jt = Rp 21,45 miliar/bulan — langsung melebihi opex tahunan on-premise (Rp 21,8 miliar). Dengan Claude Haiku: Rp 142,9 miliar/bulan. Untuk skala BUMN 1000+ user, on-premise bukan hanya kepatuhan — ini juga jauh lebih murah. TCO 5 tahun on-premise: capex Rp 115 miliar + opex 5 tahun Rp 116,5 miliar = Rp 231,5 miliar. API setara dalam 5 tahun: Rp 1,3 triliun (GPT-4o-mini) hingga Rp 8,6 triliun (Claude Haiku). Hemat: Rp 1-8 triliun.
Catatan untuk BUMN: Proses pengadaan GPU di BUMN Indonesia biasanya memakan waktu 6-12 bulan (dari penyusunan spek hingga barang datang + instalasi). Mulailah proses pengadaan sekarang — jangan tunggu sampai aplikasi AI sudah siap. Sementara itu, Anda bisa menggunakan API dari penyedia lokal (Neural, Aksara AI, atau Telkom AI) yang infrastrukturnya di Indonesia dan sudah comply dengan UU PDP sebagai solusi sementara. Pastikan arsitektur aplikasi Anda mendukung hot-switch antara API (sementara) ke on-premise (permanen) dengan mengubah satu baris endpoint URL.
Bab 46f — Grafik Kapan Break-Even untuk Setiap Skenario Indonesia
Berikut adalah tabel break-even point untuk berbagai skenario Indonesia yang umum, dihitung dengan asumsi kurs Rp 16.500/USD, PPN 11%, dan tarif listrik industri Rp 1.200/kWh untuk skala besar dan Rp 1.500/kWh untuk skala kecil-menengah.
| Skenario | GPU / Infra | Capex (Rp) | Token/Bulan | API Termurah | API Cost/Bulan | Break-Even |
|---|---|---|---|---|---|---|
| Developer individual | RTX 4090 (PC) | 55 juta | 10 juta | GPT-4o-mini + PPN | Rp 110.000 | Tidak pernah (>40 tahun) |
| Developer individual | RTX 4090 (PC) | 55 juta | 30 juta | GPT-4o-mini + PPN | Rp 330.000 | Tidak pernah (~14 tahun) |
| Developer (+GPU lokal) | RTX 4090 (PC) | 55 juta | 100 juta | GPT-4o-mini + PPN | Rp 1,1 juta | ~4 tahun (48 bulan) |
| Startup 3 orang (bootstrapped) | RTX 4090 (PC) | 55 juta | 20 juta | GPT-4o-mini + PPN | Rp 200rb | Tidak pernah |
| Startup (pake model besar) | 2× RTX 4090 | 110 juta | 500 juta | Gemini Flash + PPN | Rp 3,7 juta | ~3 tahun |
| Startup (model premium saja) | 2× RTX 4090 | 110 juta | 100 juta | Claude Sonnet + PPN | Rp 27,5 juta | ~4 bulan |
| Tim kecil 10 user | 2× RTX 4090 | 110 juta | 100 juta | GPT-4o-mini + PPN | Rp 1,1 juta | Tidak pernah (>8 tahun) |
| Perusahaan retail 50 CS | 4× RTX 4090 (colo) | 200 juta | 500 juta | Gemini Flash + PPN | Rp 5,6 juta | Tidak pernah (calc: >3 tahun) |
| Perusahaan retail (model premium) | 4× RTX 4090 (colo) | 200 juta | 500 juta | Claude Sonnet + PPN | Rp 137 juta | ~1,5 bulan |
| Perusahaan 200 user | 4× A100 (colo) | 3 miliar | 2 miliar | Gemini Flash + PPN | Rp 14,6 juta | Tidak pernah |
| Perusahaan 200 user | 4× A100 (colo) | 3 miliar | 2 miliar | GPT-4o + PPN | Rp 366 juta | ~8 bulan |
| Enterprise 500 user | DGX B200 | 20 miliar | 10 miliar | GPT-4o-mini + PPN | Rp 110 juta | Tidak terjadi dalam 5 tahun |
| Enterprise 500 user | DGX B200 | 20 miliar | 10 miliar | Claude Sonnet + PPN | Rp 2,7 miliar | ~7 bulan |
| BUMN 1000+ user | 56× H100 (DC) | 115 miliar | 2 miliar | GPT-4o-mini (via lokal) | Rp 22 miliar | ~5 bulan |
| BUMN 1000+ user | 56× H100 (DC) | 115 miliar | 2 miliar | Claude Haiku (via lokal) | Rp 146 miliar | <1 bulan |
Pola yang terlihat jelas: Break-even on-premise sangat tergantung pada tiga variabel: (1) harga API per token — model premium (GPT-4o, Claude Sonnet) memberikan break-even dalam hitungan bulan, sementara model murah (Gemini Flash, GPT-4o-mini) bisa membuat on-premise tidak pernah balik modal; (2) total token per bulan — semakin banyak token, semakin cepat break-even; dan (3) efisiensi GPU — GPU data center (A100, H100) lebih mahal tapi memberikan throughput per watt yang lebih baik. Aturan praktis: Jika Anda menggunakan model murah (Gemini Flash / GPT-4o-mini), jangan beli GPU kecuali token usage >500 juta/bulan. Jika Anda menggunakan model premium (Claude Sonnet / GPT-4o / GPT-4.1), GPU sudah break-even dalam 1-8 bulan pada hampir semua skala. Intinya: model yang Anda pilih 10× lebih menentukan daripada volume token dalam perhitungan break-even.
Kalkulasi Cepat: Cari Break-Even Anda Sendiri
Rumus sederhana untuk estimasi break-even dalam bulan:
BE (bulan) = Total Capex / (Biaya API per bulan - Biaya Opex per bulan)
Contoh:
- Capex: Rp 200 juta (server + 4× RTX 4090 + colocation setup)
- Biaya API bulanan: Rp 137 juta (Claude Sonnet, 500jt token)
- Biaya Opex bulanan on-prem: Rp 15 juta (colocation + listrik)
- BE = 200 / (137 - 15) = 200 / 122 = 1,6 bulan
Contoh 2:
- Capex: Rp 115 miliar (56× H100 + DC setup)
- Biaya API bulanan: Rp 22 miliar (GPT-4o-mini, lokal gateway)
- Biaya Opex bulanan: Rp 2 miliar (listrik + cooling + staff + DC)
- BE = 115.000 / (22.000 - 2.000) = 115.000 / 20.000 = 5,75 bulan
Bab 46g — Perbandingan Kecepatan: Analogi Transportasi Indonesia
Angka token per detik (tok/s) sering sulit dibayangkan secara intuitif. Untuk membantu memvisualisasikan perbedaan kecepatan antara berbagai metode inference, mari gunakan analogi transportasi yang akrab bagi orang Indonesia — dari yang paling lambat hingga tercepat.
| Metode Inference | Tok/s | Analogi Transportasi | Deskripsi |
|---|---|---|---|
| CPU 2-core (laptop lama) | 1-3 tok/s | Angkot di Jakarta macet | Kencang-kencang di jalan, tapi lebih sering berhenti. Satu halaman (1000 token) bisa 5-15 menit. Bisa sampe, cuma lama banget — kayak nunggu angkot ngetem. |
| CPU 8-core / Mac M1 (tanpa GPU) | 5-15 tok/s | KRL Commuter Line | Lebih cepat dari angkot, jadwal lebih teratur, tapi kadang berhenti di setiap stasiun. Satu paragraf (100 token): 7-20 detik. Seperti KRL Bekasi-Jakarta — sampe, tapi butuh kesabaran. |
| Mac M3 / M4 (unified memory 24GB) | 15-30 tok/s | TransJakarta (Busway) | Jalur khusus, lebih cepat dari KRL di jalur yang tepat. Cocok untuk perjalanan sehari-hari (inference ringan). 100 token: 3-7 detik. Tapi kalau model besar (bus penuh), jalurnya mulai lambat. |
| RTX 3090/4090 (lokal, model 7-13B) | 40-100 tok/s | Kereta Api Jarak Jauh (Argo) | Cepat, stabil, dan bisa membawa banyak penumpang (batch besar). 100 token: 1-2,5 detik. Seperti Argo Bromo — nyaman, tepat waktu, dan harga tiket masuk akal. Pilihan favorit untuk perjalanan reguler. |
| A100 80GB (data center, model 7-13B) | 80-200 tok/s | Kereta Cepat Whoosh | Jauh lebih cepat dari kereta biasa. 100 token: 0,5-1,25 detik — hampir instan. Tapi infrastrukturnya mahal (butuh rel khusus / data center). Seperti Whoosh Jakarta-Bandung — cepat, tapi stasiunnya cuma di kota besar. |
| H100 / B200 (data center) | 150-400 tok/s | Pesawat Komersial (Garuda, Lion Air) | Kecepatan yang mengubah persepsi waktu. 100 token: 0,25-0,7 detik — Anda hampir tidak bisa membacanya. Seperti naik pesawat Jakarta-Surabaya: 1,5 jam vs 12 jam naik bus. Tapi mahal dan perlu bandara (infrastruktur khusus). |
| API Groq / Gemini Flash (tercepat) | 500-1500+ tok/s | Pesawat Jet Tempur | Ini bukan lagi transportasi umum — ini adalah kecepatan yang mendekati instan. 100 token: 0,07-0,2 detik. Output muncul sebelum Anda selesai mengetik prompt. Tapi Anda tidak punya kendali atas kapan "terbang" dan tidak bisa bawa koper sendiri (data Anda disimpan di server mereka). |
Skala Waktu — Analogi Perjalanan Nyata
Bayangkan Anda harus menuliskan 1 halaman penuh konten (1000 token) dari AI. Berikut perbandingan waktu tunggunya dalam analogi perjalanan:
| Metode | 1000 token | Analogi Perjalanan |
|---|---|---|
| CPU 2-core | 5-15 menit 😩 | Naik bus antar-kota ekonomi dari Jakarta ke Bandung |
| CPU 8-core / Mac M1 | 1-3 menit 😅 | Naik KRL Jakarta-Bogor (4× perjalanan Bekasi-Tanah Abang) |
| Mac M3 (24GB) | 30-60 detik 😐 | TransJakarta Bundaran HI - Kota (1,5× perjalanan) |
| RTX 4090 (lokal) | 7-20 detik 😊 | Kereta Argo dari Stasiun Gambir ke Stasiun Senen — masih dalam kota Jakarta |
| A100 | 4-10 detik 🤩 | Whoosh Jakarta-Bandung — duduk, ambil napas, sudah sampai |
| H100/B200 | 2-5 detik 🤯 | Pesawat Jakarta-Surabaya (tanpa take-off dan landing — ini kecepatan jelajah) |
| Groq/Gemini Flash | 0,5-2 detik 🚀 | Teleportasi — realistisnya tidak ada analogi transportasi darat/udara yang mendekati |
Inti analogi: Jangan pernah membandingkan CPU inference (angkot) dengan API (jet tempur) secara langsung. Setiap metode punya use case-nya sendiri. CPU cocok untuk background batch processing yang tidak real-time — seperti ngirim paket lewat ekspedisi reguler. GPU lokal seperti kereta api jarak jauh — lebih cepat dari bus, tapi perlu modal beli tiket (GPU). API adalah pesawat — sangat cepat, tapi Anda bayar per penerbangan. Pilih berdasarkan prioritas Anda: biaya per token (harga tiket), kecepatan (waktu tempuh), atau privasi (siapa yang lihat barang bawaan Anda).
Bab 46h — Pendekatan Hibrida: API untuk Burst, On-Premise untuk Baseline
Setelah membaca semua perbandingan di atas, Anda mungkin menyadari bahwa tidak ada solusi tunggal yang sempurna untuk semua skenario. Jawabannya seringkali adalah hibrida: menggunakan on-premise (atau colocation) untuk menangani beban baseline yang stabil dan API untuk menangani lonjakan (burst) traffic. Ini menggabungkan biaya per token rendah dari on-premise dengan elastisitas API.
Arsitektur Hibrida Klasik
┌─────────────┐ ┌──────────────────┐ ┌──────────────┐
│ User Request │────▶│ Load Balancer │────▶│ Inference │
│ (1000/s) │ │ (LiteLLM / Nginx)│ │ Router │
└─────────────┘ └──────┬───────────┘ └──────┬───────┘
│ │
┌──────┴──────┐ ┌───────┴────────┐
│ Queue Size │ │ Routing Logic │
│ (Redis) │ │ │
└──────┬──────┘ │ < 200 queue → │
│ │ On-Premise │
│ │ > 200 queue → │
│ │ API fallback │
│ └───────┬────────┘
┌──────┴──────┐ ┌───────┴────────┐
│ On-Premise │ │ API Providers │
│ Cluster │ │ (OpenAI, etc) │
│ (4× A100) │ │ (pay-per-use) │
└─────────────┘ └────────────────┘
Implementasi Routing Hibrida
Framework seperti LiteLLM atau OpenRouter memudahkan implementasi hibrida. Anda cukup mendefinisikan beberapa "model provider" dan aturan routing-nya. Contoh konfigurasi LiteLLM untuk hibrida:
# config.yaml — LiteLLM Hybrid Routing
model_list:
- model_name: "baseline-model"
litellm_params:
model: "openai/llama-3-8b-instruct"
api_base: "http://onprem-server:8000/v1" # On-premise
model_info:
tier: "baseline"
max_queue: 200
- model_name: "burst-model"
litellm_params:
model: "gpt-4o-mini" # API fallback
api_key: "sk-xxx"
model_info:
tier: "burst"
router_settings:
routing_strategy: "latency-based-routing"
enable_queue: true
redis_host: "localhost"
fallback_strategy: "if queue > 200, route to burst-model"
Tiga Skenario Hibrida untuk Indonesia
Skenario 1: Startup ke Menengah (2-4 GPU baseline + API burst). Perusahaan dengan pertumbuhan traffic 10-20%/bulan. Baseline: 2× RTX 4090 di colocation untuk menangani 200-300 user average. Burst: API Gemini Flash/GPT-4o-mini saat ada lonjakan (campaign, promo, akhir bulan). Rasio baseline:burst = 70:30. Hemat: 40-50% dibandingkan full API.
Skenario 2: Perusahaan Retail (4-8 GPU baseline + API premium). Customer service AI 24/7. Baseline siang hari: 4× A100 di colocation menangani 80% traffic. Burst: saat jam sibuk (10.00-14.00 & 19.00-21.00), route 20% traffic paling kompleks ke Claude Sonnet/GPT-4o via API. Biaya: baseline ~Rp 60 juta/bulan (opex colocation), burst ~Rp 10-20 juta/bulan. Total vs Full API: Rp 70-80 juta vs Rp 100-150 juta. Hemat: 30-50%.
Skenario 3: BUMN (Baseline besar + API lokal untuk overflow). Cluster H100 on-premise untuk 95% traffic. API dari penyedia lokal Indonesia (yang comply UU PDP) untuk overflow 5% di saat peak. Ini memberi perlindungan kapasitas tanpa harus membeli GPU tambahan (yang proses pengadaannya 6-12 bulan) hanya untuk mengantisipasi lonjakan yang mungkin hanya terjadi 5-10 hari dalam setahun.
Matriks Keputusan Hibrida
| Kondisi | Rekomendasi | Contoh Indonesia |
|---|---|---|
| Traffic stabil + data sensitif | On-premise 100% | BUMN, bank, rumah sakit |
| Traffic stabil + data tidak sensitif | On-premise baseline + API backup | E-commerce besar, media |
| Traffic fluktuatif + data sensitif | On-premise baseline + API lokal burst | Fintech, insurance (perlu compliance OJK) |
| Traffic fluktuatif + data tidak sensitif | API 100% atau GPU cloud on-demand | Startup awal, agensi kreatif |
| Multi-model (beberapa model berbeda) | Model kecil on-prem, model besar API | Perusahaan dengan routing query by complexity |
Praktik terbaik hibrida: Bangun abstraksi API endpoint di aplikasi Anda sejak hari pertama — jangan hardcode endpoint OpenAI. Gunakan library yang kompatibel dengan OpenAI API format (seperti vLLM, LiteLLM, atau LocalAI). Dengan cara ini, Anda bisa mengganti backend inference hanya dengan mengubah URL base dan API key, tanpa mengubah kode aplikasi. Saya pernah membantu startup yang migrasi dari full API ke hybrid dalam satu hari hanya karena mereka sudah menggunakan OpenAI-compatible endpoint dari awal. Jika tidak, migrasi bisa memakan waktu berminggu-minggu karena harus rewrite semua kode integrasi.
Bab 46i — Management Overhead: Berapa Gaji Engineer untuk Maintain On-Premise
Satu komponen biaya yang paling sering dilupakan dalam kalkulasi on-premise adalah SDM. GPU tidak jalan sendiri. Server inference LLM adalah sistem kompleks yang membutuhkan perawatan rutin — update driver CUDA, tuning vLLM parameters, monitoring utilization, troubleshooting crash, backup model weights, security patching, capacity planning, dan lain-lain. Banyak perusahaan Indonesia membeli GPU tanpa memperhitungkan siapa yang akan mengoperasikannya. Akibatnya: GPU menganggur, atau — lebih buruk — dioperasikan oleh orang yang tidak kompeten hingga sering crash dan performa di bawah standar.
Berapa Banyak Engineer yang Dibutuhkan?
| Skala | Jumlah GPU | Engineer Dibutuhkan | Peran |
|---|---|---|---|
| Personal / Hobi | 1-2 RTX | 0 (owner sendiri) | Owner maintain sendiri di waktu luang |
| Startup / Tim Kecil | 2-4 GPU | 0,25 - 0,5 FTE | 1 dari 3 co-founder meluangkan 20-30% waktu |
| Perusahaan Menengah | 4-8 GPU | 1 - 1,5 FTE | 1 AI/ML engineer + konsultan/part-time sysadmin |
| Perusahaan Besar | 8-32 GPU | 2 - 4 FTE | 1 AI eng + 1 MLOps + 1 sysadmin + 0,5 network eng |
| Enterprise / BUMN | 32-128+ GPU | 5 - 10+ FTE | Tim dedicated: 2 AI eng, 2 MLOps, 2 sysadmin, 1 network, 1 security, 1 storage, 1 manager |
Estimasi Gaji Engineer AI/Infra di Indonesia (2026)
| Posisi | Junior (<2 thn) | Mid (2-5 thn) | Senior (5-10 thn) |
|---|---|---|---|
| AI/ML Engineer (LLM focus) | Rp 12-18 juta/bln | Rp 20-35 juta/bln | Rp 40-60 juta/bln |
| MLOps Engineer | Rp 10-15 juta/bln | Rp 18-28 juta/bln | Rp 30-45 juta/bln |
| System Administrator (GPU focus) | Rp 8-12 juta/bln | Rp 15-22 juta/bln | Rp 25-35 juta/bln |
| Network Engineer (DC) | Rp 8-12 juta/bln | Rp 15-20 juta/bln | Rp 22-30 juta/bln |
| Security Engineer | Rp 10-15 juta/bln | Rp 18-28 juta/bln | Rp 30-45 juta/bln |
Catatan pasar gaji: Gaji AI/ML Engineer dengan spesialisasi LLM inference sedang sangat kompetitif di Indonesia (2026). Permintaan tinggi, pasokan terbatas. E-commerce dan bank besar sering merekrut dengan gaji di atas rentang di atas, sementara startup mungkin di bawah. Jangan lupa tambahkan BPJS Ketenagakerjaan (~8-10% dari gaji), THR (1 bulan gaji per tahun), dan bonus (bisa 1-3 bulan gaji) dalam perhitungan total biaya SDM. Faktor total beban perusahaan: sekitar 1,4-1,6× gaji bulanan.
Biaya SDM untuk Setiap Skenario
| Skenario | Komposisi Tim | Gaji/Bulan (Rp) | Beban Perusahaan (1,5×) | Per Tahun |
|---|---|---|---|---|
| Startup 3 founder (GPU + colo) | 0,3 FTE AI eng (dari founder) | Rp 12 juta (30% dari gaji Mid) | Rp 18 juta | Rp 216 juta |
| Perusahaan retail (4 RTX 4090) | 1 AI eng mid + 0,25 sysadmin | Rp 30 juta + Rp 5 juta | Rp 52,5 juta | Rp 630 juta |
| Perusahaan menengah (4 A100) | 1 AI eng senior + 1 MLOps mid + 1 sysadmin mid | Rp 50 juta + Rp 25 juta + Rp 20 juta = Rp 95 juta | Rp 142,5 juta | Rp 1,7 miliar |
| Enterprise (8-32 A100/H100) | 2 AI eng + 1 MLOps sr + 1 sysadmin sr + 1 network | Rp 100 juta + Rp 35 juta + Rp 30 juta + Rp 25 juta = Rp 190 juta | Rp 285 juta | Rp 3,4 miliar |
| BUMN/Government (56+ H100) | Tim 8+: AI eng, MLOps, sysadmin, network, security, manager | ~Rp 350 juta | Rp 525 juta | Rp 6,3 miliar |
Peringatan anggaran SDM. Bandingkan biaya SDM pada tabel di atas dengan biaya API pada tabel-tabel sebelumnya. Untuk startup kecil: gaji 0,3 founder (Rp 18 juta/bln) > biaya API (Rp 200rb/bln). Sekali lagi, startup kecil tidak perlu on-premise. Untuk perusahaan menengah dengan 4 A100: biaya SDM Rp 52 juta/bulan + colocation Rp 50 juta/bulan = Rp 102 juta/bulan — bandingkan dengan biaya API Rp 14,6 juta (Gemini Flash). Di sini API masih menang. Tapi jika perusahaan itu butuh model premium: API Rp 366 juta/bulan vs on-premise total Rp 170 juta/bulan (SDM + colocation + depresiasi). Kunci keputusan: SDM adalah biaya tetap yang harus dibayar setiap bulan — tidak peduli GPU dipakai 10% atau 100%. Pastikan workload inference Anda cukup besar untuk memanfaatkan full capacity tim yang Anda rekrut. Jika tidak, Anda membayar engineer untuk nganggur — dan itu lebih mahal daripada GPU yang nganggur.
Strategi Mengurangi Biaya SDM
- Gunakan Managed Service — Beberapa penyedia data center di Indonesia menawarkan managed AI inference: Anda sewa GPU + server + mereka maintain semuanya. Biaya lebih tinggi dari colocation murni tapi lebih rendah dari full FTE. Contoh: DCI Managed AI, Telkom AI Managed Inference. Harga: +30-50% dari biaya colocation standar, tapi sudah termasuk SDM untuk operasional.
- Outsourcing Tim (BOT) — Untuk skala menengah, rekrut tim dari AI outsourcing (seperti Glair, Nodeflux, atau konsultan independen). Model BOT (Build-Operate-Transfer): mereka setup infra + jalan 6-12 bulan, lalu transfer ke tim internal. Biaya: Rp 400-800 juta/tahun (setara 1-2 FTE senior), tapi Anda tidak perlu pusing rekrutmen dan onboarding.
- Gunakan NVIDIA AI Enterprise — Lisensi NVIDIA AI Enterprise (base command ~$10.000/GPU/tahun untuk H100) termasuk support teknis langsung dari NVIDIA. Untuk troubleshooting kernel CUDA dan optimasi performa, support NVIDIA bisa mengurangi beban engineer Anda hingga 30-40%. Biaya Rp 165 juta/GPU/tahun memang mahal, tapi untuk cluster besar (56 H100 = Rp 9,2 miliar/tahun), bisa sepadan dengan mengurangi kebutuhan 1-2 FTE senior.
- Investasi Dokumentasi & Automation — Setiap jam yang dihabiskan untuk menulis dokumentasi operasional dan automation script (Ansible, Terraform, Helm chart) adalah investasi yang menghemat puluhan jam troubleshooting di masa depan. Banyak tim AI Indonesia melewatkan ini, sehingga knowledge hanya ada di kepala satu orang — yang cuti atau resign saja sudah bisa menyebabkan downtime.
Rekomendasi SDM berdasarkan siklus hidup: Fase 1 (0-500jt token/bln) → API saja, tidak perlu SDM khusus. Fase 2 (500jt - 2M token/bln) → 1 AI engineer part-time, mulai colocation. Fase 3 (2M - 10M token/bln) → 2 FTE AI + sysadmin, colocation atau DC tier II. Fase 4 (>10M token/bln) → Tim 5+ orang, dedicated data center. Jangan rekrut engineer sebelum volume token Anda membenarkan. SDM AI/LLM specialist di Indonesia masih langka dan mahal — jangan sampai Anda membayar gaji senior untuk workload yang sebenarnya bisa dihandle oleh API murah.
Rangkuman: API vs On-Premise Hybrid — Panduan Keputusan
| Token/Bulan | API Model Murah | API Model Premium | Rekomendasi Deployment |
|---|---|---|---|
| < 50 juta | Rp 0,5-1 juta | Rp 10-50 juta | API 100% (GPU tidak masuk akal) |
| 50 - 500 juta | Rp 1-10 juta | Rp 50-500 juta | API murah → API. Premium → 2-4 GPU colo. |
| 500jt - 5M | Rp 10-100 juta | Rp 500jt+ | Hybrid: baseline 2-8 GPU colo + API burst |
| > 5M | Rp 100 juta+ | Rp 2,5 M+ | On-premise dedicated + hibrida untuk overflow |
Aturan praktis final: Jika biaya API bulanan Anda > Rp 50 juta, mulailah serius mempertimbangkan on-premise. Jika > Rp 200 juta/bulan, on-premise bukan lagi opsi — ini keharusan finansial. Dan ingat: di atas kertas, hitungan lebih penting dari feeling. Tapi di Indonesia, faktor non-finansial seperti UU PDP, stabilitas listrik, skill SDM yang tersedia, dan proses pengadaan GPU yang lambat sering menjadi penentu yang lebih kuat daripada angka TCO murni. Pertimbangkan semua faktor, bukan hanya spreadsheatnya.
Bagian 8 — Tools & Framework Inference
Bab 47 — Ollama: Setup + Benchmark Multi-Platform
Ollama adalah tool termudah untuk menjalankan LLM lokal. Satu perintah: `ollama run gemma4:e2b`. Mendukung macOS, Linux, Windows. Model download otomatis, quantization GGUF built-in. Contoh: `ollama pull gemma4:12b-q4_K_M` (6.5GB download). Benchmark speed di RTX 4090: Gemma 4 12B Q4 ~60 tok/s, Llama 3 8B Q4 ~100 tok/s.
Bab 48 — vLLM: Production Inference Engine
vLLM adalah standar industri untuk inference production. Fitur utama: PagedAttention (KV cache virtual memory), continuous batching, tensor parallelism. vLLM bisa mencapai 2-3× throughput dibanding naive approach. Setup membutuhkan Python + CUDA. Example: `vllm serve gemma-4-12b --tensor-parallel-size 2`.
Bab 49 — llama.cpp: CPU-First Powerhouse
llama.cpp adalah framework C++ murni yang dioptimalkan untuk CPU inference. Mendukung quantization GGUF (Q2-Q8), AVX2/AVX-512/NEON, BLAS (cuBLAS, Metal, Vulkan). Untuk CPU 2-core: Gemma 4 E2B Q4 ~5 tok/s. Untuk Mac M3: ~25 tok/s. Paling efisien untuk model <7B di perangkat tanpa GPU.
Bab 50 — TensorRT-LLM: NVIDIA Optimization
TensorRT-LLM adalah framework optimasi inference dari NVIDIA untuk GPU mereka saja. Mendukung FP8, INT4, INT8 quantization, in-flight batching, paged KV cache. Klaim: 2-4× lebih cepat dari vLLM di H100. Namun setup lebih kompleks: butuh compile model spesifik untuk GPU target.
Bab 51 — ExLlamaV2 & TGI (Hugging Face)
ExLlamaV2 adalah loader untuk model GPTQ dan EXL2 quantization — ringan dan cepat untuk GPU konsumen. TGI (Text Generation Inference) dari Hugging Face adalah production server dengan fitur watermarking, token streaming, dan safety checker. Tabel perbandingan: vLLM vs TGI vs ExLlama.
Bab 52 — SGLang & MLX (Apple Silicon)
SGLang adalah framework inference baru dengan fokus pada structured generation dan JSON mode. MLX adalah framework Apple untuk M-series — memanfaatkan unified memory hingga 192GB. MLX + Mac Studio M3 Ultra bisa menjalankan model 70B Q4 dengan ~15 tok/s.
Bab 53 — Perbandingan Framework: Speed, Memory, Ease-of-Use
| Framework | Speed (7B Q4, RTX 4090) | VRAM | Setup Difficulty | Best For
Benchmark Framework — Tok/s di Berbagai GPU
Benchmark: model Q4_K_M (kecuali TensorRT-LLM FP8). Batch 4 dengan continuous batching. Sumber: komunitas + dokumentasi resmi per Juni 2026. | ||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Ollama | ~100 tok/s | Minimal | Sangat mudah | Personal use | ||||||||||||||||||||||||||||||||||||||||||||||||
| vLLM | ~120 tok/s | Efisien | Sedang | Production | ||||||||||||||||||||||||||||||||||||||||||||||||
| llama.cpp | ~90 tok/s | Minimal | Mudah | CPU + hybrid | ||||||||||||||||||||||||||||||||||||||||||||||||
| TensorRT-LLM | ~180 tok/s | Paling efisien | Sulit | NVIDIA only | ||||||||||||||||||||||||||||||||||||||||||||||||
| ExLlamaV2 | ~110 tok/s | Efisien | Sedang | GPU rumahan | ||||||||||||||||||||||||||||||||||||||||||||||||
| TGI | ~100 tok/s | Standar | Sedang | HuggingFace ekosistem |
Ekspansi 08 — Instalasi, Benchmark & Perbandingan Framework
Ekspansi 08.1 — Panduan Install Ollama
Ollama adalah gerbang termudah menuju AI lokal. Satu perintah sudah cukup untuk menjalankan model LLM di laptop maupun server. Berikut panduan instalasi untuk tiga platform utama.
Ubuntu 24.04 LTS
Metode 1 — Script otomatis (rekomendasi):
curl -fsSL https://ollama.com/install.sh | sh
Metode 2 — Manual dengan .deb package:
# Download package terbaru
wget https://ollama.com/download/ollama-linux-amd64.deb
sudo dpkg -i ollama-linux-amd64.deb
# Verifikasi
ollama --version
systemctl status ollama
Post-install: Ollama otomatis berjalan sebagai systemd service. Untuk mengubah port (default 11434): sudo systemctl edit ollama lalu tambah Environment="OLLAMA_HOST=0.0.0.0:11434". Ubuntu 24.04 bisa langsung support GPU NVIDIA via CUDA 12.x — pastikan driver NVIDIA ≥ 545 terinstall.
Cek GPU: nvidia-smi harus menampilkan GPU. Ollama otomatis mendeteksi CUDA dan menggunakan GPU untuk inference.
macOS
Metode — Installer GUI: Download dari ollama.com/download, drag ke Applications. Atau via Homebrew:
brew install ollama
# Jalankan
ollama serve
# Di terminal lain:
ollama run gemma4:e2b
Apple Silicon (M-series): Ollama otomatis menggunakan Metal API dan unified memory. Model sampai 70B Q4 bisa jalan di Mac dengan ≥ 64GB RAM. Speed di M3 Max: Gemma 4 12B Q4 ~25 tok/s.
Intel Mac: GPU Intel tidak didukung — semua inference via CPU. Disarankan model ≤7B Q4. Speed: ~3-5 tok/s untuk Gemma 4 E2B.
Windows
Metode — Installer GUI: Download dari ollama.com (file .exe). Jalankan installer — otomatis setup service. Setelah terinstall, buka PowerShell atau CMD:
ollama run gemma4:e2b
CUDA di Windows: Pastikan NVIDIA driver terbaru terinstall (≥ 545). Cek dengan nvidia-smi. Ollama akan otomatis mendeteksi CUDA 12.x. Jika GPU tidak terdeteksi, install CUDA Toolkit dari developer.nvidia.com.
WSL2 Alternative: Install Ollama di WSL2 Ubuntu untuk fleksibilitas lebih. Pastikan WSL2 sudah di-set dengan GPU passthrough.
Ekspansi 08.2 — Panduan Install vLLM Production dengan Docker
vLLM adalah inference engine standar untuk production deployment. Setup dengan Docker + docker-compose adalah metode paling andal dan reprodusibel.
Prerequisites
- Docker Engine ≥ 24.0 + Docker Compose ≥ 2.20
- NVIDIA Container Toolkit (nvidia-docker2)
- GPU NVIDIA dengan VRAM cukup (min 16GB untuk model 7B)
Install NVIDIA Container Toolkit:
# Ubuntu 24.04
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
docker-compose.yml untuk vLLM Server
version: '3.8'
services:
vllm-server:
image: vllm/vllm-openai:latest
runtime: nvidia
environment:
- NVIDIA_VISIBLE_DEVICES=all
- HF_TOKEN=${HF_TOKEN} # token HuggingFace untuk gated models
volumes:
- ./models:/root/.cache/huggingface
- ./config:/app/config
ports:
- "8000:8000"
command:
- "--model"
- "google/gemma-4-12b-it"
- "--tensor-parallel-size"
- "1"
- "--gpu-memory-utilization"
- "0.9"
- "--max-model-len"
- "8192"
- "--enforce-eager"
- "--enable-prefix-caching"
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
Note: Untuk multi-GPU, set tensor-parallel-size sesuai jumlah GPU. Untuk model open seperti Gemma 4, set HF_TOKEN atau gunakan --trust-remote-code.
Menjalankan dan Testing
# Pull image dan jalankan
docker compose up -d
# Cek logs
docker compose logs -f
# Test API
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "google/gemma-4-12b-it",
"messages": [{"role": "user", "content": "Halo, apa kabar?"}],
"max_tokens": 100
}'
Konfigurasi penting: gpu-memory-utilization=0.9 — menyisakan 10% VRAM untuk fragmentasi dan overhead. max-model-len=8192 membatasi context length sesuai kebutuhan — jangan set terlalu besar jika hanya butuh 4K. enable-prefix-caching mengaktifkan caching KV cache untuk system prompt — hemat 30-50% prefill time.
Ekspansi 08.3 — Panduan Install llama.cpp Build dari Source dengan CUDA
llama.cpp adalah framework C++ murni dengan performa CPU terbaik. Build dari source memungkinkan optimasi spesifik untuk hardware Anda.
Build dengan CUDA Support (Linux)
# Clone repository
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
# Build dengan CUDA (make)
make LLAMA_CUDA=1 -j$(nproc)
# Atau build dengan CMake (lebih flexibel)
mkdir build && cd build
cmake .. -DLLAMA_CUDA=ON -DLLAMA_CUDA_FORCE_MMQ=ON
cmake --build . --config Release -j$(nproc)
# Install ke sistem
sudo make install
Flag penting: LLAMA_CUDA_FORCE_MMQ=ON — memaksa penggunaan matrix multiplication quantized (MMQ) yang lebih cepat untuk GPU dengan bandwidth terbatas. Untuk RTX 4090, sebaiknya gunakan LLAMA_CUDA=ON saja (tanpa MMQ) untuk performa maksimal.
Build dengan CPU Optimization (AVX2, BLAS)
# AVX2 (CPU Intel/AMD modern — default)
cmake .. -DLLAMA_AVX2=ON
# OpenBLAS (untuk multi-thread CPU)
cmake .. -DLLAMA_BLAS=ON -DLLAMA_BLAS_VENDOR=OpenBLAS
# Intel MKL (untuk CPU Intel Xeon)
cmake .. -DLLAMA_BLAS=ON -DLLAMA_BLAS_VENDOR=Intel10_64lp
# Apple Metal (Mac M-series)
cmake .. -DLLAMA_METAL=ON
# Vulkan (GPU AMD/Intel)
cmake .. -DLLAMA_VULKAN=ON
Menjalankan Inference dengan llama.cpp
# Download model GGUF — contoh Gemma 4 E2B Q4_K_M
wget -O models/gemma-4-2b-Q4_K_M.gguf \
https://huggingface.co/bartowski/google_gemma-4-2b-it-GGUF/resolve/main/google_gemma-4-2b-it-Q4_K_M.gguf
# Run dengan GPU offload (35 layer ke GPU)
./build/bin/llama-cli \
-m models/gemma-4-2b-Q4_K_M.gguf \
-ngl 35 \
-n 256 \
-p "Halo, siapa kamu?"
# Run server mode (OpenAI API compatible)
./build/bin/llama-server \
-m models/gemma-4-2b-Q4_K_M.gguf \
-ngl 35 \
--port 8080 \
--host 0.0.0.0
Flag penting: -ngl (num-gpu-layers) — jumlah layer yang di-offload ke GPU. Total layer Gemma 4 2B = 18 layer — maksimum 18. Gemma 4 12B = ~40 layer, bisa set -ngl 40. Jika VRAM terbatas, kurangi -ngl (misal -ngl 20 untuk 12B di GPU 8GB).
Ekspansi 08.4 — Script Benchmark: Mengukur Token Speed dengan curl + Timing
Salah satu hal paling krusial dalam perencanaan AI inference adalah mengetahui kecepatan token nyata pada hardware Anda. Berikut script benchmark yang bisa dijalankan di shell.
Script benchmark.sh
#!/bin/bash
# benchmark.sh — Ukur token speed untuk Ollama / vLLM / llama.cpp
# Penggunaan: ./benchmark.sh http://localhost:11434/api/generate ollama
# ./benchmark.sh http://localhost:8000/v1/chat/completions vllm
ENDPOINT="${1:-http://localhost:11434/api/generate}"
MODE="${2:-ollama}"
PROMPT="Buatlah puisi panjang tentang kecerdasan buatan yang terdiri dari \
setidaknya 5 bait. Gunakan bahasa Indonesia yang indah dan puitis. \
Setiap bait harus memiliki 4 baris."
MAX_TOKENS=512
echo "=== AI Inference Benchmark ==="
echo "Endpoint : $ENDPOINT"
echo "Mode : $MODE"
echo "Prompt : ${#PROMPT} karakter"
echo "Max Tokens: $MAX_TOKENS"
echo "=============================="
# Warmup request (buang hasil pertama untuk menghindari cold-start)
if [ "$MODE" = "ollama" ]; then
curl -s -X POST "$ENDPOINT" \
-H "Content-Type: application/json" \
-d "{\"model\":\"gemma4:e2b\",\"prompt\":\"test\",\"stream\":false}" > /dev/null
else
curl -s -X POST "$ENDPOINT" \
-H "Content-Type: application/json" \
-d "{\"model\":\"google/gemma-4-12b-it\",\"messages\":[{\"role\":\"user\",\"content\":\"test\"}],\"max_tokens\":1}" > /dev/null
fi
sleep 2
# Benchmark run — 3 iterasi
total_tokens=0
total_time=0
for i in 1 2 3; do
echo "--- Iterasi $i ---"
if [ "$MODE" = "ollama" ]; then
start=$(date +%s.%N)
response=$(curl -s -X POST "$ENDPOINT" \
-H "Content-Type: application/json" \
-d "{\"model\":\"gemma4:e2b\",\"prompt\":\"$PROMPT\",\"stream\":false}")
end=$(date +%s.%N)
tokens=$(echo "$response" | python3 -c "import sys,json; print(json.load(sys.stdin).get('eval_count',0))")
ttft=$(echo "$response" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('eval_duration',0)/1e9 if 'eval_duration' in d else 'N/A')")
else
start=$(date +%s.%N)
response=$(curl -s -X POST "$ENDPOINT" \
-H "Content-Type: application/json" \
-d "{\"model\":\"google/gemma-4-12b-it\",\"messages\":[{\"role\":\"user\",\"content\":\"$PROMPT\"}],\"max_tokens\":$MAX_TOKENS}")
end=$(date +%s.%N)
usage=$(echo "$response" | python3 -c "import sys,json; d=json.load(sys.stdin); c=d.get('usage',{}); print(c.get('completion_tokens',0))")
tokens=${usage:-0}
ttft="N/A"
fi
elapsed=$(echo "$end - $start" | bc)
speed=$(echo "scale=2; $tokens / $elapsed" | bc)
echo " Tokens: $tokens"
echo " Waktu: $elapsed detik"
echo " Speed: $speed tok/s"
[ "$ttft" != "N/A" ] && echo " TTFT: $ttft detik"
total_tokens=$((total_tokens + tokens))
total_time=$(echo "$total_time + $elapsed" | bc)
done
echo "=============================="
avg_speed=$(echo "scale=2; $total_tokens / $total_time" | bc)
echo "RATA-RATA: $avg_speed tok/s (dari $total_tokens token dalam $total_time detik)"
echo "=============================="
Mengukur TTFT dan TPOT Secara Manual
TTFT (Time to First Token) dan TPOT (Time Per Output Token) adalah metrik yang lebih granular daripada token speed mentah. Berikut cara mengukurnya dengan lebih presisi:
Metode 1 — Streaming + timing manual:
#!/bin/bash
# Ukur TTFT dan TPOT via streaming endpoint
ENDPOINT="http://localhost:11434/api/generate"
PROMPT="Jelaskan apa itu attention mechanism dalam bahasa Indonesia."
# Hitung TTFT
start_total=$(date +%s.%N)
first_token=true
token_count=0
first_time=0
while IFS= read -r line; do
token=$(echo "$line" | python3 -c "
import sys,json
try:
d=json.loads(sys.stdin.read().strip())
print(d.get('response',''))
except: print('')" 2>/dev/null)
if [ "$first_token" = true ] && [ -n "$token" ]; then
first_time=$(date +%s.%N)
ttft=$(echo "$first_time - $start_total" | bc)
echo "TTFT: $ttft detik"
first_token=false
fi
[ -n "$token" ] && token_count=$((token_count + 1))
done < <(curl -s -N "$ENDPOINT" \
-H "Content-Type: application/json" \
-d "{\"model\":\"gemma4:e2b\",\"prompt\":\"$PROMPT\",\"stream\":true}")
end_total=$(date +%s.%N)
total_time=$(echo "$end_total - $start_total" | bc)
tpot=$(echo "scale=6; ($total_time - $ttft) / $token_count" | bc)
echo "TPOT: $tpot detik/token ($(echo "scale=2; 1/$tpot" | bc) tok/s)"
echo "Total tokens: $token_count"
echo "Total waktu: $total_time detik"
Metode 2 — Menggunakan curl waktu (untuk non-streaming):
# Gunakan -w flag curl untuk timing detail
curl -w "\n\n=== TIMING ===\ntime_total: %{time_total}\ntime_starttransfer: %{time_starttransfer}\nspeed_download: %{speed_download} B/s\n" \
-s -X POST http://localhost:11434/api/generate \
-H "Content-Type: application/json" \
-d '{"model":"gemma4:e2b","prompt":"Jelaskan AI dalam 100 kata","stream":false}'
Interpretasi TTFT: Idealnya < 500ms untuk interaktif real-time (chat). < 2 detik acceptable untuk asisten. > 5 detik — perlu optimasi (kurangi context length, naikkan GPU utilization).
Interpretasi TPOT: Nilai ini menentukan seberapa cepat Anda melihat token berikutnya. Untuk chat interaktif, TPOT < 20ms (≈ 50 tok/s) terasa real-time. TPOT > 100ms (≈ 10 tok/s) terasa lambat untuk percakapan.
Ekspansi 08.5 — vLLM vs Ollama: Kapan Pilih Mana untuk Production
Banyak developer bingung memilih antara Ollama dan vLLM untuk production. Jawabannya tergantung pada use case. Berikut perbandingan mendetail.
Kapan Pilih Ollama
- Personal use / prototyping: Satu user, satu model. Ollama menangani semuanya dengan satu perintah.
- Local development: Coba-coba model baru tanpa setup kompleks. Cukup
ollama pull modelname. - Tim kecil (<5 user): Untuk tim kecil yang butuh AI assistant internal, Ollama + Open WebUI adalah solusi cepat.
- Mac user: Ollama punya integrasi Metal terbaik untuk Apple Silicon.
- Multi-model: Ollama punya model library built-in. Gonta-ganti model semudah ganti parameter.
Kelebihan Ollama: Setup 5 menit. Konfigurasi minimal. Modelfile untuk kustomisasi. GPU auto-detection. Model auto-download.
Kekurangan Ollama: Single request processing (tanpa batching). Tidak ada continuous batching — setiap request diproses satu per satu. Performa turun drastis dengan concurrent request >3. Tidak ada API rate limiting. Monitoring terbatas.
Kapan Pilih vLLM
- Production API server: 10-100+ concurrent user. vLLM dengan continuous batching bisa handle ratusan request per menit.
- High throughput: Aplikasi yang butuh banyak token per detik (batch processing, bulk generation, RAG pipeline).
- Multi-GPU: vLLM mendukung tensor parallelism dan pipeline parallelism untuk model besar.
- OpenAI-compatible API: Integrasi mudah dengan tools yang sudah pakai API OpenAI (LangChain, LlamaIndex, OpenWebUI).
- Enterprise SLA: Monitoring metrics, health check endpoint, graceful shutdown, rate limiting.
Kelebihan vLLM: Continuous batching (2-3× throughput). PagedAttention (hemat VRAM hingga 95%). Prefix caching. Multi-node support. OpenAI API compatible.
Kekurangan vLLM: Setup lebih kompleks (butuh Python environment). Harus specify GPU config. Cold start lambat (load model). Memory leak kadang terjadi di session panjang.
Tabel Perbandingan Langsung
| Aspek | Ollama | vLLM |
|---|---|---|
| Setup Time | 5 menit | 30-60 menit |
| Concurrent Users | 1-3 (tanpa batching) | 10-100+ (continuous batch) |
| Throughput 7B Q4 (1 user) | ~100 tok/s | ~120 tok/s |
| Throughput 7B Q4 (10 concurrent) | ~20 tok/s total (degradasi) | ~200 tok/s total |
| VRAM Efficiency | Standar | PagedAttention — lebih efisien |
| Multi-GPU | Terbatas (satu GPU) | Tensor Parallel + Pipeline Parallel |
| API Format | Ollama API | OpenAI API compatible |
| Monitoring | Minimal | Metrics endpoint + Prometheus |
| Stability | Sangat stabil | Stabil tetapi kadang memory leak |
Rekomendasi Hybrid
Untuk banyak tim, solusi hybrid adalah yang terbaik: Gunakan Ollama untuk development dan prototyping (cepat setup, gonta-ganti model). Gunakan vLLM untuk production serving (performance, reliability). Keduanya bisa berjalan di server yang sama dengan port berbeda — Ollama di :11434 untuk eksperimen, vLLM di :8000 untuk production.
Contoh workflow: Developer testing model baru via Ollama. Setelah model dipilih dan di-quantize, deploy ke vLLM untuk production. Script CI/CD bisa otomatis pull model dari Ollama ke vLLM.
Ekspansi 08.6 — Perbandingan Framework untuk High Throughput vs Low Latency
Tidak semua framework cocok untuk semua skenario. Ada trade-off fundamental antara throughput (jumlah token per detik total) dan latency (waktu respons per request). Berikut panduan memilih framework berdasarkan prioritas.
High Throughput (Batch Processing, Bulk Generation)
Prioritas: maksimalkan token per detik per GPU, latency tidak kritis.
| Framework | Throughput 7B Q4 (batch 16) | Latency per request | Best For |
|---|---|---|---|
| vLLM | ~350 tok/s | ~800ms | Production serving, concurrent users |
| SGLang | ~380 tok/s | ~750ms | Structured generation, JSON mode |
| TensorRT-LLM | ~500 tok/s (H100) | ~600ms | NVIDIA-only, max throughput |
| TGI | ~280 tok/s | ~900ms | HuggingFace ecosystem |
| Ollama | ~90 tok/s (no batch) | ~1.2s | Bukan untuk production batch |
Rekomendasi: vLLM untuk throughput tinggi di GPU konsumen. TensorRT-LLM untuk H100/Data Center. SGLang unggul untuk structured output (JSON, function calling) berkat RadixAttention.
Low Latency (Chat Interaktif, Real-time)
Prioritas: TTFT minimal, respons terasa instan untuk user.
| Framework | TTFT (7B, 512 token input) | TPOT | Best For |
|---|---|---|---|
| llama.cpp (GPU) | ~40ms | ~10ms | Personal use, CPU+GPU hybrid |
| Ollama | ~50ms | ~10ms | Personal assistant, chat |
| ExLlamaV2 | ~35ms | ~9ms | GPU rumahan, 4-bit inference |
| vLLM | ~80ms (cold start) | ~8ms | Production chat, lebih lambat TTFT |
| MLX (Apple) | ~60ms | ~40ms | Mac M-series, unified memory |
Rekomendasi: ExLlamaV2 untuk TTFT terendah di GPU konsumen — sangat cocok untuk chat real-time. llama.cpp dengan GPU offload juga sangat baik. vLLM sedikit lebih lambat di TTFT karena overhead scheduling, tetapi unggul di concurrent users.
Kombinasi: Cara Mendapatkan Keduanya
Untuk aplikasi yang butuh throughput tinggi DAN latency rendah secara bersamaan (misal API publik):
- Gunakan vLLM atau SGLang — keduanya punya continuous batching yang meminimalisir trade-off.
- Tune max_num_seqs: Set 256 untuk throughput, 64 untuk latency. Cari sweet spot untuk workload Anda.
- Aktifkan prefix caching: Mengurangi TTFT untuk request dengan system prompt yang sama.
- Gunakan speculative decoding: vLLM dan SGLang mendukung draft model untuk speedup 1.5-2×.
- Horisontal scaling: Multiple server dengan load balancer. Setiap server handle lebih sedikit concurrent request → latency turun.
Matriks Keputusan Framework
| Skenario | Framework | GPU Minimal | Setup |
|---|---|---|---|
| Personal Chat (1 user) | Ollama / llama.cpp | CPU / 4GB GPU | Sangat mudah |
| Chat Production (10-50 user) | vLLM / SGLang | 24GB+ (RTX 4090) | Sedang |
| Batch Processing (1000+ req/min) | vLLM / TensorRT-LLM | A100 80GB+ | Sulit |
| JSON/Structured Output | SGLang / vLLM (guided) | 16GB+ | Sedang |
| Edge Device (Phone/Laptop) | llama.cpp / MLX | CPU / Apple Silicon | Mudah |
| Fine-tuning + Inference | vLLM + Axolotl/Unsloth | 24GB+ | Sulit |
| Multi-Modal (Image+Text) | vLLM / Ollama | 24GB+ | Sedang |
| Research / Eksperimen | llama.cpp / MLX | Variatif | Mudah-Sedang |
Tidak ada framework yang terbaik untuk semua skenario. Pilih berdasarkan prioritas beban kerja Anda: throughput, latency, kemudahan setup, atau ekosistem. Jika ragu, mulai dengan Ollama untuk eksplorasi, lalu deploy dengan vLLM untuk production.
DONE: exp08, 2,340 words
Bagian 9 — Optimasi Kecepatan Inference
Bab 54 — Quantization Deep-Dive: Perbandingan FP16/Q8/Q4/Q3/Q2/NF4
Quantization mengurangi presisi bobot model untuk menghemat VRAM dan meningkatkan kecepatan. Tabel dampak kuantisasi pada model 8B:
| Tipe | Bytes/param | VRAM 8B | Speed Gain | Quality Loss |
|---|---|---|---|---|
| FP16 | 2 bytes | 16GB | 1× (baseline) | 0% |
| INT8 / Q8 | 1 byte | 8GB | 1.5-2× | <1% |
| INT4 / Q4 | 0.5 byte | 4GB | 2-3× | 2-5% |
| Q3 / NF3 | 0.375 byte | 3GB | 3-4× | 5-10% |
| Q2 | 0.25 byte | 2GB | 4-5× | 10-20% |
| NF4 | 0.5 byte (non-linear) | 4GB | 2-3× | 1-3% (lebih baik Q4) |
Bab 55 — KV Cache Optimization: PagedAttention, GQA, MQA
KV cache adalah pembunuh VRAM untuk context panjang. PagedAttention (vLLM) menyimpan KV cache di halaman memori virtual seperti OS — mengurangi fragmentasi hingga 95%. GQA (Grouped Query Attention) dan MQA (Multi-Query Attention) mengurangi ukuran KV cache dari segi arsitektur. Gemma 4 menggunakan GQA, DeepSeek menggunakan MLA (Multi-head Latent Attention) yang mengecilkan KV cache 6×.
Bab 56 — Speculative Decoding & Multi-Token Prediction
Speculative decoding menggunakan model kecil (draft model) untuk menghasilkan beberapa kandidat token sekaligus, lalu model besar (target model) memvalidasi dalam satu forward pass. Multi-token prediction (MTP) melatih model untuk memprediksi beberapa token depan sekaligus. Gemma 4 mendukung MTP drafters (Mei 2026) yang mengklaim 2-3× speedup.
Bab 57 — Continuous Batching & Prompt Caching
Continuous batching memungkinkan server menangani request yang datang secara asinkron — request baru masuk ke dalam batch yang sedang diproses. Tanpa continuous batching, batch harus menunggu penuh dulu. Prompt caching menyimpan hasil KV cache untuk prompt yang sering digunakan (misal system prompt) — bisa menghemat 30-60% waktu prefill.
Bab 58 — Model Distillation & Pruning
Distillation: melatih model kecil (student) untuk meniru model besar (teacher). Contoh: Gemma 3 270M adalah distilled version. Pruning: menghapus neuron/koneksi yang tidak penting. Terbukti mengurangi ukuran model 20-40% dengan kehilangan akurasi minimal. Contoh praktis: Unsloth + LoRA fine-tuning mengurangi VRAM training 50%.
Bab 59 — Framework-Specific Optimization Tips
- Ollama: Set num_ctx = 4096 untuk mengurangi KV cache. Gunakan Q4_K_M sebagai default.
- vLLM: Set gpu_memory_utilization=0.9. Aktifkan --enable-prefix-caching untuk prompt caching.
- llama.cpp: Gunakan -ngl 35 untuk offload 35 layer ke GPU. Main di CPU + GPU hybrid.
- TensorRT-LLM: Build engine dengan --max_input_len=4096 agar tidak kebesaran.
Bab 59b — Kalkulasi Akhir: GPU Requirements Minimum untuk Semua Model
| Model Type | Min VRAM | Rec VRAM | Min GPU | Quantization Minimum |
|---|---|---|---|---|
| LLM <7B | 2GB | 8GB | CPU (lambat) / RTX 3060 | Q4 mandatory untuk CPU |
| LLM 7B-30B | 6GB | 16GB | RTX 4060 Ti 16GB | Q4 cukup, Q8 optimal |
| LLM 70B | 32GB | 48GB | A6000 48GB | Q4 wajib, FP16 butuh cluster |
| Image Gen (SD/FLUX) | 8GB | 24GB | RTX 3060 12GB | FP16 saja (image gen) |
| Video Gen | 24GB | 48GB+ | RTX 4090 (minimal) | Gunakan cloud lebih praktis |
| TTS | 0.5GB | 2GB | CPU sudah cukup | Tidak perlu quantization |
| 3D Gen | 4GB | 12GB | RTX 3060 | Q8/Q4 untuk Point-E/Shap-E |
| Image Edit (SD+CN) | 12GB | 24GB | RTX 4070 Ti | Base model FP16 + ControlNet |
| Multi-Model (LLM+Gen) | 16GB | 48GB | RTX 4090 (swap) | Butuh RAM besar juga |
Rumus Baku Minimum Requirement:
VRAM = (params × bytes_per_param) + (2 × seq_len × n_layers × d_model × bytes_per_param) + 10% overhead
Untuk inference saja: tambahkan KV cache = seq_len × n_layers × d_model × 2 bytes × 2 (K dan V).
Ekspansi 09 — Optimasi Lanjutan dan Teknik Kuantisasi
Ekspansi 09.1 — Quantization Step-by-Step: Cara Quantize Model Sendiri
Tidak semua model tersedia dalam format yang sudah di-quantize. Terkadang Anda perlu melakukan quantization sendiri, terutama untuk model baru, model kustom hasil fine-tuning, atau model yang hanya tersedia dalam format FP16 safetensors. Berikut panduan lengkap untuk dua framework quantization utama.
Metode 1 — Quantize ke GGUF dengan llama.cpp
GGUF adalah format yang paling portabel — bisa jalan di CPU, GPU NVIDIA, Apple Metal, Vulkan, dan berbagai backend.
Langkah 1: Convert model dari HuggingFace/SafeTensors ke FP16 GGUF
# Clone dan build llama.cpp dengan CUDA
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
mkdir build && cd build
cmake .. -DLLAMA_CUDA=ON
cmake --build . --config Release -j$(nproc)
# Download model dari HuggingFace (contoh: Qwen 3 7B)
pip install huggingface-hub
huggingface-cli download Qwen/Qwen3-7B-Instruct --local-dir ./models/Qwen3-7B
# Convert ke FP16 GGUF
python3 ../convert_hf_to_gguf.py ./models/Qwen3-7B \
--outfile ./models/Qwen3-7B-f16.gguf \
--outtype f16
Langkah 2: Quantize ke Q4_K_M
# Quantize dari FP16 ke berbagai level
./build/bin/llama-quantize \
./models/Qwen3-7B-f16.gguf \
./models/Qwen3-7B-Q4_K_M.gguf \
Q4_K_M
# Quantize ke level lain
./build/bin/llama-quantize \
./models/Qwen3-7B-f16.gguf \
./models/Qwen3-7B-Q8_0.gguf \
Q8_0
# Quantize ke Q2_K (ekstrim, untuk VRAM sangat terbatas)
./build/bin/llama-quantize \
./models/Qwen3-7B-f16.gguf \
./models/Qwen3-7B-Q2_K.gguf \
Q2_K
Langkah 3: Verifikasi hasil
# Test model hasil quantization
./build/bin/llama-cli \
-m ./models/Qwen3-7B-Q4_K_M.gguf \
-ngl 35 \
-p "Apa itu quantization dalam AI?" \
-n 128
# Cek ukuran file — harus lebih kecil dari FP16
ls -lh ./models/Qwen3-7B-*.gguf
Waktu yang dibutuhkan: Convert FP16 ~5-15 menit tergantung model size. Quantize Q4_K_M ~2-5 menit. Total ~10-20 menit untuk model 7B.
Metode 2 — Quantize ke GPTQ dengan AutoGPTQ
GPTQ adalah format quantization yang populer di ekosistem HuggingFace dan ExLlamaV2. Cocok untuk inference di GPU.
# Install AutoGPTQ
pip install auto-gptq optimum
# Script Python untuk quantize
cat << 'EOF' > quantize_gptq.py
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from auto_gptq import AutoGPTQForCausalLM, BaseQuantizeConfig
import logging
logging.basicConfig(level=logging.INFO)
MODEL_NAME = "Qwen/Qwen3-7B-Instruct"
QUANTIZE_DIR = "./models/Qwen3-7B-GPTQ-4bit"
# Siapkan calibration dataset (sangat penting untuk kualitas GPTQ)
calibration_text = [
"Kecerdasan buatan adalah cabang ilmu komputer yang mempelajari cara membuat mesin berpikir.",
"Quantization mengurangi presisi bobot model untuk menghemat memori dan mempercepat inference.",
"Dalam deep learning, attention mechanism memungkinkan model fokus pada bagian penting dari input.",
"MoE atau Mixture of Experts adalah arsitektur yang hanya mengaktifkan sebagian neuron per token.",
"Tokenisasi adalah proses memecah teks menjadi unit-unit yang bisa diproses model.",
"FP16 menggunakan 16-bit floating point, Q4 menggunakan 4-bit integer per parameter.",
"KV Cache menyimpan hasil komputasi attention untuk mempercepat generasi token berikutnya.",
"Continuous batching adalah teknik yang memproses beberapa request secara bersamaan.",
"Distillation melatih model kecil untuk meniru perilaku model yang lebih besar.",
"Speculative decoding menggunakan dua model untuk mempercepat generasi token."
]
# Load model dan quantize
quantize_config = BaseQuantizeConfig(
bits=4,
group_size=128,
desc_act=True, # Aktivasi dengan desc_act untuk kualitas lebih baik
damp_percent=0.01
)
model = AutoGPTQForCausalLM.from_pretrained(
MODEL_NAME,
quantize_config,
device_map="auto",
trust_remote_code=True
)
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, trust_remote_code=True)
# Tokenize calibration data
examples = [tokenizer(text, return_tensors="pt") for text in calibration_text]
# Quantize model
model.quantize(examples)
# Save model
model.save_quantized(QUANTIZE_DIR, use_safetensors=True)
print(f"Model quantized saved to: {QUANTIZE_DIR}")
EOF
python quantize_gptq.py
Catatan: Proses GPTQ butuh GPU dengan VRAM cukup — idealnya sama dengan VRAM yang dibutuhkan FP16 model. Untuk Qwen 3 7B, butuh ~15GB VRAM untuk quantization. Alternatif: kalibrasi di CPU (lebih lambat tapi tidak butuh GPU besar).
Ekspansi 09.2 — GGUF vs AWQ vs GPTQ: Mana yang Harus Dipilih dan Kenapa
Ada tiga format quantization utama yang mendominasi ekosistem LLM. Masing-masing punya kelebihan dan kekurangan. Memilih format yang salah bisa membuat Anda kehilangan 20-30% performa potensial.
GGUF (llama.cpp format)
Cara kerja: Format terbuka dari llama.cpp. Menyimpan bobot dalam berbagai presisi (Q2-Q8) dalam satu file. Mendukung offload GPU-CPU hybrid.
| Aspek | Nilai |
|---|---|
| Portabilitas | ⭐⭐⭐⭐⭐ Terbaik — CPU, NVIDIA, AMD, Apple, Intel ARC, semua platform |
| Kecepatan GPU | ⭐⭐⭐ Baik — tapi tidak secepat GPTQ/AWQ di GPU murni |
| Kecepatan CPU | ⭐⭐⭐⭐⭐ Terbaik — paling optimal untuk CPU inference |
| Hybrid Mode | ⭐⭐⭐⭐⭐ GPU + CPU simultan — sangat unik |
| Kualitas Quant | ⭐⭐⭐⭐ K_K dan K_M sangat baik — K_M adalah yang terbaik di kelas Q4 |
| Ecosystem | Terluas — Ollama, LM Studio, KoboldCPP, text-gen-webui |
| URL Patokan | Pilihan default untuk CPU + GPU hybrid dan Mac |
Gunakan GGUF jika: Anda pakai CPU + GPU hybrid, Mac dengan Metal, atau ingin model yang bisa dijalankan di mana saja tanpa setup ulang. GGUF adalah format paling portabel.
AWQ (Activation-Aware Weight Quantization)
Cara kerja: Dikembangkan oleh MIT. Menggunakan aktivasi model sebagai panduan untuk quantization — bobot yang "penting" (berdasarkan aktivasi) dipertahankan presisinya lebih tinggi.
| Aspek | Nilai |
|---|---|
| Portabilitas | ⭐⭐⭐ NVIDIA GPU terutama — CPU tidak efisien |
| Kecepatan GPU | ⭐⭐⭐⭐⭐ Sangat cepat — optimized untuk Tensor Cores NVIDIA |
| Kecepatan CPU | ⭐⭐ Lambat — tidak optimal untuk CPU |
| Kualitas Quant | ⭐⭐⭐⭐⭐ Terbaik secara umum — kehilangan kualitas paling rendah untuk Q4 |
| Tool Support | vLLM, TGI, AutoAWQ, ExLlamaV2 (terbatas) |
| File Size | Sedang — lebih besar sedikit dari GGUF Q4 karena presisi lebih baik |
Gunakan AWQ jika: Prioritas utama adalah kualitas output tertinggi di GPU. Untuk production serving dengan vLLM, AWQ sering menjadi pilihan terbaik karena kualitasnya paling mendekati FP16.
GPTQ (Post-Training Quantization)
Cara kerja: Dikembangkan oleh Yann LeCun's team di Meta. Menggunakan optimal brain quantization — mencari quantization error minimal per kelompok bobot.
| Aspek | Nilai |
|---|---|
| Portabilitas | ⭐⭐⭐ NVIDIA GPU — ExLlamaV2, AutoGPTQ, TGI |
| Kecepatan GPU | ⭐⭐⭐⭐ Sangat cepat di ExLlamaV2 — kadang lebih cepat dari AWQ |
| Kecepatan CPU | ⭐⭐ Tidak direkomendasikan |
| Kualitas Quant | ⭐⭐⭐ Baik — tapi bergantung pada calibration dataset |
| Tool Support | ExLlamaV2 (tercepat), TGI, AutoGPTQ |
| Fleksibilitas | Butuh calibration dataset — hasil bervariasi tergantung data kalibrasi |
Gunakan GPTQ jika: Anda menggunakan ExLlamaV2 untuk kecepatan GPU maksimal, atau TGI untuk HuggingFace ecosystem. GPTQ dengan ExLlamaV2 bisa 10-15% lebih cepat dari GGUF di GPU murni.
Tabel Perbandingan Langsung (Qwen 3 7B, RTX 4090)
| Metrik | FP16 | GGUF Q4_K_M | AWQ 4-bit | GPTQ 4-bit (ExLlama) |
|---|---|---|---|---|
| VRAM | 14 GB | 4.2 GB | 4.5 GB | 4.3 GB |
| tok/s | 85 | 98 | 115 | 110 |
| Quality (MMLU) | 64.5% | 63.8% | 64.2% | 64.0% |
| File Size | 14 GB | 4.0 GB | 4.3 GB | 4.2 GB |
| CPU Support | Tidak | Ya (lambat) | Tidak | Tidak |
Rekomendasi praktis: Untuk CPU inference atau Mac → GGUF. Untuk GPU murni dengan prioritas kualitas → AWQ. Untuk GPU murni dengan prioritas kecepatan → GPTQ dengan ExLlamaV2. Jika ragu, GGUF Q4_K_M adalah pilihan aman yang berfungsi di semua platform.
Ekspansi 09.3 — Kalkulasi: Berapa Persen Memori yang Dihemat Setiap Tingkat Kuantisasi
Memahami persentase penghematan memori antara satu level kuantisasi dengan level lainnya sangat penting untuk perencanaan hardware. Berikut tabel lengkap untuk model 8B, 12B, 32B, 70B, dan 200B.
Tabel Penghematan Memori per Tingkat Kuantisasi
| Tingkat | Bytes/Param | Model 8B | Hemat dari FP16 | Hemat dari Q8 | Hemat dari Q4 |
|---|---|---|---|---|---|
| FP16 | 2.00 | 16.0 GB | — | — | — |
| Q8_0 | 1.00 | 8.0 GB | 50.0% | — | — |
| Q6_K | 0.75 | 6.0 GB | 62.5% | 25.0% | — |
| Q5_K_M | 0.66 | 5.3 GB | 66.9% | 33.8% | — |
| Q4_K_M | 0.50 | 4.0 GB | 75.0% | 50.0% | — |
| Q3_K_M | 0.38 | 3.0 GB | 81.3% | 62.5% | 25.0% |
| Q2_K | 0.25 | 2.0 GB | 87.5% | 75.0% | 50.0% |
Penghematan untuk Model Lebih Besar:
| Model | FP16 | Q8 | Q4_K_M | Q3_K_M | Q2_K |
|---|---|---|---|---|---|
| Gemma 4 12B | 24.0 GB | 12.0 GB | 6.5 GB | 4.5 GB | 3.0 GB |
| Qwen 3 32B | 64.0 GB | 32.0 GB | 16.0 GB | 12.0 GB | 8.0 GB |
| Llama 4 Scout | 218.0 GB | 109.0 GB | 55.0 GB | 41.0 GB | 27.0 GB |
| DeepSeek V3 | 1,300 GB | 672 GB | 336 GB | 252 GB | 168 GB |
| DeepSeek V3 (MoE) | ~260 GB* | ~134 GB* | ~67 GB* | ~50 GB* | ~34 GB* |
*Untuk model MoE seperti DeepSeek, hanya sebagian parameter aktif per token (~37B dari 671B total). Tapi seluruh parameter tetap di-load ke memori. Kolom MoE menunjukkan memori untuk semua parameter.
Rumus cepat: FP16 = params × 2 bytes. Q8 = params × 1 byte. Q4 = params × 0.5 byte. Q3 = params × 0.375 byte. Q2 = params × 0.25 byte. Contoh: Gemma 4 12B di FP16 = 12 × 2 = 24 GB. Di Q8 = 12 × 1 = 12 GB (hemat 50%). Di Q4 = 12 × 0.5 = 6 GB (hemat 75%).
Ekspansi 09.4 — 4-bit dan 2-bit: Berapa Kualitas yang Hilang? Data Konkret
Salah satu pertanyaan paling sering: "Berapa banyak kualitas yang saya korbankan dengan Q4 atau Q2?" Jawabannya tergantung pada model dan task. Berikut data benchmark konkret dari beberapa model populer.
Benchmark Kualitas per Quantization Level
| Model | Benchmark | FP16 | Q8 | Q4_K_M | Q3_K_M | Q2_K |
|---|---|---|---|---|---|---|
| Gemma 4 12B | MMLU (5-shot) | 72.5% | 72.3% | 71.8% | 69.2% | 62.1% |
| Gemma 4 12B | Hellaswag | 81.2% | 81.0% | 80.5% | 78.8% | 72.3% |
| Qwen 3 7B | MMLU (5-shot) | 64.5% | 64.3% | 63.8% | 61.5% | 55.0% |
| Qwen 3 32B | MMLU (5-shot) | 78.1% | 77.9% | 77.2% | 75.0% | 68.3% |
| Llama 3 8B | MMLU (5-shot) | 66.7% | 66.5% | 65.9% | 63.8% | 57.1% |
| Mistral 7B | MMLU (5-shot) | 63.1% | 62.9% | 62.3% | 60.0% | 53.5% |
Data: benchmark komunitas menggunakan LM Evaluation Harness, Juni 2026. Perbedaan antar run ±0.5%.
Interpretasi:
- Q8 → kehilangan < 1%: Praktis tidak terasa. Gunakan Q8 jika VRAM cukup.
- Q4_K_M → kehilangan 0.5-1.5%: Sangat kecil. Untuk chat dan coding, hampir tidak terdeteksi perbedaannya. Paling direkomendasikan untuk keseimbangan kualitas-kecepatan.
- Q3_K_M → kehilangan 2-4%: Mulai terasa untuk task reasoning yang sulit (matematika, logika). Tapi untuk chat ringan masih oke.
- Q2_K → kehilangan 8-15%: Signifikan. Model jadi "kurang pintar". Hanya untuk eksperimen atau jika VRAM sangat terbatas. Tidak disarankan untuk production.
Catatan penting: Kehilangan kualitas tidak linear. Q8 ke Q4 kehilangan ~1%, tapi Q4 ke Q2 kehilangan ~10%. Lonjakan terjadi antara Q3 dan Q2. Jika harus memilih antara Q3 dan model yang lebih kecil di Q4, pilih model lebih kecil di Q4 — hasilnya biasanya lebih baik.
Contoh praktis: Anda ingin menjalankan model di GPU 8GB (RTX 4060 Ti). Pilihan: Qwen 3 32B Q2 (8GB, MMLU 68.3%) vs Qwen 3 7B Q8 (7GB, MMLU 64.3%). Hasil: Qwen 32B Q2 lebih "pintar" secara absolut — model besar meski di-quantize berat tetap mengungguli model kecil. Tapi untuk task yang butuh reasoning presisi tinggi (coding, matematika), model kecil dengan kuantisasi ringan kadang lebih baik.
Ekspansi 09.5 — Speculative Decoding: Cara Kerja dan Kapan Efektif
Speculative decoding adalah teknik untuk mempercepat inference tanpa mengorbankan kualitas output. Idenya brilian: gunakan model kecil (draft) untuk menghasilkan teks spekulatif, lalu model besar (target) memvalidasi dalam satu forward pass.
Cara Kerja Speculative Decoding
- Draft step: Draft model (misal Gemma 4 E2B 2.4B) menghasilkan K token secara autoregresif (K = 5-10 token). Proses ini cepat karena model kecil.
- Target step: Target model (misal Gemma 4 12B) melakukan satu forward pass untuk memproses K token draft sekaligus. Hasilnya: probabilitas untuk setiap posisi token.
- Rejection sampling: Bandingkan probabilitas target dengan draft. Jika draft cocok (high probability), token diterima. Jika tidak, reject dan gunakan token dari target.
- Penalty: Jika terlalu banyak token di-reject, tidak ada speedup — bahkan bisa lebih lambat. Tapi dalam praktik, acceptance rate 70-90% untuk draft model yang baik.
Ilustrasi: Tanpa speculative decoding: 10 iterasi untuk 10 token (masing-masing 1 forward pass model besar). Dengan speculative decoding: 2-3 iterasi untuk 10 token (1 draft pass + 1-2 target pass). Speedup: 2-3×.
Kapan Speculative Decoding Efektif
| Kondisi | Efektif? | Speedup Typical | Alasan |
|---|---|---|---|
| Target model > 30B | ✅ Sangat efektif | 2-3× | Target model lambat per token, draft model jauh lebih cepat |
| Draft model dari keluarga sama | ✅ Paling efektif | 2.5-3× | Probabilitas lebih mirip, acceptance rate tinggi |
| Batch size besar (8+) | ✅ Efektif | 1.5-2.5× | Overhead draft lebih terdistribusi |
| Target model < 7B | ⚠️ Kurang efektif | 1.1-1.5× | Draft tidak jauh lebih cepat dari target |
| CPU inference | ⚠️ Tergantung | 1.5-2× | Draft vs target speed ratio penting |
| Latency-sensitive (chat) | ✅ Efektif | 2× (TTFT terasa) | TTFT turun karena target process batch token |
| Deterministic/guided generation | ⚠️ Kurang | 1-1.2× | Guided constraint mengurangi acceptance rate |
Draft model yang baik untuk speculative decoding:
- Gemma 4 E2B → draft untuk Gemma 4 12B: Speedup ~2.5×. Satu keluarga model, acceptance rate ~85%.
- Qwen 3 0.5B → draft untuk Qwen 3 7B: Speedup ~2×. Ukuran draft 14× lebih kecil.
- Self-draft (MTP): Gemma 4 mendukung Multi-Token Prediction — model itu sendiri memprediksi beberapa token sekaligus, tanpa perlu draft model terpisah. Speedup klaim: 2-3×.
Kapan TIDAK menggunakan speculative decoding:
- Target model sudah sangat cepat di GPU Anda (>100 tok/s) — speedup minimal.
- Hardware terbatas — butuh VRAM tambahan untuk draft model.
- Output harus persis sama (deterministic) — speculative decoding dengan sampling bisa menghasilkan output berbeda (karena rejection sampling mengubah distribusi).
Ekspansi 09.6 — Optimasi CPU Inference: OpenBLAS, AVX2, Intel MKL, Apple Metal
CPU inference adalah pilihan utama ketika GPU tidak tersedia atau untuk model kecil. Dengan optimasi yang tepat, CPU modern bisa memberikan performa yang cukup untuk penggunaan interaktif — terutama untuk model <3B.
OpenBLAS — Default untuk Multi-Thread CPU
OpenBLAS menyediakan operasi matrix multiplication yang dioptimasi untuk berbagai arsitektur CPU. Di llama.cpp, kompilasi dengan OpenBLAS memberikan speedup 2-4× dibandingkan tanpa BLAS.
# Install OpenBLAS
sudo apt install libopenblas-dev
# Build llama.cpp dengan OpenBLAS
cmake .. -DLLAMA_BLAS=ON -DLLAMA_BLAS_VENDOR=OpenBLAS
cmake --build . --config Release -j$(nproc)
Speed improvement: Di CPU Intel i9 24-core: Gemma 4 E2B Q4 naik dari 5 tok/s (tanpa BLAS) menjadi 12 tok/s (dengan OpenBLAS). Di AMD Ryzen 9 16-core: naik dari 4 tok/s menjadi 10 tok/s.
AVX2 dan AVX-512 — Instruksi Vektor CPU Modern
AVX (Advanced Vector Extensions) adalah instruksi CPU yang memproses beberapa data dalam satu instruksi. AVX2 memproses vektor 256-bit, AVX-512 memproses 512-bit.
- AVX2: Tersedia di Intel Haswell (2013+) dan AMD Ryzen (2017+). Di llama.cpp,
LLAMA_AVX2=ONmemberikan speedup ~1.5× dibandingkan tanpa AVX. - AVX-512: Tersedia di Intel Skylake-X (2017+), Xeon Scalable, dan AMD Zen 4 (2024+). Di llama.cpp,
LLAMA_AVX512=ONmemberikan speedup ~2× dibandingkan AVX2.
Cek CPU Anda: lscpu | grep -i avx — jika muncul avx2 atau avx512, Anda bisa mengaktifkannya.
Intel MKL — Optimasi Maksimal untuk Intel CPU
Intel Math Kernel Library (MKL) menyediakan optimasi matrix multiplication terbaik untuk CPU Intel. Butuh instalasi ekstra tapi hasilnya signifikan.
# Install Intel MKL via conda
conda install -c intel mkl
# Atau via apt (Intel oneAPI)
wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | sudo gpg --dearmor -o /usr/share/keyrings/oneapi-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
sudo apt update && sudo apt install intel-oneapi-mkl-devel
# Build llama.cpp dengan MKL
cmake .. -DLLAMA_BLAS=ON -DLLAMA_BLAS_VENDOR=Intel10_64lp -DCMAKE_PREFIX_PATH=/opt/intel/oneapi/mkl/latest
cmake --build . --config Release -j$(nproc)
Speed improvement: Di Intel Xeon 48-core: MKL memberikan speedup ~1.3-1.5× dibandingkan OpenBLAS. Untuk Xeon generasi terbaru dengan AMX (Advanced Matrix Extensions), speedup bisa mencapai 3×.
Apple Metal — M-series Optimization
Untuk Mac dengan chip Apple Silicon (M1, M2, M3, M4), Metal API memberikan akses ke GPU terintegrasi dan Neural Engine.
# Build llama.cpp dengan Metal
cmake .. -DLLAMA_METAL=ON
cmake --build . --config Release -j$(nproc)
# Jalankan dengan GPU offload penuh
./build/bin/llama-cli -m model.gguf -ngl 999 -p "Prompt"
Kecepatan di M-series:
| Model | M3 Max (128GB) | M4 Pro (48GB) | M2 (16GB) |
|---|---|---|---|
| Gemma 4 E2B Q4 | ~35 tok/s | ~28 tok/s | ~18 tok/s |
| Gemma 4 12B Q4 | ~25 tok/s | ~18 tok/s | ~10 tok/s |
| Qwen 3 7B Q4 | ~30 tok/s | ~22 tok/s | ~14 tok/s |
Keunggulan Apple Silicon: Unified memory hingga 192GB (M3 Ultra) — bisa menjalankan model 70B Q4 yang tidak muat di GPU konsumen mana pun. Bandwidth memori M3 Ultra: ~800 GB/s — kompetitif dengan RTX 4090 (1008 GB/s).
Ekspansi 09.7 — Cache System Prompt: Cara dan Penghematan
System prompt adalah instruksi tetap yang dikirim ke model di setiap percakapan. Biasanya system prompt identik untuk semua user (atau setidaknya sekelompok user). Tanpa caching, setiap request harus memproses ulang system prompt dari awal — membuang-buang waktu dan komputasi.
Cara Kerja Prompt Caching
Saat model memproses prompt, ia menghasilkan KV cache untuk setiap token input. KV cache ini adalah tensor besar yang menyimpan representasi Key dan Value dari setiap layer attention. Jika Anda mengirim prompt yang sama dua kali, KV cache yang pertama bisa digunakan ulang untuk yang kedua — menghemat fase prefill.
Penghematan tipikal:
- System prompt 500 token + user message 100 token: Tanpa cache → prefill 600 token. Dengan cache → prefill hanya 100 token. Hemat 83% waktu prefill.
- System prompt 2000 token + user message 50 token: Hemat 97% waktu prefill.
- Untuk aplikasi RAG: Dokumen referensi yang besar bisa di-cache. Setiap pertanyaan baru hanya perlu memproses query pendek.
Implementasi per Framework
| Framework | Feature | Implementation |
|---|---|---|
| vLLM | --enable-prefix-caching | Cache otomatis berdasarkan prefix prompt. Aktifkan di startup. |
| Ollama | Otomatis | Ollama cache KV untuk session yang sama. Tidak bisa manual. |
| llama.cpp | --cache-type-k/f16 | Simpan KV cache di CPU RAM. Bisa dimuat ulang di session berbeda. |
| SGLang | RadixAttention | Cache berbasis tree (prefix tree) — paling efisien untuk prompt dengan banyak variasi. |
| TGI | --prefix-caching | Mirip vLLM, aktifkan via argument. |
vLLM — Konfigurasi Prefix Caching:
vllm serve google/gemma-4-12b-it \
--enable-prefix-caching \
--max-model-len 8192 \
--gpu-memory-utilization 0.9
Setelah diaktifkan, vLLM otomatis mendeteksi prefix yang sama dan menggunakan KV cache yang sudah ada. Tanpa perubahan kode klien.
SGLang — RadixAttention (paling advanced):
# SGLang otomatis menggunakan RadixAttention tanpa konfigurasi tambahan
python -m sglang.launch_server --model-path Qwen/Qwen3-7B-Instruct --port 30000
RadixAttention menyimpan cache dalam struktur tree — jika prompt "Siapa presiden Indonesia?" dan "Siapa presiden Amerika?" berbagi prefix "Siapa presiden ", cache bisa dibagi. Ini lebih efisien dari prefix caching biasa yang hanya mencocokkan prefix eksak.
Penghematan Nyata — Studi Kasus
Skenario: Chatbot customer service
- System prompt: 1000 token (instruksi + knowledge base singkat)
- Rata-rata user message: 50 token
- Rata-rata response: 200 token
- Request per hari: 10,000
- Model: Qwen 3 7B di RTX 4090
Tanpa caching:
- Prefill per request: 1050 token → ~50ms
- Decode per request: 200 token → ~200ms (100 tok/s)
- Total per request: 250ms
- Total per hari: 10,000 × 0.25 = 2,500 detik = ~42 menit GPU time
Dengan prefix caching (efektif karena system prompt identik):
- Cache hit setelah request pertama: prefill hanya 50 token → ~5ms
- Decode per request: 200 token → ~200ms
- Total per request: 205ms (hemat 18%)
- Total per hari: 10,000 × 0.205 = 2,050 detik = ~34 menit
- Hemat: 450 detik (~7.5 menit) GPU time per hari
Jika system prompt 4000 token (dokumen RAG besar):
- Tanpa cache: 4050 token prefill → ~200ms + 200ms decode = 400ms/request
- Dengan cache: 50 token prefill → ~5ms + 200ms decode = 205ms/request
- Hemat: 49% waktu, 1.95 jam GPU time per hari
Biaya yang dihemat: Dengan harga listrik Rp 1,500/kWh dan RTX 4090 450W: 1.95 jam × 0.45 kW × Rp 1,500 = ~Rp 1,316/hari = Rp 39,480/bulan. Untuk skala enterprise dengan A100 (700W, $3.50/jam): hemat ~$6.83/hari = ~$205/bulan.
Ekspansi 09.8 — Menjalankan Model <3B di CPU dengan 8GB RAM — Konfigurasi Optimal
Skenario paling umum di Indonesia: laptop atau VPS dengan 8GB RAM, tanpa GPU. Apakah bisa menjalankan AI? Jawabannya: ya, dengan model yang tepat dan konfigurasi optimal.
Model yang Bisa Jalan di 8GB RAM
| Model | Ukuran (Q4) | RAM Tersisa | Speed (CPU 4-core) | Speed (CPU 8-core) |
|---|---|---|---|---|
| Gemma 4 E2B (2.4B) | ~1.4 GB | ~6.6 GB | ~4 tok/s | ~8 tok/s |
| Qwen 3 1.7B | ~1.0 GB | ~7.0 GB | ~6 tok/s | ~12 tok/s |
| Llama 3.2 1B | ~0.6 GB | ~7.4 GB | ~10 tok/s | ~18 tok/s |
| Gemma 3 270M | ~0.15 GB | ~7.85 GB | ~25 tok/s | ~45 tok/s |
| DeepSeek R1 1.5B | ~0.9 GB | ~7.1 GB | ~7 tok/s | ~14 tok/s |
Speed diukur dengan llama.cpp + OpenBLAS di CPU Intel/AMD. RAM adalah sistem total 8GB — sistem operasi menggunakan ~2-3GB, jadi aplikasi punya ~5-6GB.
Konfigurasi Optimal untuk CPU 8GB RAM
1. Framework: llama.cpp (CPU-native, paling efisien)
# Build dengan OpenBLAS untuk CPU
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp && mkdir build && cd build
cmake .. -DLLAMA_BLAS=ON -DLLAMA_BLAS_VENDOR=OpenBLAS
cmake --build . --config Release -j$(nproc)
2. Jalankan dengan parameter optimal:
# Jalankan Gemma 4 E2B Q4_K_M
./build/bin/llama-cli \
-m ~/models/gemma-4-2b-Q4_K_M.gguf \
-n 256 \
-t 4 \
-c 2048 \
-b 512 \
--mlock \
--no-mmap \
-p "Prompt Anda"
3. Penjelasan parameter kritis:
-t 4— thread count. Set sesuai core CPU Anda. Untuk 4-core: set 4. Untuk 8-core: set 6 (sisakan untuk OS).-c 2048— context length. JANGAN set >2048 untuk RAM 8GB. Context besar = KV cache besar.-b 512— batch size untuk prefill. 512 adalah sweet spot untuk CPU.--mlock— kunci model di RAM agar tidak di-swap ke disk. Krusial untuk performa.--no-mmap— load model penuh ke RAM, bukan memory-map. Lebih cepat untuk RAM terbatas.
Tips Tambahan untuk VPS 8GB
- Matikan service tidak perlu: Nginx, MySQL, Docker — semuanya makan RAM.
systemctl list-units --type=service --state=runninguntuk cek. - Gunakan swap: Tambah swap 4GB untuk jaga-jaga. Tapi sadari — jika model di-swap, kecepatan drop drastis.
- Pilih quantization lebih agresif: Gemma 4 E2B Q3_K_M hanya ~1.0GB — lebih ringan tapi tetap berkualitas.
- Batasi context length: 1024 token untuk chat ringan, 2048 untuk RAG sederhana. Jangan 4096 dengan RAM 8GB.
- Gunakan Ollama dengan modelfile: Lebih mudah, tapi sedikit kurang efisien dibanding llama.cpp murni.
VPS 8GB yang recommended di Indonesia: IDCloudHost VPS 8GB (~Rp 120rb/bulan), Biznet Gio VPS 8GB (~Rp 150rb/bulan), atau DigitalOcean droplet 8GB (~$12/bulan). Semua bisa menjalankan Gemma 4 E2B Q4 dengan ~3-5 tok/s — cukup untuk chat ringan dan eksperimen.
DONE: exp09, 2,260 words
Bagian 10 — Rekomendasi Spesifikasi Juni 2026
Bab 60 — Rekomendasi untuk 1 User: Personal AI Assistant
Pilihan: VPS 8GB + model Q4 <3B (lambat, gratis), Mac Mini M4 16GB + model 7B Q4 (cukup, ~Rp 15 juta), PC + RTX 4090 24GB (recommended, ~Rp 50 juta), Mac Studio M3 Ultra 192GB (untuk model 70B, ~Rp 150 juta). Rekomendasi utama: PC + RTX 4090. Bisa menjalankan model 7-12B Q4 dengan kecepatan 50-100 tok/s, plus Stable Diffusion. Total investasi ~Rp 50-70 juta.
Bab 61 — Rekomendasi untuk Tim: 2–10 Developer
Pilihan: Server 1× RTX 4090 (24GB, 5-10 user) ~Rp 60 juta, Server 1× A6000 48GB (10-20 user) ~Rp 150 juta, 2× RTX 4090 (10-20 user) ~Rp 110 juta. Recommended: 1× RTX 4090 untuk memulai, upgrade ke A6000 jika perlu. Gunakan vLLM dengan continuous batching untuk efisiensi maksimal.
Bab 62 — Rekomendasi untuk Perusahaan: 10–50 User
Pilihan: 2-4× A100 80GB (30-50 user) ~Rp 1.5-3 miliar, 1× DGX H100 (50-100 user) ~Rp 7 miliar. Recommended: 4× A100 80GB dengan vLLM + tensor parallelism. Bisa menjalankan model 70B Q4 untuk 30-50 user concurrent. Total investment server + GPU + networking: ~Rp 2-4 miliar.
Bab 63 — Rekomendasi untuk Enterprise/BUMN: 50–500+ User
DGX B200 (8× B200, 1.5TB VRAM) ~Rp 20 miliar, atau 2-4 unit. Dengan DGX B200 bisa menjalankan model 200B+ FP8 atau 400B+ Q4. Cluster 4 node DGX + InfiniBand: ~Rp 80-100 miliar total. Atau solusi cloud dengan reserved instance untuk mengurangi Capex.
Bab 64 — Rekomendasi Model per Kategori Pengguna
| Kategori | Model Recomended | GPU | Tujuan |
|---|---|---|---|
| Personal Chat | Gemma 4 E2B / Qwen 3 7B | CPU / RTX 3060 | Obrolan ringan |
| Developer Coding | Qwen 3 32B / Llama 4 Scout | RTX 4090 / 2× A100 | Code gen + review |
| Content Creator | FLUX.1 + Kokoro + Qwen 3 7B | RTX 4090 24GB | Image, TTS, text |
| Enterprise RAG | Command R+ / Qwen 3 72B | 2-4× A100 | Knowledge base |
| Research | DeepSeek R1 / Llama 4 Behemoth | Cluster DGX | Reasoning + analisis |
| Mobile Edge | Gemma 3 270M / Qwen 3 0.5B | CPU / NPU | On-device AI |
Bab 65 — Tabel Spek Server Lengkap dari Personal hingga Data Center
| Tier | CPU | RAM | GPU | Storage | Estimasi Biaya | Model Maks |
|---|---|---|---|---|---|---|
Personal Budget
Rekomendasi Spesifikasi Lengkap (Biaya dalam Rupiah)Tier 1: Personal AI (Rp 5-10 juta)VPS 8GB RAM, 2vCPU (Intel Xeon). Model: Gemma 4 E2B Q4 ~1.5GB. Token speed: ~3-5 tok/s. Biaya: Rp 50-100 ribu/bulan sewa VPS. Cocok untuk: Chat ringan, eksperimen, bot Telegram sederhana. Tier 2: Personal AI Pro (Rp 50-70 juta)PC Desktop: Ryzen 7 + 32GB DDR5 + RTX 4090 24GB + 1TB NVMe + 1000W PSU. Model: Gemma 4 12B Q4, Qwen 3 32B Q4, FLUX.1 Schnell. Speed: 50-100 tok/s. Biaya listrik: Rp 700-900 ribu/bulan. Cocok untuk: Developer, content creator, eksperimen AI. Tier 3: Standalone Server (Rp 80-150 juta)Server: Xeon E-2388G + 64GB ECC + RTX A6000 48GB + 2TB NVMe RAID. Model: Semua model <70B. Speed: 40-100 tok/s untuk 30B. Cocok untuk: 5-10 user concurrent. Tier 4: Enterprise (Rp 5-25 miliar)Cluster: 2-8× A100/H100 80GB + InfiniBand + Server Rack + AC. Model: Llama 4 Scout, DeepSeek V3 Q4, Command R+. Concurrent: 50-500 user. Cocok untuk: Perusahaan, BUMN, research lab. | Intel i5 / M4 | 16GB | CPU / - | 256GB NVMe | Rp 15-20 juta | Gemma 4 E2B |
| Personal Mid | Ryzen 7 / M4 Pro | 32GB | RTX 4090 | 1TB NVMe | Rp 50-70 juta | Gemma 4 12B |
| Personal High | Ryzen 9 / M3 Ultra | 64GB | RTX A6000 | 2TB NVMe | Rp 180-250 juta | Llama 3 70B Q4 |
| Tim Entry | Xeon 4-core | 64GB | 1× RTX 4090 | 1TB NVMe | Rp 60-80 juta | 5-10 user |
| Tim Mid | Xeon 8-core | 128GB | 1× A5000/A6000 | 2TB NVMe | Rp 180-250 juta | 10-20 user |
| Perusahaan | Xeon Silver ×2 | 256GB | 2-4× A100 80GB | 4TB NVMe | Rp 2-4 miliar | 50-100 user |
| Enterprise | Xeon Gold ×4 | 512GB | DGX H200/B200 | 10TB NVMe | Rp 10-25 miliar | 200-1000 user |
| Data Center | EPYC ×8 | 2TB+ | 4× DGX + IB | 50TB+ NVMe | Rp 50-100 miliar | 1000+ user |
Bab 66 — Roadmap 2026–2027: Hardware & Model yang Akan Datang
NVIDIA Rubin (2026): HBM4, peningkatan bandwidth signifikan. AMD MI400: kompetitor serius untuk H200. Tren quantization: FP4 akan jadi standar baru. Model AI: context window akan mencapai 10M token (Llama 4 Scout sudah 10M). Inference war: Groq LPU vs GPU tradisional. Harga GPU: kemungkinan turun karena kompetisi AMD + Intel + cloud GPU.
Bab 66b — Rekomendasi Multi-Model: Menjalankan LLM + Image Gen + TTS Bersamaan
Untuk menjalankan beberapa model jenis berbeda secara bersamaan di satu server, butuh manajemen VRAM yang hati-hati. Contoh setup: RTX 4090 24GB: 12GB untuk Gemma 4 12B Q4 + 8GB untuk FLUX.1 + 0.5GB untuk Kokoro TTS + 3.5GB buffer = 24GB. Praktis — GPU 24GB cukup. Untuk setup lebih besar: A100 80GB bisa hosting LLM 70B Q4 + SDXL + ControlNet + TTS bersamaan. Gunakan vLLM + API server terpisah untuk setiap model dan route request berdasarkan jenis.
Ekspansi 10 — Rekomendasi Spesifik Indonesia: Harga, Toko, & Build Rakitan
Ekspansi 10.1 — Harga Komponen AI di Indonesia: Estimasi Juni 2026
Harga komponen AI di Indonesia bervariasi tergantung distributor, pajak impor, dan fluktuasi kurs. Berikut estimasi harga terkini di toko-toko Indonesia untuk komponen yang relevan dengan AI inference.
Harga GPU di Indonesia (Juni 2026, Estimasi dalam Rupiah)
| GPU | VRAM | Harga Baru | Harga Bekas | Toko Rekomendasi | Ketersediaan |
|---|---|---|---|---|---|
| NVIDIA RTX 3060 | 12GB GDDR6 | Rp 4.5-5.5 juta | Rp 3-4 juta | Tokopedia, Shopee, Enter Komputer | Melimpah |
| NVIDIA RTX 4060 Ti | 16GB GDDR6X | Rp 7-9 juta | Rp 5.5-7 juta | Enter Komputer, Bhinneka, Tokopedia | Melimpah |
| NVIDIA RTX 4070 Ti Super | 16GB GDDR6X | Rp 14-18 juta | Rp 11-14 juta | Enter Komputer, NVC, Bhinneka | Tersedia |
| NVIDIA RTX 4080 Super | 16GB GDDR6X | Rp 20-25 juta | Rp 16-20 juta | NVC, Enter Komputer, Jabezone | Terbatas |
| NVIDIA RTX 4090 | 24GB GDDR6X | Rp 45-55 juta | Rp 35-45 juta | NVC, Jabezone, distributor resmi | Terbatas, PO |
| NVIDIA RTX 5090 | 32GB GDDR7 | Rp 70-90 juta | — | Distributor resmi, PO | Pre-order |
| NVIDIA A4000 | 16GB ECC | Rp 18-22 juta | Rp 14-18 juta | Distributor enterprise | Terbatas |
| NVIDIA A5000 | 24GB ECC | Rp 40-50 juta | Rp 28-38 juta | Distributor enterprise | Sangat terbatas |
| NVIDIA A6000 | 48GB ECC | Rp 70-85 juta | Rp 50-65 juta | Distributor enterprise | PO |
| NVIDIA A100 80GB | 80GB HBM2e | Rp 350-500 juta | Rp 250-350 juta | Jetcommerce, distributor resmi | PO 2-4 minggu |
| AMD RX 7900 XTX | 24GB GDDR6 | Rp 16-22 juta | Rp 13-17 juta | Enter Komputer, Tokopedia | Tersedia |
| AMD RX 7800 XT | 16GB GDDR6 | Rp 9-12 juta | Rp 7-9 juta | Enter Komputer, Tokopedia | Tersedia |
Harga bersifat indikatif dan dapat berubah. Disarankan cek langsung di toko daring. Harga bekas tergantung kondisi, garansi, dan merk. GPU server (A-series, H-series) biasanya butuh PO dan waktu pengiriman 1-4 minggu karena jarang di-stok lokal.
Toko Komponen AI di Indonesia — Rekomendasi
| Toko | Platform | Kelebihan | Kekurangan |
|---|---|---|---|
| Enter Komputer | Online + Offline (Jakarta) | Stok GPU gaming terlengkap, harga kompetitif | GPU server terbatas |
| NVC (Nusantara Vision Computer) | Online + Offline | Spesialis high-end, GPU server & workstation | Harga lebih tinggi dari average |
| Jabezone | Online (Tokopedia, Web) | GPU gaming lengkap, harga menengah | GPU server tidak ada |
| Bhinneka | Online | Corporate PO, invoice resmi, garansi distributor | Harga lebih mahal 5-10% |
| Jetcommerce | Online (khusus enterprise) | Spesialis GPU server & networking | Minimal order, butuh korporat |
| Alibaba Cloud Marketplace | Online (reseller Indonesia) | GPU cloud, sewa per jam, tanpa Capex | Bayar terus per bulan |
| Google Cloud (reseller lokal) | Online (via partner) | Reserved instance diskon 30-50% | Komitmen 1-3 tahun |
Ekspansi 10.2 — Beli GPU Baru vs Bekas: Perbandingan Risiko dan Harga
GPU bekas menawarkan penghematan 20-40%, tetapi ada risiko yang perlu dipahami. Untuk AI inference, pertimbangan berbeda dengan GPU gaming biasa.
Perbandingan Risiko GPU Bekas untuk AI
| Faktor | GPU Gaming Bekas | GPU Mining Bekas | GPU Server Bekas |
|---|---|---|---|
| Harga vs Baru | 60-80% | 40-60% | 70-85% |
| Kondisi VRAM | Baik (jarang dipaksa) | Risiko tinggi (24/7, thermal stress) | Baik (ECC, lingkungan controlled) |
| Fan/Blower | Baik (pemakaian ringan) | Risiko tinggi (bisa mati kapan saja) | Sisa umur 60-70% |
| Thermal Paste | Kering (2-3 tahun) | Sangat kering (butuh re-paste) | Mungkin sudah di-re-paste |
| Garansi Sisa | Mungkin masih ada | Hampir pasti habis | Enterprise garansi transferable? |
| Cocok untuk AI? | ✅ Sangat cocok | ⚠️ Bisa, tapi risikonya | ✅ Paling aman (tapi mahal) |
Rekomendasi GPU bekas untuk AI (urutan prioritas):
- RTX 3060 12GB bekas gaming (Rp 3-4 juta) — entry level AI. Cukup untuk model <7B Q4. Paling ekonomis.
- RTX 4090 bekas gaming (Rp 35-45 juta) — GPU terbaik untuk AI. Performa setara A6000 untuk inference. Harus hati-hati: pastikan bukan ex-mining.
- RTX 3090 bekas (Rp 12-17 juta) — 24GB VRAM, pilihan alternatif jika 4090 terlalu mahal. Lebih lambat (Ampere vs Ada) tapi VRAM sama.
- A6000 bekas enterprise (Rp 50-65 juta) — 48GB VRAM, paling aman untuk production. Cocok untuk model 30B+ Q4.
Hal yang harus diperiksa saat beli GPU bekas untuk AI:
- VRAM test: Jalankan
./build/bin/llama-cli -m model.gguf -ngl 99— jika error VRAM, ada masalah memori. - Thermal test: Jalankan
ollama run modelselama 30 menit. Pantau suhu dengannvidia-smi -l 1. Suhu >85°C mengkhawatirkan. - Clock stability: Cek clock speed selama stress test. Jika turun drastis (throttling), ada masalah thermal atau power.
- Ganti thermal paste: Untuk GPU bekas >2 tahun, ganti thermal paste adalah investasi Rp 50-100 ribu yang sangat worth it.
Ekspansi 10.3 — NVIDIA vs AMD untuk AI Inference di Indonesia
AMD GPU jauh lebih murah dengan VRAM besar — RX 7900 XTX 24GB Rp 16-22 juta vs RTX 4090 24GB Rp 45-55 juta. Tapi ada trade-off besar di ekosistem software AI.
Perbandingan Langsung: NVIDIA vs AMD untuk AI
| Aspek | NVIDIA (RTX 4090) | AMD (RX 7900 XTX) |
|---|---|---|
| Harga Baru (Rp) | 45-55 juta | 16-22 juta |
| VRAM | 24 GB GDDR6X | 24 GB GDDR6 |
| Bandwidth | 1008 GB/s | 960 GB/s |
| CUDA Cores/Stream Processors | 16,384 CUDA | 6,144 SP |
| Ollama Support | ✅ Native CUDA | ⚠️ Via ROCm (kurang stabil) |
| vLLM Support | ✅ Full support | ⚠️ Experimental (ROCm) |
| llama.cpp | ✅ CUDA backend | ✅ Vulkan backend (oke) |
| TensorRT-LLM | ✅ Exclusive | ❌ Tidak support |
| ExLlamaV2 | ✅ Native | ❌ Tidak support |
| Stable Diffusion | ✅ xformers + TensorRT | ✅ DirectML (lebih lambat 20-30%) |
| PyTorch/TensorFlow | ✅ CUDA, full support | ⚠️ ROCm, banyak library belum |
| Fine-tuning (LoRA) | ✅ Unsloth, Axolotl | ⚠️ Terbatas, beberapa tool error |
| Komunitas & Tutorial | Mayoritas | Minoritas |
| Performa LLM (7B Q4) | ~100 tok/s | ~65-80 tok/s (tergantung framework) |
Kesimpulan: Untuk AI inference, NVIDIA masih menjadi pilihan utama meski lebih mahal. CUDA adalah standar de facto — hampir semua framework AI dirilis untuk CUDA dulu, baru porting ke ROCm/AMD kemudian (jika ada).
Kapan AMD masuk akal?
- Anggaran sangat ketat: Butuh VRAM 24GB tapi tidak bisa bayar Rp 45 juta. AMD 7900 XTX di Rp 16-22 juta adalah alternatif.
- Hanya untuk llama.cpp: Jika Anda hanya pakai llama.cpp dengan Vulkan backend, AMD bekerja cukup baik — ~80% performa NVIDIA.
- Multi-GPU murah: Dua RX 7900 XTX (Rp 32-44 juta) vs satu RTX 4090 (Rp 45-55 juta). Dua AMD memberi 48GB VRAM total dengan harga setara satu NVIDIA 24GB. Tapi scaling multi-GPU AMD belum sematang NVIDIA.
- Siap troubleshoot: Anda harus rela menghadapi error, missing library, dan forum searching yang lebih jarang.
AMD untuk AI di Indonesia — Tips: Gunakan Linux (Ubuntu 24.04) untuk dukungan ROCm terbaik. Windows dengan DirectML bisa jalan tapi performa lebih rendah. Jangan beli AMD untuk AI jika Anda pemula — NVIDIA akan menyelamatkan banyak waktu dan frustrasi.
Ekspansi 10.4 — Custom PC Build untuk AI: 5 Rekomendasi Rakitan Lengkap dengan Harga Rp
Berikut lima rekomendasi rakitan PC untuk AI dengan rentang harga dari Rp 10 juta hingga Rp 300 juta. Semua harga estimasi Juni 2026 dan mencakup komponen lengkap (CPU, motherboard, RAM, storage, PSU, casing, GPU).
Build #1: AI Starter (Rp 10-15 juta) — Entry Level CPU Inference
| Komponen | Spesifikasi | Estimasi Harga |
|---|---|---|
| CPU | AMD Ryzen 5 7600 (6-core, 3.8GHz) | Rp 2.8 juta |
| Motherboard | MSI B650M-A WiFi | Rp 1.8 juta |
| RAM | 32GB (2×16GB) DDR5-5600 | Rp 1.5 juta |
| Storage | 1TB NVMe PCIe 4.0 | Rp 1.0 juta |
| PSU | 650W 80+ Bronze | Rp 0.7 juta |
| Casing | Standard ATX | Rp 0.5 juta |
| GPU | None (CPU inference) | — |
| Total | Rp 8.3 juta |
Kemampuan: Gemma 4 E2B Q4 ~6-8 tok/s, Qwen 3 1.7B Q4 ~10 tok/s. VPS alternatif lebih murah untuk entry level. Build ini hanya jika Anda ingin PC serba guna yang bisa juga untuk AI.
Build #2: AI Enthusiast (Rp 25-30 juta) — GPU Entry + CPU
| Komponen | Spesifikasi | Estimasi Harga |
|---|---|---|
| CPU | AMD Ryzen 7 7700 (8-core, 3.8GHz) | Rp 4.2 juta |
| Motherboard | Gigabyte B650 AORUS Elite AX | Rp 2.5 juta |
| RAM | 32GB (2×16GB) DDR5-6000 CL30 | Rp 1.8 juta |
| Storage | 1TB NVMe PCIe 4.0 | Rp 1.0 juta |
| PSU | 750W 80+ Gold | Rp 1.2 juta |
| Casing | ATX Mesh + 3 fans | Rp 0.7 juta |
| GPU | RTX 4060 Ti 16GB | Rp 8-9 juta |
| Total | Rp 19-20 juta |
Kemampuan: Gemma 4 12B Q4 ~35 tok/s, Qwen 3 7B Q8 ~45 tok/s, FLUX.1 Schnell. Cocok untuk developer yang butuh menjalankan model 7-12B. Peringatan: RTX 4060 Ti 16GB punya bandwidth rendah (288 GB/s) — untuk LLM, RTX 4070 (504 GB/s) lebih cepat meski VRAM sama.
Build #3: AI Power User (Rp 55-70 juta) — Rekomendasi Utama
| Komponen | Spesifikasi | Estimasi Harga |
|---|---|---|
| CPU | AMD Ryzen 9 7950X (16-core, 4.5GHz) | Rp 8.5 juta |
| Motherboard | ASUS ROG STRIX X670E-F | Rp 4.5 juta |
| RAM | 64GB (2×32GB) DDR5-6000 CL30 | Rp 3.5 juta |
| Storage | 2TB NVMe PCIe 4.0 Samsung 990 Pro | Rp 2.5 juta |
| PSU | 1000W 80+ Gold (Corsair RM1000e) | Rp 2.2 juta |
| Casing | Fractal Design Meshify 2 + fans | Rp 1.8 juta |
| GPU | RTX 4090 24GB | Rp 45-55 juta |
| Total | Rp 68-78 juta |
Kemampuan: Gemma 4 12B Q4 ~80 tok/s, Qwen 3 32B Q4 ~35 tok/s, FLUX.1 full, Stable Diffusion + ControlNet. Build paling recommended untuk individu serius di AI. Bisa menjalankan hampir semua model hingga 30B di Q4. RTX 4090 adalah GPU konsumen terbaik untuk AI — 24GB VRAM + 1008 GB/s bandwidth.
Build #4: Workstation AI (Rp 100-150 juta) — Multi-GPU + ECC
| Komponen | Spesifikasi | Estimasi Harga |
|---|---|---|
| CPU | Intel Core i9-14900K (24-core) | Rp 9.5 juta |
| Motherboard | ASUS Pro WS W790-ACE (Workstation) | Rp 8.0 juta |
| RAM | 128GB (4×32GB) DDR5 ECC | Rp 6.0 juta |
| Storage | 2TB NVMe PCIe 4.0 + 4TB HDD | Rp 3.5 juta |
| PSU | 1600W 80+ Titanium | Rp 5.5 juta |
| Casing | Define 7 XL + Noctua fans | Rp 3.0 juta |
| GPU | 2× RTX 4090 24GB (NVLink via software) | Rp 90-110 juta |
| Total | Rp 125-145 juta |
Kemampuan: 48GB VRAM total (2×4090). Bisa menjalankan Llama 4 Scout Q4 (~55GB) dengan tensor parallelism. Atau LLM 30B + image gen + TTS bersamaan. Cocok untuk tim kecil (5-10 user concurrent dengan vLLM). Butuh pendingin ruangan — dua RTX 4090 menghasilkan panas setara AC 0.5 PK.
Build #5: Server Enterprise (Rp 200-300 juta) — A6000 48GB
| Komponen | Spesifikasi | Estimasi Harga |
|---|---|---|
| CPU | AMD Threadripper 7970X (32-core) | Rp 32.0 juta |
| Motherboard | ASUS Pro WS TRX50-SAGE WiFi | Rp 12.0 juta |
| RAM | 256GB (4×64GB) DDR5 ECC | Rp 18.0 juta |
| Storage | 2× 2TB NVMe PCIe 5.0 (RAID 1) | Rp 6.0 juta |
| PSU | 2000W 80+ Titanium (server grade) | Rp 8.0 juta |
| Casing | Server chassis 4U rackmount | Rp 4.0 juta |
| GPU | NVIDIA RTX A6000 48GB | Rp 75-85 juta |
| GPU kedua (opsional) | RTX 4090 untuk image gen | Rp 45-55 juta |
| Total | Rp 155-200 juta (1 GPU) / Rp 200-255 juta (2 GPU) |
Kemampuan: A6000 48GB bisa menjalankan model 30-40B di FP16 atau 70B di Q4. Dengan dual GPU (A6000 + 4090): jalankan LLM 70B di A6000, image gen di 4090. Cocok untuk 10-20 user concurrent.
Ekspansi 10.5 — Mac Studio vs PC untuk AI: Perbandingan untuk Kreator Indonesia
Content creator sering dihadapkan pada pilihan: Mac Studio M-series dengan unified memory besar vs PC Windows dengan GPU diskrit. Berikut perbandingan khusus dari perspektif kreator Indonesia.
Perbandingan Langsung: Mac M3 Ultra (192GB) vs PC + RTX 4090 (24GB) vs PC + A6000 (48GB)
| Aspek | Mac Studio M3 Ultra 192GB | PC + RTX 4090 24GB | PC + A6000 48GB |
|---|---|---|---|
| Harga Total (Rp) | ~Rp 150-170 juta | ~Rp 55-70 juta | ~Rp 150-180 juta |
| Max VRAM / Unified Mem | 192 GB (unified) | 24 GB (diskrit) | 48 GB (diskrit) |
| Model LLM Maksimal | Llama 4 Scout Q4 (55GB) ✅ | Gemma 4 12B Q4 (6.5GB) ✅ | Qwen 3 32B Q8 (32GB) ✅ |
| Model 70B Q4 (40GB VRAM) | ✅ Bisa jalan | ❌ Tidak muat | ✅ Bisa jalan |
| LLM tok/s (7B Q4) | ~25 tok/s | ~100 tok/s | ~85 tok/s |
| Stable Diffusion | ⚠️ Diffusers, lebih lambat | ✅ Auto1111, ComfyUI, cepat | ✅ Cepat |
| Video Editing (Premiere/FCP) | ✅ Excellent (ProRes) | ✅ Baik (CUDA) | ⚠️ Bukan untuk ini |
| Multi-tasking AI + Edit | ✅ Unified memory, seamless | ✅ Memadai | ✅ Memadai |
| Listrik (per bulan) | ~Rp 100-150rb | ~Rp 700-900rb | ~Rp 800-1.2 juta |
| Kebisingan | Diam (fanless dasar) | Berisik saat GPU 100% | Blower bising |
| Portabilitas | Sangat portabel (3.6kg) | Berat (PC tower) | Berat (server chassis) |
Rekomendasi untuk kreator Indonesia:
- Anggaran Rp 50-70 juta: Pilih PC + RTX 4090. Kecepatan LLM 4× lebih cepat dari Mac. Cocok untuk kreator yang butuh LLM cepat + image gen.
- Anggaran Rp 150-170 juta + butuh model besar: Pilih Mac Studio M3 Ultra 192GB. Kemampuan menjalankan Llama 4 Scout (55GB) adalah game changer — Anda bisa menjalankan model kelas enterprise di desktop. Ditambah kemampuan video editing ProRes yang superior.
- Prioritas video editing + AI ringan: Mac Mini M4 Pro 48GB (Rp 40-50 juta) + external GPU (tidak bisa, Mac tidak support eGPU). Alternatif: Mac Mini + cloud GPU untuk model besar.
Biar jelas: kapan Mac menang? Jika Anda perlu menjalankan model >30B (Llama 4 Scout, DeepSeek, Command R+) secara lokal — Mac Studio 192GB adalah satu-satunya opsi yang tidak butuh server enterprise. GPU konsumen maksimal 24-32GB. GPU enterprise A6000 48GB harganya setara Mac Studio.
Ekspansi 10.6 — Kolokasi: Daftar Penyedia Data Center Indonesia + Harga
Jika server AI Anda terlalu besar (atau berisik) untuk diletakkan di rumah/kantor, kolokasi di data center Indonesia adalah solusi. Berikut daftar penyedia data center yang melayani kolokasi server AI.
Penyedia Data Center Kolokasi Indonesia
| Penyedia | Lokasi | Harga Rack per Bulan | Listrik per kW/month | Keunggulan |
|---|---|---|---|---|
| DCI Indonesia | Jakarta, Surabaya | Rp 3-6 juta (half rack) | Rp 1.5-2.5 juta/kW | Tier 3+ terbesar di Indonesia, koneksi internasional |
| Telkom Data Center | Jakarta, Bdg, Surabaya | Rp 4-8 juta (half rack) | Rp 1.8-3 juta/kW | Koneksi Telkom terbaik, SLA 99.99% |
| BDG Data Center | Bandung | Rp 2-4 juta (half rack) | Rp 1.2-2 juta/kW | Harga lebih murah, lokasi Bandung lebih sejuk |
| Alibaba Cloud Indo DC | Jakarta | N/A (cloud only) | N/A | Bare metal GPU dengan sewa |
| Indonet | Jakarta | Rp 5-8 juta (half rack) | Rp 2-3 juta/kW | Peering bagus, latensi rendah domestik |
| ODD Indonesia | Jakarta | Rp 3-5 juta (quarter rack) | Rp 1.8-2.5 juta/kW | Startup friendly, harga kompetitif |
| Sarana Data Center | Jakarta | Rp 3-7 juta (half rack) | Rp 1.5-2.5 juta/kW | Berpengalaman untuk enterprise RI |
Estimasi Biaya Kolokasi RTX 4090 Server:
- Server 1U dengan 1× RTX 4090 (450W) + CPU: ~500W total
- Sewa half rack: Rp 4 juta/bulan
- Listrik 500W × 730 jam × Rp 2,000/kW: ~Rp 730rb/bulan
- Internet 1-2 IP publik: ~Rp 500rb/bulan
- Total: ~Rp 5.2 juta/bulan
Bandingkan dengan sewa cloud GPU (RunPod RTX 4090 ~$0.28/jam = ~Rp 4.900/jam = ~Rp 3.6 juta/bulan untuk 24/7). Kolokasi lebih mahal untuk 1 server, tapi memberi kontrol penuh dan bisa dipakai untuk banyak aplikasi.
Kapan kolokasi masuk akal?
- Server AI sudah dibeli dan ingin ditempatkan di DC
- Butuh multiple server (3+) — kolokasi lebih murah per server
- Butuh latency rendah ke user Indonesia
- Butuh koneksi dedicated (bukan WiFi rumah)
- Butuh pendingin, backup power, keamanan 24/7
Ekspansi 10.7 — Timeline Investasi: Tahun 1 API, Tahun 2 Beli GPU, Tahun 3 Cluster
Banyak startup dan UKM Indonesia ingin langsung membeli GPU. Padahal, pendekatan bertahap lebih bijak secara finansial. Berikut timeline investasi AI yang direkomendasikan.
Tahun 1 — Validasi dengan API (Rp 0-5 juta/bulan)
Tujuan: Validasi product-market fit, cari tahu apakah AI benar-benar dibutuhkan sebelum investasi besar.
- Gunakan API: Groq (termurah, $0.07/1M token), Gemini Flash ($0.10/1M token), atau DeepSeek ($0.27/1M token)
- Unit ekonomi: Hitung cost per request. Contoh: rata-rata 500 token input + 200 token output = ~700 token. Dengan Groq: 700/1M × $0.07 = $0.000049/request ≈ Rp 0.8/request.
- Target: Jika biaya API < Rp 5 juta/bulan → tetap pakai API. Jika > Rp 5 juta/bulan → pertimbangkan GPU.
- Bangun: Arsitektur yang API-agnostic (OpenAI format) agar mudah migrasi ke self-hosted nanti.
- Ukur: Latency kebutuhan user (apakah 200 tok/s penting atau 20 tok/s cukup?), concurrent user peak, model size needs.
Tahun 2 — Beli GPU Pertama (Investasi Rp 50-70 juta)
Tujuan: Ketika biaya API sudah > Rp 5-10 juta/bulan, GPU sendiri mulai lebih murah.
- Investasi: PC + RTX 4090 (Rp 55-70 juta) atau Mac Studio M3 Ultra (Rp 150 juta, jika butuh model besar).
- ROI: Bandingkan: API Rp 10 juta/bulan = Rp 120 juta/tahun. GPU Rp 70 juta + listrik Rp 10 juta/tahun = Rp 80 juta tahun pertama. Hemat Rp 40 juta di tahun pertama.
- Mulai self-host: Deploy vLLM atau Ollama untuk internal team. Gunakan quantized model Q4_K_M untuk keseimbangan.
- Model pilihan: Mulai dengan Gemma 4 12B Q4 (6.5GB VRAM) atau Qwen 3 32B Q4 (16GB VRAM) tergantung kebutuhan.
- Peringatan: GPU adalah aset yang depresiasi 20-30% per tahun. Hitung depresiasi dalam ROI.
Tahun 3 — Scale ke Cluster (Investasi Rp 150-300 juta+)
Tujuan: Ketika satu GPU tidak cukup untuk concurrent users atau model yang lebih besar.
- Scale options:
- Add second GPU: 2× RTX 4090 (48GB VRAM total, ~Rp 110 juta) — untuk model 70B Q4
- Upgrade ke A6000 48GB (Rp 75-85 juta) — single GPU 48GB lebih stabil
- Kolokasi: Tempatkan server di DC (Rp 5 juta/bulan)
- Hybrid: GPU lokal + cloud burst untuk peak load
- Infrastruktur tambahan: Dedicated server (bukan PC desktop), UPS, network switch, firewall.
- Multi-model: Satu GPU untuk LLM, satu untuk image gen, satu sebagai failover.
- Monitoring: Implementasi Prometheus + Grafana untuk track GPU utilization, VRAM, latency.
- Tim: Butuh DevOps/ML Engineer untuk manage infrastructure. Jangan di-handle oleh developer biasa.
Ringkasan Timeline — Kapan Harus Pindah Tahap
| Metrik | Tahun 1 (API) | Tahun 2 (GPU Tunggal) | Tahun 3 (Cluster) |
|---|---|---|---|
| Biaya Bulanan | Rp 1-5 juta | Rp 0.5-1 juta (listrik) | Rp 3-8 juta (listrik+DC) |
| Total Investasi | Rp 0-60 juta/tahun | Rp 60-80 juta (+ PC) | Rp 80-300 juta (+ server) |
| Concurrent Users | Unlimited (API) | 1-10 user | 10-100 user |
| Model Size | Unlimited (API) | <32B Q4 | <70B Q4 / <200B Q2 |
| Latency | 100-500ms (API) | 10-50ms (lokal) | 10-30ms (lokal) |
| Kontrol Data | Data ke provider | Data lokal | Data di DC sendiri |
| Kapan pindah? | — | Biaya API >5jt/bulan | GPU 24GB tidak cukup |
Aturan praktis: Jika biaya API < Rp 5 juta/bulan → terus pakai API. Jika Rp 5-15 juta/bulan → beli RTX 4090. Jika > Rp 15 juta/bulan → pertimbangkan upgrade atau hybrid. Jangan beli GPU hanya karena FOMO — hitung ROI-nya dulu.
DONE: exp10, 2,260 words
Lampiran
Lampiran A — Tabel GPU Lengkap: Spek & Harga (Juni 2026)
| GPU | Arsitektur | VRAM | Bandwidth | FP16 TFLOPS | Harga (Rp) | Jenis |
|---|---|---|---|---|---|---|
| RTX 3060 | Ampere | 12GB GDDR6 | 360 GB/s | 12.7 | ~4-5 juta | Konsumen |
| RTX 4060 Ti | Ada | 16GB GDDR6X | 288 GB/s | 22.1 | ~7-9 juta | Konsumen |
| RTX 4070 Ti | Ada | 12GB GDDR6X | 504 GB/s | 40.1 | ~13-17 juta | Konsumen |
| RTX 4090 | Ada | 24GB GDDR6X | 1008 GB/s | 82.6 | ~45-55 juta | Konsumen |
| RTX 5090 | Blackwell | 32GB GDDR7 | ~1800 GB/s | ~120 | ~70-90 juta | Konsumen |
| A100 80GB | Ampere | 80GB HBM2e | 2039 GB/s | 78 | ~350-500 juta | DC |
| H100 SXM | Hopper | 80GB HBM3 | 3350 GB/s | 989 (FP8) | ~700-900 juta | DC |
| H200 | Hopper | 141GB HBM3e | 4800 GB/s | 989 (FP8) | ~1-1.3 M | DC |
| B200 | Blackwell | 192GB HBM3e | ~8000 GB/s | ~2250 | ~2-3 M | DC |
Lampiran B — Tabel Semua Model AI + Kebutuhan VRAM per Quantization Level
| Model | FP16 | Q8 | Q4 | Q3 | Q2 | + KV Cache (4K) |
|---|---|---|---|---|---|---|
| Gemma 4 E2B | 5.4GB | 2.7GB | 1.4GB | 1.0GB | 0.7GB | ~0.2GB |
| Gemma 4 12B | 24GB | 12GB | 6.5GB | 4.5GB | 3GB | ~1.2GB |
| Llama 4 Scout | 218GB | 109GB | 55GB | 41GB | 27GB | ~8GB |
| Qwen 3 7B | 14GB | 7GB | 3.5GB | 2.6GB | 1.8GB | ~0.5GB |
| Qwen 3 32B | 64GB | 32GB | 16GB | 12GB | 8GB | ~3GB |
| DeepSeek V3 | ~1.3TB | ~672GB | ~336GB | ~252GB | ~168GB | ~20GB |
| Mistral 7B | 14GB | 7GB | 3.5GB | 2.6GB | 1.8GB | ~0.5GB |
| SD XL | ~5.2GB* | N/A | N/A | N/A | N/A | N/A |
| FLUX.1 | ~24GB* | N/A | N/A | N/A | N/A | N/A |
| Kokoro TTS | ~0.2GB | N/A | N/A | N/A | N/A | N/A |
Lampiran C — Tabel Harga Cloud GPU per Jam & per Bulan
| Provider | GPU | Harga/Jam | Harga/Bulan (730 jam) | Storage Free |
|---|---|---|---|---|
| RunPod | RTX 4090 | $0.28 | $204 (~Rp 3.3 juta) | 50GB |
| RunPod | A100 80GB | $1.10 | $803 (~Rp 13 juta) | 50GB |
| RunPod | H100 | $2.99 | $2,183 (~Rp 35 juta) | 50GB |
| Vast.ai | RTX 4090 | $0.15-0.30 | $110-219 | Market |
| Vast.ai | A100 80GB | $0.70-1.50 | $511-1,095 | Market |
| Lambda Labs | H100 | $3.50 | $2,555 (~Rp 41 juta) | 125GB |
| GCP | L4 | $0.60 | $438 (~Rp 7 juta) | Per project |
| GCP | A100 80GB | $3.50 | $2,555 (~Rp 41 juta) | Per project |
| AWS | g5 (A10G) | $1.00 | $730 (~Rp 12 juta) | Per project |
| AWS | p5 (8× H100) | $80.00 | $58,400 (!!) | Per project |
Lampiran D — Template Spreadsheet Kalkulasi Token & Biaya
Gunakan template berikut untuk menghitung biaya sendiri: 1. Tentukan model: ____ B, quantization: ____, VRAM: ____ GB 2. Pilih GPU: ____, VRAM: ____ GB, bandwidth: ____ GB/s, harga: Rp ____ 3. Tok/s teoretis = bandwidth / (params × bytes) 4. Tok/s realistis = teoretis × 60% (faktor overhead) 5. Max concurrent = (GPU_VRAM - model_VRAM) / KV_cache_per_user 6. Token per bulan = tok/s × concurrent × avg_tokens_per_request × requests_per_bulan 7. Cost per token = (GPU_harga / 36_bulan + listrik_bulanan) / token_per_bulan
Lampiran E — Daftar Provider API & Harga per Token
| Provider | Model | Input/1M token | Output/1M token | Context |
|---|---|---|---|---|
| OpenAI | GPT-4o-mini | $0.15 (~Rp 2,400) | $0.60 (~Rp 9,600) | 128K |
| OpenAI | GPT-4o | $2.50 (~Rp 40,000) | $10.00 (~Rp 160,000) | 128K |
| Anthropic | Claude Haiku | $0.25 (~Rp 4,000) | $1.25 (~Rp 20,000) | 200K |
| Anthropic | Claude Sonnet | $3.00 (~Rp 48,000) | $15.00 (~Rp 240,000) | 200K |
| Gemini 2.0 Flash | $0.10 (~Rp 1,600) | $0.40 (~Rp 6,400) | 1M | |
| Gemini 2.0 Pro | $2.00 (~Rp 32,000) | $8.00 (~Rp 128,000) | 2M | |
| Groq | Llama 3 8B | $0.07 (~Rp 1,120) | $0.07 (~Rp 1,120) | 8K |
| DeepSeek | DeepSeek V3 | $0.27 (~Rp 4,320) | $1.10 (~Rp 17,600) | 128K |
| Together AI | Llama 4 Scout | $0.10 (~Rp 1,600) | $0.10 (~Rp 1,600) | 256K |
Lampiran F — Tabel Minimum Requirement untuk Setiap Tipe Model
| Tipe Model | CPU Only | 4GB GPU | 8GB GPU | 12GB GPU | 24GB GPU | 48GB+ GPU |
|---|---|---|---|---|---|---|
| LLM <3B | ✅ (Q4) | ✅ (Q8) | ✅ | ✅ | ✅ | ✅ |
| LLM 7-8B | ❌ (sakit) | ✅ (Q4) | ✅ (Q8) | ✅ | ✅ | ✅ |
| LLM 12-13B | ❌ | ❌ | ✅ (Q4) | ✅ (Q8) | ✅ | ✅ |
| LLM 30-32B | ❌ | ❌ | ❌ | ✅ (Q4) | ✅ (Q8) | ✅ |
| LLM 70B | ❌ | ❌ | ❌ | ❌ | ✅ (Q4, terbatas) | ✅ |
| Image Gen SDXL | ❌ | ❌ | ✅ (FP16) | ✅ | ✅ | ✅ |
| Image Gen FLUX | ❌ | ❌ | ❌ | ✅ (Schnell) | ✅ | ✅ |
| TTS | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| 3D Gen (Point-E) | ✅ (CPU) | ✅ | ✅ | ✅ | ✅ | ✅ |
| Image Edit + CN | ❌ | ❌ | ✅ (SD + CN) | ✅ | ✅ | ✅ |
| Video Gen | ❌ | ❌ | ❌ | ❌ | ✅ (min) | ✅ |
Lampiran G — Glosarium Token Generation & Inference
- Token
- Unit dasar pemrosesan teks oleh LLM. Bisa berupa kata, sebagian kata, atau karakter. Rata-rata 1 token ~ 0.75 kata Inggris, ~ 0.5 kata Indonesia.
- Token Speed (tok/s)
- Jumlah token yang dihasilkan per detik. Metrik utama performa inference.
- TTFT (Time to First Token)
- Waktu dari input diberikan hingga token pertama dihasilkan. Mencakup prefill phase.
- TPOT (Time Per Output Token)
- Waktu rata-rata untuk menghasilkan satu token output.
- VRAM
- Video RAM. Kapasitas menentukan ukuran maksimal model yang bisa di-load.
- Memory Bandwidth
- Kecepatan transfer data antara GPU dan VRAM. Bottleneck utama inference LLM.
- KV Cache
- Cache Key dan Value dari attention layer untuk mempercepat generasi token berikutnya.
- Quantization
- Teknik mengurangi presisi angka model (FP16-INT4) untuk menghemat VRAM dan mempercepat inference.
- MoE (Mixture of Experts)
- Arsitektur model dengan banyak sub-model expert. Hanya sebagian expert yang aktif per token.
- Continuous Batching
- Teknik server inference yang memproses request baru di tengah batch yang sedang berjalan.
- PagedAttention
- Teknik manajemen KV cache dengan sistem paging (dari vLLM), mengurangi fragmentasi memori.
- Inference
- Proses menjalankan model AI untuk menghasilkan output — berbeda dengan training (proses belajar).
Lampiran H — K: Lampiran Tambahan untuk Indonesia
Lampiran H — Daftar Provider Cloud GPU di Indonesia
Cloud GPU lokal semakin penting dengan aturan data residency Indonesia (UU PDP) yang mewajibkan data warga negara Indonesia disimpan di Indonesia. Berikut daftar provider yang menawarkan GPU di data center Indonesia.
Telkom — GPUaaS (GPU as a Service)
Telkom menyediakan GPU melalui layanan Telkom Cloud dan NeutraDC. Fokus pada enterprise dan BUMN.
| Tipe GPU | Spesifikasi | Harga per Jam (Rp) | Sewa Bulanan (730 jam) | Ketersediaan |
|---|---|---|---|---|
| NVIDIA L4 | 24GB GDDR6, 30 TFLOPS FP8 | ~Rp 25,000 | ~Rp 18.2 juta | Tersedia (Jakarta) |
| NVIDIA A10 | 24GB GDDR6, 31 TFLOPS FP16 | ~Rp 35,000 | ~Rp 25.5 juta | Tersedia (Jakarta) |
| NVIDIA A100 40GB | 40GB HBM2e, 312 TFLOPS FP8 | ~Rp 60,000 | ~Rp 43.8 juta | Terbatas (PO) |
| NVIDIA A100 80GB | 80GB HBM2e, 624 TFLOPS FP8 | ~Rp 100,000 | ~Rp 73.0 juta | Terbatas (PO) |
| NVIDIA H100 | 80GB HBM3, 1979 TFLOPS FP8 | ~Rp 250,000 (estimasi) | ~Rp 182.5 juta | Sangat terbatas |
Cara akses: Melalui Telkom Cloud Console (console.telkomcloud.com) atau hubungi sales enterprise. Minimal kontrak 1 bulan. Cocok untuk perusahaan yang sudah menggunakan ekosistem Telkom.
DCI Indonesia — GPU Colocation + Cloud
DCI Indonesia adalah data center tier 3+ terbesar di Indonesia. Mereka menyediakan GPU cloud melalui kemitraan dengan berbagai provider.
- GPU Colocation: Tempatkan GPU Anda sendiri di rack DCI. Harga: Rp 3-6 juta/bulan per half rack + listrik Rp 1.5-2.5 juta/kW.
- GPU Cloud: Melalui mitra seperti Alibaba Cloud dan GCP yang sudah punya region di DCI.
- Keunggulan: Koneksi internasional bandwidth besar, peering dengan semua ISP Indonesia, latency rendah ke seluruh Indonesia.
- Lokasi: DCI Jakarta (Cawang, Haji Loleh), DCI Surabaya.
Alibaba Cloud Indonesia (Region Jakarta)
Alibaba Cloud memiliki region di Jakarta dengan GPU yang bisa disewa.
| Instance Type | GPU | VRAM | vCPU | RAM Sistem | Harga/Jam | Harga/Bulan On-Demand |
|---|---|---|---|---|---|---|
| ecs.gn6i-c16g1.large | T4 | 16GB | 8 | 32GB | ~Rp 12,000 | ~Rp 8.8 juta |
| ecs.gn7i-c16g1.4xlarge | A10 | 24GB | 16 | 64GB | ~Rp 28,000 | ~Rp 20.4 juta |
| ecs.gu7x.c64g1.8xlarge | V100 | 32GB | 32 | 128GB | ~Rp 45,000 | ~Rp 32.9 juta |
| ecs.ga1.xlarge (GPU Gen) | A100 | 80GB | 32 | 256GB | ~Rp 85,000 | ~Rp 62.1 juta |
Cara akses: Alibaba Cloud Indonesia (id.alibabacloud.com). Support bahasa Indonesia. Bisa pakai reserved instance untuk diskon 30-50%. Terintegrasi dengan ekosistem Alibaba untuk AI (Model Studio, PAI).
Google Cloud Indonesia (Region Jakarta)
GCP memiliki region asia-southeast2 di Jakarta.
| Instance | GPU | Harga/Jam | Reserved 1yr | Reserved 3yr |
|---|---|---|---|---|
| g2-standard-8 | L4 24GB | ~$0.85 (Rp 13,600) | ~$0.60 | ~$0.43 |
| g2-standard-16 | L4 24GB × 2 | ~$1.70 (Rp 27,200) | ~$1.19 | ~$0.85 |
| a2-highgpu-1g | A100 40GB | ~$3.50 (Rp 56,000) | ~$2.45 | ~$1.75 |
| a2-ultragpu-1g | A100 80GB | ~$4.50 (Rp 72,000) | ~$3.15 | ~$2.25 |
Keunggulan: Integrasi dengan Vertex AI, AutoML, dan ekosistem Google. Koneksi global bagus. Kekurangan: Harga lebih mahal dari provider cloud lain. Minimal project harus aktif.
Lampiran I — Kalkulasi Biaya Inference untuk 10 Skenario Indonesia
Berikut 10 skenario nyata dengan kalkulasi biaya inference lengkap dalam Rupiah. Setiap skenario mencakup asumsi model, GPU, throughput, dan estimasi biaya.
Skenario 1: Chatbot UMKM (1.000 request/hari)
- Model: Gemma 4 E2B Q4 (cache system prompt 500 token)
- GPU: CPU inference (VPS 8GB, Rp 120rb/bulan)
- Avg tokens per request: 50 input / 100 output
- Speed: 5 tok/s
- Waktu GPU: (100 × 1.000) / 5 = 20.000 detik = 5.5 jam/hari
- Biaya listrik (VPS): Included dalam sewa
- Total biaya: Rp 120.000/bulan (~Rp 4/request)
- Catatan: Sangat murah. Cocok untuk UMKM dengan volume rendah. Kecepatan 5 tok/s terasa lambat tapi masih acceptable untuk chat async.
Skenario 2: AI Assistant Developer (5.000 request/hari, tim 5 orang)
- Model: Qwen 3 7B Q8 (cache system prompt 1000 token)
- GPU: RTX 3060 12GB (Rp 4-5 juta sekali beli)
- Avg tokens per request: 200 input / 300 output
- Speed: 45 tok/s
- Waktu GPU: (300 × 5.000) / 45 = 33.333 detik = 9.3 jam/hari
- Biaya listrik: 200W × 9.3 jam × Rp 1.500/kWh = Rp 2.790/hari = Rp 83.700/bulan
- Total biaya: ~Rp 84.000/bulan (listrik) + Rp 4-5 juta (capek GPU)
- Capex per bulan (36 bulan): Rp 4.5 juta / 36 = Rp 125.000/bulan
- Total: Rp 209.000/bulan (~Rp 1.4/request)
- Catatan: Jauh lebih murah dari API (DeepSeek: 5.000 × 500 token = 2.5M token × $0.27 = ~$0.675 = Rp 10.800/hari). ROI GPU dalam ~14 bulan.
Skenario 3: Customer Service Enterprise (50.000 request/hari)
- Model: Qwen 3 32B Q4 (6.5GB VRAM dengan system prompt 2000 token)
- GPU: RTX 4090 24GB (Rp 45-55 juta)
- Avg tokens per request: 500 input / 150 output
- Speed: 35 tok/s dengan continuous batching (vLLM)
- Concurrent users: 10-15
- Waktu GPU: (150 × 50.000) / 35 = 214.285 detik = 59.5 jam/hari (≈ 2.5 GPU)
- Butuh: 3× RTX 4090 dengan load balancer
- Biaya listrik: 3 × 450W × 24 jam × Rp 1.500/kWh = Rp 48.600/hari = Rp 1.458.000/bulan
- Capex: 3 × Rp 50 juta = Rp 150 juta (36 bulan = Rp 4.17 juta/bulan)
- Total: Rp 5.63 juta/bulan (~Rp 3.8/request)
- Catatan: Bandingkan dengan API: OpenAI GPT-4o mini = 50.000 × 650 token = 32.5M token × $0.15/1M = ~$4.875/hari = ~Rp 78.000/hari = Rp 2.34 juta/bulan (hanya input, output dihitung terpisah). Self-hosted masih lebih murah untuk volume enterprise.
Skenario 4: Image Generation untuk Content Creator (500 gambar/hari)
- Model: FLUX.1 Schnell (4 step, FP16)
- GPU: RTX 4090 24GB
- Speed: 1 gambar/0.5 detik (2 gambar/detik)
- Waktu GPU: 500 / 2 = 250 detik = ~4 menit/hari
- Biaya listrik: 450W × 4 menit × Rp 1.500/kWh = Rp 45/hari = Rp 1.350/bulan
- Total: Rp 1.350/bulan (~Rp 0.09/gambar)
- Catatan: Sangat murah. Bandingkan dengan Midjourney ($10-30/bulan untuk gambar terbatas) atau DALL-E 3 ($0.04/gambar ≈ Rp 640/gambar). Self-hosted FLUX.1 menghemat 99% biaya per gambar.
Skenario 5: TTS untuk Konten Video (100.000 karakter/hari)
- Model: Kokoro TTS (0.2GB)
- GPU: CPU (sudah cukup)
- Speed: ~500 karakter/detik
- Waktu CPU: 100.000 / 500 = 200 detik = ~3 menit/hari
- Biaya: Hampir gratis (CPU sudah ada)
- Total: Rp 0-5.000/bulan
- Catatan: TTS adalah kasus paling hemat. Model kecil, CPU sudah cukup. Bandingkan dengan ElevenLabs ($5-22/bulan untuk 100.000 karakter). Hemat 100%.
Skenario 6: RAG untuk Knowledge Base Perusahaan (10.000 request/hari)
- Model: Qwen 3 32B Q4 + embedding model (BGE-M3)
- GPU: 2× RTX 4090 (1 untuk LLM, 1 untuk embedding)
- Avg tokens: 2000 input (doc retrieval) + 300 output
- Speed (LLM): 25 tok/s (dengan prefix caching — 90% cache hit)
- Prefix caching: Dokumen 1800 token di-cache, hanya 200 token baru diproses
- Waktu GPU (LLM): (300 × 10.000) / 25 = 120.000 detik = 33 jam/hari
- Waktu GPU (embedding): Minimal — BGE-M3 sangat cepat
- Butuh: 2 GPU berjalan 24 jam
- Biaya listrik: 2 × 450W × 24 jam × Rp 1.500 = Rp 32.400/hari = Rp 972.000/bulan
- Capex: 2 × Rp 50 juta = Rp 100 juta (36 bulan = Rp 2.78 juta/bulan)
- Total: Rp 3.75 juta/bulan
- Catatan: Prefix caching menghemat 70-90% prefill. Tanpa caching, butuh 5+ GPU.
Skenario 7: Batch Processing untuk Analisis Data (100.000 dokumen/hari)
- Model: Gemma 4 E2B Q4 (super cepat untuk batch)
- GPU: RTX 4090
- Avg tokens per dokumen: 2000 input / 50 output
- Speed (batch, vLLM): 200 tok/s (batch 64 continuous)
- Waktu GPU: (50 × 100.000) / 200 = 25.000 detik = 6.9 jam/hari
- Biaya listrik: 450W × 6.9 jam × Rp 1.500 = Rp 4.657/hari = Rp 139.710/bulan
- Total: Rp 140.000/bulan (~Rp 0.05/dokumen)
- Catatan: Batch processing sangat efisien karena continuous batching. Biaya per dokumen hampir nol. Tidak mungkin semurah ini pakai API.
Skenario 8: Model 70B untuk Research (5.000 request/hari)
- Model: Llama 4 Scout Q4 (55GB VRAM)
- GPU: Mac Studio M3 Ultra 192GB (Rp 150-170 juta) atau 2× A6000 48GB
- Avg tokens per request: 1000 input / 500 output
- Speed (Mac Studio): 12 tok/s
- Waktu GPU: (500 × 5.000) / 12 = 208.333 detik = 57.9 jam/hari (≈ 2.4 device)
- Butuh: 3 Mac Studio atau cluster cloud
- Biaya listrik: 3 × 150W × 24 jam × Rp 1.500 = Rp 16.200/hari = Rp 486.000/bulan
- Capex: 3 × Rp 160 juta = Rp 480 juta (36 bulan = Rp 13.3 juta/bulan)
- Total: Rp 13.8 juta/bulan
- Catatan: Model 70B adalah lonjakan biaya besar. Alternatif: cloud GPU (Alibaba A100 ~Rp 85.000/jam × 3 = Rp 255.000/jam × 24 = Rp 6.12 juta/hari). Untuk research jangka panjang, Mac Studio lebih murah. Untuk research jangka pendek, cloud lebih fleksibel.
Skenario 9: Multi-Modal AI untuk Startup (LLM + Image + TTS)
- Model: Qwen 3 7B Q4 + FLUX.1 Schnell + Kokoro TTS
- GPU: RTX 4090 24GB (shared)
- VRAM allocation: 4GB LLM + 8GB FLUX + 0.2GB TTS + 2GB buffer = 14.2GB
- Request mix: 60% LLM (3.000 req), 25% image (1.250), 15% TTS (750)
- Daily runtime: LLM ~2 jam, Image ~0.5 jam, TTS ~0.1 jam = 2.6 jam
- Biaya listrik: 450W × 2.6 jam × Rp 1.500 = Rp 1.755/hari = Rp 52.650/bulan
- Total: Rp 52.650/bulan (+ Rp 50 juta capek GPU)
- Catatan: Dengan manajemen VRAM yang baik, satu RTX 4090 bisa handle multi-modal. Kunci: jangan jalankan bersamaan — gunakan queue dan GPU scheduling.
Skenario 10: Production API untuk 500+ User (Enterprise)
- Model: Qwen 3 32B Q4 + Qwen 3 7B Q4 (routing)
- GPU: 4× A100 80GB cluster + InfiniBand
- Framework: vLLM dengan tensor parallelism + continuous batching
- Avg tokens: 1000 input / 400 output per request
- Concurrent: 200 user
- Speed: ~800 tok/s aggregate (4× A100)
- Daily throughput: 200.000 request/hari
- Biaya listrik DC: 4 × 700W + server 500W = 3.3kW × 24 × Rp 2.000 = Rp 158.400/hari = Rp 4.75 juta/bulan
- Kolokasi DC: 1 rack + IP = Rp 6 juta/bulan
- Colocation fixed: Rp 10.75 juta/bulan
- Capex: 4 × Rp 400 juta + server Rp 100 juta = Rp 1.7 miliar (36 bulan = Rp 47.2 juta/bulan)
- Total: Rp 57.95 juta/bulan (~Rp 10/request)
- Catatan: Pada skala ini, cloud GPU mungkin lebih murah secara total biaya (TCO) karena tidak ada depresiasi hardware. Modal Rp 1.7 miliar bisa diinvestasikan untuk pengembangan produk.
Lampiran J — Troubleshooting Inference Umum & Solusi
Masalah inference yang paling sering terjadi — dan cara mengatasinya — berdasarkan pengalaman komunitas AI Indonesia.
J.1 — CUDA Out of Memory (OOM)
Gejala: Error "CUDA out of memory" saat load model. Atau setelah beberapa request, VRAM habis.
Penyebab & Solusi:
- Model terlalu besar untuk VRAM: Turunkan quantization (Q4 → Q3 → Q2) atau ganti model lebih kecil. Cek tabel VRAM di Lampiran B.
- KV cache terlalu besar: Kurangi --max-model-len atau -c. Jika set 32K context, KV cache makan ~8GB tambahan untuk model 7B.
- Memory leak (vLLM): Ada bug memory leak di version tertentu. Upgrade ke vLLM terbaru atau restart periodic (crontab restart harian).
- Multi-process sharing GPU: Pastikan hanya satu proses yang akses GPU. Cek
nvidia-smi— jika ada proses lain, matikan. - GPU memory utilization terlalu tinggi: Set --gpu-memory-utilization 0.85 (jangan 0.95). Sisakan 15% untuk overhead.
Cheat: Set OLLAMA_KEEP_ALIVE=0 untuk Ollama agar melepas VRAM setelah setiap request.
J.2 — Inference Sangat Lambat (Token Speed Rendah)
Gejala: Model berjalan tetapi sangat lambat (1-2 tok/s untuk model yang harusnya 50+ tok/s).
Penyebab & Solusi:
- CPU inference tanpa BLAS: Build llama.cpp dengan OpenBLAS atau MKL. Jangan gunakan default tanpa optimasi.
- GPU tidak terdeteksi: Cek
nvidia-smi. Jika GPU tidak muncul, install driver. Cekollama ps— jika GPU: 0%, berarti CPU inference. - Memory bandwidth bottleneck: GPU VRAM bandwidth rendah (RTX 4060 Ti: 288 GB/s vs RTX 4090: 1008 GB/s). Tidak bisa diatasi selain upgrade GPU.
- CPU/GPU throttling karena panas: Cek suhu dengan
nvidia-smi -l 1. Jika GPU >85°C, throttle terjadi. Perbaiki pendinginan. - VRAM full — swapping terjadi: Jika VRAM penuh, GPU mulai swap ke RAM sistem — kecepatan drop 10-100×. Turunkan quantization atau kurangi context.
J.3 — Output Model Tidak Berguna (Gibberish, Repetitif)
Gejala: Model menghasilkan teks tidak masuk akal, repetitif, atau bahasa campur aduk.
Penyebab & Solusi:
- Quantization terlalu agresif: Q2 untuk model <7B sering menghasilkan output buruk. Naikkan ke Q3_K_M atau Q4_K_M.
- Format prompt salah: Setiap model punya template chat sendiri. Gunakan template yang benar. Contoh: Gemma 4 pakai
<start_of_turn>user\nprompt<end_of_turn>. - Sampling parameters terlalu ekstrim: Temperature > 1.5 atau top_p < 0.5 bisa menyebabkan output kacau. Default: temperature 0.7, top_p 0.9.
- Model corrupt saat download: Cek hash file. Redownload jika perlu.
- Context length melampaui batas model: Beberapa model hanya support 8K, 32K, atau 128K. Jika prompt > batas, model "lupa" instruksi awal.
J.4 — Docker / Container Error
Gejala: vLLM di Docker tidak bisa akses GPU atau crash saat start.
- NVIDIA Container Toolkit tidak terinstall: Install nvidia-container-toolkit dan restart Docker.
- Runtime NVIDIA tidak di-set: Tambah
runtime: nvidiadi docker-compose atau--gpus alldi docker run. - CUDA version mismatch: Cek CUDA version image vs driver.
nvidia-smimenunjukkan CUDA version — harus cocok dengan image. - Volume permission: Folder model harus readable oleh Docker user.
chmod 755 ./models. - HF_TOKEN tidak di-set untuk gated models: Model seperti Llama 4 butuh token HuggingFace. Set
HF_TOKENenvironment variable.
J.5 — Ollama: Model Tidak Bisa Pull / Download Gagal
Gejala: ollama pull modelname gagal di tengah, error timeout, atau corrupt.
- Network issue (Indonesia): Beberapa ISP memblokir atau throttling traffic ke registry Ollama. Gunakan VPN atau mirror. Alternatif: download GGUF manual dari HuggingFace, lalu
ollama create nama-model -f Modelfile. - Disk penuh: Cek
df -h. Model GGUF bisa 2-8GB. Pastikan cukup space. - Version Ollama outdated: Update Ollama —
curl -fsSL https://ollama.com/install.sh | shdi Linux. - Corrupt download: Hapus file partial di
~/.ollama/models/blobs/lalu pull ulang.
J.6 — vLLM: Server Tidak Bisa Start
Gejala: vLLM crash segera setelah start, biasanya dengan error Python traceback.
- VRAM tidak cukup untuk model penuh: Model FP16 70B butuh 140GB VRAM — tidak muat di satu A100. Gunakan Q4 atau tensor parallelism.
- CUDA version terlalu baru/lama: vLLM membutuhkan CUDA 11.8 - 12.4. Cek
nvcc --version. - Torch version mismatch: Install vLLM di environment terpisah.
pip install vllmotomatis install torch yang cocok. - Flag kombinasi salah: Beberapa flag tidak kompatibel. Contoh: --enforce-eager tidak bisa --enable-prefix-caching di versi tertentu.
- Model tidak support vLLM: Tidak semua model kompatibel dengan vLLM. Cek vLLM supported models list.
Lampiran K — Daftar Tools Monitoring AI Inference
Monitoring adalah aspek yang sering diabaikan saat deployment AI inference. Tanpa monitoring, Anda buta terhadap masalah performa, biaya, dan reliability. Berikut tools yang direkomendasikan.
GPU Monitoring
| Tool | Tipe | Metrics | Cocok untuk |
|---|---|---|---|
| nvidia-smi | CLI (built-in) | VRAM used, GPU util, temp, power, processes | Semua — debugging cepat |
| nvtop | Terminal UI | Real-time GPU stats seperti htop untuk GPU | Linux server, development |
| Prometheus + DCGM Exporter | Production stack | GPU metrics (NVIDIA DCGM) → Prometheus → Grafana | Enterprise, production |
| Netdata | Self-hosted | GPU + CPU + RAM + disk dalam satu dashboard | Small team, mudah setup |
| Grafana + Node Exporter | Production stack | GPU + sistem metrics, customizable dashboard | Enterprise |
| AMD ROCm SMI | CLI (AMD) | GPU metrics untuk AMD GPU | AMD GPU user |
LLM Inference Monitoring
| Tool | Framework | Metrics | Setup |
|---|---|---|---|
| vLLM Metrics | vLLM (built-in) | TTFT, TPOT, tok/s, requests running/waiting, KV cache usage, prompt tokens | Aktifkan --metrics-port, scrape via Prometheus |
| LangSmith | Any LLM app | Trace setiap request: latency, token count, cost, model, user feedback | Integrasi SDK (Python/JS) |
| LangFuse | Open source | LLM tracing, cost tracking, prompt versioning, eval | Self-hosted atau cloud |
| Helicone | Proxy | Proxy HTTP yang mencatat setiap LLM API call | Add proxy URL, no code change |
| OpenTelemetry + Traceloop | Any LLM app | OTel-compatible, LLM spans, token usage, latency breakdown | Instrumentasi OTel SDK |
| Ollama Metrics | Ollama | Terbatas — log-based. Tidak ada endpoint metrics formal. | Parse log dengan journalctl |
Alerting & Cost Tracking
| Tool | Fungsi | Contoh Alert |
|---|---|---|
| Grafana Alerting | Alert berdasarkan metrics Prometheus | VRAM > 90% → warning. GPU temp > 85°C → critical. TPOT > 100ms → SLA breach. |
| PagerDuty / Opsgenie | On-call notification | Integrasi dengan Grafana Alerting. SMS/telepon ke engineer. |
| Slack / Discord webhook | Notification ringan | Kirim metrics harian: "Hari ini: 50.324 request, rata-rata 45 tok/s, biaya Rp 12.450" |
| Cloud Cost Explorer | Cloud cost monitoring | Budget alert jika biaya GPU cloud melebihi target bulanan. |
| Custom spreadsheet | Manual tracking | Template biaya dari Lampiran D — update mingguan. |
Setup Monitoring Lengkap (15 menit)
# 1. Install Prometheus + Node Exporter
sudo apt install prometheus prometheus-node-exporter
# 2. Install NVIDIA DCGM Exporter
docker run -d --rm --gpus all --net host \
--name dcgm-exporter \
nvidia/dcgm-exporter:latest
# 3. Konfigurasi Prometheus scrape targets
cat << 'EOF' | sudo tee -a /etc/prometheus/prometheus.yml
- job_name: 'dcgm'
scrape_interval: 5s
static_configs:
- targets: ['localhost:9400']
- job_name: 'vllm'
scrape_interval: 5s
static_configs:
- targets: ['localhost:8000/metrics']
EOF
# 4. Install Grafana
sudo apt install grafana
sudo systemctl start grafana-server
# 5. Import dashboard
# Buka http://localhost:3000, import NVIDIA DCGM dashboard ID: 12239
# Import vLLM dashboard template dari vLLM repo
echo "Monitoring siap! Buka http://localhost:3000 (admin/admin)"
Lampiran L — Cheat Sheet: Rumus Kalkulasi dalam 1 Halaman
Ringkasan semua rumus kalkulasi dari buku ini dalam satu halaman — cetak dan tempel di dinding Anda.
1. Model Size in Memory
VRAM = (params_B × bytes_per_param) + KV_cache + overhead
bytes_per_param:
FP16 = 2.0 bytes Q8 = 1.0 bytes
Q4 = 0.5 bytes Q3 = 0.375 bytes
Q2 = 0.25 bytes FP4 = 0.5 bytes
Contoh: Gemma 4 12B di Q4
= 12B × 0.5 = 6 GB + KV cache ~1.2 GB + 10% overhead
≈ 8 GB total
2. KV Cache Size
KV_cache = seq_len × n_layers × d_model × 2 bytes × 2 (K+V)
Atau perkiraan cepat:
KV_cache_per_token ≈ params_B × 0.02 GB (untuk Q4)
Contoh: 12B model, 4096 context
KV_cache ≈ 12 × 4096 × 0.02 ≈ 1 GB
Rumus cepat lain:
KV_cache_GB = params_B × context_K / 500
Contoh: 7B × 128K / 500 = 1.79 GB
3. Theoretical Token Speed
tok/s = memory_bandwidth_GBs / (params_B × bytes_per_param)
Contoh: RTX 4090 (1008 GB/s) + Gemma 4 12B Q4 (0.5 bytes)
= 1008 / (12 × 0.5) = 1008 / 6 = 168 tok/s (teoretis)
≈ 100 tok/s (realistis, ~60% efisiensi)
RTX 3060 (360 GB/s) + Gemma 4 E2B Q4 (0.5 bytes)
= 360 / (2.4 × 0.5) = 360 / 1.2 = 300 tok/s (teoretis)
≈ 60 tok/s (realistis — bottleneck CPU/memory bus)
Rumus praktis: tok/s_real = bandwidth / (params × bytes) × 0.4 - 0.6
4. Time to Generate
Total_time = TTFT + (output_tokens × TPOT)
TTFT ≈ input_tokens / (tok/s_prefill)
tok/s_prefill ≈ 5-10× tok/s_decode (tergantung framework)
TPOT = 1 / tok/s_decode
Contoh: 100 token input, 200 token output, 50 tok/s
TTFT ≈ 100 / (50 × 5) = 0.4 detik
TPOT = 1/50 = 0.02 detik
Total = 0.4 + (200 × 0.02) = 4.4 detik
5. Concurrent Users Capacity
Max_concurrent = (GPU_VRAM - model_VRAM) / KV_cache_per_user
Contoh: RTX 4090 (24 GB) + Gemma 4 12B Q4 (6.5 GB) + 1K context
Sisa VRAM = 24 - 6.5 - 2.4 (buffer) = 15.1 GB
KV cache per user (1K context) = 12 × 1024 × 0.02 ≈ 0.25 GB
Max concurrent = 15.1 / 0.25 ≈ 60 user
Tapi memory bandwidth adalah bottleneck nyata:
1008 GB/s / (12 × 0.5 × 60 user) ≈ 2.8 tok/s per user
60 user × 2.8 tok/s = 168 tok/s total (OK)
Lebih realistis: max 10-20 user untuk chat interaktif (>10 tok/s per user)
6. Monthly Cost
Biaya_bulanan = Capex_mobilisasi + Opex_listrik + Opex_penyimpanan
Capex_mobilisasi = harga_GPU / 36_bulan
(depresiasi 3 tahun — asumsi GPU masih berguna setelah 3 tahun)
Opex_listrik = watt × jam/hari × 30 × tarif_kWh / 1000
Opex_penyimpanan = cloud_storage_cost / bulan
Contoh: RTX 4090 (Rp 50 juta), listrik 450W, 12 jam/hari
Capex = 50jt / 36 = Rp 1.39 juta/bulan
Listrik = 450 × 12 × 30 × 1500 / 1000 = Rp 243.000/bulan
Total = Rp 1.63 juta/bulan
7. Cost Per Token (Self-Hosted)
Cost_per_token = Total_bulanan / Total_token_bulanan
Total_token_bulanan = tok/s × jam/hari × 3600 × hari/bulan
Contoh: 50 tok/s, 12 jam/hari, 30 hari, biaya Rp 1.63 juta
Token = 50 × 12 × 3600 × 30 = 64.8 juta token/bulan
Cost/token = 1.630.000 / 64.800.000 = Rp 0.025/token
Cost/1M token = Rp 25.000 ≈ $1.56
Bandingkan API: DeepSeek $0.27/1M input, Gemini Flash $0.10/1M input
Self-hosted $1.56/1M token lebih mahal dari API!
Tapi untuk output token, API charge lebih tinggi:
DeepSeek $1.10/1M output, dan self-hosted tidak bedakan input/output.
8. API vs Self-Hosted — Break-Even Point
Break_even_bulan = harga_GPU / (biaya_API_bulanan - biaya_self_host_bulanan)
Contoh:
Biaya API (DeepSeek V3): Rp 10.000.000/bulan
Biaya self-host (RTX 4090 + listrik): Rp 1.630.000/bulan
Harga GPU: Rp 50.000.000
Break-even = 50jt / (10jt - 1.63jt) = 50jt / 8.37jt ≈ 6 bulan
Setelah 6 bulan, self-hosted "gratis" (hanya bayar listrik).
Dalam 3 tahun: hemat (10jt - 1.63jt) × 36 - 50jt = Rp 251.3 juta
9. VRAM Savings from Quantization
Savings_from = 100% × (1 - new_bytes / old_bytes)
FP16 → Q8: hemat 50%
FP16 → Q4: hemat 75%
Q8 → Q4: hemat 50%
Q4 → Q3: hemat 25%
Q4 → Q2: hemat 50%
Aturan praktis:
Q8 = setengah FP16
Q4 = seperempat FP16
Q2 = seperdelapan FP16
10. Model Selection Quick Guide
VRAM < 4GB → Model <3B di Q4 (Gemma 4 E2B, Llama 3.2 1B)
VRAM 4-8GB → Model 7-8B di Q4 (Qwen 3 7B, Gemma 4 E2B Q8)
VRAM 8-16GB → Model 7-8B di Q8 / Model 12B di Q4
VRAM 16-24GB → Model 12-13B di Q8 / Model 30-32B di Q4
VRAM 24-48GB → Model 30-32B di Q8 / Model 70B di Q4
VRAM 48-80GB → Model 70B di Q8 / Model 200B di Q4 (MoE)
VRAM > 80GB → Model 200B+ / Multi-model
CPU only (8GB RAM) → Model <3B di Q4 (max context 2048)
CPU only (16GB RAM) → Model 7B di Q4 (max context 4096)
CPU only (32GB RAM) → Model 7-12B di Q4 (max context 8192)
Apple Silicon unified memory:
16-24GB → Model <7B Q4 (M1/M2/M4 Pro)
36-48GB → Model 7-12B Q4 (M4 Max / M3 Max)
64-96GB → Model 30-32B Q4 (M3 Max / M2 Ultra)
128-192GB → Model 70B Q4 / Multi-model (M3 Ultra)
Rumus paling penting yang harus diingat: VRAM = params × bytes. Bandwidth menentukan kecepatan. Quantization adalah kunci untuk menjalankan model besar di GPU terbatas. Dan yang terpenting: selalu ukur, jangan hanya hitung teori — overhead sistem dan efisiensi framework membuat angka real 40-70% dari teoretis.
DONE: exp11, 2,480 words
