CMA4-20M

Evaluated training checkpoint from a 20.21M-parameter Post-CMA (post-conditioned Channel-Mixing Attention) generalist language model using the third-party BananaMind 8,192-token digit-aware byte-level BPE tokenizer. It has no place embeddings, role embeddings, or inference-time equation detection. It was recorded at step 50,000 with WikiText normalized BPB 1.1634.

Loading

This is a custom Transformers architecture. trust_remote_code=True is required because stock Hugging Face model classes do not implement CMA or this model's exact rotary convention.

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

repo = "User01110/cma4-20M"
tokenizer = AutoTokenizer.from_pretrained(repo, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    repo, trust_remote_code=True, dtype="auto"
)

Checkpoint tensors are stored in bfloat16. Pass dtype=torch.float32 when an FP32 runtime is required; every stored BF16 value widens exactly to FP32, though the pre-export FP32 master-weight mantissa cannot be reconstructed.

Architecture

  • Parameters: 20,212,355, with tied input/output embeddings
  • Weights: native bfloat16 safetensors (model.safetensors); no .bin weights
  • Runtime: PyTorch 2.5+ native SDPA for token attention and compiled Post-CMA routing
  • Tokenizer: BananaMind/BananaMind-2-Mini at revision 84a0afb98db902caf07a1e949676d9fef9e5cf9e
  • Vocabulary: 8,192 third-party tokens
  • Parameter allocation: 2,752,512 tied embedding parameters and 17,459,843 non-embedding parameters
  • Context: 1,024 tokens
  • Standalone prompt tokenization automatically prepends the native BOS token
  • Width/layers: 336 / 13
  • Token-attention heads: 6 query, 2 KV
  • CMA: 14 slots of 24 channels, 3 routing heads, expansion 3
  • Ordering: Post-CMA (SwiGLU activation -> channel routing -> output projection)
  • Each source slot first forms a complete SwiGLU feature, u = W_v x * SiLU(W_g x)
  • Content-dependent softmax routing mixes those completed features across channel slots, then W_o projects the result
  • CMA has no scalar route gate or fallback blend: CMA(x) = W_o(A(x, u) u)
  • Contiguous-half RoPE without scaling
  • No task-specific model features or inference-time benchmark handling

Tokenizer provenance

The tokenizer and its 8,192-token vocabulary were not created or owned by the CMA model author. They are reused from the public BananaMind/BananaMind-2-Mini repository at the exact revision listed above, whose repository metadata identifies BananaMind as the publisher and Apache-2.0 as the license. No claim of tokenizer ownership beyond that public attribution is made here. The exported copy preserves its vocabulary, merges, normalization, and digit-aware pre-tokenization; CMA only configures the existing BOS token to be prepended automatically and sets the model context length.

Optimization

  • Training budget: 31,457,280,000 tokens over 60,000 updates
  • Effective batch: 524,288 tokens per update
  • Runtime split: 2 deterministic, disjoint data shards of 30,000 updates; exact FP32 optimizer/RNG continuation between sessions
  • Learning rate: 1,000-update linear warmup to 2.0e-03, followed immediately by smooth cosine decay
  • The final configured update is positive; update 60,001 is exactly zero
  • Official PyTorch Muon with match_rms_adamw for hidden matrices; AdamW for embeddings and remaining parameters

Training mixture

  • DCLM-Edu score 3+ prefiltered: 45%
  • Ultra-FineWeb English: 30%
  • Wikipedia English: 15%
  • FineMath 4+: 8%
  • Cosmopedia v2: 2%

DCLM-Edu score 3+ and Ultra-FineWeb contribute filtered general English web text, Wikipedia adds grounded encyclopedic material, FineMath-4+ supplies mathematical reasoning, and Cosmopedia supplies synthetic explanations as ordinary causal-language-model text. There are no benchmark labels or benchmark-specific preprocessing. All five sources are streamed corpora with fixed shares.

Zero-shot evaluation at step 50,000

The four lm-eval tasks use normalized accuracy when supplied by lm-eval 0.4.12, with native bfloat16 weights and float32 likelihood softmax. ArithMark-3 uses its official primary acc_norm metric: mean continuation-token log likelihood, with context and continuation tokenized separately and no injected BOS. Autocast is not used for evaluation. The four lm-eval benchmark contexts use the tokenizer's native BOS behavior.

Open SLM Intelligence Index: 11.51
Open SLM Average: 38.89%

Benchmark Accuracy
HellaSwag 29.02%
ARC-Easy 41.33%
ARC-Challenge 23.63%
PIQA 58.76%
ArithMark-3 (acc_norm) 35.30%

The Average equally weights HellaSwag, combined ARC (the mean of ARC-Easy and ARC-Challenge), PIQA, and ArithMark-3. The Intelligence Index first maps random chance to 0 and perfect accuracy to 100, then weights HellaSwag, combined ARC, and PIQA at 1.0 and ArithMark-3 at 0.75, matching Open SLM Leaderboard revision b7781f0efb9df61912f94cf0e196ed32becded83.

WikiText-103 validation at this step: loss 2.8277, perplexity 16.91, normalized BPB 1.1634 over 326,703 scored tokens and 1,145,591 normalized UTF-8 bytes, using one initial BOS, 1,024-token windows, and a 512-token stride.

Downloads last month
59
Safetensors
Model size
23M params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Datasets used to train User01110/cma4-20M