Introduction
Günümüz kendi kişisel bilgisayarlarımızda (Özellikle Apple Silicon gibi birleşik RAM'in bulunduğu bilgisayarlarda) büyük dil modellerini kullanmak sıradan bir hale gelmeye başlamıştır. Çok 8-16GB ARM cihazları (tabletler, Bilgisayarlar vb.), 8B modelleri çok rahat kaldırmaktadır. Bu Büyük Dil Modellerini bilgisayarımızda çalıştırmamızda, llama.cpp'ın katkısı büyüktür.
llama.cpp nedir?
Yaygınlığından dolayı llama.cpp ve GGUF formatlarının bir tanıtıma ihtiyacı bulunmayabilir -yüksek ihtimalle çoğu kişinin bilgisayarında ollama ve/veya LM Studio şeklinde zaten bulunur-. Ama yinede, llama.cpp projesini çok kısa ve kabaca özetlemek gerekirse, llama.cpp projesi, GGUF adlı bir dosya formatında Apple Silicon odaklı bir şekilde, NVIDIA ekran kartı gerektirmeden, Büyük Dil Modellerini CPU&RAM ve/veya NVIDIA+diğer ekran kartlarını kullanarak çalıştırmamızı sağlar.
llama.cpp, kendi başına çalıştırılması ve üzerine yazılımlar geliştirilmesi için tasarlanmış bir programdır, kullanımı biraz teknik bilgi istediği için ollama ve LM Studio gibi kolay kaplayıcı arayüzleri ortaya çıkmıştır. Buna rağmen llama-server programı ile kolayca llama.cpp'da kolayca kullanılabilir.
llama.cpp kendi başına çalışan bir program değildir, bir model dosyasına veya multimodal dosyalarında mmproj dosyasına ihtiyaç duyar. Bu makalede Qwen3'e odaklanıldığı için multimodal'a çok girilmemiştir (çünkü desteklemiyor)
Qwen3 nedir?
Qwen3, birkaç ay önce (Nisan 2025) çıkan, akıl yürütmenin (QWQ gibi) baştan açık olduğu ve manuel kapatılması gereken ("/nothink" yazarak kapatılabilir) bir açık ağırlık (açık kaynak değil) büyük dil modelleri model serisidir. 0.6B den 235B ye kadar birçok türlü varyantı yayınlanmış ve 235B varyantı temmuz ayında yenilenerek (ve akıl yürütmenin kapatılması ile) tekrar yayınlanmıştır. Bu makalede odak olarak alınan model; Yenilenen Qwen3-235B-A22B-Instruct-2507-GGUF modelidir.
Qwen3 Modelleri, açık ağırlık toplumu tarafından oldukça ilgi görmüş, benzer bir zamanda çıkan LlaMa 4 serisini (Scout ve Maverick) gölgede bırakmıştır. Çok beğenildiği ve kullanıldığı için, ve denemelerimdede iyi sonuçlar verdiği için makalede bu model baz alınmıştır.
Gereksinimler
Öncelikle llama.cpp kendisi donanıma ve güce çok bakmaz, günümüzde var olan çoğu donanım ile çalışır.
Qwen3 ise bir açık ağırlık modelidir, adında olduğu gibi ağırlıklar (tensor) dosyada saklanır. GGUF formatında olmadığında (sade veya MLX de olduğu gibi) kolayca birçok safetenson dosyası şeklinde bunu görürüz. Bir ağırlığı olduğu için gereksinimi de olur, bilgisayarın ağırlığı kaldırabilmesi gerekir.
Ağırlığın kaldırma hakkında en iyi sonuçlar için normalde karmaşık bir formül bulunur, formül ile CPU-GPU'ya yüklenecek ağırlıklar belirlenir ve model olabilecek tam performansta çalışır, ama bu formülü ben kendim kaybettiğim için ve bu makaleyi yazarken tekrar bulamadım. Bu yüzden "GGUF dosyasının boyutu VRAM+RAM'e sığarsa çalışır" düşünceside çok yanlış bir düşünce değildir, ama tam performans alınamaz. Buna rağmen düşünce çok farklı değildir;
235B bir model düşünelim. Q3_K_XL için 2048-4096 civarında (eskiden standard, günümüzde kullanılamaz) içerik uzunluğunda (modelin aklında tutabileceği "token" sayısı. Token tam olarak hece anlamına gelmese de kolay anlamak için hece olarak düşünülebilir) yaklaşık 104GB ram gerektiğini model boyutuna bakarak anlayabiliriz. içerik uzunluğunu'u uzun istiyorsak RAM kullanımı artar.
Sorun
Bu düşünceye göre 235B bir model, 104GB RAM bulunan bir bilgisayarda çalışır, ama bir sorunla karşılaşırız;
Model çalışır, ama çok yavaş çalışır. 2 saniyede veya 3-4 saniyede tek hece olarak düşünün. GGUF formatında ve llama.cpp'da, ekran kartı hızlandırması önemlidir. GPU hızlandırması olmaması ve/veya GPU'ya yüklenen katman sayısının çok az olması model büyüdükçe sorunlara sebep olacaktır.
Çoğu kullanıcı akıcı ve doğal konuşma beklediği için bu sorun ağır modelleri var olan bütün kullanıcı bilgisayarlarında kullanılamaz hale getirir, çünkü hiçbir normal, alanla ilgili olmayan, sıradan kullanıcı çok önemli gizlilik sorunları veya endişesi yoksa sunucu/workstation bilgisayarı ve/veya donanımı almayacaktır.
Qwen3-235B-A22B-Instruct-2507-GGUF
Qwen3-235B-A22B-Instruct-2507-GGUF modelini bu makalede seçmemin en önemli nedeni, sorunları en alt dereceye bulunduğu ve kullanıcı donanımında (en azından üst kullanıcı) kullanımı da belki de en rahat model olmasıdır.
Orta seviyede bir ekran kartı (RTX 3080 gibi) ve normal bir anakart RAM slotlarının doldurulması (128GB) ile çok rahat kullanılabilir ve denemelerimde saniyede 4-10 token arası aldım.
"""
prompt eval time = 8309.64 ms / 68 tokens ( 122.20 ms per token, 8.18 tokens per second)
eval time = 2775.31 ms / 14 tokens ( 198.24 ms per token, 5.04 tokens per second)
"""
Peki Qwen3-235B-A22B-Instruct-2507-GGUF diğer Qwen3 modellerinden nekadar farklıdır ve neden çoğu modelin (özellikle 10B üstüne çıkıldığında aşamalı olarak) kötü çalıştığı bilgisayarımda bu modeli tercih ettim?
Qwen3-235B-A22B-Instruct-2507-GGUF gibi çok büyük bir MoE modelini, LLaMA 4 Maverick gibi başka çok büyük bir modele, veya Qwen3 32B (serinin başka bir modeli) ve LLaMA 4 Scout gibi daha küçük bir MOE modeline tercih etmemin sebeplerinden de biri hem çok yeni (dün) yenilenmiş, herşey için akıl yürütme sürecinden arındırılmış olması (akıl yürütme bazen faydalı, bazen çok zararlı ve gereksiz süre uzatıcı olabiliyor. Qwen3'ün yenilenmemiş modelinde model verdiğim kendime özgün artık geleneksel bir hale gelmiş zor bir Query (sorgu) de sırf akıl yürütmede takılı kalmıştı) ve en önemlisi; Yüksek parametre sayısından dolayı var olan bilgisinin daha karmaşık, biribiri içinde, ve zengin, kapasiteli olmasıdır.
Çözüm
Qwen3-235B-A22B-Instruct-2507-GGUF bize MoE diye bir çözüm sunar. MoE (Mixture of Experts) tekniği başta Mixtral modeli ile büyük bir ses getirmiş, sonra bir süre unutulmuş, arından DeepSeek ile tekrar daha yüksek bir şekilde ses getirmişti.
Mixture Of Experts merkezi olmadığı ve sadece gerekli expertlar (küçük uzman modeller olarak düşünebiliriz) kullanıldığı için öncelikle daha hafif hissettirir, daha rahat ve hızlı çalışır, yoğunluğun az olduğu gerçek hayattaki bütün her şey gibi.
MoE modellerini çalıştırmak için yine RAM'e bakarız, ve normalde sadece kullanılan expert kadar kaynak kullanır (bu çok daha az kaynak tüketimi ve çok daha hız anlamına gelir).
Başka -ama en önemli- avantajımız ise -ot ".ffn_.*_exps.=CPU" adında bir argümandır. Bu argüman gereksiz bütün herşeyi CPU ya gerekli her şeyi GPU ya yükleyerek kullanımı daha da rahatlatır ve hızlandırır.
Kurulum ve Komut
Türkiye'de çoğu kullanıcı Windows kullanır, bu yüzden Windows odaklı anlatacağım. macOS kullanıcıları da kolayca sadece brew ile kurabilirken Linux kullanıcılarının kurulumu zaten biliyor olmaları beklenir.
llama.cpp'i Github releases'dan, istenilen MoE büyük dil modelini ise HuggingFace'ten bir kaynakta (unsloth ve bartowski en çok bilinenleri. Eski modeller için TheBloke'a da bakılabilir. Unsloth baz modellerde, bartowski ise ara (finetune, ince ayar edilmiş. Çoğu zaman ironik olarak ince ayarda Unsloth kütüphaneleri kullanılır) modellerine odaklanır) bilgisayara uygun bir şekilde seçilir.
Aynı klasöre koyduğumuzu var sayalım, mesela benim gibi Q3_K_XL için 3 GGUF dosyası indirdik. ollama da kullanmayacağımız sürece merge etmeye gerek yok, aşağıdaki komut ile sadece ilk dosyayı yükleriz;
llama-server.exe -m "Qwen3-235B-A22B-Instruct-2507-UD-Q3_K_XL-00001-of-00003.gguf" -ngl 99 -ot ".ffn_.*_exps.=CPU"
Burada;
-m "Qwen3-235B-A22B-Instruct-2507-UD-Q3_K_XL-00001-of-00003.gguf" -> Modelin ilk dosyası belirtilir. Aynı klasörde diğer modelleride bulacaktır.
-ngl 99 -> Bütün katmanlar ekran kartına yüklenir
-ot ".ffn_.*_exps.=CPU" -> Offload Tensors komutu. "Gereksiz" görülen inaktif herşey CPU ya yüklenir.
llama-server'in yüklenmesini bekleriz. Yüklendiğinde internet tarayıcısında 127.0.0.1:8080 adresine girer (yerel ağ adresi, 8080 geçidi) ve arayüzü kolayca kullanabiliriz.
Çok büyük ve etkili bir hız bekleyemeyiz, ama yinede önceki duruma göre daha hızlı ve kullanılabilir bir sonuç elde ederiz.
Benim kendi fikrim ve önerim
Eğer mümkünse modellerin katmanlarını olabildiğince ekran kartına yükleyin (hız için) ve mümkünse 8B altı ve boyutu ne olursa olsun Q4_K_M altına düşmemeye çalışın, Quantizasyon (Nicelendirme) düştükçe kalite ve doğruluk oranı düşer. Q4_K_M hassasiyeti 4 bit iken normal modellerin hassasiyeti 8 bit - 32 bit arasında değişir (en yüksek değer en iyisidir çünkü yüksek kalite, hassasiyet, ve çeşitlilik anlamına gelir)
Genelde tercih olarak, yüksek parametreli bir model (235B), düşük quantizasyonda (Q3) bile çok düşük parametreli (32B) ama yüksek quantizasyonlu (Q6-Q8) bir modelden daha iyi sonuç verdiği için tercih edilir.
Düşük Quantizasyonlar için (Q4_K_M altı hepsi) Unsloth'un Quantizasyonları, standart ve tek kalıp olmadığı için (Örneğin UD-Q4_K_XL'da katmanların nicelendirme değerlerinin hepsi INT4 değildir) tercih edilebilir. bende bu yüzden Qwen3-235B-A22B-Instruct-2507-GGUF ve UD-Q3_K_XL'yi tercih ettim.