MXFP4 ile 4-Bit Devrimi: İnternetsiz ChatGPT

Microscaling FP4 ile 20B’yi 16 GB’a sığdır, 120B’yi tek GPU’da dene.

Featured image

TL;DR


1) Problem neydi?

Büyük modeller normalde BF16 / FP16 gibi 16-bit formatlarla tutuluyor. Bu şu anlama geliyor:

Bu, ev tipi donanımı tamamen oyunun dışına atıyordu.


2) MXFP4 fikri ne yapıyor?

MXFP4 diyor ki:

  1. Weights’i küçük bloklara ayır (örnek: 32 değerlik blok).
  2. Her blok için tek bir scale factor seç.
  3. O bloktaki her weight’i bu scale factor ile normalize et ve FP4’e (4-bit floating point) quantize et.
  4. Saklarken: sadece FP4 değerleri + o bloğun scale factor’ü tutuluyor.
  5. inference sırasında geri açarken: FP4 değer × scale factor ≈ orijinal weight.

Bu yaklaşıma microscaling deniyor. Yani “tek tek her elemana değil, block bazında ölçek uygulama”.

Bunun olayı şu:


3) Teknik detay: FP4 tarafı

MXFP4, FP4 formatını (E2M1 gibi varyantlar) kullanıyor:

Tek başına FP4 çok agresif (sadece 16 possible value). Bu tek başına kullanılırsa çoğu layer için aşırı bilgi kaybı yaratır.

Ama block başına ayrı scale factor tutunca bu sınırlı 4-bit değerler pratikte çok daha geniş bir numeric range’i kapsayabiliyor. Yani sen aslında “FP4 + scale factor” kombinasyonuyla efektif olarak “daha zengin bir temsil” elde etmiş oluyorsun.

Bu yüzden MXFP4, “INT4 nicemledim bitti” yaklaşımından farklı: burada block-scale’lenmiş FP4 var, tek global scale yok.


4) Training tarafı niye zor ama önemli?

Eskiden düşük bit quantization (4-bit, 3-bit vs.) genelde sadece inference sonrası yapılırdı. Yani model FP16 ile eğitilir, sonra publish ederken sıkıştırılırdı.

OpenAI tarafında kritik kırılma şu oldu:

Bunu mümkün kılmak için birkaç trik kullanılıyor:

Bu sayede model tamamen çökmeden 4-bit’e yaklaşabiliyor.


5) MXFP4 vs INT4 vs FP8 (mental model)

Kısaca: MXFP4 = “4-bit footprint + FP8’e yakın davranış”

Başlık INT4 (uniform) MXFP4 (blok-ölçek) FP8
Bellek ★★★★ (çok iyi) ★★★★ (çok iyi) ★★☆
Dinamik aralık ★ (zayıf) ★★★ (iyi) ★★★★
Doğruluk ★ (riskli) ★★★ (moe-odaklı stabil) ★★★
Donanım desteği Geniş Yeni nesil (FP4 hızlandırmalı) Geniş

6) Donanım tarafı (gerçek dünya)

Burada kritik konu GPU mimarisi.

Şunu bilmek önemli: MXFP4 future-proof, yani tasarım “ileride bu donanım zaten FP4’ü doğrudan koşacak” varsayımıyla geliyor. Bugün her makinede mucize bekleme.


7) Model boyutu — sayılar

Bu rakamlar neden hype yaratıyor?

Bu ne demek pratikte? Artık 20B sınıfı bir modelle kendi makinen üzerinde inference yapabilirsin. Cloud bağımlılığı azalıyor. Bu, hem gizlilik (local inference) hem gecikme kontrolü (senin network’ün dışında kimse yok) açısından güzek.


8) LM Studio ile GPT-OSS-20B (MXFP4) nasıl ayağa kalkar?

Burası “ben bunu masaüstümde denemek istiyorum” kısmı.

8.1 Kurulum

  1. LM Studio’yu indir (Win/macOS/Linux).
  2. Soldan “Discover” tabına gir

Sistem tarafı:

8.2 Modeli seçmek

  1. Arama çubuğuna: gpt-oss-20b yaz.
  2. OpenAI / gpt-oss-20b model card’ına gir. Burada genelde birden fazla checkpoint görürsün:

    • MXFP4 / FP4 tarzı build (OpenAI’nin yayınladığı gibi).
    • GGUF quantized varyantlar (llama.cpp / MLX uyumlu).  * Eğer macos kullanıyorsanız kesinlikle MLX versiyonu indiriniz (MLX konusu üzerine yazmak istediğim bir konu, belki yakında onunla ilgili de bir yazı gelebilir).

8.3 Modeli yüklemek ve sohbet etmek

Bu noktada aslında local inference yapıyorsun. Yani prompt’un makineden çıkmıyor.

8.4 Local API (OpenAI-compatible endpoint)

LM Studio bir OpenAI-compatible endpoint açabiliyor (default genelde http://localhost:1234/v1 gibi). Sen bunu kendi kodundan sanki OpenAI API’siymiş gibi çağırabiliyorsun.

cURL örneği:

curl http://localhost:1234/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-oss-20b",
    "messages": [
      {"role": "user", "content": "MXFP4'ü iki cümlede anlat."}
    ],
    "temperature": 0.3
  }'

Python örneği:

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:1234/v1",
    api_key="not-needed"
)

resp = client.chat.completions.create(
    model="openai/gpt-oss-20b",
    messages=[{"role": "user", "content": "quantization block-scale mantığı nedir?"}],
    temperature=0.3,
)

print(resp.choices[0].message.content)

Bu kısım şu işe yarıyor:

Bu developer için aşırı rahat: mevcut OpenAI client kodunu neredeyse aynen kullanıyorsun, sadece base_url değişiyor.


10) Final

MXFP4 güzel bir pazarlama adı değil; ciddi bir mimari fikir:

Bu kombinasyon, büyük dil modellerini “cloud-only oyuncak” olmaktan çıkarıp masaüstüne indiriyor.

Ve güzel tarafı şu: LM Studio gibi araçlarla GPT-OSS-20B’yi gerçekten kendin ayağa kaldırıp deneyebiliyorsun. Bu, sadece okumak değil; gerçekten elini modele sürmek demek.