howtospark
models / Qwen/Qwen3.5-122B-A10B

Qwen/Qwen3.5-122B-A10B
125B params~13B activebfloat16MoE 256×8GQA 32:2262K ctxmultimodalapache-2.0
Sparks
~261 GB
~199 GB
~136 GB
~74 GB
~47 GB
~49 GB
~45 GB
110 usable
REAP dialno pruning · 256 experts
Spec decode
Context33K / 262KKV
On the Sparks — 1× · 2-bit experts + NVFP4 dense · 33K ctx · FP16 KV~696K ctx fits usable
spark
65 GB free
Expert planes29* GB2-bit
110 usable
45* / 110 GB
41% of usable
Expert planesDense weightsKV cacheActivations + graphsOS reserve

* 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.

layer map
48 layerslinear attention×36full attention×12
in
out

one MoE layer · 256 experts, 8 fire per token

each expert ≈ 9M params

resident: 48 MoE layers × 256 experts × 9M 116.0B

active/token: 48 × 8 × 9M 3.6B experts

+ 9.1B always-on dense (attention, embeddings, shared stack) = 12.7B active

Optimize
Verdict

125B params, ~250 GB at bfloat16 — doesn't fit natively, but ~63 GB at 4-bit does.

Make it fit

Get the weights (and headroom for KV) inside the 128 GB pool — the hard gate.

Quantize to 4-bit

At 250 GB native it doesn't fit the 110 GB budget; 4-bit weight-only quantization gets it to ~63 GB (params include vision/audio towers).

250 GB → ~63 GB

Make it fast

Once it fits: fewer bytes per token and fewer decode steps against 273 GB/s.

Add a speculative decoder

Decode is bandwidth-bound at ~42.8 tok/s ceiling; a trained EAGLE-style draft multiplies tokens per weight-read.

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 ~26 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.