Qwen3-30B-A3B
Fields
models/qwen3-30b-a3bNotes
CONTEXT SCALING: null is a VERIFIED value, checked against config rather than left blank. config.json (Qwen/Qwen3-30B-A3B) declares rope_scaling null, rope_theta 1000000, max_position_embeddings 40960. Verified native. The small-active-count MoE case that makes Qwen3 popular for single-node serving. Vendor: 30.5B total / 3.3B activated; safetensors total 30.53B; our config arithmetic gives exactly 30.5B total / 3.3B active. kv_cache_bytes_per_token = 48 layers x 4 kv_heads x head_dim 128 x 2 x 2 bytes = 48 x 4 x 128 x 2 x 2 = 98,304 B/token (96 KiB). GQA, not MLA. MoE: 128 experts, 8 per token, NO shared expert (shared_expert false - Qwen's MoE does not carry DeepSeek's always-on shared expert, so active params are exactly the 8 routed). first_k_dense_replace is absent, i.e. all 48 layers are MoE. hidden 2048 with moe_intermediate_size 768 - a narrow, many-expert design. gqa_ratio 8 (32 heads / 4 kv heads). Context 40960, rope_theta 1000000. Apache-2.0. The serving point: 3.3B active means decode FLOPs are tiny (6.6 GFLOP/token) while 30.5B of weights must still be resident - this is a pure memory-bandwidth problem, and it is why it runs well on one consumer GPU where a dense 32B will not.
SERVICEABILITY JOIN (added 2026-10-03; the architecture x engine matrix this record was missing, with a citation per cell in docs/13-model-compatibility.md): FAMILY=dense-gqa. REQUIRED KERNEL CLASS: ordinary causal attention plus GEMM/GEMV. This is the baseline every engine in this repo implements, so the join here is a floor rather than a filter: no engine record in data/engines/ states that dense GQA is unsupported. SUPPORTED BY (cited): vLLM LlamaForCausalLM / Qwen2 / Qwen3 / Mistral / Phi3ForCausalLM rows [[mdl2-vllm-supported-models-2026-10]]; TensorRT-LLM LlamaForCausalLM, Qwen2ForCausalLM, Qwen3ForCausalLM, Phi3ForCausalLM rows [[mdl2-trtllm-supported-models]]; SGLang generative table (Llama, Qwen, Mistral families) [[mdl2-sglang-generative-models]]; llama.cpp LLM_ARCH_LLAMA [[pap-arch-llamacpp-arch-registry]]. HARD CONSTRAINTS THAT DO APPLY even to dense GQA, and they are model-shape rather than architecture-class: tensor-parallel size must divide the attention head count or the engine refuses to start [[mgpu-tp-size-must-divide-attention-heads]] (affects vllm and sglang); and a GQA KV cache is the thing paged-attention machinery exists for, so an engine with no paged KV (llama.cpp's slot-based pool [[llama-cpp]], exllamav2 [[exllamav2]]) loses the concurrency lever rather than the ability to run. ONE HARDWARE-DEPENDENT KERNEL GATE THAT IS NOT ABOUT GQA: on RDNA, vLLM's custom paged-attention kernel is gated on head_size == 128 AND block_size == 16, so a dense GQA model with head_dim 256 falls to the Triton 2D fallback and decode falls off a cliff - measured 12.1 tok/s at 518 tokens of context to 4.2 tok/s at 32k, with kernel_paged_attention_2d growing 28.3x [[rdna-triton-paged-attn-decode-cliff]]. Check head_dim before blaming the card.
Cross-references
This record references no other records — it is a leaf. It is cited by 3.