--- license: apache-2.0 language: - en library_name: transformers pipeline_tag: text-generation datasets: - HuggingFaceFW/fineweb-edu tags: - causal-lm - base-model - bananamind2-nano - muon - fineweb-edu - optimizer-comparison - custom-code - trust-remote-code --- # BananaMind 2 Nano Muon FineWeb-Edu Test This experimental base model uses the exact **BananaMind 2 Nano** architecture and tokenizer. It was trained from scratch with stock PyTorch Muon on the hidden matrices and AdamW on the tied embedding and normalization weights, using only streamed FineWeb-Edu data for **24,999,591,936 custom-tokenizer tokens**. ## Architecture | Field | Value | |---|---:| | Parameters | 9,968,128 | | Layers | 10 | | Hidden size | 256 | | Intermediate size | 768 | | Query heads | 4 | | KV heads | 2 | | Head dimension | 64 | | Context | 4,096 | | Vocabulary | 8,192 | | Embeddings | Tied | | Attention | GQA, pre-RoPE QK norm | | MLP | SwiGLU | | Position encoding | RoPE, theta 100,000 | ## Training | Field | Value | |---|---:| | Dataset | `HuggingFaceFW/fineweb-edu` / `sample-100BT` | | Dataset revision | `87f09149ef4734204d70ed1d046ddc9ca3f2b8f9` | | Data access | Streaming | | Hidden-matrix optimizer | PyTorch Muon (`adjust_lr_fn="original"`) | | Muon peak learning rate | 0.05 | | Muon momentum | 0.95, Nesterov | | Muon Newton-Schulz steps | 5 | | Embedding/norm optimizer | AdamW | | AdamW peak learning rate | 0.003 | | AdamW betas | (0.9, 0.95) | | Global batch | 132 sequences | | Tokens per optimizer step | 540,672 | | Optimizer steps | 46,238 | | Warmup | 1,750 steps | | Schedule | Warmup-stable-decay, final 15% cosine cooldown | | Weight decay | 0.1, then 0.01 after 12,000,000,000 tokens | | Precision | bfloat16 autocast, float32 master weights | | Hardware | 8 x NVIDIA RTX PRO 6000 Blackwell Server Edition | | Seed | 1337 | The original Nano effective batch was 12 micro-batches x 11 accumulation steps = 132 sequences. This distributed run preserves that exact global batch. Ranks receive 16 or 17 sequences and scale their local mean losses so DDP's averaged gradient is the true 132-sequence global mean. ## Usage ```python import torch from transformers import AutoModelForCausalLM, AutoTokenizer model_id = "Banaxi-Tech/muon-model-test" tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained( model_id, trust_remote_code=True, dtype=torch.bfloat16, device_map="auto", ) ``` This is a base model, not an instruction-tuned chat model.