×
Community Blog Memahami Kebutuhan GPU Memory untuk LLM: Panduan Lengkap

Memahami Kebutuhan GPU Memory untuk LLM: Panduan Lengkap

Apakah kamu berencana melakukan deployment Large Language Model (LLM) tapi nggak tahu berapa GPU memory yang dibutuhkan? atau model AI yang kamu gunak...

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).

Komponen Utama yang Mempengaruhi GPU Memory

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.

1. Model Parameters

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?

2. Activation Values

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.

3. KV Cache

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.

4. Overhead Tambahan

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.

Estimasi Memory untuk Inference

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: Kenapa lebih boros?

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.

1. Gradient Parameters

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)

2. Optimizer State

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

Perbandingan Metode Fine-tuning

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.

Catatan untuk Model MoE

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.​

Tips Praktis untuk Mengoptimalkan GPU Memory

  1. Gunakan Quantization: 4-bit atau 8-bit quantization bisa drastis mengurangi memory usage tanpa mengorbankan performa terlalu banyak
  2. Pilih LoRA/QLoRA untuk fine-tuning daripada full fine-tuning agar kebutuhan memori turun secara drastis.
  3. Atur Batch Size dan Sequence Length: Keduanya punya pengaruh besar ke activation values dan KV cache
  4. Gradient Checkpointing: Teknik untuk trade-off antara memory dan computational time

Troubleshooting: Kalau GPU Memory Habis

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.

Kesimpulan

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.

https://www.alibabacloud.com/help/en/pai/getting-started/estimation-of-the-required-video-memory-for-the-model?spm=a2c63.l28256.help-menu-30347.d_2_5.640b65ffXGxWE6

0 0 0
Share on

Alibaba Cloud Indonesia

116 posts | 21 followers

You may also like

Comments

Alibaba Cloud Indonesia

116 posts | 21 followers

Related Products