Yerel yapay zeka modellerini çalıştıran Ollama ve llama.cpp tabanlı araçlar, nadiren kullanılan devasa bağlam pencereleri nedeniyle gigabaytlarca RAM ve VRAM harcıyor. Doğru yapılandırma ayarları ve önbellek nicemlemesiyle bu belleği geri kazanmak mümkün.
Bilgisayarında yerel yapay zeka modellerini çalıştıran kullanıcıların sıklıkla gözden kaçırdığı kritik bir bellek sorunu bulunuyor. Yapılan teknik incelemeler, Ollama ve LM Studio gibi popüler altyapıların, kullanıcıların günlük sohbetlerinde nadiren ulaştığı devasa bağlam pencereleri için sistem kaynaklarını gereğinden fazla rezerve ettiğini ortaya koyuyor.
KV Önbelleği Belleği Nasıl Tüketiyor?
Bağlam uzunluğu, mevcut istemin kullandığı miktar yerine bir maksimum kapasiteyi ifade eder; bu alan sistem istemini, sohbet geçmişini, mevcut girdiyi ve üretilen yanıtı kapsar. Örneğin, bir model 32K token kapasitesine göre yapılandırıldığında ve normal bir sohbet sırasında yalnızca 3K token kullanıldığında bile Ollama, model yüklendiğinde daha büyük limiti idare etmek için sistemi hazırlar.
Bu ekstra belleğin büyük kısmı, modelin işlediği token'lara ait hesaplamaları saklayan ve tüm konuşmayı baştan işleme zorunluluğunu ortadan kaldıran KV önbelleğine gider. Daha büyük bir bağlam penceresi, bu hesaplamalar için daha fazla alan gerektirir. İndirilen model boyutları yalnızca nicelenmiş ağırlıkları gösterirken; Ollama hesaplama tamponları ve KV önbelleği için fazladan gigabaytlar harcayabilir.
Apple Silicon mimarisinde bu tahsis, macOS ve diğer tüm uygulamaların paylaştığı birleşik bellek havuzundan yapılır. Özel bir grafik kartına sahip sistemlerde ise VRAM üzerinde yer alır ve VRAM tükendiğinde sistem belleğine taşar. Kullanılmayan bağlam, herhangi bir fayda sağlamadan diğer uygulamaların belleğini tüketir veya modelin bir kısmını daha yavaş belleğe iter. Ollama'nın varsayılan ayarları da bu durumu tetikleyebiliyor; sistemler 24 GiB altında 4K, 24 ile 48 GiB arasında 32K ve 48 GiB üzerinde 256K bağlam atayabiliyor.
Doğru Bağlam Sınırını Belirlemek ve num_ctx Ayarı
Kullanıcıların ihtiyaç duyduklarından çok daha büyük pencerelerle çalışmak zorunda olmadığını belirten uzmanlar, Ollama API'sinin bu konuda işlevsel veriler sunduğunu belirtiyor. API yanıtları içindeki prompt_eval_count ve eval_count değerleri incelenerek daha gerçekçi bir başlangıç noktası bulunabiliyor.
Tipik birkaç bin token'lık sohbetler için 8K'lık bir pencere test edilerek başlanması öneriliyor; bu, anlık soruların dışındaki uzun yanıtlar ve takip eden sorular için yeterli alan bırakıyor. Düşünce token'ları üreten muhakeme modellerinin ise ayrı bir bütçelendirmeye ihtiyaç duyduğu unutulmamalı.
Bu sınırı değiştirmek için birkaç farklı yöntem bulunuyor: - Ollama uygulamasındaki bağlam kaydırıcısını kullanmak - Terminal oturumu sırasında /set parameter num_ctx 8192 komutunu girmek - Modele özel kalıcı bir ayar için PARAMETER num_ctx 8192 içeren bir Modelfile oluşturmak
Önbellek Nicemlemesi ve Alternatif Çalışma Ortamları
Bellek tasarrufu sağlamanın bir diğer yolu da sohbet önbelleğini daha düşük sayısal hassasiyetle saklamaktır. Önbellek nicemlemesi olarak adlandırılan bu işlemde, Q8 etiketli 8-bit seçeneği varsayılan önbelleğin yaklaşık yarısı kadar bellek kullanır ve yanıt kalitesinde genellikle fark edilir bir kayba yol açmaz. Q4 etiketli 4-bit seçeneği ise belleği dört kat daha fazla düşürür ancak özellikle uzun sohbetlerde yanıt doğruluğunu olumsuz etkileyebilir.
Ayrıca Ollama'nın aynı anda işleyeceği istek sayısı da kontrol edilmeli. Tek bir kullanıcı için varsayılan olarak bir eşzamanlı istek atanırken, bu sayı artırıldıysa önbellek alanı boşa harcanabilir. Ollama'nın yanı sıra LM Studio, Docker Model Runner ve BaseRT gibi alternatif çıkarım motorları da bellek yönetimini optimize etmek isteyen kullanıcılar tarafından değerlendirilebilir.



