Referans kod — hrsvrn/mamba3-norm-free
Kaynak: https://github.com/hrsvrn/mamba3-norm-free (normalisation-free Mamba-3 projesi, "lossfun").
HF modelleri: hrsvrn/mamba3-180m-finewebedu-10B (+ dypower-p1, dylinear varyantları).
İndirilme: 2026-06-04. Bu klasör, kendi 180M EN+TR modelimizi kurarken temel alacağımız dosyalar.
Bu klasördeki dosyalar
| Dosya | Repo yolu | Ne işe yarar |
|---|---|---|
model.py |
pretraining/model.py |
Model assembly — Mamba3LM + build_model_from_config. Mamba3 mixer'ı prenorm Llama-stack'e bağlar. Bizim v1 model iskeletimiz. |
mamba3_minimal.py |
mamba3-minimal/mamba3.py |
Saf-PyTorch tek-dosya Mamba-3 (Triton GEREKMEZ; CPU/MPS/CUDA). SISO+MIMO, chunked SSD, inference cache. Yerel smoke test + anlama + tam kontrol için ideal. |
train_180m.py |
pretraining/train_180m.py |
Komple eğitim harness'i: cosine/linear/constant LR, AdamW param grupları, HubPusher (async HF push), --resume, DDP, torch.compile. Bizim Faz 3 altyapımızın çoğu burada hazır. |
mamba3_180m.yaml |
pretraining/configs/mamba3_180m.yaml |
180M SISO config + param muhasebesi yorumları. |
tokenizer.py |
src/nfmamba/data/tokenizer.py |
HF AutoTokenizer wrapper (onlar gpt2/Llama-3.1). Biz kendi 48K EN+TR SentencePiece'imizi aynı arayüzle saracağız. |
İki çalışan kod yolu (kritik — #1 riskimiz kapandı)
mamba-og/fork (repo'da; buraya indirilmedi, ~96 dosya): resmistate-spaces/mamba'nın Mamba-3 eklenmiş fork'u.mamba_ssm/modules/mamba3.py+ Triton (ops/triton/mamba3/: siso_fwd/bwd/step) + cute + tilelang (MIMO) kernelleri +mha.py(attention!). Hızlı, Colab/CUDA için.model.pybunusys.path'e ekleyipfrom mamba_ssm.modules.mamba3 import Mamba3ile kullanıyor → yani pip paketi değil, vendored fork.mamba3_minimal.py: tek dosya, saf PyTorch, taşınabilir. Yavaş ama her yerde çalışır. Önce bununla anla + yerel smoke; sonra Colab'da fork'un Triton kernel'ine geç.
Doğrulanan 180M param muhasebesi (config yorumundan)
Mamba-2 "125M" scaling-law şekli, 128K Llama vocab ile ~185M'e şişirilmiş:
- embedding (tied): 98.5M ← 128256 × 768
- 12 × mixer: ~45M (≈3.75M/mixer; in_proj 768×3352 + out_proj 1536×768 + BCNorm/bias)
- 12 × SwiGLU MLP: ~41.5M (≈3.46M/MLP; 3×768×1500)
- norm'lar: ~0.04M
- Toplam ~185M; ama embedding %53! Gerçek sequence-mixing yalnız ~86M.
- d_inner=1536 (expand2×768), n_heads=24 (1536/64), ngroups=1, d_state=128, head_dim=64.
Bizim 180M EN+TR'ye uyarlama (somut)
- vocab 128256 → 48000 (EN+TR SentencePiece). embedding 98.5M → ~36.9M. Kurtulan ~62M'i gerçek modele ver.
- Derinliği artır:
7.2M/katman (mixer+MLP). 180M hedefi için 37M embed + ~143M katman → **20 katman** (onların 12'sine karşı; ~1.7× daha fazla mixing kapasitesi). Param-sayımMamba3LM.num_params()ile doğrula. - GQA 5:1 hibrit ekle:
model.py:_build_block'ta her 6. katmanınmixer_cls'iniMamba3yerine fork'unmamba_ssm/modules/mha.py'sindeki MHA (GQA destekli) yap. İlk/son katman Mamba kalsın. - v1 = SISO (
is_mimo=false), kanıtlanmış baseline. v1.5 = MIMO (is_mimo=true, mimo_rank=4— sadece config flag). - Tokenizer:
tokenizer.pyarayüzünü koru, AutoTokenizer yerine kendi 48K SentencePiece'imizi yükle. - Eğitim:
train_180m.py'yi kullan; cosine yerine WSD içinconstant(stable) +linear(decay) parçalarını birleştir (zaten var).HubPusher= bizim async HF push'umuz.--resume= Colab session resume. - Veri: onların
pretraining/data.py+src/nfmamba/data/(packing, dataloader) HF streaming; biz EN=FineWeb-Edu + TR=FineWeb2-HQ mixture ekleyeceğiz.
Kullanamayacağımız
- Ağırlıklar (warm-start): vocab/dil farklı + İngilizce-only. Reçeteyi/kodu kopyalıyoruz, ağırlığı değil.
dypower/dylinear/DyT vb. stabilizer'lar: tezlerinin ablasyonu (BCNorm-free); biz baselinebcnorm=trueile başlıyoruz.