deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (native)

slotstream, ağırlıkları SSD'den akıtarak 104GB'lık Qwen MoE modelini 48GB'lık bir Mac'te çalıştırıyor

Yeni bir açık kaynak araç, 104GB'lık 4-bit Qwen3.8-Flash-Next modelini SSD'den akıtarak, 48GB RAM'e sahip bir Mac'te saniyede yaklaşık 12 token hızla çalıştırıyor.

slotstream, ağırlıkları SSD'den akıtarak 104GB'lık Qwen MoE modelini 48GB'lık bir Mac'te çalıştırıyor

carloslfu takma adını kullanan bir geliştirici, bir dil modelini Mac'in belleğinin çok ötesinde, dahili SSD'den akıtarak çalıştıran açık kaynak bir araç olan slotstream'i yayınladı. 1 Eylül'de Hacker News'te Show HN olarak paylaşılan projenin README'sine göre araç, 4-bit quantization ile 104 GB yer kaplayan, 125 milyar parametreli bir mixture-of-experts modeli olan Qwen3.8-Flash-Next'i bu RAM'in çok daha azına sahip makinelerde, planlanan en düşük sınır olan 8.1 GB'a kadar çalıştırıyor.

48 GB'lık bir Mac'te ölçüldü

Geliştiricinin test makinesi olan 48 GB RAM'li bir M5 Pro'da README, ısınmış decoding sırasında saniyede yaklaşık 12 token, ilk tokena kadar yaklaşık üç saniyelik soğuk başlama ve 32 GB'lık zirve bellek kullanımı bildiriyor; 104 GB'lık tüm ağırlıklar diskte tutuluyor. Daha düşük bellek kademesindeki değerler tahmini: 16 GB'da yaklaşık 5 tok/s, 24 GB'da 8 ve 32 GB'da 10. Yalnızca 48 GB değeri gerçek donanımdan geliyor — geri kalanlar aynı ölçülmüş eğriden dışlanmıştır ve README, daha küçük Mac'lerin genellikle daha yavaş SSD'lere sahip olduğunu da belirtiyor. slotstream doctor komutu, herhangi bir şey indirilmeden önce belirli bir makinenin ne alacağını ve ağırlıklar için yerinin olup olmadığını önceden gösteriyor.

Akış nasıl çalışıyor

Modelin baytlarının neredeyse tamamı iki yapıda bulunuyor: yönlendirilmiş uzmanlardan oluşan 68 GB — katman başına 512, ancak token başına yalnızca 10'u aktif — ve 32 GB'lık bir n-gram tablosu. Yoğun gövde yalnızca 3.8 GB ve bellekte sürekli kalıyor. Herhangi bir anda o kadar az uzman tetiklendiği için slotstream bunları talep üzerine pread ile, 48 katmanın tümünün paylaştığı sabit bir cache slotu havuzundan okuyor; böylece meşgul katmanlar sessiz katmanlardan kapasite ödünç alıyor.

Cache boyutu hızı değiştiriyor, çıktıyı asla: greedy decoding, 4 GB'lık ve 24 GB'lık cache arasında bayt bayt aynı ve README bu eşdeğerliğin kalıcı bir test olarak doğrulandığını söylüyor.

README'ye göre bariz alternatif — ağırlık dosyasını memory-mapping — burada başarısız oluyor. MLX, memory-mapped bir tensorün yalnızca bir bölümünü gerçekleştiremiyor; bu yüzden bir top-10 uzman toplama işlemi bir katmanın 512 uzmanının tümünü değerlendiriyor ve 16 satırlık bir n-gram araması 250 MB'lık bir shard'ın tamamını okuyor. Bir mmap yolu yaklaşık 100 GB yükleip ölürdü; standart mlx_lm.load() yükleyicisinin 48 GB'lık test makinesini tek bir token üretmeden 48 GB swap'a ittiği bildiriliyor.

Disk ve indirme gerçekleri

İlk engel RAM değil, boş depolama alanı: araç yaklaşık 110 GB boş alan gerektiriyor, bu da 512 GB'lık bir Mac'i gerçekçi alt sınır yapıyor. Tek seferlik 103.8 GB'lık indirme, kullanıcının bağlantısından değil Hugging Face'ten sınırlı — dört paralel bağlantının ötesinde veri akışı 36–57 MB/s'de platoya ulaşıyor — ve gerçek bir kurulum 35 dakika sürdü. Kesilen indirmeler durdukları tam bayttan devam ediyor ve 24 dosyanın tamamı binary içine derlenmiş SHA-256 hash'leriyle doğrulanıyor.

Bellek boyutlandırması varsayılan olarak otomatik: süreç 33 GB'lık hedefin, kurulu RAM'in %70'inin ve Metal working-set sınırının en düşüğünü alıyor. Hedefi birer GB ile taramak, 34 ile 84 GB arasında hiçbir şeyin decode veya prefill hızını iyileştirmediğini gösterdi; yani 64 GB ve 128 GB'lık makineler aynı 33 GB'lık tahsisi istiyor — ekstra bellek hiçbir şey satın almıyor ve araç bunu kullanıcıları tahminde bırakmak yerine açıkça söylüyor. Çalışırken her 15 saniyede bir yeniden kontrol yapıyor ve istekler arasında cache'i yeniden boyutlandırıyor; bellek baskısı altında küçülüyor, sonrasında tekrar büyüyor ve boyutlandırmalar arasında çıktı bayt bayt aynı kalıyor.

Sınırlarıyla birlikte, Ollama biçiminde bir API

Tek bir Swift binary'si, 11434 portunda Ollama istemcilerinin kullandığı chat ve generate endpoint'lerini ve bunlara karşılık gelen OpenAI alt kümesini sunuyor; Ollama CLI, Open WebUI ve OpenAI SDK'leri buna karşı test edilmiş. Sunucunun uygulamadığı özellikler — tools, images, JSON-schema çıktısı, logprobs — sessizce yok sayılmak yerine açık bir 400 hatası döndürüyor. Bağlam 32.768 tokenla sınırlı. Uzun promptlar yavaş yol: prefill, 48 GB'lık makinede saniyede yaklaşık 125 tok/s çalıştığından 8.000 tokenlık bir prompt ilk tokenı için bir ila üç dakika bekliyor. Bir prefix cache, sohbet büyüdükçe ilk tokena kadar geçen süreyi sabit tutuyor — sekiz tur boyunca 25.8 saniyeye tırmanmak yerine 6.0 saniye — ancak cache'li yeniden kullanım yeniden hesaplamayla bit düzeyinde aynı değil ve kesin tekrarlanabilirlik önemli olduğunda bir bayrak bunu devre dışı bırakıyor. Apple Silicon ve macOS 14 veya daha yenisi gerekiyor.

Neden önemli

RAM'e sığmayan bir model için olağan yanıtlar daha fazla bellek satın almak veya daha agresif quantize etmek. slotstream üçüncü bir yol gösteriyor: hızlı bir SSD'yi, seyrek bir modelin nadiren dokunulan bölümleri için ikinci kademe bellek olarak ele almak. Saniyede yaklaşık 12 tok/s tek bir benchmark makinesinin ötesinde tutarsa, 104 GB'lık bir model orta sınıf bir Mac'te etkileşimli kullanım için pratik hale geliyor ve yerel çıkarım için bağlayıcı kısıt — pahalı ve satın alımada sabit olan — birleşik bellekten disk kapasitesine ve SSD bant genişliğine kayıyor. Uyarılar gerçek: yalnızca bir makine ölçüldü, 48 GB altındaki rakamlar dışlanmış ve uzun promptlarda yavaş prefill. Ancak ağırlıklarının çoğu boş duran mixture-of-experts mimarileri için depolamadan akış, daha önce tüketicinin erişiminin dışında kalan modelleri çalıştırmanın inandırıcı bir yolu.

  • #open-source
  • #llm
  • #inference
  • #macos
  • #mlx

İlgili yazılar