← Teknoloji Radarı

Yapay zekâ

26 milyar parametreli model 2 GB bellekle nasıl çalışır?

TurboFieldfare adlı açık kaynak proje, normalde 14 GB yer kaplayan Gemma 4 modelini Mac'te yaklaşık 2 GB bellekle çalıştırıyor. Sırrı: Modelin çoğunu SSD'de bırakıp sadece o an gereken parçayı okumak.

Bu neden önemli?

Yerel yapay zekânın önündeki en büyük engel bellek. Bu proje, modelin nasıl çalıştığını ve donanımın nasıl tasarlandığını iyi anlarsan, 'bu makineye sığmaz' denen bir modeli sığdırabileceğini gösteriyor.

Local AI On Apple Silicon uses 7X Less RAM · Better Stack, YouTube (İngilizce). Tıklayınca video yüklenir.

Sorun: Model belleğe sığmıyor

Bir dil modelini kendi bilgisayarında çalıştırmak için genelde modelin tamamını belleğe (RAM) yüklemen gerekir. Google’ın Gemma 4 26B-A4B modeli, sıkıştırılmış hâliyle bile yaklaşık 14 GB. 8 GB belleği olan bir Mac için bu imkânsız gibi görünüyor.

TurboFieldfare adlı açık kaynak proje bu modeli yaklaşık 2 GB bellekle çalıştırıyor. Swift ve Apple’ın grafik işlemci arayüzü Metal ile yazılmış, bir Mac uygulaması olarak açılıyor. Videoda M3 Max bir Mac’te saniyede 23 civarı kelime parçası (token) üretiyor. Projenin kendi ölçümlerine göre 8 GB’lık bir M2 MacBook Air’de bu sayı 5-6 civarında.

Anahtar fikir: Uzmanlar karışımı

Gemma 4, uzmanlar karışımı (Mixture of Experts, MoE) denen bir yapıda. Modelin her katmanında tek büyük bir blok yerine 128 küçük “uzman” ve bir yönlendirici (router) var. Her kelime parçası için yönlendirici bu 128 uzmandan sadece 8’ini seçiyor. Yani 26 milyar parametrenin her adımda sadece 4 milyar kadarı iş yapıyor.

Bu şu anlama geliyor: Modelin büyük kısmı her an boşta. Hepsini bellekte tutmak zorunda değilsin.

İki yığın

TurboFieldfare modeli kurarken ikiye ayırıyor:

  1. Her zaman gereken kısım (~1,35 GB): Dikkat (attention) katmanları, yönlendirici ve her seferinde çalışan bir “ortak uzman”. Bu kısım hep bellekte duruyor.
  2. Uzmanlar (~12,9 GB): SSD’de kalıyor. Yönlendirici hangisini isterse, o an birkaç megabaytlık parça okunuyor.

Zor kısım şu: Hangi uzmana ihtiyaç olduğunu, katmandaki hesabın yarısını yapmadan bilemiyorsun. Yani önceden okuyup hazırlamak mümkün değil. Her kelime parçasında 30 katmanın her biri için diske gitmek gerekebiliyor.

Neden sadece Mac’te?

Normal bir PC’de ekran kartının kendi belleği (VRAM) var. Veriyi önce SSD’den RAM’e, sonra RAM’den ekran kartına kopyalamak gerekiyor. Saniyede binlerce kez yapılınca bu çok yavaş.

Apple Silicon çiplerde ise birleşik bellek (unified memory) var: İşlemci ve grafik işlemcisi aynı belleği görüyor. SSD’den okunan veri, kopyalanmadan doğrudan grafik işlemcisinin kullanımına hazır oluyor.

Proje bunun üstüne birkaç akıllı numara daha ekliyor:

  • Hazır dosya biçimi: Ağırlıklar diskte zaten grafik işlemcisinin okuyacağı düzende duruyor. Okurken dönüştürme adımı yok.
  • Beklemeyi gizlemek: Disk okunurken grafik işlemcisi boş durmuyor, her durumda çalışması gereken ortak uzmanın hesabını yapıyor.
  • Önbellek: Her katman 16 uzmanı bellekte tutuyor. İstenen uzman zaten oradaysa diske hiç gidilmiyor. Yer açmak gerektiğinde en az sık kullanılan (LFU) uzman atılıyor. Çünkü bazı uzmanlar sürekli seçilirken bazıları nadiren seçiliyor.

Bedeli

Bu tasarım tek bir modele ve tek bir donanıma özel. Başka bir modeli çalıştırmak için baştan uğraşmak gerekiyor. Ayrıca önbellek, yönlendiricinin tahmin edilebilir davranmasına güveniyor. Uzmanlar tamamen rastgele seçilseydi, neredeyse her seferinde diske gidilir ve hız düşerdi.

Düşün

  • Bilgisayarındaki bellek mi, disk mi daha hızlı? Bu proje o farkı nasıl kapatmaya çalışıyor?
  • Bir modeli “herkese” değil de “tek bir cihaza” göre ayarlamak sence ne zaman mantıklı?

Bu yazıdaki araçlar Araç Kutusu'nda: TurboFieldfare