Skip to content
Friendly disclaimer: flozi00 TechHub is a solo side-project next to a full-time job β€” personal learning notes, no official statements. Verify critical steps yourself.

Nemotron 3.5 Bolt: Heterogeneous LatentMoE and the 24 GB Budget

Inspect Bolt's per-block expert geometry, IQ2_XXS encoding, mixed-precision checkpoint and hybrid cache to separate model size from runtime memory.

9 min readflozi00
aillmarchitecturenemotronmoemambaquantizationinference

AI disclosure: This article was prepared with generative AI assistance. Editorial responsibility: Florian Zimmermeister (flozi00). Legal notice and contact.

NVIDIA released Nemotron 3.5 Bolt 74B-A9B 24GB on October 15, 2026, with quantized Safetensors, GGUF, BF16 and companion drafter checkpoints. The useful architecture detail is not simply β€œa 74B model in two bits.” Bolt combines different expert counts and widths in different blocks, a reduced-width routed-expert path, several weight formats and a hybrid attention/recurrent cache.12

This article audits the quantized Safetensors revision c6cc2e8ffa353403213d6b9b18aaf8eb684d705a and GGUF model-card revision e0fecb69cb3e5e4c5e8a056fa2aec98c78e91246, checked on October 17, 2026. Derived byte counts are not GPU allocations or throughput measurements. The quantization guide explains the general precision trade-off; the KV-cache guide explains why weights are only one part of a serving budget.

The saved architecture is heterogeneous, not a uniform expert stack

The language backbone contains 88 sequential blocks: 40 Mamba-2, 40 MoE and eight attention blocks. These are separate residual blocks, not 88 conventional layers each containing attention plus an FFN. The attention indices are 7, 16, 25, 36, 47, 58, 69 and 78, zero-based.23

Language-backbone propertyReleased value
Hidden width / routed-expert latent width4,096 / 1,024
Routed experts per MoE block240, 304, 368, 432 or 496
Routed intermediate widths1,536, 2,048, 2,304 or 2,560
Selected experts per token, every MoE block9
Shared experts / shared intermediate width1 / 5,376
Attention Q heads / KV heads / head width32 / 2 / 128
Mamba heads / head width / SSM width128 / 64 / 128
Mamba B/C groups / convolution width8 / 4
Configured maximum context / vocabulary262,144 / 131,072
Built-in MTP layers0

For example, block 3 has 240 routed experts of width 1,536, block 48 has 496 of width 2,560, and block 79 has 496 of width 2,560. The authoritative values are in block_configs. The custom configuration builds a separate base configuration for each block and removes blockwise fields from its global configuration. Reading a leftover top-level num_experts: 512 or intermediate_size: 2688 as the executed geometry would therefore be wrong.24

NVIDIA attributes this layout to budget-conditioned architecture search and distillation from Super 3.5 VL, followed by recovery and quantization-aware distillation. The published search budget includes later quantization and runtime states at batch one and 128K context. This describes how the fixed checkpoint was constructed; the deployed model does not rerun architecture search or resize experts for every request.51

Follow one token through LatentMoE

For hidden vector x∈R4096x\in\mathbb{R}^{4096}, routing reads the full-width input. The routed branch separately projects it to z∈R1024z\in\mathbb{R}^{1024}. In block ll, expert ee has matrices Ul,e∈RIlΓ—1024U_{l,e}\in\mathbb{R}^{I_l\times1024} and Vl,e∈R1024Γ—IlV_{l,e}\in\mathbb{R}^{1024\times I_l}. It computes squared ReLU, not a three-matrix SwiGLU FFN.3

z=P↓x,Pβ†“βˆˆR1024Γ—4096,fl,e(z)=Vl,e [ReLU⁑(Ul,ez)]2,yl=Pβ†‘βˆ‘e∈Sl(x)Ξ±l,efl,e(z)+Vl,s[ReLU⁑(Ul,sx)]2,Pβ†‘βˆˆR4096Γ—1024.\begin{aligned} z&=P_{\downarrow}x, & P_{\downarrow}&\in\mathbb{R}^{1024\times4096},\\ f_{l,e}(z)&=V_{l,e}\,[\operatorname{ReLU}(U_{l,e}z)]^2,\\ y_l&=P_{\uparrow}\sum_{e\in S_l(x)}\alpha_{l,e}f_{l,e}(z) +V_{l,s}[\operatorname{ReLU}(U_{l,s}x)]^2, &P_{\uparrow}&\in\mathbb{R}^{4096\times1024}. \end{aligned}

Squaring is elementwise. The shared expert operates on the original 4,096-wide input, with Ul,s∈R5376Γ—4096U_{l,s}\in\mathbb{R}^{5376\times4096} and Vl,s∈R4096Γ—5376V_{l,s}\in\mathbb{R}^{4096\times5376}. It is not one of the nine selected experts and is not inside the 1,024-wide latent branch. The equation describes the MoE mixer; the surrounding block adds its residual separately.3

The router computes FP32 logits and sigmoid scores ses_e. It selects nine experts using se+bes_e+b_e, where beb_e is a correction bias, but constructs mixture weights from the original unbiased scores. The normalization and scaling are:3

Sl(x)=TopK⁑9(s+b),Ξ±l,e=5 seβˆ‘j∈Sl(x)sj+10βˆ’20(e∈Sl(x)).S_l(x)=\operatorname{TopK}_{9}(s+b),\qquad \alpha_{l,e}=5\,\frac{s_e}{\sum_{j\in S_l(x)}s_j+10^{-20}} \quad(e\in S_l(x)).

Here n_group=1 means expert grouping does not restrict the candidate pool. Do not confuse it with n_groups=8, which controls Mamba's B/C groups. The latent width quarters each routed expert's two matrix sizes compared with a hypothetical otherwise identical 4,096-wide expert. Projection and shared-expert costs remain; this dimensional comparison is not a measured fourfold model speedup.

IQ2_XXS is a codebook format, not four independent levels per weight

The checkpoint specifies 66 bytes for 256 weights, giving 66Γ—8/256=2.062566\times8/256=2.0625 bits per weight. The pinned GGML structure contains a two-byte FP16 block scale and 64 packed bytes. Its decoder interprets each group of 32 weights as four eight-weight grid lookups, four sign selectors and one local scale.267

IQ2_XXS storage for 256 weightsBits
Eight groups Γ— four grid indices Γ— 8 bits256
Eight groups Γ— four sign selectors Γ— 7 bits224
Eight local scale selectors Γ— 4 bits32
One FP16 block scale16
Total528 = 66 bytes

For a 32-weight group, the four-bit selector a∈{0,…,15}a\in\{0,\ldots,15\} gives multiplier d(a+0.5)/4d(a+0.5)/4, with FP16 block scale dd. Each eight-weight subvector then takes eight magnitudes from a 256-entry grid and a sign pattern from the 128-entry sign table. These are coupled vector representations, not 256 unrelated two-bit scalar codes. The two-bit label describes average storage; it does not establish native INT2 arithmetic on the GPU.7

The matrix multiply still consumes activations at another precision. The audited vLLM block-quantized MoE path explicitly requires BF16 activations. Repacking or dequantizing tiles for a kernel does not mean the whole model must reside as a dense BF16 copy, but it does introduce kernel-specific preparation, scratch and compatibility constraints.8

The actual checkpoint is mixed precision

The quantization configuration lists different target modules. In particular, the routed and shared expert matrices use IQ2_XXS, while the latent projections are higher precision. Q8_0 itself occupies 34 bytes per 32 weights = 8.5 bits/weight, including its FP16 scale.26

Safetensors componentPinned evidence
Routed and shared expert up/down matricesIQ2_XXS, 2.0625 effective bits
Mamba input/output projectionsNVFP4 mixed-precision targets, 16-element weight groups
Attention projections, latent projections, LM headQ8_0, 8.5 effective bits
Input embedding tensorBF16, shape [131072,4096][131072,4096], 1 GiB

The embedding row is a concrete qualification to the broad precision description in NVIDIA's blog: the pinned Safetensors export has no embedding entry in quantized_layers, and the first shard's actual header declares language_model.backbone.embeddings.weight as BF16, with 1,073,741,824 data bytes. This audit read the shard header, not the weight payload. Do not transfer a precision claim between the Safetensors and GGUF exports without checking their tensors.29

For these two-matrix experts, parameter arithmetic is straightforward. Sum over the 40 block configurations, with latent width L=1024L=1024, routed count ElE_l and intermediate width IlI_l:23

Prouted=βˆ‘l2LElIl=66,144,174,080,Pshared=40Γ—2Γ—4096Γ—5376=1,761,607,680,Mexperts=(Prouted+Pshared)66256=17,506,959,360Β bytesβ‰ˆ16.305Β GiB.\begin{aligned} P_{\rm routed}&=\sum_l2LE_lI_l=66,144,174,080,\\ P_{\rm shared}&=40\times2\times4096\times5376=1,761,607,680,\\ M_{\rm experts}&=(P_{\rm routed}+P_{\rm shared})\frac{66}{256} =17,506,959,360\text{ bytes}\approx16.305\text{ GiB}. \end{aligned}

This is the logical packed payload of those expert matrices, excluding runtime layout padding and other tensors. Selecting nine experts reduces per-token work; it does not remove unselected expert weights from a resident model. The released Safetensors index reports 24,079,678,824 total tensor bytes, approximately 24.08 decimal GB or 22.426 GiB, for the whole exported model. Neither number is peak device memory: loading, prepared layouts, recurrent state, KV, vision work, drafter, workspaces and allocator overhead can require more.10

Why distillation can help, without making two bits lossless

A useful general identity explains why rounding error alone is insufficient. Let W^=W+Ξ”W\widehat W=W+\Delta W and let Ξ£x=E[xxT]\Sigma_x=\mathbb{E}[xx^{\mathsf T}] be the input second-moment matrix. Then the expected squared linear-output error is:

Eβˆ₯W^xβˆ’Wxβˆ₯22=tr⁑(Ξ”WΞ£xΞ”WT).\mathbb{E}\|\widehat Wx-Wx\|_2^2 =\operatorname{tr}(\Delta W\Sigma_x\Delta W^{\mathsf T}).

The same weight error has different consequences along differently excited input directions. Across nonlinear layers, routing and recurrence, local output errors can change later computation too. Quantization-aware distillation exposes the student to quantization effects while training it to recover a teacher's behavior; it can adapt weights rather than merely round a frozen network. NVIDIA reports using QAD for Bolt, but this identity is an explanatory derivation, not a specification of its training loss or proof of preserved accuracy.5

A larger lower-bit model can retain useful capacity under a fixed memory budget, but that is a workload-dependent empirical trade-off. It does not imply every 74B two-bit checkpoint beats every smaller four-bit model. No independent quality or latency comparison was performed for this article.

The hybrid runtime state still needs a budget

Each of the eight attention blocks caches separate K and V with logical shapes [B,2,T,128][B,2,T,128]. Their combined BF16 payload is 8 KiB per token per sequence: 1 GiB at 131,072 tokens and 2 GiB at 262,144. Raw FP8 elements halve those payloads before scales, paging and engine-specific overhead. GGUF q8_0 is not identical to one-byte FP8 storage.23

Each Mamba block instead keeps an SSM state [B,128,64,128][B,128,64,128] and a convolution state [B,10240,4][B,10240,4], where 10240=128Γ—64+2Γ—8Γ—12810240=128\times64+2\times8\times128. For batch one across 40 blocks, one BF16 state copy totals 80 MiB of SSM state plus 3.125 MiB of convolution state. This is independent of sequence length, but not of concurrency or the number of snapshots retained by the engine.3

The saved mamba_ssm_cache_dtype field says float32; the published vLLM recipe explicitly requests BF16 SSM and convolution caches. At FP32, the SSM part alone would be 160 MiB. Inspect the executed dtype, not just the weight dtype or one config field. These floors exclude rollback/alignment state for speculation, prefix-cache copies, padding and allocator reservations.25

Released serving paths have different boundaries

The pinned GGUF card distinguishes a 28GB recipe with 65,536 context, q8_0 KV and up to six draft tokens from a 32GB recipe with 262,144 context and up to seven draft tokens. Its hardware recommendations are respectively RTX Spark 64GB or discrete GPUs with 32GB+, and RTX Spark 128GB or discrete GPUs with 48GB+. Its shorter quick-start snippet instead requests 98,304 context. These are different recipes, not evidence of universal 24GB full-context residency.11

The vLLM recipe names image nightly-77154ca6116ae34cbfe314beef1016bde9b63989, requests b12x linear/MoE backends, FP8 KV and BF16 recurrent caches. At that source revision, native block-quantized expert loading rejects non-SM12x devices, non-BF16 activations and expert-parallel/EPLB layouts; it supports tensor parallelism without EP/EPLB. Broad A100/H100 wording in the model-card summary is not enough to establish support for this particular packed path.58

The standalone b12x repository is now archived; its pinned README points development to flashinfer/experimental/b12x and identifies the migration commit. Historical pip install b12x instructions and newer FlashInfer packaging must not be mixed without an integration test. The kernel subsystem targets SM120/SM121, and individual operations may have narrower limits. This is a version-specific deployment boundary, not a recommendation to replace a working serving stack blindly.12

Bolt's backbone has no built-in MTP layer. The released LiLiCorr drafter is a separate model used through DFlash; it adds memory and must be loaded alongside the target. The GGUF card also loads a separate multimodal projector. Treat the target, projector, drafter, caches and workspaces as separate budget items. Pin their revisions and the tested runtime build before deployment.211

The practical conclusion is a budget, not a slogan: Bolt saves weight bytes through heterogeneous latent experts and codebook quantization, while retaining higher precision elsewhere. Its hybrid backbone limits which blocks accumulate token-wise KV, but long context and speculative decoding still have costs. The release is usable software with downloadable weights; the appropriate context, concurrency and hardware remain matters for workload-specific validation. We did not execute the model or benchmark its GPU kernels.

Primary sources

Footnotes

  1. NVIDIA technical release, October 15, 2026. ↩ ↩2

  2. Released per-block architecture and quantization configuration. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10

  3. Released model implementation: LatentMoE, routing, attention and recurrent-cache allocation. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7

  4. Per-block configuration construction and global-field removal. ↩

  5. Bolt Safetensors model card, pinned revision. ↩ ↩2 ↩3 ↩4

  6. GGML IQ2_XXS and Q8_0 storage structures at f74e2fa6a31cc33ab4ee4ae516641cfe62df3924. ↩ ↩2

  7. GGML IQ2_XXS reference decoder at the same revision. ↩ ↩2

  8. vLLM native block-quantized loader and kernel constraints at 77154ca6116ae34cbfe314beef1016bde9b63989. ↩ ↩2

  9. First Safetensors shard: BF16 embedding header and data offsets. ↩

  10. Released Safetensors index and total_size metadata. ↩

  11. GGUF model card: separate projector/drafter and detailed 28GB/32GB recipes. ↩ ↩2

  12. b12x migration, packaging and hardware scope at 2cc7f66aaef76a9c7cbb660a1efb865cf3f26c88. ↩