nvidia/NVIDIA-Nemotron-Labs-3-Puzzle-75B-A9B-NVFP4

The title says it all. This looks like a match made in heaven for us.

Iโ€™m dying to get home and test it.

Anyone have any insight/tips and tricks?

I am getting 19 tok/s using the recipe below. I am sure it could be optimized.

recipe_version: โ€œ1โ€
name: Nemotron-Labs-3-Puzzle-75B-A9B-NVFP4
description: |
vLLM serving NVIDIA-Nemotron-Labs-3-Puzzle-75B-A9B-NVFP4 on a single DGX Spark node (TP=1).
Optimized with MTP speculative decoding (3 tokens) + Marlin NVFP4 backend for SM121 stability & speed.
Expected single-stream decode: 25-35+ tok/s on DGX Spark.
model: nvidia/NVIDIA-Nemotron-Labs-3-Puzzle-75B-A9B-NVFP4
container: vllm-node
solo_only: true
mods:
env:
VLLM_MEMORY_PROFILER_ESTIMATE_CUDAGRAPHS: โ€œ0โ€
VLLM_USE_FLASHINFER_MOE_FP4: โ€œ0โ€
VLLM_NVFP4_GEMM_BACKEND: โ€œmarlinโ€
VLLM_TEST_FORCE_FP8_MARLIN: โ€œ1โ€
defaults:
port: 8000
host: โ€œ0.0.0.0โ€
tensor_parallel: 1
gpu_memory_utilization: 0.85
max_model_len: 131072
max_num_batched_tokens: 16384
max_num_seqs: 12
command: |
vllm serve nvidia/NVIDIA-Nemotron-Labs-3-Puzzle-75B-A9B-NVFP4
โ€“tensor-parallel-size {tensor_parallel}
โ€“host {host}
โ€“port {port}
โ€“trust-remote-code
โ€“moe-backend marlin
โ€“mamba-backend flashinfer
โ€“mamba_ssm_cache_dtype float16
โ€“enable-mamba-cache-stochastic-rounding
โ€“mamba-cache-philox-rounds 5
โ€“async-scheduling
โ€“kv-cache-dtype fp8
โ€“gpu-memory-utilization {gpu_memory_utilization}
โ€“max-model-len {max_model_len}
โ€“max-num-batched-tokens {max_num_batched_tokens}
โ€“max-num-seqs {max_num_seqs}
โ€“enable-chunked-prefill
โ€“enable-prefix-caching
โ€“enable-expert-parallel
โ€“tool-call-parser qwen3_coder
โ€“reasoning-parser nemotron_v3
โ€“enable-auto-tool-choice
โ€“speculative-config โ€˜{โ€œmethodโ€:โ€œmtpโ€,โ€œnum_speculative_tokensโ€:3}โ€™
โ€“generation-config vllm

Hello, after several attempts, all I obtain is that :

tool-eval-bench --spec-bench --base-url "http://127.0.0.1:8002" --api-key "sk-vllm-internal-acantic" --context-pressure 0.8 --depth "0 16384 32768"

๐Ÿ”ง Tool-Call Benchmark

Server: http://127.0.0.1:8002

Querying http://127.0.0.1:8002/v1/models โ€ฆ โœ“ nvidia/NVIDIA-Nemotron-Labs-3-Puzzle-75B-A9B-NVFP4 (alias: Acantic)

โœ“ Warm-up complete (291 ms**)**

๐Ÿ” Engine: vLLM 0.23.1rc1.dev899+g378a4be5d.d20260707

โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ ๐Ÿ”ฎ Speculative Decoding Benchmark โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ

โ”‚ nvidia/NVIDIA-Nemotron-Labs-3-Puzzle-75B-A9B-NVFP4                                                                                                                                                                                                         โ”‚

โ”‚ tg=128  depth=[0, 16384, 32768]  prompts=['filler', 'code', 'structured']  method=auto                                                                                                                                                                     โ”‚

โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ

Prometheus /metrics acceptance-rate counters are server-wide aggregates. If other models are serving concurrent traffic on this endpoint, per-request acceptance rate measurements will be inaccurate. For clean measurements: use a single-model server with no concurrent load.

โœ“     filler @ d0  29.2 eff t/s  29.0 stream t/s  ฮฑ=78.1%  waste=22%  ฯ„=2.3  win=3

โœ“       code @ d0  31.5 eff t/s  31.3 stream t/s  ฮฑ=60.1%  waste=40%  ฯ„=1.8  win=3

โœ“ structured @ d0  31.9 eff t/s  31.7 stream t/s  ฮฑ=65.9%  waste=34%  ฯ„=2.0  win=3

โœ“     filler @ d16384  10.3 eff t/s  10.2 stream t/s  ฮฑ=78.1%  waste=22%  ฯ„=2.3  win=3

โœ“       code @ d16384  30.3 eff t/s  30.1 stream t/s  ฮฑ=57.4%  waste=43%  ฯ„=1.7  win=3

โœ“ structured @ d16384  34.9 eff t/s  34.6 stream t/s  ฮฑ=75.2%  waste=25%  ฯ„=2.3  win=3

โœ“     filler @ d32768  8.9 eff t/s  8.8 stream t/s  ฮฑ=69.9%  waste=30%  ฯ„=2.1  win=3

โœ“       code @ d32768  31.7 eff t/s  31.4 stream t/s  ฮฑ=60.7%  waste=39%  ฯ„=1.8  win=3

โœ“ structured @ d32768  33.9 eff t/s  33.7 stream t/s  ฮฑ=70.7%  waste=29%  ฯ„=2.1  win=3

                              ***Speculative Decoding Results***                                  

โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“

โ”ƒ Prompt     โ”ƒ Depth โ”ƒ Eff t/s โ”ƒ    ฮฑ % โ”ƒ Waste โ”ƒ ฯ„ len โ”ƒ Win โ”ƒ Draft t/s โ”ƒ TTFT ms โ”ƒ Total ms โ”ƒ

โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ

โ”‚ filler     โ”‚     0 โ”‚    29.2 โ”‚  78.1% โ”‚   22% โ”‚   2.3 โ”‚   3 โ”‚      26.0 โ”‚       6 โ”‚    4,390 โ”‚

โ”‚ code       โ”‚     0 โ”‚    31.5 โ”‚  60.1% โ”‚   40% โ”‚   1.8 โ”‚   3 โ”‚      34.0 โ”‚       3 โ”‚    4,062 โ”‚

โ”‚ structured โ”‚     0 โ”‚    31.9 โ”‚  65.9% โ”‚   34% โ”‚   2.0 โ”‚   3 โ”‚      32.2 โ”‚       4 โ”‚    4,011 โ”‚

โ”‚ filler     โ”‚   16K โ”‚    10.3 โ”‚  78.1% โ”‚   22% โ”‚   2.3 โ”‚   3 โ”‚       9.2 โ”‚      19 โ”‚   12,447 โ”‚

โ”‚ code       โ”‚   16K โ”‚    30.3 โ”‚  57.4% โ”‚   43% โ”‚   1.7 โ”‚   3 โ”‚      33.4 โ”‚       3 โ”‚    4,226 โ”‚

โ”‚ structured โ”‚   16K โ”‚    34.9 โ”‚  75.2% โ”‚   25% โ”‚   2.3 โ”‚   3 โ”‚      31.9 โ”‚       3 โ”‚    3,672 โ”‚

โ”‚ filler     โ”‚   32K โ”‚     8.9 โ”‚  69.9% โ”‚   30% โ”‚   2.1 โ”‚   3 โ”‚       8.5 โ”‚      59 โ”‚   14,500 โ”‚

โ”‚ code       โ”‚   32K โ”‚    31.7 โ”‚  60.7% โ”‚   39% โ”‚   1.8 โ”‚   3 โ”‚      33.4 โ”‚       4 โ”‚    4,048 โ”‚

โ”‚ structured โ”‚   32K โ”‚    33.9 โ”‚  70.7% โ”‚   29% โ”‚   2.1 โ”‚   3 โ”‚      32.6 โ”‚       4 โ”‚    3,774 โ”‚

โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Highest acceptance: filler (78.1%)  Lowest: code (57.4%)

Draft window: 2.1/3 positions used (68% utilization**)**  Avg waste: 32%

tool-eval-bench v1.4.3.1

Here is my recipe but itโ€™s really slow to load (>5 minutes) because of trtllm::fused_moe tuner :

# -----------------------------------------------------------------------------
  # โœ“     filler @ d0  29.2 eff t/s  29.0 stream t/s  ฮฑ=78.1%  waste=22%  ฯ„=2.3  win=3
  # โœ“       code @ d0  31.5 eff t/s  31.3 stream t/s  ฮฑ=60.1%  waste=40%  ฯ„=1.8  win=3
  # โœ“ structured @ d0  31.9 eff t/s  31.7 stream t/s  ฮฑ=65.9%  waste=34%  ฯ„=2.0  win=3
  # โœ“     filler @ d16384  10.3 eff t/s  10.2 stream t/s  ฮฑ=78.1%  waste=22%  ฯ„=2.3  win=3
  # โœ“       code @ d16384  30.3 eff t/s  30.1 stream t/s  ฮฑ=57.4%  waste=43%  ฯ„=1.7  win=3
  # โœ“ structured @ d16384  34.9 eff t/s  34.6 stream t/s  ฮฑ=75.2%  waste=25%  ฯ„=2.3  win=3
  # โœ“     filler @ d32768  8.9 eff t/s  8.8 stream t/s  ฮฑ=69.9%  waste=30%  ฯ„=2.1  win=3
  # โœ“       code @ d32768  31.7 eff t/s  31.4 stream t/s  ฮฑ=60.7%  waste=39%  ฯ„=1.8  win=3
  # โœ“ structured @ d32768  33.9 eff t/s  33.7 stream t/s  ฮฑ=70.7%  waste=29%  ฯ„=2.1  win=3
recipe_version: '1'
name: Nemotron Labs 3 Puzzle
description: nvidia/NVIDIA-Nemotron-Labs-3-Puzzle-75B-A9B-NVFP4
model: nvidia/NVIDIA-Nemotron-Labs-3-Puzzle-75B-A9B-NVFP4
container: vllm-node
cluster_only: false
solo_only: false



defaults:
  host: 0.0.0.0
  port: 8002
  max_model_len: 131072
  max_num_batched_tokens: 8192
  num_speculative_tokens: 3
  max_num_seqs: 4
  gpu_memory_utilization: 0.5 # 1.69x @ ctx=131072 / seq=4
  api_key: ""
  served_model_name: "Nemotron Labs 3 Puzzle"


env:
  VLLM_HTTP_TIMEOUT_KEEP_ALIVE: '1200'
  VLLM_FLASHINFER_ALLREDUCE_BACKEND: trtllm
  VLLM_ALLOW_LONG_MAX_MODEL_LEN: 1
  VLLM_MEMORY_PROFILER_ESTIMATE_CUDAGRAPHS: "1"
  VLLM_TEST_FORCE_FP8_MARLIN: "1"
  VLLM_MARLIN_USE_ATOMIC_ADD: 1
  CUDA_VISIBLE_DEVICES: 0
  CUTE_DSL_ARCH: "sm_121a"
  FLASHINFER_DISABLE_VERSION_CHECK: 1

command: |
  vllm serve nvidia/NVIDIA-Nemotron-Labs-3-Puzzle-75B-A9B-NVFP4 \
    --api-key "{api_key}" \
    --host {host} \
    --port {port} \
    --served-model-name "{served_model_name}" \
    --max-model-len {max_model_len} \
    --max-num-batched-tokens {max_num_batched_tokens} \
    --max-num-seqs {max_num_seqs} \
    --gpu-memory-utilization {gpu_memory_utilization} \
    --load-format instanttensor \
    --async-scheduling \
    --enable-prefix-caching \
    --enable-chunked-prefill \
    --trust-remote-code \
    --reasoning-parser nemotron_v3 \
    --moe-backend flashinfer_cutlass \
    --enable-auto-tool-choice \
    --tool-call-parser qwen3_coder \
    --mamba-backend flashinfer \
    --mamba_ssm_cache_dtype float16 \
    --enable-mamba-cache-stochastic-rounding \
    --mamba-cache-philox-rounds 5 \
    --kv-cache-dtype fp8 \
    --speculative-config '{{"method":"mtp","num_speculative_tokens":3}}' \
    --default-chat-template-kwargs '{{"enable_thinking":true}}' \
    --override-generation-config '{{"temperature":0.6,"top_p":0.95,"max_tokens":80000}}'

Warning, if you were planning to use it for development spoiler alert: It is unusable (even for basic usage).

damn what a downer โ€ฆ may be we need template fixes?

Hi jbourny โ€” Iโ€™m running the model (NVIDIA-Nemotron-Labs-3-Puzzle-75B-A9B-NVFP4)
on the same class of box (Dell Pro Max / GB10, single Blackwell sm_121, 119 GB unified),
so I can both corroborate your numbers and point at whatโ€™s almost certainly behind your
5-minute load.

Throughput/acceptance โ€” matches your range. With MTP num_speculative_tokens=3 I get
18.6 โ†’ 28.5 tok/s single-stream (1.53x), per-position draft acceptance 77% / 52% / 36%
(~55% overall). Thatโ€™s ~60% of the practical roofline for this box (~273 GB/s รท ~9B active
@ NVFP4 โ‰ˆ 40-50 tok/s ceiling), so the numbers look healthy โ€” itโ€™s bandwidth-bound, not a
misconfig.

The load time is the useful bit: your trtllm::fused_moe tuner is the TensorRT-LLM
fused-MoE autotuner running at startup. I donโ€™t hit it at all, because on my build vLLM
auto-selects a different NVFP4 MoE backend. Straight from my engine log:

Using โ€˜FLASHINFER_CUTLASSโ€™ NvFp4 MoE backend out of potential backends:
[โ€˜FLASHINFER_TRTLLMโ€™, โ€˜FLASHINFER_CUTEDSLโ€™, โ€˜FLASHINFER_CUTEDSL_BATCHEDโ€™,
โ€˜FLASHINFER_CUTLASSโ€™, โ€˜VLLM_CUTLASSโ€™, โ€˜MARLINโ€™, โ€˜EMULATIONโ€™]

CUTLASS has no multi-minute tuning pass, so my startup (~8 min total) is entirely
safetensors weight-load, not MoE tuning. If your log shows the TRTLLM MoE path (default in
some builds, or if itโ€™s being pinned), steering the NVFP4 MoE backend to FLASHINFER_CUTLASS
should make the tuner disappear. Worth checking which backend your log reports first.

Two more startup notes from my run:

  • Weight load dominates. My log says: โ€œAuto-prefetch is disabled because the filesystem
    (EXT4) is not a recognized network FS โ€ฆ use --safetensors-load-strategy=prefetch.โ€
    Adding that trims the 6x~60s shard load on local NVMe.
  • flashinfer autotune was already off by default on my build
    (โ€œSkipping FlashInfer autotune because it is disabledโ€, enable_flashinfer_autotune=False)
    โ€” worth confirming yours isnโ€™t switching it on.

On โ€œunusableโ€: the load is a one-time cost. I run it under systemd with the container on
โ€“restart unless-stopped so it stays warm across reboots; after the first load, latency is
just the ~28 tok/s above. If you mean per-token slowness rather than startup, thatโ€™s the
memory-bandwidth ceiling and MTP is the main lever (itโ€™s already working for you at 57-78%
acceptance).

For reference, my stack: nvcr.io/nvidia/vllm:26.06-py3 (vLLM 0.22.1), TP=1, kv-cache
fp8_e4m3, attention backend FLASHINFER, --speculative-config
โ€˜{โ€œmethodโ€:โ€œmtpโ€,โ€œnum_speculative_tokensโ€:3}โ€™. Happy to compare full configs.

I gave up all nvidia llm models long ago they are terrible nvidia is good with graphics etc not with training llm. Vision stuff is decent hardware too. LLM - nope. at least they try, at some time they will get there too..

You have to think what NVIDIA is, they sell to large companies. They would undercut their own customers if they do SOTA open source models out of the door. I have found that most NVIDIA models have a spesific niche. This one is strategical thinking. Its garbage for coding obviously, and multilanguage leaves much to be desired - but for strategical thinking its beating qwen3.5-122b

Especially in this community where 95% are devs they all tests model in one case โ†’ codding โ€ฆ

Our usecase is marketing, osint and grading.

Tbh nothing really beats the SOTA models for coding. The cost of not using them for defined projects is far higher than their api cost.

But for prospecting, research and idea development itโ€™s often enough with way smaller agents

Thats a nice way to say they build digital consultants - capable of pushing papers, creating useless reports, and telling you how right they are while faking the job done and lying through the teeth. But makes a good excuse for execs to buy more HW. Which is exactly the point. I never seen a more deceptive and hostile model like Nemotron 3 Super. It was faking records, fudging books, and constantly lying. I have everything on record.

Iโ€™m actually getting some excellent results from this model. Itโ€™s fast and is generating some very usable results.

Hereโ€™s my startup script.

cd spark-vllm-docker
./launch-cluster.sh
--solo
-e HF_TOKEN
-e HF_HUB_OFFLINE=1
-e VLLM_FLASHINFER_ALLREDUCE_BACKEND=trtllm
-e VLLM_ALLOW_LONG_MAX_MODEL_LEN=1
-e OMP_NUM_THREADS=4
-e CUDA_MANAGED_FORCE_DEVICE_ALLOC=1
-e TORCH_MATMUL_PRECISION=high
-t vllm-node-tf5:latest
exec vllm serve nvidia/NVIDIA-Nemotron-Labs-3-Puzzle-75B-A9B-NVFP4
--tensor-parallel-size 1
--pipeline-parallel-size 1
--data-parallel-size 1
--dtype auto
--enable-prefix-caching
--trust-remote-code
--enable-auto-tool-choice
--tool-call-parser qwen3_coder
--reasoning-parser nemotron_v3
--gpu-memory-utilization 0.72
--moe-backend cutlass
--mamba-backend flashinfer
--mamba_ssm_cache_dtype float16
--enable-mamba-cache-stochastic-rounding
--mamba-cache-philox-rounds 5
--kv-cache-dtype fp8
--calculate-kv-scales
--max-model-len 262144
--async-scheduling
--speculative-config '{"method":"mtp","num_speculative_tokens":1,"moe_backend":"triton"}'
--override-generation-config '{"temperature":1.0,"top_p":0.95,"top_k":20,"presence_penalty":0.0,"repetition_penalty":1.0}'
--default-chat-template-kwargs '{"enable_thinking": true, "force_nonempty_content": true}'
--load-format instanttensor
--enable-chunked-prefill
--max-num-batched-tokens 8192
--max-num-seqs 4
--served-model-name nemotron3-puzzle
--host 0.0.0.0
--port 8000

Whats your token per second , and how is the quality ?

I havenโ€™t run a benchmark, but itโ€™s speed is pretty good for agentic work under Hermes.

Itโ€™s not as smart as a larger model like Step 3.7 Flash and tends to have a narrower focus, without considering where the problem lies within a larger context. I think thatโ€™s a common characteristic for most models that can run on a single Spark.

This was a bummer for me, scored last in every benchmark I could through to it:

This is basically an official REAP from Nemotron 3 Super 122b. Which is not the strong model for coding and tool calling itself (about 77/100). What is funny, Nemotron Cascade 2 30B A3B is scoring same as Super, but 3 times faster.

The main advantage of Nemotrons - MAMBA attention, that allows tokens to be very small in kv cache (fp8) and long context (1M for both) processed without much speed degradation. But this is no magic - only 2 (AFAIR) attention heads, hence the quality. You always pay with something to gain something else.

thats a big bummer, so even Qwen Coder Next could do better and as fast.

For my use case, I want something thatโ€™s fast and reasonably intelligent. This model seems to provide that. Itโ€™s not for diving into complex software problems. I have another beefier model for that. To be honest, the constant reasoning loops that you get with the Qwen models makes me avoid them. I donโ€™t want to be baby-sitting the agent just so that I can get the model back on track every 5 minutes.

Anyway, I asked the model what it thought of the discussion in this thread. Hereโ€™s an extract -

Benchmarks vs. real-world utility:

Benchmark scores (e.g., MMLU, GSM8K, etc.) often emphasize broad knowledge and reasoning breadth. For agentic workflowsโ€”where the model is integrated into a tool-using, goal-directed loopโ€”factors like response speed, consistency in tool use, and reliability on specific task patterns may matter more than peak benchmark performance. A faster, slightly less โ€œknowledgeableโ€ model can sometimes be more effective in a well-designed agent loop than a slower, more knowledgeable one that stalls on tool selection or reasoning loops.

Conclusion:

The model isnโ€™t โ€œuselessโ€โ€”itโ€™s optimized for a different operating regime. If your workflow values low latency and local execution, its performance may be perfectly suitable. If you find yourself frequently hitting its limits on complex reasoning or niche knowledge, you might consider a larger model for those specific tasksโ€”but for many agentic scenarios, the speed/respect trade-off can be worthwhile.

The bench we used is not measuring reasoning - this is really individual task, it measures ability of tool-calling, exactly suitability for agentic tasks. And Nemotrons score pretty lousy at it. But if you need speed above everything - check out Nemotron Cascade 2 โ†’ 60 t/s on a single spark, 1M session, 5M cache.