- TurboFieldfare, Gemma 4 26B-A4B'yi tüm 14.3GB modeli belleğe yüklemeden yaklaşık 2GB bellekle çalıştırarak 8GB Apple Silicon Mac'lerde yerel çıkarımı mümkün kılar
- MoE uzman ağırlıkları, yalnızca 1.35GB paylaşılan çekirdek ve FP16 KV önbelleği bellekte tutulduktan sonra, token başına gerektiğinde SSD'den akışla getirilir; 16 yuvalı LFU önbellek ve paralel
preadile G/Ç sınırlandırılır - Gemma 4 26B-A4B, token başına yaklaşık 3.88B parametreyi etkinleştirir; ölçülen decoding hızı 8GB M2 MacBook Air'de 5.1~6.3 tok/s, 24GB M5 Pro'da ise 31~35 tok/s'tir
- Swift 6.2 ve Metal 4 ile yazılmış özel bir runtime'dır; yerel Mac uygulaması, CLI, kurulum aracı ve deneysel OpenAI uyumlu sunucuyu aynı
.gturbomodel dizini üzerinde sunar - Mevcut kapsam, macOS 26 veya üstü ve en az 8GB RAM'e sahip Apple Silicon Mac'lerde yalnızca metin çıkarımı ile sınırlıdır; görüntü, ses, video ile uzak sunucu kimlik doğrulaması ve TLS desteklenmez
Belleği azaltan çalışma yapısı
- TurboFieldfare, instruction-tuned Gemma 4 26B-A4B'yi bütünüyle belleğe yüklemez
- 1.35GB paylaşılan çekirdek ve FP16 KV önbelleği bellekte tutulur
- Her token için gereken routed expert'ler SSD'den Metal'in görebildiği arabellekler içine okunur
- Kurulu yalnızca metin modeli yaklaşık 14.3GB olsa da, ağırlıklar ve 4K KV önbelleğinin kullandığı bellek yaklaşık 2GB'tır
- Model, toplam 26B parametre içinden token başına yaklaşık 3.88B parametreyi etkinleştirir
- Ağırlıklar group 64 tabanlı MLX affine 4-bit kullanır; router 8-bit, paylaşılan ve routed expert'ler 4-bit'tir
- Bu, MLX veya llama.cpp'yi saran bir yapı değil, Gemma 4 26B-A4B için yapılmış Swift·Metal'e özel bir runtime'dır
Token üretim süreci
- Her Transformer katmanında Metal, bellekte duran ağırlıklarla attention ve router hesaplamasını yapar
- CPU, router'ın seçtiği en iyi 8 expert ID'yi katman başına 16 yuvalı LFU önbellekle karşılaştırır
- Önbellek kaçırmaları sınırlı sayıda paralel
preadçağrısıyla doldurulur - SSD okuması sürerken Metal, bellekte duran shared-expert dalını hesaplar
- Okuma tamamlandığında shared output ile routed output birleştirilir
- Önbellek kaçırmaları sınırlı sayıda paralel
- Prompt prefill, bir kez getirilen expert'in birden fazla satırı işleyebilmesi için en fazla 128 token'lık parçalar kullanır
- Üretim aşamasında routed layer döngüsü token bazında tekrarlanır
- KV önbelleği, 25 sliding-window layer için sınırlı döngüsel depolama; 5 full-attention layer için doğrusal depolama kullanır
- Decoding attention, normalize edilmiş K ve V yollarını ayıran exact split-K/V yöntemidir
Kurulum ve model biçimi
- İlk çalıştırmada Download seçildiğinde sabit bir Hugging Face revision'dan yaklaşık 15GB veri range request ile indirilir
- Kurucu, özgün checkpoint'in tamamını geçici dosya ya da bellekte oluşturmaz
- Gerekli bayt aralıklarını alıp doğrudan
.gturbodüzenine yeniden paketler - Tam shard veya tensor'leri ayrıca hazırlamadığı için geçici bellek kullanımı sınırlı kalır
- Tamamlanan kurulum ancak manifest ve dosya hash doğrulamasını geçerse kullanılabilir
- Gerekli bayt aralıklarını alıp doğrudan
- Kurulum tamamlandıktan sonra model yaklaşık 14.3GB depolama alanı kaplar ve kurulum sürecinin kendisi modeli belleğe yüklemez
- Runtime yalnızca son
manifest.jsondosyasını içeren tamamlanmış.gturbodizinlerini kabul eder - Yarıda kalan indirmeyi sürdürme, kısmi indirme durumunu silme ve modeli yüklemeden kurulum doğrulama desteklenir
Çalışma ortamı ve performans
- Gereksinimler Apple Silicon Mac, macOS 26, Metal 4, Xcode 26 ve Swift 6.2 veya üstüdür
- Paket yalnızca arm64 içindir; daha eski macOS ve Metal sürümleri desteklenmez
- Doğrulama hedefi 8GB M2 MacBook Air'dir; model kurulumu için boş depolama alanı ve ilk indirme için internet bağlantısı gerekir
- Ölçülen decoding performansı şöyledir
- 8GB M2 MacBook Air: 5.1~6.3 tok/s
- 24GB M5 Pro: 31~35 tok/s
- İş hacmi prompt uzunluğu, üretim uzunluğu, sayfa önbelleği durumu ve donanıma göre değiştiğinden, bu ölçümler bir performans tavanı değil referans noktasıdır
- Modeli çalıştırmadan önce çok bellek kullanan uygulamalar kapatılmalı ve
memory_pressure -Qile boş bellek kontrol edilmelidir - Uygulama, decode service, CLI, sunucu, testler veya başka yerel model süreçlerinden aynı anda yalnızca biri çalıştırılmalıdır
Sunulan ürünler ve kullanım şekli
- Swift paketi altı ürün sunar
TurboFieldfare: runtime ve Metal kernel'lerini içeren Swift kütüphanesiTurboFieldfareMac: kurulum ve üretim için yerel Mac uygulamasıTurboFieldfareDecodeService: Mac uygulamasının kullandığı tek seferlik yerel model·Metal sahipliği süreciTurboFieldfareCLI: komut satırı instruction chat ve raw completionTurboFieldfareServer: loopback OpenAI uyumlu Chat Completions sunucusuTurboFieldfareRepack: akış tabanlı kurulum ve kurulum doğrulama aracı
- Mac uygulamasında model indirildikten sonra Load Model seçilir ve prompt girilerek üretim yapılır
- Durum çubuğundan ilerleme, decoding hızı ve bellek kullanımı görülebilir
- Sampling, context length, expert-cache slot ve runtime seçenekleri ayarlanabilir
- CLI'nin instruction chat'i bir JSON mesaj dizisi alır ve bunu Mac uygulamasıyla aynı biçime dönüştürür
- Yanıt sınırı
--max-newiçin varsayılan değer 1,024 token'dır - Mac uygulaması, seçilen context window dolana kadar üretim yapabilir
- Yanıt sınırı
--prompt, sohbet biçiminin uygulanmadığı raw completion ve yeniden üretilebilir karşılaştırmalar için kullanılır- Üretilen metin standart çıktıya, zaman istatistikleri standart hataya gönderilir;
--quietile istatistik çıktısı kapatılabilir
Prompt ve destek kapsamı
- Mac uygulaması girdiyi instruction olarak işler ve Gemma'nın sohbet biçimini otomatik uygular
- Varsayılan sampling ayarları temperature
0.2, Top-K64, Top-P0.95'tir- temperature
0yapılırsa deterministik greedy output kullanılır - Model tekrar edebilir veya yanlış yanıt verebilir; bu yüzden önemli sonuçlar doğrulanmalıdır
- temperature
- Uygulama ve CLI, kullanıcı·model mesajları ile isteğe bağlı system guidance destekler, ancak araçları göstermediği veya çalıştırmadığı için tool desteği sunmaz
- Mevcut model giriş/çıkışı yalnızca metindir; görüntü, ses ve video desteklenmez
- CLI,
--max-context,--temperature,--top-k,--top-p,--repetition-penalty,--seedve tekrar edilebilir--stopdizeleri sunar
OpenAI uyumlu yerel sunucu
- Deneysel sunucu
127.0.0.1:8080/v1üzerinde çalışır ve Chat Completions, akış, fonksiyon araç bildirimi ve tek prefix prompt yeniden kullanımını destekler - Sunucu modelin ürettiği tool call'ları döndürür, ancak tüm araç çağrılarının onayı ve yürütülmesi istemcinin sorumluluğundadır
- Uzak kimlik doğrulama ve TLS olmadığı için sunucu yalnızca loopback üzerinde tutulmalıdır
- Mac uygulaması, CLI ve sunucu aynı
.gturbodizinini kullanır, ancak modele sahip olan ürünlerden aynı anda yalnızca biri çalıştırılmalıdır
Uygulama kapsamı ve deney kayıtları
- Özel Metal kernel'leri quantized GEMV, attention, MoE, normalization, RoPE, sampling ve üretim düzeyi fusion işlemlerini yürütür
- Runtime, SSD tabanlı routed-expert akışı, sınırlı expert önbelleği, parça bazlı tek prompt prefill ve token bazlı üretim uygular
- Kernel, önbellekleme, G/Ç, prefill ve decode genelinde 103 ölçüm sonucu deney kayıtları olarak tutulur
- Deney dokümanları, etkisi büyük optimizasyonları, başarısız fikirleri ve daha güçlü doğrulama sonrası tersine dönen ilk sonuçları içerir
- Gelecek çalışmalar arasında iPhone·iPad uygulamaları geliştirme, mobil çıkarım hızı·bellek ölçümleri ve 16GB M4 Mac mini ile diğer 8GB Apple Silicon Mac'lerin benchmark'ları yer alır
Lisans ve model koşulları
- Kaynak kod ve dokümantasyon Apache License 2.0 ile dağıtılır
- Model ağırlıkları depoya dahil değildir; kurucu bunları sabit bir Hugging Face checkpoint'inden ayrıca indirir
- Ağırlıklar için özgün dağıtım koşulları geçerliliğini korur
- TurboFieldfare, Google ile bağlantılı olmayan ve Google tarafından desteklenmeyen ya da onaylanmayan bağımsız bir araştırma projesidir
1 yorum
Hacker News yorumları
Neden her seferinde Kral Charles’ın kim olduğunu bilmeye de ihtiyaç varmış gibi tüm modeli belleğe tıkıştırdıklarını hep merak etmişimdir. Büyük dosyaları parçalara bölüp az bellekle verimli okuma tekniklerinin zaten oturmuş olduğunu düşünüyorum
En ileri yapay zeka sektöründe, model yapımında çok iyi olup ölçeklenebilirlik ve pratikliği altyapı ekibine iteleme eğilimi var gibi görünüyor. Gerçekte kullanılan bilginin %10’undan azıysa, yalnızca ince ayar ve optimizasyonla maliyet ciddi biçimde düşürülebilir gibi duruyor
Yoğun LLM’ler genelde daha iyi performans verir ama katmanları harici depoya atarsanız MoE’den çok daha fazla yavaşlar
Bugünlerde kaynağı belirsiz bir projeyi indirirken bu tür güvenlik incelemelerini bizzat çalıştırmak gerekiyor. Depodaki ajan talimatlarını ve Markdown dosyalarını yok sayıp Swift/Metal kaynaklarını, build script’lerini, CI yapılandırmasını ve bağımlılıkları incelemesini istedim; kötü amaçlı kod, arka kapı, kimlik bilgisi hırsızlığı veya gizli ağ uç noktaları bulmadı ama derleme, tedarik zinciri ve çalışma zamanı risklerinin hâlâ sürdüğü sonucuna vardı
Daha iyi bir prompt varsa paylaşabilirsiniz; bunu Cursor Composer 2.5 ile çalıştırmanın maliyeti de 0,20 doların altındaydı
M1 MacBook Air üzerinde macOS 15 kullanıyorsanız, şu iki satırı silerseniz ya da
if #available(macOS 26.0, *)ile sararsanız derleniyor:opts.languageVersion = .version4_0Yorumlara göre attention’ın 11,24 kat hızlanıp prefill’in 2,4 kat artması avantajını kaçırıyorsunuz ama 8 çekirdekli GPU’lu M1 Air’de saniyede 5-6 token alınıyor
2,4 kat prefill iyileştirmesi yalnızca apple10 GPU ailesinde çalışıyor; M1 ise hatırladığım kadarıyla apple7
Bu projenin sıradan
mmapile nasıl karşılaştırıldığını merak ediyorum. llama.cpp demmapaçık ve yeniden paketleme kapalıyken istenirse 26B modeli 2 GB RAM’de çalıştırabiliyorAsıl fark, SSD okumalarını çıkarım işiyle senkronize ederek gecikmeyi en aza indirmesi gibi görünüyor; işletim sistemi bu tür çalışma bağlamını dikkate almıyor
mmapkullanıyordu. 8 GB M2’de soğuk durumdaki 3,36 MB’lık uzmanı okumakmmapile 10 ms,preadile 2,8 ms sürüyordu; tam simülasyon ise sırasıyla saniyede 0,50 token ve 4 token veriyordummaptarafında işletim sistemi, model sayfaya dokunduğunda sonradan tepki vererek okuma yaptığı için hangi uzmanın seçildiğini ya da GPU işiyle okumayı ne zaman çakıştırabileceğini bilmiyor. Ortak ağırlıklar basitlik için hâlâmmapkullanıyor; llama.cpp de 2 GB’ın altında çalışabilir ama muhtemelen daha yavaş olur“Ölçüm sonuçları bir referans noktasıdır, performans tavanı değil” cümlesi Claude’a özgü bir ifade gibi görünüyor
Yazar sadece LLM ile cümleleri parlatmış ve gereksiz içerik eklememişse sorun değil. Metnin kendisi faydasız bir üretimse zaten düşük oy verilir
Daha hızlı SSD takılı bir M1 Max Mac Studio’da saniyede 12 token ve neredeyse anında yanıt alınması etkileyici. Büyük modelleri bellekten değil doğrudan SSD’den çalıştırmanın mümkün olabileceğini gösteriyor
Bugünlerde çok sayıda SSD akış motoru var ama zorlu özelliklere kalkışan az. Büyük modellerde spekülatif kod çözme için MTP head bulunduğundan, bu başlık SSD’deki uzman ağırlıklarını önceden okumakta kullanılabilir
GPU ihtiyaç duymadan önce ağırlıkları hazır etmek, VRAM önbellek kaçırma maliyetini ciddi biçimde azaltabilir; işe yaradığı kanıtlanırsa gelecekteki modeller uzmanları önceden getirmek için özel bir head’e sahip olabilir ve eğitim aşamasından itibaren buna göre tasarlanabilir
MTP’nin ürettiği taslak tokenlarla ilk katmandaki uzmanlara kadar tahmin yapılabilir ama 10. katmanı bilmek için önce 1-9. katmanları çalıştırıp o uzmanları yüklemek gerekiyor. Bu yüzden sonraki token üreticisi yerine tüm katmanlardaki uzman etkinleşmelerini tek seferde tahmin edecek şekilde eğitilmiş bir yapıya ihtiyaç var
DiffusionGemma’yı çalıştıran proje de neredeyse hazır ve iki proje birleştirilirse iyi uyum sağlayabilir. 36 GB M3’te saniyede yaklaşık 20 token alınıyor ve birbirlerinin daha hızlı kernel’larını kullanma ihtimalleri de yüksek
Kod şu anda https://github.com/mmastrac/diffgemma adresinde ama henüz dağıtıma uygun durumda değil
Bu konudaki düşünceni merak ediyorum
8GB M2 MacBook Air'da saniyede 5~6 token ile M5 MacBook Pro'da 31~35 token arasında neden bu kadar büyük fark olduğunu merak ediyorum. SSD performans farkının o kadar büyük olacağını sanmıyorum ama bu yöntemde baskın darboğazın SSD olmasını bekliyordum
https://www.tomshardware.com/laptops/macbooks/m5-macbook-pro...
İşletim sistemi önbelleği dahil toplamda yalnızca 2GB kullanılabilseydi çıkarım hızı daha da düşük olabilirdi
pread'e ciddi ölçüde dayanıyor. Süreç 2GB'ın altında kalsa bile M5 Mac bunun bir kısmını önbelleğe alabiliyor ve donanımın kendisi de çok daha hızlıToken başına okuma süresi M2'de 83ms, M5 Pro'da 12ms idi; toplam süre ise sırasıyla 163ms ve 30ms idi. Hem okuma hem de GPU işlemesi daha hızlı
İleride 30~60GB bellek ve çok hızlı SSD bulunan sistemlerde bu tür tekniklerle çok büyük modellerin de çalıştırılabilmesini umuyorum
https://github.com/danveloper/flash-moe
https://github.com/JustVugg/colibri
https://github.com/antirez/ds4 veya kendi yaptığım https://github.com/steadfastgaze/MoEspresso kullanılabilir. Bellekte olmayan bir sonraki token'ın uzmanlarını SSD'den okumak gerektiği için hız SSD okumasıyla sınırlı olur; bellek ne kadar büyükse çıkarım da o kadar hızlı olur