Views
No views yet
| Component | Precision | BF16 size → quantized |
|---|---|---|
| Routed MoE experts (same as v1) | INT4, group_size=64 | 58.75GB → ~14GB |
| Shared expert (new in v2) | INT4, group_size=64 | 0.92GB → ~0.23GB |
| Embeddings + lm_head (new in v2) | INT8, channel-wise | 2.21GB → stored dense (see below) |
--gpu-memory-utilization values around 0.88, but under real multi-request traffic it OOMs inside the Mamba mixer's _chunk_state_fwd (SSD scan) — this was reproduced across a GMU sweep from 0.83 to 0.90 and is a hard memory-margin problem, not a config-tuning one. The math: ~20GB quantized weights + 2.4GB decoder leaves too little consistent margin for KV cache + Mamba scan activation memory on a 24GB card.VocabParallelEmbedding/lm_head layer types for this architecture aren't wired to consume a quant_method, so despite being INT8-quantized during the GPTQ pass, the resulting weights are stored in compressed-tensors' "dense" format (full-size tensors, quantization scale/zero-point metadata computed but unused at inference time). In practice this group contributes close to zero VRAM savings over BF16 today. It's included here in case a future vLLM version wires up that layer type, or if you use a different inference stack that respects the stored quantization scheme.1GPTQModifier(
2 config_groups={
3 "group_0": QuantizationScheme( # routed experts
4 targets=[r"re:.*mixer\.experts\.\d+\.(gate_proj|up_proj|down_proj)$"],
5 weights=QuantizationArgs(num_bits=4, type="int", symmetric=True,
6 strategy="group", group_size=64),
7 ),
8 "group_1": QuantizationScheme( # shared experts
9 targets=[r"re:.*mixer\.shared_experts\.(gate_proj|up_proj|down_proj)$"],
10 weights=QuantizationArgs(num_bits=4, type="int", symmetric=True,
11 strategy="group", group_size=64),
12 ),
13 "group_2": QuantizationScheme( # embeddings + lm_head
14 targets=[r"re:^backbone\.embeddings$", r"re:^lm_head$"],
15 weights=QuantizationArgs(num_bits=8, type="int", symmetric=True,
16 strategy="channel"),
17 ),
18 },
19 ignore=[r"re:.*audio_encoder.*", r"re:.*sound.*", r"re:.*projector.*", r"re:.*mixer\.gate.*"],
20)HuggingFaceH4/ultrachat_200k, max sequence length 2048. Run on Modal (A100-80GB, 96GB host RAM) — the local machine's 32GB RAM was insufficient (severe swap thrashing during weight loading).gate_proj pattern is included in the routed/shared expert target regexes even though it isn't separately calibrated/quantized as its own tensor for MoE experts in this architecture — it's required so vLLM's FusedMoE scheme lookup (which checks all three projection names) succeeds; the regex match alone satisfies the "all MoE projections need matching schemes" requirement.audex_30b_a3b_vllm out-of-tree plugin bundled with the original model repo. Drop-in weights replacement for the checkpoint_folder_full/ subfolder layout.1python cascaded_s2s_web_server.py \
2 --model /path/to/Audex-30B-A3B-W4A16-v2 \
3 --gpu-memory-utilization 0.88 \
4 --decoder-device cuda:0 # fits at this GMU on a 24GB card, but not stable under load — see caveats