OpenJ / Reckoning / Nemotron DiffusionMore than one way to generate
Model family / Nemotron Labs Diffusion

One backbone. Three generation modes.

Nemotron Labs Diffusion can run as a conventional autoregressive model, a masked-block diffusion path, or a linear self-speculation system.

Models

CheckpointOn diskRoleStatus
nvidia/Nemotron-Labs-Diffusion-3B-Base~7.66 GBLoader, architecture, and tensor workReference
nvidia/Nemotron-Labs-Diffusion-3BSee HF filesInstruction/chat quality targetReference
edwardcapriolo/Nemotron-Labs-Diffusion-3B-JQ4~3.52 GBPractical local benchmark targetQuantized

Autoregressive mode

AR generation is the familiar loop: prefill the prompt, sample one token, append it to the causal context, and repeat. It is useful as a baseline for the shared weights, RoPE, KV cache, and output head.

{
  "generationOptions": {
    "mode": "ar"
  }
}

Use the AR benchmark to measure ordinary causal generation.

Linear self-speculation

The practical Reckoning path is linear self-speculation. It drafts a block without committing it to the KV cache, verifies the draft causally, accepts the matching prefix and bonus token, then repeats.

causal prefill
draft a block without updating committed KV
verify causally with cache update
accept matching prefix plus bonus token
crop cache back to accepted length if needed

This path is useful when the model can transfer several accepted tokens per verification step. Profile function evaluations, accepted tokens, transferred tokens, and block lengths rather than looking only at raw generated text.

Diffusion mode

Diffusion generation works over masked blocks. Positions inside an active block can use bidirectional information while denoising, unlike ordinary causal decoding. Reckoning’s current diffusion setting routes to the linear-speculation path.

{
  "generationOptions": {
    "mode": "linear_spec",
    "blockLength": 32,
    "threshold": 0.0
  }
}

Runtime internals

Nemotron uses request-local KVCache2 sessions so AR decoding, block denoising, and verification can share explicit committed and temporary cache state.

Its attention path supports causal AR attention, bidirectional denoising blocks, and a causal prefix followed by a bidirectional active block. Packed block attention handles the block score/value work, while optional Q4 output-head and GPU block-projection paths reduce the cost of block logits.

TurboQuant can store committed KV blocks in compressed form. It is a memory-capacity feature, not a fully fused TurboQuant attention kernel.

Relevant tests and benchmarks

The tests cover different risks rather than repeating the same smoke check: configuration parsing protects the mode contract, the base checkpoint IT protects real tensor loading, and the AR/diffusion benchmarks exercise the two generation paths.

Use the diffusion benchmark for block generation and the full support notes for cache modes and profiling counters.

How to think about it: AR is the correctness baseline, while linear speculation and diffusion are runtime strategies that trade cache and verification work for transferred tokens.