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 E4B: Block-Parallel Speculation with DFlash

Trace the released E4B DFlash path from five target hidden states through an eight-token non-causal draft block, lossless verification, NVFP4 storage and workload limits.

8 min readflozi00
aillmarchitecturenemotronspeculative-decodingdflashvllmquantizationinference

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 E4B BF16 and its target-specific DFlash NVFP4 drafter on October 23, 2026. This is a usable serving pair rather than a paper-only prototype: NVIDIA publishes both checkpoints and a vLLM 0.31.0 command. The target has 8B total and 4B effective parameters; the companion is a 1.03B-parameter, five-layer Qwen3-style draft network.12

Despite the shared β€œBolt 3.5” name, this is not the 74B-A9B hybrid model covered in the LatentMoE and IQ2 article. E4B is a 42-layer Gemma 4 text backbone. Its DFlash companion is also different from the LiLiCorr drafter released for 74B Bolt. A drafter is fitted to one target's vocabulary, hidden width and selected internal layers; it is not a generic small language model.

This article audits target revision 49843eed8db1f1c616c47af75cfd36e07aec0667, draft revision 913d13c49fbbb2b477dce78552a31ab650d5b693, vLLM db9527a46873454610df6dbedf79a36d6bf1a7f6, and NeMo AutoModel 6b0f669ec07e4b9d0f37c92162384b3c7cc97c15, checked on October 24, 2026. Byte counts below are logical payloads, not measured GPU allocations. We did not execute the checkpoints or benchmark a GPU.

The released serving cycle

Ordinary autoregressive decoding runs the full target once for every new token. DFlash instead amortizes one target verification over a block:

  1. the target supplies the last verified token and hidden states captured after zero-based layer IDs 5, 11, 17, 23 and 35;
  2. the drafter forms an eight-position block: one real anchor followed by seven mask tokens;
  3. one non-causal five-layer forward predicts all seven future positions in parallel;
  4. the target evaluates the proposed continuation in one pass; and
  5. exact speculative verification accepts the longest valid prefix and samples a correction when required.

The output still comes from the target distribution. β€œNon-causal” applies inside the draft block, not to target verification: a proposal is cheap, but it cannot authorize itself. The released block size is eight, so the maximum acceptance length is eight output tokens per cycle, including the target's correction or next token.234

Released propertyTarget E4BDFlash companion
Transformer layers425
Hidden width2,5602,560
Attention Q / KV heads8 / 232 / 8
Head width256 local / 512 global128
FFN intermediate width10,2405,120
Sliding window5121,024 on every draft layer
Full-attention layers70
Vocabulary262,144262,144
Serving context65,536bounded by the target contract
Draft blockβ€”1 anchor + 7 proposals

Five target states become persistent draft context

Let the five selected target tensors be H(j)∈RBΓ—SΓ—2560H^{(j)}\in\mathbb{R}^{B\times S\times2560}. The runtime concatenates them on the feature axis and projects them back to the draft width:

Hcat=concat⁑(H(5),H(11),H(17),H(23),H(35))∈RBΓ—SΓ—12800,C=HcatWf,Wf∈R12800Γ—2560.H_{\mathrm{cat}}=\operatorname{concat}\left(H^{(5)},H^{(11)},H^{(17)},H^{(23)},H^{(35)}\right) \in\mathbb{R}^{B\times S\times12800}, \qquad C=H_{\mathrm{cat}}W_f, \quad W_f\in\mathbb{R}^{12800\times2560}.

The resulting context is projected into K/V entries and inserted into every draft layer's cache. For the eight block positions, each layer forms Q with shape [B,32,8,128][B,32,8,128] and K/V with shape [B,8,8,128][B,8,8,128] before adding the cached context. Four query heads share each KV head. Per-head Q/K RMS normalization is applied before RoPE. The released vLLM implementation can fuse unquantized K/V projections into one matrix multiplication; packed quantized weights instead go through the configured quantization method per layer.56

The chosen target indices are not arbitrary positions in a uniform stack. E4B has 35 sliding-window layers and seven full-attention layers, with a full layer every sixth layer. The drafter reads five of those full-attention outputs: 5, 11, 17, 23 and 35. It does not capture full-attention layers 29 and 41. This gives the small draft network compressed global features while its own attention remains limited to the latest 1,024 tokens.75

During training, the anchor is real and later positions are masked. Positions inside one block may communicate bidirectionally, but the mask prevents leakage from later blocks. NVIDIA weights earlier prediction positions more heavily, using wk=exp⁑(βˆ’(kβˆ’1)/Ξ³)w_k=\exp(-(k-1)/\gamma) in the published method. These are training mechanics; the release fixes the block to seven proposals at inference.34

Why exact verification preserves the target

For one position, let q(x)q(x) be the drafter's probability and p(x)p(x) the target probability. If the draft samples token xx, speculative sampling accepts it with

a(x)=min⁑ ⁣(1,p(x)q(x)).a(x)=\min\!\left(1,\frac{p(x)}{q(x)}\right).

If it rejects, it samples from the normalized positive residual

r(x)=[p(x)βˆ’q(x)]+βˆ‘y[p(y)βˆ’q(y)]+,[z]+=max⁑(z,0).r(x)=\frac{[p(x)-q(x)]_+}{\sum_y[p(y)-q(y)]_+}, \qquad [z]_+=\max(z,0).

The probability mass accepted through qq is q(x)a(x)=min⁑(p(x),q(x))q(x)a(x)=\min(p(x),q(x)). The rejection branch contributes the missing positive part [p(x)βˆ’q(x)]+[p(x)-q(x)]_+. Together they reconstruct p(x)p(x) after normalization. Applied sequentially across the proposed block, this accepts the longest valid prefix without changing the target distribution. For greedy decoding the rule is simpler: accept proposals while they equal the target argmax, then take the target token at the first mismatch.34

This is why a weaker draft can still be useful: it does not need to be trusted for final quality. It only needs enough conditional agreement with the target to amortize verification. A better draft increases the expected accepted prefix, but an overly large draft raises the cost paid on every cycle.

The parameter count exposes the real cost

The model card reports 1,031,568,640 logical parameters. The released dimensions reproduce that number exactly:

ComponentDerivationParameters
Own output head262144Γ—2560262144\times2560671,088,640
Five attention stacks5Γ—(2560Γ—4096+2Γ—2560Γ—1024+4096Γ—2560)5\times(2560\times4096+2\times2560\times1024+4096\times2560)131,072,000
Five SwiGLU MLPs5Γ—3Γ—2560Γ—51205\times3\times2560\times5120196,608,000
Target-state projection12800Γ—256012800\times256032,768,000
RMSNorm parametersreleased tensor geometry32,000
Total1,031,568,640

The output head alone is 65.1% of the parameters. It is an NVFP4 copy of the target head because the drafter must score the same 262,144-token vocabulary. Conversely, the token embedding is shared with the target and absent from the draft checkpoint. At BF16, avoiding a duplicate 262144Γ—2560262144\times2560 embedding avoids a 1.25 GiB logical payload.25

At an ideal four bits per parameter, all draft codes would occupy 491.9 MiB; the output-head codes alone would occupy 320 MiB. The published repository is 580 MB because real storage also contains quantization scales, BF16 exclusions, tensor metadata and alignment. β€œNVFP4” is therefore a compute/storage format, not a promise that the file is exactly half a byte times the parameter count.

The default revision is W4A16: NVFP4 weights with 16-bit activations. The w4a4 revision also uses NVFP4 activations and requires Blackwell activation kernels; NVIDIA specifies a CUDA 13 vLLM build on GB300. The config leaves draft KV-cache quantization disabled and excludes norms from the packed path.258

Cache and latency have separate break-even points

For five draft layers, eight KV heads, a 1,024-token window, head width 128 and BF16 K/V, the logical cache payload per sequence is

MdraftΒ KV=2Γ—5Γ—8Γ—1024Γ—128Γ—2=20,971,520Β bytes=20Β MiB.M_{\mathrm{draft\ KV}} =2\times5\times8\times1024\times128\times2 =20{,}971{,}520\ \text{bytes}=20\ \text{MiB}.

At 64 sequences that payload alone is 1.25 GiB, before paging, alignment and allocator reservations. DFlash also makes the target expose five hidden states and maintains proposal/rollback state. The drafter checkpoint's small file size is not the full serving overhead.

Let CtC_t be the time for one ordinary target decode step, CdC_d the block-draft time, CvC_v the target verification time, and Ο„\tau the measured mean output tokens accepted per cycle. Then

LDFlash=Cd+CvΟ„,speedup=CtΟ„Cd+Cv,beneficialΒ iffΒ Ο„>Cd+CvCt.L_{\mathrm{DFlash}}=\frac{C_d+C_v}{\tau}, \qquad \text{speedup}=\frac{C_t\tau}{C_d+C_v}, \qquad \text{beneficial iff }\tau>\frac{C_d+C_v}{C_t}.

An acceptance length of four is therefore not a fourfold speedup. Verification processes a block efficiently, but it is not free; the draft pass, state projection, cache traffic and rejected proposals all remain. The break-even point changes with prompt length, sampling entropy, batch size and kernels.3

NVIDIA's vendor measurements use W4A16, thinking enabled, 4,096 output tokens, concurrency 16 and one GB300. Under those conditions the reported mean acceptance length is 4.01 for greedy MT-Bench and 3.65 with temperature 1; SPEED-Bench reports 3.88 and 3.50. These are acceptance measurements, not end-to-end speedups, and they must not be transferred to other hardware or traffic patterns. NVIDIA also reports roughly 1% lower acceptance for W4A16 and 2% for W4A4 versus an unquantized BF16 draft.2

Production boundary: latency path, not universal throughput path

The official DFlash example sets max-num-seqs=1. The target card's separate maximum-throughput recipe sets 64 sequences and explicitly says that no speculative decoding is best for that configuration. This is the practical dividing line: DFlash can reduce low-concurrency inter-token latency when spare compute can turn a verification pass into several tokens; continuous batching may already keep the target efficient enough that the extra draft work loses.1

Other boundaries matter:

  • Target pairing is exact. The 2,560-wide projection, vocabulary, layer indices and target head tie this checkpoint to Nemotron 3.5 Bolt E4B.
  • The joint context contract is 64K text. The draft config declares 131,072 positions and its card lists multimodal inputs, but the released E4B service card specifies text/text and 65,536 tokens, and its vLLM command disables image, video and audio. Use the target's narrower deployed contract unless a separate stack is validated.
  • Hardware paths differ. W4A16 is the default. W4A4 is a Blackwell-specific activation-kernel path, not a portable synonym.
  • Quality is target quality, not draft quality. Exact verification preserves sampling semantics; it does not fix inaccuracies, bias or unsafe target output.
  • Pin both artifacts and the runtime. Changing either target weights or hidden-state conventions can reduce acceptance or make the checkpoint incompatible.

The engineering value of this release is the separation of responsibilities. The 42-layer target remains the authority; five selected global target states condition a much smaller non-causal network; exact verification protects the distribution; and NVFP4 reduces the always-resident draft weight cost. Whether that trade is positive is measurable only at the intended context, sampling policy, concurrency and GPU.

Primary sources

Footnotes

  1. NVIDIA, Nemotron 3.5 Bolt E4B BF16 model card at 49843eed, released October 23, 2026; target scope and vLLM recipes. ↩ ↩2

  2. NVIDIA, DFlash NVFP4 model card at 913d13c, released October 23, 2026; serving cycle, parameters, quantization, evaluation conditions and limitations. ↩ ↩2 ↩3 ↩4 ↩5

  3. Chen, Liang and Liu, DFlash: Block Diffusion for Flash Speculative Decoding, arXiv:2602.06036v2; block training, verification and latency model. Its Qwen/Llama benchmark numbers are not treated as Nemotron E4B measurements here. ↩ ↩2 ↩3 ↩4

  4. NVIDIA NeMo AutoModel, DFlash implementation at 6b0f669e; training block construction and inference sampling. ↩ ↩2 ↩3

  5. NVIDIA, released DFlash configuration at 913d13c; block, layer, head, cache and quantization geometry. ↩ ↩2 ↩3 ↩4

  6. vLLM, qwen3_dflash.py at v0.31.0 commit db9527a; target-state fusion, attention, cache insertion and weight loading. ↩

  7. NVIDIA, released Gemma 4 E4B configuration at 49843eed; exact target layer, attention and context geometry. ↩

  8. NVIDIA, released ModelOpt quantization configuration at 913d13c. ↩