Oleh Yulius Darmawan, Oktoria Solution Architect Alibaba Cloud Indonesia
Kenapa memory GPU itu penting? Saat menjalankan LLM seperti Qwen, LLaMA, atau DeepSeek, semua komponen penting model harus dimuat ke GPU memory agar inference dan fine-tuning bisa berjalan lancar. Jika estimasi salah, model bisa gagal di-load atau berhenti di tengah proses karena memori tidak mencukupi. Model modern umumnya membutuhkan memori mulai dari puluhan sampai ratusan gigabyte, tergantung ukuran parameter, presisi, dan skenario penggunaan (inference saja atau training/fine-tuning).
Secara garis besar, ada beberapa komponen yang menghabiskan GPU memory saat inference maupun fine-tuning: model parameters, activation values, KV cache, dan berbagai overhead framework. Memahami masing-masing komponen ini akan membantu kamu membuat estimasi yang lebih akurat dan tahu tuas mana yang bisa diutak-atik untuk menghemat memori.
Model parameters adalah bobot-bobot di dalam neural network yang harus disimpan di GPU memory. Cara menghitungnya simpel: jumlah parameter × ukuran tiap parameter (dalam byte).
Presisi yang umum digunakan adalah FP32 (4 byte), FP16 (2 byte), dan BF16 (2 byte). Untuk LLM, biasanya kita pakai FP16 atau BF16 karena lebih hemat memory tanpa mengorbankan performa terlalu banyak.
Contoh: Model 7B (7 miliar parameter) dengan presisi FP16 membutuhkan:
● 7 × 10⁹ × 2 byte = 14 GB
Perhitungan ini menjadi baseline kebutuhan memori hanya untuk menyimpan bobot model.
Gampang kan?
Activation values adalah hasil perhitungan di setiap layer saat model melakukan forward pass, dan perlu disimpan di memori selama proses berjalan.
Besarnya kira-kira sebanding dengan batch size b, sequence length s, hidden size h, jumlah layer L, dan ukuran tipe data (param_bytes):
Formula sederhananya: Activation Memory ∝ b × s × h × L × param_bytes
Dimana:
● b (batch size): Jumlah request yang diproses sekaligus. Biasanya 1 untuk online service
● s (sequence length): Total panjang token input dan output
● h (hidden size): Dimensi hidden layer model
● L: Jumlah Transformer layer
● param_bytes: Bytes untuk menyimpan setiap activation value, biasanya 2 bytes
Untuk model 7B dengan b=1, s=2048, dan param_bytes=2 bytes, GPU memory untuk activation values sekitar 10% dari memory model atau sekitar 1.4 GB.
KV cache adalah teknik untuk menyimpan Key (K) dan Value (V) hasil komputasi di setiap Transformer layer. Tujuannya? Menghindari penghitungan ulang untuk token-token yang sudah diproses sebelumnya. Ini bikin inference jadi jauh lebih cepat!
Formula GPU memory untuk KV cache:KV Cache Memory = 2 × b × s × h × L × C × param_bytes
Dimana C adalah concurrency (tingkat paralel request). Untuk model 7B dengan C=1, b=1, s=2048, KV cache juga sekitar 10% dari memory model atau 1.4 GB.
Selain tiga komponen utama di atas, ada juga konsumsi memori dari input data, CUDA context, dan framework deep learning seperti PyTorch atau TensorFlow. Dalam praktik, overhead ini bisa berkisar 1–2 GB, tergantung konfigurasi environment dan library yang digunakan.
Dengan semua komponen di atas, kita bisa menghitung minimum GPU memory untuk deploy model 7B:
Total ≈ Model Parameters + Activation Values + KV Cache + OverheadTotal ≈ 14 GB + 1.4 GB + 1.4 GB + 2 GB = 18.8 GB
Tapi ini baru untuk presisi 16-bit. Kalau kamu pakai quantization (kompresi), kebutuhannya bisa jauh lebih kecil:
● Inference 8-bit: Sekitar setengahnya
● Inference 4-bit: Sekitar seperempatnya
Fine-tuning lebih rumit daripada inference karena menambahkan komponen gradient dan optimizer state. Saat training, parameter yang dilatih membutuhkan memori tambahan untuk menyimpan gradient dan state optimizer, dan hal ini bisa melipatgandakan total konsumsi memori.
Saat training, kita perlu menyimpan gradients untuk update parameter. Jumlah gradients sama dengan jumlah parameter yang di-train. Untuk model 7B dengan presisi 2-byte:
● Full fine-tuning: 14 GB (semua parameter di-train)
● LoRA fine-tuning: ~0.14 GB (hanya 1% parameter yang di-train)
● QLoRA: ~0.14 GB (pakai quantization + LoRA)
Optimizer state harus disimpan selama training. Memory yang dibutuhkan tergantung jumlah trainable parameters. Model biasanya pakai mixed-precision training: parameter dan gradient pakai 2-byte, tapi optimizer state pakai 4-byte untuk menjaga stabilitas numerik.
Optimizer yang umum:
● SGD: Nggak butuh extra state (0 GB)
● SGD + Momentum: 1 floating-point per parameter
● RMSProp: 1 floating-point per parameter
● Adam/AdamW: 2 floating-point per parameter (yang paling umum untuk LLM)
Untuk model 7B full fine-tuning dengan Adam: Optimizer State = 7B × 2 × 4 bytes = 56 GB
Angka ini menjelaskan kenapa full fine-tuning model besar membutuhkan GPU dengan memori sangat besar
Mari kita lihat perbandingan kebutuhan GPU memory untuk berbagai metode fine-tuning model 7B:
| Metode | Model | Gradients | Optimizer | Activation | Overhead | Total |
|---|---|---|---|---|---|---|
| Full Fine-tuning | 14 GB | 14 GB | 56 GB | 1.4 GB | 2 GB | 87.4 GB |
| LoRA | 14 GB | 0.14 GB | 0.56 GB | 1.4 GB | 2 GB | 18.1 GB |
| QLoRA (8-bit) | 7 GB | 0.14 GB | 0.56 GB | 1.4 GB | 2 GB | 11.1 GB |
| QLoRA (4-bit) | 3.5 GB | 0.14 GB | 0.56 GB | 1.4 GB | 2 GB | 7.6 GB |
Tabel ini memperlihatkan dengan jelas bahwa LoRA dan QLoRA jauh lebih hemat memori, sehingga cocok untuk eksperimen fine-tuning di GPU dengan kapasitas terbatas.
Pada Mixture-of-Experts (MoE) seperti DeepSeek-R1-671B, tidak semua parameter aktif sekaligus saat inference. Misalnya, meski total parameter 671B, hanya sekitar 37B yang aktif per token; tetapi seluruh parameter tetap perlu disimpan di memori (atau diatur dengan teknik sharding), sehingga estimasi memori harus membedakan antara total parameter dan parameter yang aktif.
Error paling umum: CUDA out of memory. Tried to allocate X GB
Solusinya:
● Kurangi batch size atau sequence length
● Pakai GPU dengan memory lebih besar
● Gunakan quantization atau LoRA/QLoRA
● Enable gradient checkpointing
Untuk monitoring GPU memory usage, kamu bisa pakai command nvidia-smi di terminal atau cek dashboard monitoring di platform seperti PAI-DSW, PAI-EAS, atau PAI-DLC.
Mengestimasi GPU memory untuk LLM membutuhkan pemahaman tentang bagaimana model parameters, activation values, KV cache, gradients, dan optimizer state berkontribusi terhadap total konsumsi memori. Dengan memanfaatkan formula sederhana dan teknik optimasi seperti quantization dan LoRA/QLoRA, kamu bisa merencanakan deployment dan fine-tuning LLM dengan lebih percaya diri dan efisien.
Catatan: Semua formula dan angka dalam artikel ini berdasarkan dokumentasi resmi Alibaba Cloud PAI.
No Nodes, No Problem: Unlocking True Serverless Kubernetes on Alibaba Cloud
116 posts | 21 followers
FollowRegional Content Hub - May 20, 2024
Regional Content Hub - July 14, 2025
Regional Content Hub - May 6, 2024
Alibaba Cloud Community - December 14, 2023
Alibaba Cloud Indonesia - November 7, 2025
Regional Content Hub - April 1, 2024
116 posts | 21 followers
Follow
Platform For AI
A platform that provides enterprise-level data modeling services based on machine learning algorithms to quickly meet your needs for data-driven operations.
Learn More
Epidemic Prediction Solution
This technology can be used to predict the spread of COVID-19 and help decision makers evaluate the impact of various prevention and control measures on the development of the epidemic.
Learn More
AI Acceleration Solution
Accelerate AI-driven business and AI model training and inference with Alibaba Cloud GPU technology
Learn More
Offline Visual Intelligence Software Packages
Offline SDKs for visual production, such as image segmentation, video segmentation, and character recognition, based on deep learning technologies developed by Alibaba Cloud.
Learn MoreMore Posts by Alibaba Cloud Indonesia