MoE Offloading Her Zaman Daha Hızlı Değildir: 16GB GPU Üzerinde 5 Modeli Test Ettim
Kaynak: dev.to

İçindekiler 3 başlık
Yerel dil modelleriyle (local LLM) çalışırken en sık karşılaşılan darboğaz, modelin ekran kartı belleğine (VRAM) sığmamasıdır. Son dönemde büyük Mixture-of-Experts (MoE) modellerini, tüm modeli tutmaya yetecek VRAM'e sahip olmayan GPU'larda çalıştırmak için dikkat çekici bir fikir öne çıkıyor: Tüm model katmanlarını sistem RAM'ine aktarmak yerine, yalnızca MoE uzmanlarını (experts) seçici olarak RAM'e aktarmak ve geri kalan işlemleri GPU üzerinde bırakmak.
16GB VRAM ve 32GB sistem RAM'ine sahip bir dizüstü bilgisayarda bu yaklaşımı test etmek, bir modelden diğerine geçerken beş farklı modeli kıyasladığım ve hangi yapılandırmaların neden daha iyi çalıştığını anlamaya odaklandığım kapsamlı bir deneye dönüştü.
İlk Olarak, MoE Offloading Tam Olarak Nedir?#
Yerel LLM'lerle deneyler yaptıysanız, GPU'nuz için fazla büyük bir modeli yüklemeye çalışmanın getirdiği sorunlara aşinasınızdır. Modeli sığdırmak için CPU offloading kullanabilirsiniz ancak bu durum genellikle ciddi bir performans kaybına yol açar.
Geleneksel katman aktarma (layer offloading), tüm transformer katmanlarını GPU ve CPU arasında taşır. Bu da modelin GPU hızlandırmasından faydalanabilecek bölümlerinin CPU üzerinde çalışması anlamına gelir.
MoE modelleri bize başka bir seçenek sunar. Her token işlenirken neredeyse tüm parametrelerin sürece dahil olduğu yoğun (dense) modellerin aksine, MoE modellerinde birden fazla uzman bulunur ve her token için yalnızca belirli bir alt küme etkinleştirilir. Örneğin, Microsoft'un Phi-3.5-MoE modeli toplamda yaklaşık 42 milyar parametreye sahiptir, ancak token başına yalnızca yaklaşık 6,6 milyar parametre aktiftir.
Diğer parametreler elbette yok olmaz ve bir yerde saklanmaları gerekir. Ancak her token için yalnızca belirli uzmanlara ihtiyaç duyulduğundan, dikkat (attention) mekanizmasını ve modelin diğer kritik kısımlarını GPU'da bırakırken bazı uzman ağırlıklarını sistem RAM'inde tutabiliriz.
llama.cpp içerisinde bu işlem şu parametre ile gerçekleştirilir:
--n-cpu-moe N
Buradaki N, başlangıçtaki kaç katmanın MoE uzman ağırlıklarının CPU'da tutulacağını belirtir. Teorik olarak bu yöntem, geleneksel katman aktarmaya kıyasla performanstan çok fazla ödün vermeden daha büyük modelleri çalıştırmanıza olanak tanır. Geliştiriciler için buradaki temel pratik çıkarım, donanım sınırlarını aşarken mimari farkındalığın (yoğun modeller yerine MoE seçimi ve doğru offloading parametreleri) doğrudan çıkarım (inference) hızını belirlediğidir.
Test Kurulumum#
Tüm bu deneyler CachyOS (Arch Linux) çalışan Acer Predator dizüstü bilgisayarımda gerçekleştirildi. Kullanılan donanım ve yazılım altyapısı şu şekildedir:
- GPU: NVIDIA RTX 4090 Laptop GPU, 16GB VRAM
- CPU: Intel Core i9-14900HX, 24 çekirdek / 32 iş parçacığı
- RAM: 32GB DDR5
- Çıkarım Motoru (Inference engine): CUDA destekli
llama.cpp - Flash Attention: Etkin
Deneylerde GGUF modelleri kullanıldı ve her şey llama-server üzerinden çalıştırıldı. Bu tekniği test etmek için iyi bir aday gibi göründüğü için sürece Phi-3.5-MoE ile başladım. Ardından farklı mimarilere ve nicemleme (quantization) seviyelerine sahip diğer MoE modellerini ekledim.
İlk karşılaştırmalar için 4.096 tokenlik bir bağlam penceresi (context window), bir ısınma (warm-up) isteği ve aynı kısa kıyaslama istemini (prompt) kullandım. Amacım, kendi donanımımda gerçekte neler olup bittiğini ve farkların daha fazla araştırmaya değecek kadar anlamlı olup olmadığını görmekti.
Test Ettiğim Modeller#
Deney sürecinde toplam beş modeli test ettim:
- Phi-3.5-MoE (42B) — Nicemleme: Q4_K_M — GGUF Boyutu: 24GB
- Apex-35B V1.0 — Nicemleme: Q5_K_M — GGUF Boyutu: 24GB
- Qwen3.5-35B-A3B
Mühendislik ve öğrenme açısından bu kurulum bize şunu gösterir: Yerel ortamda büyük modelleri devreye alırken yalnızca modelin toplam boyutuna değil, aktif parametre sayısına, nicemleme seviyesine (Q4_K_M, Q5_K_M) ve llama.cpp gibi araçların sunduğu ince ayar parametrelerine hakim olmak, sınırlı VRAM ile maksimum verim almanın anahtarıdır.
Kaynak ve atıf
Bu yazı, dev.to üzerinde yayımlanan içerikten yararlanılarak Edumints tarafından yapay zekâ desteğiyle Türkçe hazırlandı. Ayrıntılar ve yazarların kendi anlatımı için orijinaline bakabilirsin:
- dev.to/sizzlebop/moe-offloading-isnt-always-faster-i-tested-5-models-on-a-16gb-gpu-498a