LLM'iniz Gerçekten Ne Kadar Belleğe İhtiyaç Duyuyor? Çıkarım VRAM Tüketimi İçin Pratik Bir Kılavuz

Büyük Dil Modelleri ve GPU Belleği Arasındaki Temel İlişki
Büyük Dil Modelleri (LLM'ler) yapay zeka alanında devrim yaratmış olsa da, bu devrim önemli bir hesaplama maliyetiyle birlikte gelir. Bu maliyetin merkezinde, modelleri çalıştırmak için gereken muazzam bellek ve bu talebi desteklemek için gereken donanım bulunur: Grafik İşlem Birimleri (GPU'lar). Bir LLM'deki parametre sayısı ile ihtiyaç duyduğu GPU belleği (VRAM) arasındaki ilişkiyi anlamak; bu teknolojiyi etkili bir şekilde devreye almak, eğitmek ve optimize etmek isteyen geliştiriciler, araştırmacılar ve kurumlar için kritik öneme sahiptir. Bu makale, GPU bellek kullanımının üç core bileşenini analiz etmekte ve sizi modelinizin VRAM gereksinimlerini doğru bir şekilde tahmin etmeniz için pratik formüllerle donatmaktadır.
Hassasiyet Önemlidir: Parametre Başına Bayt
Model ağırlıklarını depolamak için kullandığınız sayısal hassasiyet, bellek ayak izini belirlemede büyük bir rol oynar:

FP16/BF16, çıkarım (inference) ve eğitim için standarttır; ancak, kuantizasyon (nicemleme - INT8 veya INT4'e geçiş), genellikle performans üzerinde minimum etkiyle VRAM kullanımını önemli ölçüde azaltabilir.
Bellek Bileşeni 1: Model Ağırlıkları
Çıkarım sırasında, GPU VRAM'i temel olarak üç ana bileşen tarafından tüketilir: Model ağırlıkları, KV önbelleği ve aktivasyonlar.
Model ağırlıkları, milyarlarca model parametresi içeren, statik ve genellikle en büyük bellek bileşenidir. Boyutu, model parametrelerinin sayısı ve bu parametreleri depolamak için kullanılan sayısal hassasiyetle doğrudan orantılıdır.
Model Ağırlıkları için Bellek Hesaplama
Model ağırlıklarının kapladığı belleği hesaplamak için kullanılan temel formül oldukça basittir:
Model Ağırlıkları (GB) = Parametre Sayısı (Milyar) × Parametre Başına Bayt
Bu ağırlıkların toplam boyutu, parametre sayısı ve bunların hassasiyeti ile doğrudan orantılıdır.
Örneğin, 7 milyar (7B) parametreli bir model için farklı hassasiyet seviyelerindeki bellek gereksinimleri şu şekilde olacaktır:
FP16 (16-bit, parametre başına 2 bayt): 7×2=14 GB
INT8 (8-bit, parametre başına 1 bayt): 7×1=7 GB
INT4 (4-bit, parametre başına 0.5 bayt): 7×0.5=3.5 GB
Bellek Bileşeni 2: KV Önbelleği
KV (Key-Value / Anahtar-Değer) önbelleği, otoregresif metin üretimi sırasında performansı artırmak için kullanılan dinamik bir bellek alanıdır. Transformer mimarisindeki dikkat (attention) mekanizması, önceden işlenmiş token'ların anahtar ve değer vektörlerini bu önbellekte depolar. Bu durum, her yeni token üretildiğinde geçmiş token'lar için bu değerlerin yeniden hesaplanması ihtiyacını ortadan kaldırır.
KV önbelleği, özellikle uzun bağlam uzunluklarına sahip modellerde, transformer çıkarımı sırasında gizli ancak önemli bir bellek kullanımı kaynağını temsil eder. Sabit kalan model ağırlıklarının aksine, KV önbelleğinin boyutu birkaç faktöre bağlı olarak dinamik olarak büyür: grup boyutu (batch size) b (aynı anda işlenen girdi dizisi sayısı), bağlam uzunluğu (context length) s (modelin tuttuğu token sayısı), transformer katman sayısı l, her bir dikkat kafasının gizli boyutu h ve dikkat kafası sayısı nh. KV önbelleği için yaklaşık bellek gereksinimi şu formül kullanılarak hesaplanabilir:
KV Belleği ≈ b × s × l × h × nh × 2 × Parametre Başına Bayt
burada 2 katsayısı, her bir token için saklanan hem anahtar (key) hem de değer (value) tensörlerini hesaba katar. Bu bellek ayak izi, bağlam uzunluğuyla doğrusal olarak ölçeklenir ve özellikle daha büyük ölçeklerde son derece etkilidir. Örneğin, LLaMA-2 7B modelinde, KV önbelleği token başına yaklaşık 0.5 MB tüketir; bu da 28.000 token'lık bir bağlamın yaklaşık 14 GB —yani modelin ağırlıkları için gereken belleğe eşdeğer bir miktar— talep edebileceği anlamına gelir. KV önbelleğinin tek başına 40 GB'a kadar büyüyebileceği ve statik ağırlık belleğini önemli ölçüde aşabileceği LLaMA-3.1 70B gibi modellerde durum daha da uç bir hal alır. Bu durum, kaynakların kısıtlı olduğu ortamlarda bağlam uzunluğunun ve gruplamanın (batching) dikkatli bir şekilde yönetilmesini hayati kılmaktadır.
Bellek Bileşeni 3: Aktivasyonlar ve Ek Yükler
Aktivasyonlar ve geçici ara bellekler (buffers), modelin katmanları arasındaki ara hesaplamaların ve çıktıların (aktivasyonların) saklandığı bellek alanlarıdır. Geçici ara bellekler, matris çarpımları gibi işlemler için de kullanılır. Bu bileşenler genellikle toplam bellek kullanımının daha küçük bir kısmını oluşturur ve sıklıkla genel bir "ek yük" (overhead) olarak değerlendirilir.
Model ağırlıklarına ve KV önbelleğine ek olarak, aktivasyonlar, geçici hesaplama ara bellekleri ve işletim sistemi ile CUDA kütüphanelerinin neden olduğu bellek parçalanması (fragmentation) gibi ek yükler de VRAM tüketir. Bu ek yükleri hesaba katmak için pratik bir yaklaşım, hesaplanan toplam bellek gereksinimine %10 ila %20 oranında ekleme yapmaktır.
Toplam Çıkarım Belleği: Birleşik Formül
Bu bilgiler ışığında, daha kapsamlı bir çıkarım tahmini formülü şu şekilde oluşturulabilir:
Toplam Bellek = (Model Ağırlıkları + KV Belleği) × 1.2
Bonus: Bellek Tahmini Kısayolu
Çıkarım sırasında toplam GPU bellek gereksinimlerini hızlıca tahmin etmek için:
M = ( P * 4B)(32/Q) * 1.2
Burada M gigabayt cinsinden toplam GPU belleğini, P model parametrelerinin sayısını, Q bit cinsinden hassasiyeti (örneğin FP16 için 16) temsil eder ve 1.2 katsayısı aktivasyonlar, ara bellekler ve bellek parçalanması gibi tipik sistem ek yüklerini hesaba katar. Bu formül, model ağırlıklarını ve diğer bileşenleri ayrı ayrı hesaplamadan toplam VRAM tüketimini yaklaşık olarak belirlemeye yardımcı olur. Örneğin, formülü FP16 hassasiyetinde 7 milyar parametreli bir modele (7B) uyguladığımızda şunu elde ederiz:
M = (7 × 4) × (32 / 16) × 1.2 = 28 × 2 × 1.2 = 33.6 GB.
Bu hızlı tahmin, gerçek dünyadaki bellek kullanım modelleriyle yakından örtüşür ve özellikle mevcut donanım üzerinde hızlı fizibilite kontrolleri yapmak için son derece yararlıdır.
Sonuç
VRAM tüketimini anlamak sadece teorik bir konu değildir; ölçeklenebilir ve verimli LLM sistemleri devreye almak için elzemdir. Bu formüller ve sezgisel yöntemlerle bellek kısıtlamalarını yönetmek, çıkarım iş hatlarını optimize etmek ve modeliniz için doğru dağıtım stratejisini seçmek konusunda daha donanımlı olacaksınız.




