CMA2-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 20,000 with WikiText normalized BPB 1.1870. Its report-only Open SLM Leaderboard-style average is 36.75%.

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/cma2-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: 15,728,640,000 tokens over 30,000 updates
  • Effective batch: 524,288 tokens per update
  • Learning rate: 1,000-update linear warmup to 2.0e-03, followed immediately by smooth cosine decay
  • The final configured update is positive; update 30,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 is consumed from a revision-pinned derivative whose rows are already prefiltered to edu_int_score >= 3, so training performs no rejection filtering. Ultra-FineWeb contributes quality-filtered general English web text, Wikipedia adds grounded encyclopedic material, FineMath-4+ supplies mathematical reasoning, and Cosmopedia supplies a small synthetic educational component. There are no benchmark labels or benchmark-specific preprocessing. All five sources are streamed corpora with fixed shares.

Zero-shot evaluation at step 20,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 uses the same precision policy and its official raw continuation log-likelihood-sum rule. Autocast is not used for evaluation. Every independent benchmark context starts with the native BOS token.

Benchmark Accuracy
HellaSwag 29.11%
ARC-Easy 40.53%
ARC-Challenge 23.21%
PIQA 57.56%
ArithMark-2 28.48%
ARC mean 31.87%
Open SLM Leaderboard-style average 36.75%

The average is (HellaSwag + mean(ARC-Easy, ARC-Challenge) + PIQA + ArithMark-2) / 4, matching the Open SLM Leaderboard formula.

WikiText-103 validation at this step: loss 2.8850, perplexity 17.90, normalized BPB 1.1870 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
-
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/cma2-20M