Qwen3.8-27B Geldi.
Sıradan Mac'lerin çalıştırma şansı var.
Bellek, hız, bağlam—
Bu rehber her şeyi bir kerede açıklıyor.
Geçtiğimiz günlerde iki haber birbiriyle çakıştı.
14 Ağustos'ta Qwen3.8-27B ağırlıklarını resmen açtı. İki haftadan kısa bir süre sonra Apple, M5 Max ve M5 Ultra ile donatılmış yeni Mac Studio'yu piyasaya sürdü ve yerel AI performansı ile 512 GB'a kadar birleşik belleği öne çıkardı.
Bu tanıtımları okuduktan sonra, Qwen3.8-27B'yi bir Mac'te çalıştırmak için en yeni Mac Studio'yu, hatta doğrudan Ultra'yı satın almanız gerektiği yanılgısına kapılmak kolay.
Aslında, o kadar da abartılı değil.
Geçmişte, 27B Dense modeller yerel kullanıcılar için tercih edilen seçenek değildi. Dense modellerin özelliği, üretilen her token için tüm ana parametrelerin okunması ve hesaplanması gerektiğidir. 24 GB sınıfı cihazlarda, niceleme sonrasında bile belleğe zar zor sığar ve ilk topluluk testleri genellikle saniyede tek haneli veya düşük çift haneli token hızları gösteriyordu.
Buna karşılık, 35B-A3B gibi MoE modelleri daha fazla toplam parametreye sahip olsa da, her üretimde yalnızca yaklaşık 3B parametreyi etkinleştirir ve potansiyel olarak birkaç kat daha hızlı olabilir. Sürekli olarak kod okuyan, araçları çağıran ve dosyaları tekrar tekrar değiştiren Agent'lar için, model yeteneği ne kadar güçlü olursa olsun, her tur uzun sürüyorsa günlük bir araç haline gelmesi zordur. Bu nedenle, birçok yerel oyuncu daha önce MoE'yi tercih ediyordu.
Şimdi durum değişmeye başlıyor.
Niceleme formatları, Apple Silicon çıkarım çerçeveleri ve yeni nesil kod çözme hızlandırma yöntemleri giderek olgunlaşıyor ve 27B Dense modellere yetenek ve hız arasında denge kurma şansı veriyor. Mutlaka en yeni Ultra'ya ihtiyacınız yok: 24 GB ve 32 GB Mac'ler 4 bit sürümüyle başlayabilirken, 48 GB veya daha fazlasına sahip olanlar daha esnek seçeneklere sahip.
Gerçek soru artık yalnızca "yüklenebilir mi" değil, niceleme sürümünün nasıl seçileceği, bağlam ve belleğin nasıl kontrol edileceği ve üretim hızının gerçekten kullanılabilir olacak şekilde nasıl ayarlanacağıdır.
Bu makale, sıfırdan tekrarlanabilir bir dağıtımı tamamlayacak: önce bellek gereksinimlerini hesaplayacak, ardından hızlandırmasız temel hızı çalıştıracak, daha sonra aynı görevle A/B testi yapacak ve son olarak modeli OpenAI ve Anthropic istemcilerinin çağırabileceği yerel bir API olarak başlatacak.
Şimdi dağıtmayı planlamıyorsanız, önce yer imlerine eklemenizi öneririm. Daha sonra daha büyük belleğe sahip bir Mac'e yükselttiğinizde veya yerel modelleri kod Agent'larına, bilgi tabanlarına ve otomasyon iş akışlarına bağlamaya hazırlandığınızda, bu kılavuzu izlemeniz yeterli.
Önce Sonuç: Mac'iniz Çalıştırabilir mi?
Yalnızca birleşik belleğe bakarak, bu tabloyu kullanarak karar verebilirsiniz:

Bu tablo, "modelin açılıp açılamayacağının" mutlak sınırı değil, "kararlı bir şekilde çalışıp çalışamayacağına" dair bir öneridir.

Bazı 24 GB Mac'ler 4 biti yükleyebilir, ancak başarılı yükleme uzun süreli kullanıma uygun olduğu anlamına gelmez. macOS, tarayıcılar, geliştirme araçları, model çalıştırma tamponları, bağlam önbellekleri ve DFlash 2 taslak modellerinin tümü aynı birleşik bellek için rekabet eder. Model başlangıçta iyi görünebilir, ancak en yaygın başarısızlık, uzun bir kod parçası girdikten sonra takas başladığında meydana gelir.
Ayrıca, bu eğitim yalnızca M1, M2, M3, M4 ve M5 serisi Mac'leri içeren Apple Silicon için geçerlidir. Intel Mac'ler bu MLX yolunu izlemez.
27B Tam Olarak Nedir? Yaygın Bir Yanılgıyı Düzeltme
Model adındaki 'B', Milyar (Billion) anlamına gelir.
Yani 27B, yaklaşık 27 milyar parametre anlamına gelir, 270 milyar değil.
Parametreleri, eğitimden sonra tutulan büyük bir sayı kümesi olarak düşünebilirsiniz. Modelin ürettiği her token için, bir sonraki token'ın ne olması gerektiğini belirlemek üzere bu sayıları okumalı ve hesaplamalıdır. 27B, 27 milyar düğmeli bir makine gibidir: eğitim, düğmeleri doğru konumlara ayarlamaktan sorumludur ve yerel çıkarım, bu düğmeleri belleğe yüklemekten ve sürekli okumaktan sorumludur.
Qwen3.8-27B bir Dense modeldir. Dense basitçe şu şekilde anlaşılabilir: üretilen her token için ana parametreler hesaplamaya katılır.
Bu, adında A3B veya A10B bulunan MoE modellerinden farklıdır. Örneğin, 35B-A3B modeli toplamda 35 milyar parametre depolayabilir, ancak her seferinde yalnızca yaklaşık 3 milyar parametreyi etkinleştirir. Tüm ağırlıklar için depolama alanı hazırlaması gerekir, ancak token başına hesaplama ve bellek okuma miktarı çok daha azdır.
Bu nedenle, her ikisi de "yaklaşık 30B" dediği için iki modelin benzer hıza, bellek kullanımına ve yetenek seviyesine sahip olduğunu varsayamazsınız. Toplam parametreler, etkin parametreler, model mimarisi ve niceleme hassasiyeti birlikte değerlendirilmelidir.

Qwen3.8-27B, geleneksel bir "her katmanda tam dikkat" modeli değildir. Resmi model kartı, 64 katmandan oluştuğunu ve Gated DeltaNet ile Gated Attention'un hibrit bir mimarisini kullandığını gösterir: kabaca her 3 doğrusal dikkat katmanına 1 standart dikkat katmanı serpiştirilmiştir. Yerel olarak 262.144 token bağlamını destekler, görüntü ve video anlama yeteneklerine sahiptir, varsayılan olarak düşünme modu etkindir ve reasoning_effort aracılığıyla akıl yürütme derinliğinin ayarlanmasına izin verir.
Bu yetenekler, neden kod, araştırma, uzun görevler ve Agent'lar için uygun olduğunu açıklar; ayrıca dağıtım sırasında neden yalnızca "27B"ye bakamayacağınızı da açıklar.
Yeteneği Hangi Seviyede?
Kişisel bilgisayarlardaki yerel modelleri kabaca kategorize edersek:
- 3B–8B: Hızlı başlangıç, düşük yer kaplama, genel S&C, basit çıkarım ve hafif araç çağrıları için uygundur; karmaşık görevlerde yoldan çıkmaya eğilimlidir.
- 14B–30B: Şu anda en pratik yüksek kaliteli aralık; kod üretimi, uzun metin işleme, yapılandırılmış analiz ve Agent çalışmalarını güvenilir bir şekilde ele almaya başlar.
- 70B ve üzeri Dense: Genel kararlılık genellikle daha güçlüdür, ancak bellek kapasitesi ve bant genişliği gereksinimleri önemli ölçüde artar ve kişisel dağıtım maliyetleri çok daha yüksektir.
Qwen3.8-27B, "kişisel cihazların gerçekçi bir şekilde dağıtabileceği ve yeteneğin üretim iş akışlarına girmek için yeterli olduğu" konumda yer alır.
Resmi model kartında, SWE-bench Pro'da 61.7 ve Terminal Bench 2.1'de 73.0 puan aldı; aynı tabloda Opus 4.6 Max sırasıyla 53.4 ve 78.2 puan aldı. Bu sonuç, bazı kodlama ve terminal Agent görevlerinde Qwen3.8-27B'nin kapalı kaynak amiral gemileriyle aynı tabloda tartışılmaya hak kazandığını gösterir.
Ancak bunu "27B, kapalı kaynak amiral gemilerini tamamen geride bırakıyor" olarak yeniden yazmayın.
Kıyaslamalar, istemlerden, örnekleme parametrelerinden, araç ortamlarından, test çerçevelerinden ve çıkarım bütçelerinden etkilenir. Resmi model kartı ayrıca farklı testler için kullanılan koşum takımlarını da açıkladı. Daha yüksek bir puan, yalnızca bu belirli test koşulları altında daha iyi performans gösterdiği anlamına gelir; bilgi genişliği, açık uçlu akıl yürütme, uzun metin kararlılığı, görsel yetenekler ve gerçek iş akışlarında lider olduğu anlamına gelmez.
Daha doğru bir konumlandırma şudur: kapalı kaynak amiral gemilerinin tam bir alternatifi değildir, ancak işleri ciddiye alarak halledebilecek yerel bir modeldir.
Gerçek Belirleyici Faktör Bellek Hesaplamasıdır
Birçok kişi "model parametre sayısını" doğrudan "çalışma belleği" ile eşitler: 27B, yani 27 GB gerekir.
Bu hesaplama yanlıştır. Parametre sayısı, her parametrenin kaç bit kapladığıyla çarpılmalıdır.
27 milyar parametre için kabaca hesaplama:
- BF16: Parametre başına 2 Bayt, orijinal ağırlıklar yaklaşık 54 GB.
- 8 bit: Parametre başına yaklaşık 1 Bayt, teorik değer yaklaşık 27 GB.
- 4 bit: Parametre başına yaklaşık 0,5 Bayt, teorik değer yaklaşık 13,5 GB.
Teorik değerler yalnızca ana ağırlıkları sayar. Gerçek model depoları ayrıca niceleme ölçeklerini, yapılandırmaları, kelime dağarcıklarını, görsel bileşenleri vb. içerir. Hugging Face'deki MLX topluluk sürümü, 4 bit için yaklaşık 16,1 GB ve 8 bit için yaklaşık 29,5 GB'dir. Bir metin BF16 topluluk dönüşümü açıkça yaklaşık 54 GB olduğunu belirtir.
Bu yalnızca "dosyanın ne kadar büyük olduğu"dur, "başlangıçtan sonra ne kadar yer kapladığı" değil. Model çalışırken en az dört tür alan tüketecektir.
1. Bağlam Önbelleği
Modelin daha önce okuduklarını hatırlaması gerekir, aksi takdirde her yeni token için her şeyi sıfırdan yeniden hesaplaması gerekirdi. Standart dikkat kısmı KV Önbelleği kullanır ve doğrusal dikkat katmanlarının kendi durumları vardır.
Bağlam ne kadar uzunsa, önbellek de o kadar büyük olur. mlx-dspark projesinden yapılan testler, Qwen3.8-27B için 128K bağlamda önbelleğin yaklaşık 11 GB ekleyebileceğini; tam 256K bağlamın ise yaklaşık 23 GB ekleyebileceğini göstermektedir.
Bu nedenle "model 262K'yı destekliyor", 24 GB'lık bir Mac'in 262K'yı açması gerektiği anlamına gelmez. Yetenek sınırı, modelin kaldırabileceği şeydir, sizin makinenizin rahat varsayılanı değil.
2. Çalışma Tamponu ve Geçici Etkinleştirmeler
Modelin uzun bir istemi okuduğu aşamaya Ön Doldurma (Prefill) denir. Bu aşamada, büyük miktarda girdinin bir kerede işlenmesi gerekir ve bellek ve hesaplama baskısı aniden yükselebilir. Sadece "merhaba" dediğinizdeki bellek ekran görüntüsü, 20.000 token kod yapıştırdıktan sonraki durumu temsil etmez.
3. macOS ve Diğer Uygulamalar
Apple Silicon'un CPU ve GPU'su birleşik belleği paylaşır; bu, MLX'in verimliliğinin temelidir ve bellek bütçelerinin neden tutucu olması gerektiğinin nedenidir. Model, sistem, Chrome, Cursor, Docker ve diğer programların tümü aynı havuzda yer için rekabet eder.
4. DFlash 2 Taslak Modeli
DFlash 2 ücretsiz bir anahtar değildir. Ek bir taslak model ve karşılık gelen önbelleğin yüklenmesini gerektirir. Proje, bir tepe sohbet uzunluğu referansı sağlar: 4 bit hedef model artı taslak için yaklaşık 18 GB ve 8 bit için yaklaşık 29 GB. Bu hala macOS için yer ayırmaz.
Bu nedenle, tam formül şöyle olmalıdır:
Gerçek Bellek = Model Ağırlıkları + Bağlam Önbelleği + Çalışma Tamponu + Taslak Model + macOS ve Diğer Uygulamalar

Bu formülü anlamak, herhangi bir blog yazarının bilgisayarının hızını hatırlamaktan daha önemlidir.
4 bit, 8 bit, BF16: Nasıl Seçilir?
Niceleme, model parametrelerini daha kompakt bir şekilde kaydetmek olarak anlaşılabilir. Bitler ne kadar düşükse, model o kadar fazla bellek tasarrufu sağlar ve genellikle daha hızlıdır; maliyeti ise bir miktar hassasiyet kaybıdır.
Sıradan Mac kullanıcıları için şu şekilde seçim yapmanızı öneririm:
24 GB / 32 GB: Doğrudan 4 bit ile başlayın
Model deposu:
1mlx-community/Qwen3.8-27B-4bit
4 bit dosyası yaklaşık 16,1 GB'dir. 24 GB deneyebilir, ancak büyük arka plan uygulamalarını aktif olarak kapatmalı ve 8K–16K bağlamla başlamalısınız. 32 GB günlük kullanım için daha uygun olacaktır.
24 GB "yükleyebildiği" için sürekli olarak ultra uzun bağlam ve DFlash 2 eklemeyin. Önce kararlı bir şekilde çalıştırın, ardından değişkenleri tek tek ekleyin.
48 GB / 64 GB: 8 biti düşünün
Model deposu:
1mlx-community/Qwen3.8-27B-8bit
8 bit dosyası yaklaşık 29,5 GB'dir. 48 GB gerçekçi bir başlangıç noktasıdır ve 64 GB daha rahat olacaktır. Hız, bağlam alanı ve sistem marjına daha fazla değer veriyorsanız, 64 GB 4 bit kullanmaya devam edebilir; yalnızca "daha yüksek hassasiyet" için 8 biti zorlamaya gerek yoktur.
BF16: "Sığabilir" ile "Kullanıma Uygun"u Karıştırmayın
BF16 metin ağırlıkları zaten yaklaşık 54 GB'dir. 64 GB'lık bir Mac teorik olarak sığdırmaya yakındır, ancak sistem, önbellek ve tampon eklendikten sonra marj çok küçük olacaktır. Gerçek uzun süreli kullanım için 96 GB ve üzerini düşünmek daha iyidir.
Çoğu insan için 4 bit ve 8 bit arasındaki deneyim farkı, "bellek yetersizliğinden takas başlatma"nın neden olduğu farktan çok daha küçüktür. Sürekli takas başladığında, hiçbir niceleme hassasiyeti yanıt hızını kurtaramaz.

Dağıtım Öncesi Hazırlık: Çip, Bellek ve Diski Kontrol Edin
İlk olarak, terminali açın ve makine bilgilerini onaylayın:
1system_profiler SPHardwareDataType
Bir Apple M serisi çip ve birleşik bellek kapasitesi görmeniz gerekir.
Ardından diski kontrol edin:
1df -h .
Kullanılabilir alanda model hacminin en az iki katı kadar boşluk bırakılması önerilir. İndirme işlemi sırasında önbellek oluşabilir, ardından taslak modeller, birden çok niceleme sürümü ve günlükler gelebilir. 4 bit için 35 GB'den, 8 bit için 60 GB'den fazla boş alan hazırlamak en iyisidir.

Bu eğitim, Python ortamını yönetmek için uv kullanır. Yüklü değilse:
1brew install uv
Bağımsız bir dizin ve sanal ortam oluşturun:
1mkdir -p qwen38-local/models2cd qwen38-local34uv venv .venv5source .venv/bin/activate
Bunun faydası yalnızca "profesyonel görünmek" değil, aynı zamanda MLX, Transformers ve diğer projeler arasındaki bağımlılıkların karşılıklı kirlenmesini önlemektir. Daha sonra kullanmak istemezseniz, bu proje dizinini silmeniz yeterlidir.
Gerekli araçları yükleyin:
1uv pip install -U huggingface_hub mlx-dspark
mlx-dspark şu anda Apple Silicon ve Python 3.10 veya üzerini gerektirir ve otomatik olarak mlx-lm, mlx-vlm ve uygun MLX bağımlılıklarını yükleyecektir.
Modeli İndirme: Tarayıcıda Dosyaları Tek Tek Tıklamayın
Büyük modeller genellikle birden çok ağırlık parçasına bölünür. Bunları tarayıcıda tek tek indirmek kesintiye, eksik dosyalara ve devam ettirmenin zor olmasına eğilimlidir. Daha güvenilir bir yöntem, resmi Hugging Face hf komutunu kullanmaktır.
4 bit İndirme Komutu
1MODEL_DIR="$PWD/models/Qwen3.8-27B-4bit"23hf download mlx-community/Qwen3.8-27B-4bit \4 --local-dir "$MODEL_DIR"
8 bit İndirme Komutu
1MODEL_DIR="$PWD/models/Qwen3.8-27B-8bit"23hf download mlx-community/Qwen3.8-27B-8bit \4 --local-dir "$MODEL_DIR"
Yeni Hugging Face Hub sürümü, ağa bağlı olarak varsayılan olarak uyarlanabilir eşzamanlılık sağlayan Xet öbekli indirmeleri kullanır. Çoğu kişinin önceki eğitimlerden eski hf_transfer yapılandırmasını kopyalamasına gerek yoktur.
Ayrıca şu "yüksek performanslı indirme" anahtarını da görebilirsiniz:
1HF_XET_HIGH_PERFORMANCE=1 hf download ...
Körü körüne etkinleştirmeyin. Hugging Face resmi belgeleri, eşzamanlılığı, arabelleğe almayı ve CPU kullanımını artırdığını ve en az 64 GB belleğe sahip yüksek bant genişlikli makineler için daha uygun olduğunu belirtir. Düşük bellekli Mac'ler, kaynak rekabeti nedeniyle aslında daha yavaş olabilir. 24 GB ve 32 GB makineler önce varsayılan ayarları kullanmalıdır.
İndirdikten sonra dizin boyutunu kontrol edin:
1du -sh "$MODEL_DIR"

İlk Çalıştırma: Önce Temel Hızı Test Edin, Hemen DFlash 2'yi Etkinleştirmeyin
Yerel modelleri dağıtırken en yaygın hata, aynı anda on optimizasyon seçeneğini açmaktır. Sonunda hızlı çalışabilir, ancak kime teşekkür edeceğinizi bilemezsiniz; yavaş çalışırsa kimi kapatacağınızı bilemezsiniz.
Doğru sıra, önce bir temel çizgi çalıştırmaktır.
Sabit bir istem hazırlayın, tercihen gerçek işinize yakın olsun. Örneğin, esas olarak kodlama için kullanıyorsanız, şunu kullanabilirsiniz:
1Lütfen Python'da son kullanma süresini ve LRU tahliyesini destekleyen iş parçacığı güvenli bir önbellek uygulayın. Önce tasarımı açıklayın, ardından tam kodu ve testleri sağlayın.
Temel çizgi testi:
1mlx-dspark generate \2 --model "$MODEL_DIR" \3 --mode baseline \4 --prompt "Lütfen Python'da son kullanma süresini ve LRU tahliyesini destekleyen iş parçacığı güvenli bir önbellek uygulayın. Önce tasarımı açıklayın, ardından tam kodu ve testleri sağlayın." \5 --max-new-tokens 600
Dört sayıyı kaydedin:
- Model yükleme süresi.
- İstem işleme hızı (Ön Doldurma tok/s).
- İlk token süresi (TTFT).
- Resmi üretim hızı (üretim tok/s).
Üretim hızı, "kelimelerin tek tek ne kadar hızlı çıktığını" belirlerken, Ön Doldurma ve TTFT, "Enter'a bastıktan sonra ne kadar beklemeniz gerektiğini" belirler. Kod Agent'ları için her tur, büyük miktarda sistem istemini ve kodu yeniden okumayı gerektirebilir, bu nedenle Ön Doldurma genellikle kullanıcı deneyimini saf üretim hızından daha fazla etkiler.

Test sırasında ayrıca "Etkinlik Monitörü → Bellek"i açarak bellek baskısını ve Takas'ı gözlemleyin. Sarı hemen bir sorun olduğu anlamına gelmez, ancak Takas yükselmeye devam ederse, bu yapılandırmanın kararlı bir marjı olmadığı anlamına gelir.
Sadece 50 token çalıştırmayın. Kısa yanıtlar, yükleme ve ısınma süresinin oranının çok yüksek olmasına neden olur ve sürekli üretim sırasında gerçek hızı göstermez. En az 400–1000 token üretilmesi önerilir.
DFlash 2, 27B'yi Nasıl Daha Hızlı Çalıştırır?
Sıradan kod çözme seridir. Qwen3.8-27B bir token üretir, tam hedef model bir kez çalışır; bir sonrakini üretir ve tekrar çalışır. 1000 token üretmek yaklaşık 1000 ardışık tur gerektirir.
DFlash 2, daha hafif bir taslak model ekler. Taslak model önce paralel olarak bir dizi aday token önerir ve ardından 27B ana modeli bunları toplu olarak doğrular. Doğru tahminler aynı anda birden çok kez kabul edilebilirken, yanlış olanlar ana model tarafından düzeltilir.
Bunu şu şekilde düşünebilirsiniz:
- Taslak model, hızlı taslak hazırlamaktan sorumlu bir asistandır.
- 27B ana model, nihai karar verme yetkisine sahip baş editördür.
- Asistan ne kadar arka arkaya doğru tahmin ederse, baş editörün o kadar az tam tur atması gerekir.

Taslak model, çıktıyı bağımsız olarak belirlemez. DFlash 2 model kartı, açgözlü kod çözme altında çıktının hedef modelle tutarlı olduğunu; rastgele örnekleme sırasında hedef modelin dağılımını koruduğunu belirtir.
Ayrıca her senaryoda hızlanmayı garanti etmez.
Görev, taslak modelin tahmin etmesini kolaylaştırıyorsa, örneğin kod tamamlama veya kararlı biçimlendirmeye sahip uzun metin, kabul uzunluğu genellikle daha yüksektir; içerik önemli ölçüde sıçrıyorsa, yanıtlar çok kısaysa veya örnekleme rastgeleliği yüksekse, taslak genellikle reddedilir ve ekstra hesaplama kazanımları tüketebilir.
DFlash 2'yi Etkinleştirme: Aracın Kendini Kalibre Etmesine İzin Verin, Başkalarının Parametrelerini Kopyalamayın
Önce projenin yerleşik kıyaslamasını çalıştırın:
1mlx-dspark benchmark \2 --model "$MODEL_DIR" \3 --modes dflash \4 --caps auto \5 --trials 3
Burada açıkça --modes dflash belirtin, çünkü kıyaslamanın mevcut sürümü varsayılan olarak DSpark ve aramayı test eder ve otomatik olarak Qwen3.8-27B'nin DFlash 2'sine geçmez. İlk çalıştırma, eşleşen taslak modeli indirecektir; --caps auto, Mac'inize, hedef modelinize ve niceleme sürümünüze göre uygun taslak sınırlarını test edecektir. M1 Max, M4 Pro ve M5 Max'in farklı bellek bant genişlikleri ve hesaplama maliyetleri vardır, bu nedenle optimum parametreler tamamen aynı olmamalıdır.
Bu nedenle, bir başkasının --max-draft 7 yazdığını gördünüz diye onu kalıcı olarak kopyalamanız önerilmez. Otomatik kalibrasyonun önce cevabı vermesine izin verin, ardından gerçek görevlerle yeniden test edin.
Otomatik modu etkinleştirmek için aynı istemi kullanın:
1mlx-dspark generate \2 --model "$MODEL_DIR" \3 --mode auto \4 --prompt "Lütfen Python'da son kullanma süresini ve LRU tahliyesini destekleyen iş parçacığı güvenli bir önbellek uygulayın. Önce tasarımı açıklayın, ardından tam kodu ve testleri sağlayın." \5 --max-new-tokens 600
Şimdi bunu temel çizgiyle karşılaştırın:
- Çıktı metni tutarlı mı?
- TTFT önemli ölçüde uzadı mı?
- Üretim tok/s ne kadar iyileşti?
- Ortalama kabul uzunluğu nedir?
- Tepe bellek ve Takas kötüleşti mi?
Bu komutlar varsayılan olarak açgözlü kod çözme kullanır, bu nedenle temel çizgi ve otomatik modun çıktı metni, çok az sayıda kayan nokta eşitlik durumu dışında tutarlı olmalıdır. Yanıtlar önemli ölçüde farklıysa, hızı tartışmadan önce istem, düşünme modu, örnekleme parametreleri ve yazılım sürümünün aynı olup olmadığını kontrol edin. Rastgele örnekleme sırasında DFlash 2 hedef dağılımı korur, ancak iki kez üretilen belirli kelimelerin aynı olacağını garanti etmez.
mlx-dspark projesinin M4 Pro 48GB üzerindeki proje kıyaslamalarında, 8 bit yaklaşık 8,4 tok/s'den 30,5 tok/s'ye yükseldi, ortalama yaklaşık 3,63 kat; 4 bit yaklaşık 14,7 tok/s'den 33,8 tok/s'ye yükseldi, ortalama yaklaşık 2,30 kat.

Bunlar, belirli sürümler, makineler, sıcak başlatma durumları ve test istemleri altındaki sonuçlardır, bir taahhüt değildir. Projenin kendi bölünmüş verileri ayrıca sohbet, kod ve matematik görevleri için hızlanma oranlarının farklı olduğunu gösterir.
Gerçekten yararlı kriter, "başkaları 30 tok/s'ye ulaştı" değil, sık kullandığınız görevlerin hızlanıp hızlanmadığıdır.
Genellikle modelin kodu değiştirmesini sağlıyorsanız, gerçek depolardaki değişiklik görevleriyle test edin; makale yazmak için kullanıyorsanız, sürekli olarak 1500 token üretin; bir Agent bağlamak istiyorsanız, tam bir araç çağrısı çalıştırın. Yalnızca gerçek görevlerin toplam süresi azalırsa DFlash 2'yi açık tutmaya değer.
Modeli Yerel Bir API Olarak Başlatma
Hem temel hem de otomatik modların kararlı olduğunu onayladıktan sonra, modeli kalıcı bir hizmet haline getirebilirsiniz. 24 GB'lık bir Mac için önce bağlamı 8K ile sınırlayın:
1mlx-dspark serve \2 --model "$MODEL_DIR" \3 --mode auto \4 --context-window 8192
32 GB, 16K ile başlayabilir; stabilizasyondan sonra kademeli olarak 32K'ya yükseltin:
1mlx-dspark serve \2 --model "$MODEL_DIR" \3 --mode auto \4 --context-window 16384
Hizmet başladıktan sonra, başka bir terminalde durumu kontrol edin:
1curl http://127.0.0.1:8080/health2curl http://127.0.0.1:8080/v1/models
/health, gerçek modu, bağlam sınırını ve bellek uyarılarını döndürecektir; /v1/models ise istemcinin doldurması gereken model kimliğini sağlayacaktır.
İki tür istemci için adresleri karıştırmayın:
1OpenAI Temel URL: http://127.0.0.1:8080/v12Anthropic Temel URL: http://127.0.0.1:80803Anthropic Mesajlar rotası: /v1/messages
Hem OpenAI hem de Anthropic uyumlu arayüzler sağlar. Özel Temel URL'leri destekleyen sohbet istemcileri, kod araçları ve Agent'lar genellikle bağlanabilir.

curl ile bir konuşma testi yapın. Aşağıdaki, 4 bit için döndürülen model kimliğini örnek olarak kullanır; 8 bit indirdiyseniz, lütfen /v1/models tarafından döndürülen gerçek değerle değiştirin:
1curl http://127.0.0.1:8080/v1/chat/completions \2 -H "Content-Type: application/json" \3 -d '{4 "model": "Qwen3.8-27B-4bit",5 "messages": [6 {"role": "user", "content": "Birleşik belleğin ne olduğunu üç cümleyle açıklayın."}7 ],8 "max_tokens": 2009 }'
Yalnızca yerel makinede kullanıldığında, 127.0.0.1 en güvenli ve en kolay seçenektir. Bazı istemciler sizi bir API Anahtarı girmeye zorlar; herhangi bir yer tutucu dize girebilirsiniz. Kimlik doğrulama etkin olmadığında, yerel hizmet bunu doğrulamaz.
LAN erişimi gerekiyorsa, ancak o zaman dinleme adresini ve güvenlik duvarını değiştirmeyi düşünün. Kimlik doğrulaması, TLS veya hız sınırlaması olmayan bir arayüzü doğrudan genel internete maruz bırakmayın. Modelin yerel olarak çalışması, hizmetin doğal olarak güvenli olduğu anlamına gelmez.
Bellek Patlamaması için Bağlam Nasıl Ayarlanır?
En güvenilir yöntem tahmin etmek değil, adım adım artırmaktır:
- 24GB, 8K ile başlar, stabilizasyondan sonra 16K'yı dene.
- 32GB, 16K ile başlar, ardından 32K'yı dene.
- 48GB / 64GB, 32K ile başlar, görevler için gerektiğinde 64K'yı dene.
- Yalnızca gerçekten ultra uzun belgeler veya büyük kod tabanları işlenirken 128K'ya yükseltmeye devam et.
Her seviyeyi yükselttiğinde aynı testi tekrarla: sabit komut, sabit maksimum çıktı, TTFT, üretim hızı, tepe bellek ve Swap'ı kaydet.
"Model 262K'yı destekliyor" bir yetenek parametresidir, varsayılan bir öneri değildir. Günlük sohbet, yazma ve çoğu kodlama görevi için 16K–32K zaten birçok senaryoyu kapsayabilir.

Daha büyük bağlam daha akıllı anlamına gelmez; çok fazla alakasız içerik doldurmak temel bilgileri seyreltebilir, modeli daha yavaş, daha pahalı hale getirebilir ve konudan sapmaya daha yatkın hale getirebilir.
Hizmet bir Ajan için kullanılıyorsa, Ön Ek Önbelleğini (Prefix Cache) korumaya öncelik ver. Kod Ajanları için sistem komutları ve araç tanımları genellikle çok uzundur; birden çok tur arasında ön ekleri yeniden kullanmak, tekrarlanan Ön Doldurma (Prefill) işlemini önemli ölçüde azaltabilir.
Düşünme modu nasıl seçilir? Testlerde en çok gözden kaçan değişken
Qwen3.8 varsayılan olarak cevap vermeden önce düşünecektir. Karmaşık kod değişiklikleri, matematiksel akıl yürütme, araştırma analizi ve çok turlu Ajan görevleri için varsayılan düşünme modunu koruyabilirsiniz; genel sohbet, çeviri, özetleme ve biçim dönüştürme için düşünme süreci genellikle yalnızca bekleme süresini ve çıktı token'larını artırır.
Düşünmeyi korumak ancak akıl yürütme derinliğini azaltmak istiyorsanız, tam komutu kullanın:
1mlx-dspark serve \2 --model "$MODEL_DIR" \3 --mode auto \4 --context-window 16384 \5 --reasoning-effort low
Görev çok doğrudansa, düşünmeyi kapatabilirsiniz:
1mlx-dspark serve \2 --model "$MODEL_DIR" \3 --mode auto \4 --context-window 16384 \5 --no-thinking
Bu iki parametre, hizmetin varsayılan davranışını belirler. İlgili alanları destekleyen istemciler, bunları istek başına geçersiz kılabilir, bu nedenle araçları bağladıktan sonra istemcinin sessizce kendi varsayılanına dönüp dönmediğini kontrol edin.
Tüm görevler için uygun tek bir cevap yoktur. "Düşük" tur başına daha hızlı görünebilir, ancak yetersiz analiz nedeniyle Ajan'ın tekrar tekrar denemesine neden olarak genel görevi yavaşlatabilir. En güvenilir yöntem hala tam görevin toplam süresini hesaplamaktır, sadece ilk tur cevaplarını karşılaştırmak değil.
Unutulmaması gereken bir kural: temel (baseline) ve DFlash 2 A/B testi yaparken düşünme modu aynı olmalıdır. Birinde düşünme açık, diğerinde kapalıysa, token sayısı ve görev yolu değişir ve hesaplanan hızın karşılaştırmalı bir anlamı olmaz. Örnekleme parametreleri, komut, maksimum çıktı uzunluğu, bağlam ve soğuk/sıcak başlatma durumları da tutarlı olmalıdır.
En Kısa Dağıtım Yolu: Gerekli Komutları Bir Araya Sıkıştırmak
Daha önce tartışılan, her adımın neden yapıldığıydı. İlkeleri zaten anlıyorsanız ve sadece hızlıca tekrarlamak istiyorsanız, aşağıdaki sırayla çalıştırabilirsiniz. Örnek, 4-bit ve 8K bağlam seçer, 24GB Mac'te muhafazakar bir başlangıç için uygundur; indirme ve kıyaslama için gerçek süre ağ ve çipe bağlıdır ve "en kısa"ya dahil değildir:
1brew install uv23mkdir -p qwen38-local/models4cd qwen38-local5uv venv .venv6source .venv/bin/activate78uv pip install -U huggingface_hub mlx-dspark910MODEL_DIR="$PWD/models/Qwen3.8-27B-4bit"11hf download mlx-community/Qwen3.8-27B-4bit \12 --local-dir "$MODEL_DIR"1314mlx-dspark generate \15 --model "$MODEL_DIR" \16 --mode baseline \17 --prompt "Birleşik belleği açıklayın ve yerel büyük modelleri çalıştırmak için üç öneri verin." \18 --max-new-tokens 4001920mlx-dspark benchmark \21 --model "$MODEL_DIR" \22 --modes dflash \23 --caps auto \24 --trials 32526mlx-dspark serve \27 --model "$MODEL_DIR" \28 --mode auto \29 --context-window 8192
Bu komut setinin amacı "önce güvenle çalıştırmak", donanımı sonuna kadar zorlamak değil. Başarıyla çalıştırdıktan sonra, bellek marjına göre sırayla 16K ve 32K bağlamları deneyin veya 4-bit deposunu 8-bit ile değiştirin. Test verilerinin anlamlı olması için her seferinde yalnızca bir değişkeni değiştirin.
Hizmet ayağa kalktıktan sonra, üçüncü taraf istemcileri bağlamak için acele etmeyin; önce /health ve /v1/models adreslerine erişin. Birincisi, bellek uyarısı olmadığını ve beklenen modun gerçekten etkinleştirildiğini, ikincisi ise model kimliğini onaylar. Ardından yaklaşık 400 token'lık uzun bir cevabı tamamlayın ve Etkinlik Monitörü'ndeki bellek basıncını ve Swap'ı gözlemleyin. Dördü de normalse, Base URL'yi günlük araçlarınıza girin. Bu birkaç dakikalık kontrol, "istemci bağlanamıyor" ve "bir süre çalıştıktan sonra tüm makine yavaşlıyor" sorunlarının çoğunu ortadan kaldırabilir.
Ertesi Gün Nasıl Yeniden Başlatılır?
Sanal ortam ve MODEL_DIR yalnızca geçerli terminal oturumunda geçerlidir. Ertesi gün terminali yeniden açtığınızda, yeniden indirmenize veya yeniden kurmanıza gerek yoktur; sadece dizine geri dönün, ortamı etkinleştirin ve yolu yeniden bildirin:
1cd qwen38-local2source .venv/bin/activate3MODEL_DIR="$PWD/models/Qwen3.8-27B-4bit"45mlx-dspark serve \6 --model "$MODEL_DIR" \7 --mode auto \8 --context-window 8192
Araçları yükseltirken, sanal ortam içinde çalıştırın:
1uv pip install -U huggingface_hub mlx-dspark
Yükseltmeden sonra, uzun süreli hizmete devam etmeden önce modelin hala yüklenebildiğini onaylamak için kısa bir temel (baseline) ve /health çalıştırın. Çıkarım araçları hızla güncellenir ve eski sürümlerde işe yarayan parametreler her zaman en iyisi olmayabilir, bu nedenle kendi temel kayıtlarınızı tutmak değerlidir.
LAN Erişimi: En Azından Önce Bir Kilit Ekleyin
Varsayılan 127.0.0.1'e yalnızca yerel makine erişebilir. Aynı Wi-Fi üzerindeki başka bir Mac veya iPad'in onu çağırmasını istiyorsanız, tüm ağ kartlarını dinleyebilir ve aynı anda bir API Anahtarı ayarlayabilirsiniz:
1mlx-dspark serve \2 --model "$MODEL_DIR" \3 --mode auto \4 --context-window 16384 \5 --host 0.0.0.0 \6 --api-key "Lütfen yeterince uzun rastgele bir dize ile değiştirin"
İstemci, 127.0.0.1'i bu Mac'in LAN IP'si ile değiştirir ve isteğe Authorization: Bearer your_key gönderir. Ayrıca macOS güvenlik duvarını yalnızca güvenilir ağların 8080 numaralı bağlantı noktasına erişmesine izin verecek şekilde kontrol edin.
Bu hala sadece bir LAN çözümüdür. İnternet üzerinden erişmek için ayrıca TLS, ters proxy, erişim kontrolü ve hız sınırlaması gerekir; 8080'i doğrudan yönlendiricide eşlemeyin. En kolay yol, güvenilir bir VPN aracılığıyla ev ağına dönmek ve ardından yerel hizmete erişmektir.
Yaygın Sorun Giderme
1. Model yüklenirken sistem tarafından yarıda öldürüldü
Öncelikle doğru niceleme sürümünü seçtiğinizi onaylayın. 24GB ve 32GB, 8-bit'i yanlışlıkla indirmemeli ve kesinlikle BF16'ya dokunmamalıdır. Docker, sanal makineler, çok sayıda tarayıcı sekmesi ve diğer yerel modelleri kapatın, ardından 4-bit'i tekrar deneyin.
2. Çalışabiliyor ancak tüm Mac çok yavaşlıyor
Swap'ı görmek için Etkinlik Monitörü'nü açın. Swap yükselmeye devam ederse, önce bağlamı kısaltın, ardından DFlash 2'yi kapatın. Sadece model sürecinin kendi sayılarına bakmayın, çünkü birleşik bellek basıncı tüm sistem tarafından birlikte oluşturulur.
3. DFlash 2 aslında daha yavaş
Karşılaştırma koşullarının tutarlı olduğunu onaylayın: aynı komut, aynı çıktı uzunluğu, aynı düşünme modu, aynı soğuk başlatma veya sıcak başlatma. Kısa cevaplar, spekülatif kod çözme kazançlarını değerlendirmek için uygun değildir. Üçten fazla tur çalıştırın ve gerçek uzun görevlerle test edin.
Hala daha yavaşsa, mevcut görev kabul oranının düşük olduğu veya taslak modelin getirdiği ekstra belleğin sistemin takas yapmaya başlamasına neden olduğu anlamına gelir. Kapatmak bir başarısızlık değildir; istikrarlı bir temel (baseline) zaten etkili bir çözümdür.
4. İlk token çok yavaş, ancak sonraki üretim iyi
Bu bir Ön Doldurma (Prefill) darboğazıdır. Girişin çok uzun olup olmadığını, her turda çok sayıda alakasız dosyanın tekrar tekrar doldurulup doldurulmadığını ve Ön Ek Önbelleğinin (Prefix Cache) isabet edip etmediğini kontrol edin. Ajanlar için, komut uzunluğunu optimize etmek, üretim tok/s'yi kovalamaktan genellikle daha etkilidir.
5. İndirme hızı çok yavaş veya kesintiye uğradı
Önbelleği ve devam ettirmeyi kullanmak için aynı hf download komutunu yeniden çalıştırmanız yeterlidir. Tamamlanmamış dizini silip sıfırdan başlamayın. Hugging Face erişimi kararsız olduğunda, resmi olarak önerilen ModelScope yolunu düşünün.
6. Görselleri tanımasını istiyorum
"Modelin görsel yeteneği var" ile "mevcut hizmet görsel girişi destekliyor" arasında ayrım yapın. Bahsedilen MLX deposu görsel bileşenleri korur, ancak mlx-dspark şu anda bir metin çıkarım hizmeti sağlar; ona gönderilen görsel içerik modele girmez.
Görselleri test etmek için geçici olarak DFlash 2'yi atlamanız ve bunun yerine mlx-vlm kullanmanız gerekir:
1uv run python -m mlx_vlm.generate \2 --model "$MODEL_DIR" \3 --max-tokens 200 \4 --temperature 0 \5 --prompt "Lütfen bu görseli tanımlayın." \6 --image "/absolute/path/example.jpg"
Görsel giriş, işlem karmaşıklığını ve bellek kullanımını artırır. Birincil kullanım kod, yazma ve Ajanlar ise, önce metin zincirini stabilize edin, ardından görsel görevleri ayrı ayrı test edin.
Başarısız Olma Olasılığı En Düşük Dağıtım Sırası
Bir yürütme kontrol listesi:
- Apple Silicon Mac olduğunu onaylayın.
- 16GB için 27B'den vazgeçin; 24GB/32GB için 4-bit seçin; 48GB/64GB için 8-bit'i düşünün.
- Model için yeterli disk alanı ayırın ve bağımsız bir ortam oluşturmak için
uvkullanın. - Tam depoyu indirmek için
hf downloadkullanın; tarayıcıda ağırlık dosyalarını tek tek tıklamayın. - Önce
--mode baselineile sabit bir komut çalıştırın, yükleme, Ön Doldurma, TTFT, üretim hızı ve belleği kaydedin. - 8K, 16K veya 32K bağlamla başlayın; doğrudan tam 262K'yı açmayın.
- Aracın makinenize göre kalibrasyon yapmasına izin vermek için
mlx-dspark benchmark --modes dflash --caps auto --trials 3çalıştırın. - Temel (baseline) ve auto'yu tam olarak aynı gerçek görevle karşılaştırın.
- Yalnızca hız önemli ölçüde arttığında ve bellek basıncı sabit olduğunda DFlash 2'yi uzun süreli etkinleştirin.
- Son olarak, yerel API'yi başlatın ve kod araçlarını, bilgi tabanlarını veya Ajanları bağlayın.
Yerel dağıtımın önemi sadece API ücretlerinden tasarruf etmek değildir.
Qwen3.8-27B, Mac'inizde her an çağrılabilen bir yerel hizmet haline geldiğinde, hassas kodları ve belgeleri kendi makinenizde tutabilir, materyalleri çevrimdışı işleyebilir ve bunu otomasyon görevlerine, kişisel bilgi tabanlarına ve uzun süreli Ajan iş akışlarına bağlayabilirsiniz.
Benim kendi geçer notum basittir: yaygın görevler takas yapmaz, cevap hızı tolere edilebilir ve ertesi gün aktif olarak açarım. Dağıtımın gerçekten başarılı olması ancak bu üçü karşılandığında mümkündür.
Eğer çalıştırmayı başardıysanız, "çip modeli, birleşik bellek, 4/8-bit, bağlam uzunluğu, temel ve DFlash 2 tok/s" bilgilerinizi yorumlarda paylaşmaktan çekinmeyin. Yeterli veri olursa, bunu bir Mac yapılandırma test tablosu halinde düzenlemeye devam edebilirim.
Dağıtımı hala zahmetli buluyorsanız
Bu makalede yer alan kurulum komutlarını, model indirmelerini, hız testlerini, DFlash 2 hızlandırmasını, yerel API başlatmayı ve yaygın sorun gidermeyi, doğrudan takip edilebilir bir dağıtım kontrol listesi halinde düzenledim:
1https://github.com/wdwxw/macRunqwen38_27b_install
Bunları kendiniz sırayla kopyalayıp çalıştırabilir veya bu GitHub deposunu doğrudan Codex veya Claude Code'a verip README.md'yi okumasını, Mac yapılandırmanızı kontrol etmesini ve kontrol listesine göre kurulumu tamamlamasını sağlayabilirsiniz. Bu şekilde uzun bir makaleden komutları tekrar tekrar bulmak zorunda kalmazsınız ve sonraki güncellemeler ve sorun giderme daha kolay olur.





