* segment sizes marked with an asterisk are estimates pending a measured run
Estimated per-node footprint, weights + KV sharded across the Spark (tensor parallel). Overhead ~8 GB/node; KV at FP16.
one MoE layer · 128 experts, 6+1 fire per token
each expert ≈ 10M params
resident: 23 MoE layers × 128 experts × 10M ≈ 29.4B
active/token: 23 × 6 × 10M ≈ 1.4B experts
+ 2.2B always-on dense (attention, embeddings, shared stack) = 3.6B active
Optimize
32B params, ~63 GB at bfloat16 — fits on one Spark as-is.
Make it fit
Get the weights (and headroom for KV) inside the 128 GB pool — the hard gate.
Lossless compression
BF16 weights entropy-code ~30% smaller bit-exact — smaller downloads and less bandwidth per token, no quality question at all.
Make it fast
Once it fits: fewer bytes per token and fewer decode steps against 273 GB/s.
Use its MTP heads
Ships 1 multi-token-prediction layer(s) — self-speculative decode with no separate draft model; check vLLM/SGLang support for this arch.
Prune experts for speed
Fewer experts ⇒ smaller working set ⇒ better cache/page behavior, even when it already fits.
Tame the KV cache
At 262144 tokens the KV cache alone is ~2 GB at FP16; quantize or evict.
Make it yours
Change what the model does — adapt, edit, or steer it — independent of size.
Fine-tune it
LoRA/QLoRA adapts behavior on one Spark without touching the base weights.
Edit or steer it
One-shot weight math — no gradients, no corpus.