Gemma 4 Day-1 Inference on NVIDIA DGX Spark — Preliminary Benchmarks

Hello all, this is just basic result made with llm-benchy

⚠️ Preliminary results. These benchmarks were captured on April 2, 2026 — the same day Gemma 4 was released. Consider this a day-1 snapshot. Numbers will improve as vLLM kernels mature, quantization recipes are refined, and serving parameters are tuned.


Hardware

NVIDIA DGX Spark (GB10 Grace Blackwell)

Spec Value
Architecture Grace Blackwell Superchip (GB10)
Unified memory 122 GB LPDDR5X
Memory bandwidth ~273 GB/s
Platform Ubuntu 24.04, aarch64
CUDA 13.0 (driver 580.142)

The DGX Spark uses a fully unified memory architecture — CPU and GPU share the same LPDDR5X pool. This gives exceptional capacity (122 GB) at a fraction of the power of a datacenter GPU, but at lower bandwidth than HBM-based cards (~273 GB/s vs 3.35 TB/s on an H100 SXM). This has direct implications for decode throughput, discussed below.


Docker Image

The vLLM team published an official Gemma 4 image on the same day as the model release:

vllm/vllm-openai:gemma4-cu130

This image ships native Gemma 4 support out of the box — no backporting required. It targets CUDA 13.0, which matches the DGX Spark driver stack perfectly, and is released under Apache 2.0.

Before this image was available, we had manually backported Gemma 4 support into vllm 0.18.1rc1 by patching the model registry, reasoning parser registry, and rotary embedding module with files from vLLM main (PR #38826), plus upgrading transformers to 5.5.0. The official image makes all of that unnecessary.


Fixes Required

Even with the official image, two small adjustments were needed:

1. --load-format fastsafetensors not available
The vllm[fastsafetensors] optional dependency is not included in the gemma4-cu130 image. Replace with --load-format safetensors.

2. --quantization awq conflicts with compressed-tensors format
The cyankiwi AWQ quantized models use the compressed-tensors format (llm-compressor). Specifying --quantization awq explicitly causes a validation error:

Quantization method specified in the model config (compressed-tensors) does not match
the quantization method specified in the `quantization` argument (awq).

The fix is to simply omit the --quantization flag — vLLM auto-detects compressed-tensors from the model’s config.json.

3. Attention backend
The official image automatically forces TRITON_ATTN for all Gemma 4 models due to their heterogeneous head dimensions (local layers: head_dim=256, global layers: head_dim=512). No manual flag needed.


Serving Configuration

All models were served with the following common parameters:

vllm serve <model> \
  --enable-auto-tool-choice \
  --tool-call-parser pythonic \
  --reasoning-parser gemma4 \
  --gpu-memory-utilization 0.70 \
  --host 0.0.0.0 \
  --port 30000 \
  --kv-cache-dtype fp8 \
  --load-format safetensors \
  --enable-prefix-caching \
  --enable-chunked-prefill \
  --max-model-len 262144 \
  --max-num-seqs 4 \
  --max-num-batched-tokens 8192

Context window: 256K tokens (262144) — maximum supported by Gemma 4.


Models Tested

Model Quantization Format Disk size Notes
google/gemma-4-31B-it bf16 safetensors ~62 GB Dense, reference baseline
cyankiwi/gemma-4-31B-it-AWQ-8bit int8 compressed-tensors ~33 GB Community quant
cyankiwi/gemma-4-31B-it-AWQ-4bit int4 compressed-tensors ~20 GB Community quant
google/gemma-4-26B-A4B-it bf16 safetensors ~49 GB MoE: 26B total / 4B active

Benchmark Results

Benchmarked with llama-benchy v0.3.5.
Conditions: 3 runs per config, concurrency 1, depth 0, no prior context.

Raw result files: results/

Prompt Processing throughput (t/s — higher is better)

Model pp128 pp512 pp2048
31B bf16 244 ± 46 757 ± 67 1066 ± 48
31B AWQ int8 267 ± 26 399 ± 33 430 ± 0
31B AWQ int4 545 ± 104 778 ± 39 810 ± 2
26B-A4B MoE 429 ± 165 1299 ± 441 3105 ± 372

Token Generation / Decode (t/s — higher is better)

Model tg128 peak
31B bf16 3.7 ± 0.1 4.0
31B AWQ int8 6.5 ± 0.1 7.0
31B AWQ int4 10.6 ± 0.0 11.0
26B-A4B MoE 23.7 ± 0.0 24.0

Time To First Response (ms — lower is better)

Model TTFR pp128 TTFR pp512 TTFR pp2048
31B bf16 547 ± 91 686 ± 64 1929 ± 89
31B AWQ int8 490 ± 51 1297 ± 108 4761 ± 2
31B AWQ int4 247 ± 46 664 ± 33 2533 ± 8
26B-A4B MoE 371 ± 176 464 ± 197 672 ± 82

Analysis

Decode is bandwidth-bound on LPDDR5X

On the DGX Spark, single-user token generation is limited by memory bandwidth. Each generated token requires streaming all active model weights through memory once:

theoretical decode = memory_bandwidth / active_model_size_in_memory

  31B bf16 : 273 GB/s ÷  62 GB ≈  4.4 t/s   (measured: 3.7 t/s — 84% efficiency)
  31B int8 : 273 GB/s ÷  31 GB ≈  8.8 t/s   (measured: 6.5 t/s — 74% efficiency)
  31B int4 : 273 GB/s ÷  16 GB ≈ 17.0 t/s   (measured: 10.6 t/s — 62% efficiency)
  26B-A4B  : 273 GB/s ÷   8 GB ≈ 34.0 t/s   (measured: 23.7 t/s — 70% efficiency)

The gap between int8/int4 theory and measurement reflects the overhead of compressed-tensors dequantization on the TRITON_ATTN path — an area that will improve as vLLM’s kernel support for this format matures on aarch64/Blackwell.

MoE structural advantage

The MoE model’s decode advantage is structural: even though all 49 GB of expert weights reside in GPU memory, only the 4B active parameters are read per token — giving it 6.4× better decode throughput than the dense bf16 baseline, and 2.2× better than AWQ int4.

At longer contexts, the MoE prompt processing advantage is equally striking: 3105 t/s at pp2048 vs 1066 t/s for dense bf16 — nearly 3× faster prefill, for the same reason.

AWQ int8 prompt processing regression

The compressed-tensors int8 path dequantizes weights before the matmul, which eliminates the compute-density advantage of native bf16. Prompt processing drops to 430 t/s at pp2048 vs 1066 t/s for bf16 — a 60% regression. For prompt-heavy workloads, int8 is the worst choice of the four.

AWQ int4 is the best short-prompt dense model

At pp128, AWQ int4 delivers the lowest TTFR (247 ms) — less than half of bf16. For short conversational turns where the dense 31B quality is preferred over the MoE, int4 is the most responsive option.


GPU Memory Usage

Model GPU memory used Notes
31B bf16 ~63 GB Weights ~62 GB + small KV cache
31B AWQ int8 ~85 GB Weights ~31 GB + large KV cache
31B AWQ int4 ~85 GB Weights ~16 GB + very large KV cache
26B-A4B MoE ~86 GB All expert weights + large KV cache

With --gpu-memory-utilization 0.70 (70% of 122 GB ≈ 85 GB), quantized and MoE models benefit from a proportionally much larger KV cache budget — up to ~70 GB for fp8 KV vs ~23 GB for bf16. This matters significantly for 256K context workloads.


Conclusion

For Gemma 4 inference on a DGX Spark, the 26B-A4B MoE model is the clear winner for interactive and agentic workloads: fastest decode (23.7 t/s), best prompt processing at long contexts (3105 t/s at pp2048), and competitive TTFR. The LPDDR5X unified memory architecture that constrains dense models actually favors the MoE design — only 4B active parameters need to be streamed per token.

For use cases where the full 31B dense model quality is required, AWQ int4 is the best choice: 10.6 t/s decode (nearly 3× the bf16 baseline), lowest TTFR on short prompts (247 ms), and fits comfortably in 20 GB leaving ample room for KV cache at 256K context.

The vllm/vllm-openai:gemma4-cu130 image provides a clean, zero-patch deployment path on the DGX Spark — day-1 availability with CUDA 13.0 support is a strong signal for the community.


Hardware: NVIDIA DGX Spark GB10 | Image: vllm/vllm-openai:gemma4-cu130 | Tool: llama-benchy v0.3.5 | Date: April 2, 2026

Hmmm if the for inference the Gemma4 31B model gets roughly the same ~17 tps as Nemotron-3-120B-S FPINT4 why not stick it out with the 120B nemotron model? Given its size and MoE model Nemotron-120B-S should still be a more capable model that Gemma4 right?

Hello @mikee.gwu ,

Well, my experience is that 4bit model suck at writing complex and complete JSON files or manipulating csv file with bash script and sed and awk command. So sometimes you want to try a full weighted model BF16 instead of int 4 quantized. I did read here and there that actually in term of quality 8 bit is the most reliable for speed and quality result.

bf16 base model is also a good opportunity to to your own quantization optimization or fine-tuning.

So I guess you can still find it usefull. I haven’t yet ask him to help me manipulate data at work so I can’t tell you how bad it perform. But I am happy with the idea to try a full weight BF16

Throw the NVFP4 model in the mix of benchmarks as well? nvidia/Gemma-4-31B-IT-NVFP4 · Hugging Face

Well i am waiting a little bit for all the big name in quantization to finish compressing job, then I will run a benchtest on all of them (all ? No like 4 or 5 :D )

The issue I see is Qwen3.5-27b in FP8 with FP8 KV cache and MTP enabled is basically transparent to full weights and cruises at around 12-13 tok/s in complex document analysis, up to 15-17 tok/s for vision tasks.

I frankly don’t think the Gemma4 31B is substantially better than this, and it doesn’t have MTP to save it.

For comparison, gemma-4-31B-it was launched on an RTX 5090 in the context of working with financial documents and legal knowledge. In my subjective opinion, this is a new TOP compared to Qwen3.5-27B.
This is the conclusion I reached after the tests!

Running gemma-4-31b-it on a DGX Spark. Both BF16 and NVFP4 confirmed working.

BF16 (day one)

Used the official vllm/vllm-openai:gemma4-cu130 image. Architecture resolved natively to Gemma4ForConditionalGeneration. No Transformers fallback. TRITON_ATTN forced for heterogeneous head dims. 58.9 GiB model memory, 42.75 GiB free KV cache, 8.8x max concurrency at 32K context.

Generation speed: ~3.7 t/s. 300 tokens in 80 seconds. Memory bandwidth limited as expected on LPDDR5x.

NVFP4 (day two)

Swapped to nvidia/Gemma-4-31B-IT-NVFP4 with --quantization modelopt. Same gemma4-cu130 image. FlashInfer CUTLASS kernels engaged for NVFP4 GEMM. FP8 KV cache auto-enabled. CUDA graphs active.

Generation speed: ~6.9 t/s. 300 tokens in 43 seconds. Nearly 2x the BF16 baseline.

NVFP4 serve command:
sudo docker run --rm
–name kasari-gemma4
–gpus all
–no-healthcheck
-p 8000:8000
-v /root/.cache/huggingface:/root/.cache/huggingface
-e HF_TOKEN=your-token
vllm/vllm-openai:gemma4-cu130
–model nvidia/Gemma-4-31B-IT-NVFP4
–quantization modelopt
–host 0.0.0.0
–port 8000
–max-model-len 32768
–gpu-memory-utilization 0.85
–trust-remote-code

Both configs work end to end on a single Spark. NVFP4 is the way to go for anything production.

Intel’s Gemma 4 31B INT4 Autoround model runs at around 12t/s on a single spark and around 20t/s on dual sparks.

Just in case you missed, our community spark-vllm-docker supports Gemma 4 since yesterday and has 26B model as a recipe (~40 t/s in FP8).

Single:

model test t/s peak t/s ttfr (ms) est_ppt (ms) e2e_ttft (ms)
google/gemma-4-26B-A4B-it pp2048 5907.78 ± 245.40 353.25 ± 14.87 347.45 ± 14.87 353.42 ± 14.93
google/gemma-4-26B-A4B-it tg32 38.92 ± 0.77 40.19 ± 0.80
google/gemma-4-26B-A4B-it ctx_pp @ d8192 5053.17 ± 95.71 1765.15 ± 29.46 1759.34 ± 29.46 1765.37 ± 29.52
google/gemma-4-26B-A4B-it ctx_tg @ d8192 37.62 ± 0.05 38.84 ± 0.05
google/gemma-4-26B-A4B-it pp2048 @ d8192 3411.45 ± 212.01 608.56 ± 39.05 602.76 ± 39.05 608.70 ± 39.05
google/gemma-4-26B-A4B-it tg32 @ d8192 38.67 ± 1.72 39.94 ± 1.79
google/gemma-4-26B-A4B-it ctx_pp @ d32768 2596.82 ± 1.32 13745.31 ± 5.66 13739.51 ± 5.66 13746.22 ± 6.60
google/gemma-4-26B-A4B-it ctx_tg @ d32768 36.36 ± 0.06 37.55 ± 0.05
google/gemma-4-26B-A4B-it pp2048 @ d32768 1293.68 ± 42.37 1590.62 ± 52.77 1584.81 ± 52.77 1590.79 ± 52.72
google/gemma-4-26B-A4B-it tg32 @ d32768 37.82 ± 2.31 39.05 ± 2.39

llama-benchy (0.3.6.dev12+g5e7b509cb)
date: 2026-04-02 23:37:49 | latency mode: api

Dual:

model test t/s peak t/s ttfr (ms) est_ppt (ms) e2e_ttft (ms)
google/gemma-4-26B-A4B-it pp2048 5530.79 ± 2199.18 464.47 ± 228.36 459.00 ± 228.36 464.62 ± 228.45
google/gemma-4-26B-A4B-it tg32 55.34 ± 0.32 57.13 ± 0.33
google/gemma-4-26B-A4B-it ctx_pp @ d8192 7072.22 ± 19.08 1256.01 ± 7.87 1250.55 ± 7.87 1256.21 ± 7.93
google/gemma-4-26B-A4B-it ctx_tg @ d8192 54.21 ± 0.63 55.98 ± 0.64
google/gemma-4-26B-A4B-it pp2048 @ d8192 5177.12 ± 15.03 401.06 ± 1.15 395.59 ± 1.15 401.38 ± 1.20
google/gemma-4-26B-A4B-it tg32 @ d8192 53.53 ± 0.17 55.28 ± 0.17
google/gemma-4-26B-A4B-it ctx_pp @ d32768 4313.47 ± 17.70 8260.43 ± 47.37 8254.96 ± 47.37 8260.56 ± 47.32
google/gemma-4-26B-A4B-it ctx_tg @ d32768 52.11 ± 0.33 53.81 ± 0.34
google/gemma-4-26B-A4B-it pp2048 @ d32768 2236.26 ± 11.96 921.31 ± 4.89 915.84 ± 4.89 921.47 ± 4.83
google/gemma-4-26B-A4B-it tg32 @ d32768 52.69 ± 0.45 54.42 ± 0.48

llama-benchy (0.3.6.dev12+g5e7b509cb)
date: 2026-04-02 23:47:59 | latency mode: api

can you share your vllm launch command and settings?

Preliminary results for 2-Sparks:

# Recipe: nvidia/Gemma-4-31B-IT-NVFP4
# nvidia/Gemma-4-31B-IT-NVFP4 model in online FP8 quantization

recipe_version: "1"
name: nvidia/Gemma-4-31B-IT-NVFP4
description: vLLM serving nvidia/Gemma-4-31B-IT-NVFP4

# HuggingFace model to download (optional, for --download-model)
model: nvidia/Gemma-4-31B-IT-NVFP4

# Only cluster is supported
cluster_only: false
solo_only: false

# Container image to use
container: vllm-node-tf5

# No mods required
mods: []

# Default settings (can be overridden via CLI)
defaults:
  port: 8000
  host: 0.0.0.0
  tensor_parallel: 2
  gpu_memory_utilization: 0.7
  max_model_len: 262144
  max_num_batched_tokens: 8192

# Environment variables
env: {}

# The vLLM serve command template
command: |
  vllm serve nvidia/Gemma-4-31B-IT-NVFP4  \
    --max-model-len {max_model_len} \
    --gpu-memory-utilization {gpu_memory_utilization} \
    --port {port} \
    --host {host} \
    --load-format fastsafetensors \
    --enable-prefix-caching \
    --enable-auto-tool-choice \
    --tool-call-parser gemma4 \
    --reasoning-parser gemma4 \
    --quantization fp8 \
    --kv-cache-dtype fp8 \
    --max-num-batched-tokens {max_num_batched_tokens} \
    -tp {tensor_parallel} --distributed-executor-backend ray
model test t/s (total) t/s (req) peak t/s peak t/s (req) ttfr (ms) est_ppt (ms) e2e_ttft (ms)
nvidia/Gemma-4-31B-IT-NVFP4 pp2048 (c1) 2482.43 ± 21.15 2482.43 ± 21.15 827.74 ± 15.76 827.01 ± 15.76 827.91 ± 15.83
nvidia/Gemma-4-31B-IT-NVFP4 tg128 (c1) 10.96 ± 0.04 10.96 ± 0.04 12.00 ± 0.00 12.00 ± 0.00
nvidia/Gemma-4-31B-IT-NVFP4 pp2048 (c2) 2422.89 ± 47.49 1813.65 ± 594.85 1270.28 ± 423.47 1269.55 ± 423.47 1270.34 ± 423.42
nvidia/Gemma-4-31B-IT-NVFP4 tg128 (c2) 20.91 ± 0.03 10.89 ± 0.35 24.00 ± 0.00 12.00 ± 0.00
nvidia/Gemma-4-31B-IT-NVFP4 pp2048 (c5) 2061.12 ± 9.46 809.45 ± 794.97 4131.41 ± 1638.77 4130.68 ± 1638.77 4131.45 ± 1638.71
nvidia/Gemma-4-31B-IT-NVFP4 tg128 (c5) 39.62 ± 0.05 10.11 ± 1.07 55.00 ± 0.00 11.00 ± 0.00
nvidia/Gemma-4-31B-IT-NVFP4 pp2048 (c10) 2075.24 ± 5.04 514.80 ± 633.33 6671.69 ± 2795.53 6670.95 ± 2795.53 6671.71 ± 2795.51
nvidia/Gemma-4-31B-IT-NVFP4 tg128 (c10) 56.04 ± 0.08 7.80 ± 1.19 100.00 ± 0.00 10.00 ± 0.00
nvidia/Gemma-4-31B-IT-NVFP4 ctx_pp @ d4096 (c1) 2181.77 ± 17.39 2181.77 ± 17.39 2013.01 ± 18.73 2012.28 ± 18.73 2013.09 ± 18.73
nvidia/Gemma-4-31B-IT-NVFP4 ctx_tg @ d4096 (c1) 10.95 ± 0.00 10.95 ± 0.00 12.00 ± 0.00 12.00 ± 0.00
nvidia/Gemma-4-31B-IT-NVFP4 pp2048 @ d4096 (c1) 1847.47 ± 16.94 1847.47 ± 16.94 1109.37 ± 10.12 1108.64 ± 10.12 1109.45 ± 10.12
nvidia/Gemma-4-31B-IT-NVFP4 tg128 @ d4096 (c1) 10.90 ± 0.01 10.90 ± 0.01 12.00 ± 0.00 12.00 ± 0.00
nvidia/Gemma-4-31B-IT-NVFP4 ctx_pp @ d4096 (c2) 2199.12 ± 11.38 1608.92 ± 529.81 3098.49 ± 968.48 3097.76 ± 968.48 3098.53 ± 968.46
nvidia/Gemma-4-31B-IT-NVFP4 ctx_tg @ d4096 (c2) 19.08 ± 0.02 10.38 ± 0.78 24.00 ± 0.00 12.00 ± 0.00
nvidia/Gemma-4-31B-IT-NVFP4 pp2048 @ d4096 (c2) 1828.48 ± 11.30 1358.87 ± 444.44 1688.31 ± 551.78 1687.57 ± 551.78 1688.34 ± 551.77
nvidia/Gemma-4-31B-IT-NVFP4 tg128 @ d4096 (c2) 20.24 ± 0.04 10.65 ± 0.45 24.00 ± 0.00 12.00 ± 0.00
nvidia/Gemma-4-31B-IT-NVFP4 ctx_pp @ d4096 (c5) 1939.32 ± 2.58 804.74 ± 676.55 8303.48 ± 3574.10 8302.74 ± 3574.10 8303.50 ± 3574.08
nvidia/Gemma-4-31B-IT-NVFP4 ctx_tg @ d4096 (c5) 29.65 ± 0.12 8.82 ± 1.75 55.00 ± 0.00 11.00 ± 0.00
nvidia/Gemma-4-31B-IT-NVFP4 pp2048 @ d4096 (c5) 1598.35 ± 12.08 614.37 ± 577.20 5262.11 ± 2052.95 5261.38 ± 2052.95 5262.13 ± 2052.94
nvidia/Gemma-4-31B-IT-NVFP4 tg128 @ d4096 (c5) 35.27 ± 1.37 9.74 ± 1.20 55.00 ± 0.00 11.00 ± 0.00
nvidia/Gemma-4-31B-IT-NVFP4 ctx_pp @ d4096 (c10) 1916.61 ± 2.29 509.38 ± 563.78 14559.73 ± 6714.62 14559.00 ± 6714.62 14559.75 ± 6714.60
nvidia/Gemma-4-31B-IT-NVFP4 ctx_tg @ d4096 (c10) 36.08 ± 0.08 6.15 ± 1.81 100.00 ± 0.00 10.00 ± 0.00
nvidia/Gemma-4-31B-IT-NVFP4 pp2048 @ d4096 (c10) 1636.13 ± 3.41 376.26 ± 457.26 9038.36 ± 3607.22 9037.63 ± 3607.22 9038.38 ± 3607.21
nvidia/Gemma-4-31B-IT-NVFP4 tg128 @ d4096 (c10) 49.31 ± 0.25 7.43 ± 1.30 94.00 ± 2.94 9.57 ± 0.50
nvidia/Gemma-4-31B-IT-NVFP4 ctx_pp @ d8192 (c1) 1672.67 ± 16.33 1672.67 ± 16.33 5360.55 ± 11.69 5359.81 ± 11.69 5360.63 ± 11.69
nvidia/Gemma-4-31B-IT-NVFP4 ctx_tg @ d8192 (c1) 10.84 ± 0.11 10.84 ± 0.11 11.33 ± 0.47 11.33 ± 0.47
nvidia/Gemma-4-31B-IT-NVFP4 pp2048 @ d8192 (c1) 1415.36 ± 17.62 1415.36 ± 17.62 1447.94 ± 18.10 1447.20 ± 18.10 1448.07 ± 18.11
nvidia/Gemma-4-31B-IT-NVFP4 tg128 @ d8192 (c1) 10.17 ± 1.07 10.17 ± 1.07 11.61 ± 0.44 11.61 ± 0.44
nvidia/Gemma-4-31B-IT-NVFP4 ctx_pp @ d8192 (c2) 1796.22 ± 25.93 939.22 ± 38.60 9510.55 ± 441.60 9509.81 ± 441.60 9510.62 ± 441.58
nvidia/Gemma-4-31B-IT-NVFP4 ctx_tg @ d8192 (c2) 21.98 ± 0.06 11.46 ± 0.39 26.00 ± 0.00 13.00 ± 0.00
nvidia/Gemma-4-31B-IT-NVFP4 pp2048 @ d8192 (c2) 1576.34 ± 25.52 1146.27 ± 358.38 1980.79 ± 618.91 1980.06 ± 618.91 1980.87 ± 618.92
nvidia/Gemma-4-31B-IT-NVFP4 tg128 @ d8192 (c2) 19.23 ± 2.72 10.90 ± 0.82 25.33 ± 0.94 12.67 ± 0.47
nvidia/Gemma-4-31B-IT-NVFP4 ctx_pp @ d8192 (c5) 1854.43 ± 14.88 586.00 ± 227.08 17194.50 ± 5532.77 17193.77 ± 5532.77 17194.54 ± 5532.75
nvidia/Gemma-4-31B-IT-NVFP4 ctx_tg @ d8192 (c5) 24.27 ± 0.12 7.88 ± 2.40 60.00 ± 0.00 12.00 ± 0.00
nvidia/Gemma-4-31B-IT-NVFP4 pp2048 @ d8192 (c5) 1441.93 ± 6.40 543.15 ± 499.19 5846.34 ± 2259.09 5845.61 ± 2259.09 5846.38 ± 2259.06
nvidia/Gemma-4-31B-IT-NVFP4 tg128 @ d8192 (c5) 37.28 ± 0.09 10.48 ± 1.47 60.00 ± 0.00 12.00 ± 0.00
nvidia/Gemma-4-31B-IT-NVFP4 ctx_pp @ d8192 (c10) 1850.28 ± 3.24 406.36 ± 245.15 28630.34 ± 12597.94 28629.61 ± 12597.94 28630.37 ± 12597.92
nvidia/Gemma-4-31B-IT-NVFP4 ctx_tg @ d8192 (c10) 24.31 ± 0.05 4.76 ± 2.23 100.00 ± 0.00 10.57 ± 0.56
nvidia/Gemma-4-31B-IT-NVFP4 pp2048 @ d8192 (c10) 1475.80 ± 9.85 336.95 ± 405.32 10021.23 ± 3996.12 10020.49 ± 3996.12 10021.26 ± 3996.10
nvidia/Gemma-4-31B-IT-NVFP4 tg128 @ d8192 (c10) 48.01 ± 1.25 7.71 ± 1.70 100.00 ± 0.00 10.07 ± 0.25
nvidia/Gemma-4-31B-IT-NVFP4 ctx_pp @ d16384 (c1) 1429.20 ± 29.96 1429.20 ± 29.96 12493.26 ± 221.71 12492.53 ± 221.71 12493.37 ± 221.72
nvidia/Gemma-4-31B-IT-NVFP4 ctx_tg @ d16384 (c1) 11.30 ± 0.46 11.30 ± 0.46 12.33 ± 0.47 12.33 ± 0.47
nvidia/Gemma-4-31B-IT-NVFP4 pp2048 @ d16384 (c1) 880.00 ± 64.90 880.00 ± 64.90 2341.43 ± 182.11 2340.69 ± 182.11 2341.52 ± 182.12
nvidia/Gemma-4-31B-IT-NVFP4 tg128 @ d16384 (c1) 10.79 ± 0.42 10.79 ± 0.42 12.00 ± 0.00 12.00 ± 0.00
nvidia/Gemma-4-31B-IT-NVFP4 ctx_pp @ d16384 (c2) 1335.64 ± 29.09 844.36 ± 177.43 22039.25 ± 4629.38 22038.52 ± 4629.38 22039.29 ± 4629.36
nvidia/Gemma-4-31B-IT-NVFP4 ctx_tg @ d16384 (c2) 11.92 ± 0.47 8.25 ± 2.27 22.67 ± 0.94 11.33 ± 0.47
nvidia/Gemma-4-31B-IT-NVFP4 pp2048 @ d16384 (c2) 868.73 ± 46.57 641.93 ± 210.21 3573.09 ± 1172.65 3572.36 ± 1172.65 3573.14 ± 1172.63
nvidia/Gemma-4-31B-IT-NVFP4 tg128 @ d16384 (c2) 17.52 ± 0.55 9.62 ± 0.84 23.33 ± 0.94 11.67 ± 0.47
nvidia/Gemma-4-31B-IT-NVFP4 ctx_pp @ d16384 (c5) 1369.33 ± 55.49 534.84 ± 276.79 41361.01 ± 17096.74 41360.27 ± 17096.74 41361.04 ± 17096.74
nvidia/Gemma-4-31B-IT-NVFP4 ctx_tg @ d16384 (c5) 10.59 ± 0.33 4.86 ± 2.98 56.33 ± 1.89 11.27 ± 0.44
nvidia/Gemma-4-31B-IT-NVFP4 pp2048 @ d16384 (c5) 890.53 ± 23.73 322.79 ± 286.08 9579.92 ± 3657.96 9579.19 ± 3657.96 9579.96 ± 3657.94
nvidia/Gemma-4-31B-IT-NVFP4 tg128 @ d16384 (c5) 29.48 ± 0.92 9.40 ± 1.75 55.00 ± 0.00 11.00 ± 0.00
nvidia/Gemma-4-31B-IT-NVFP4 ctx_pp @ d16384 (c10) 1442.48 ± 33.98 375.31 ± 283.54 69557.99 ± 34846.88 69557.25 ± 34846.88 69558.03 ± 34846.88
nvidia/Gemma-4-31B-IT-NVFP4 ctx_tg @ d16384 (c10) 10.47 ± 0.24 2.90 ± 2.33 96.67 ± 4.71 10.43 ± 0.88
nvidia/Gemma-4-31B-IT-NVFP4 pp2048 @ d16384 (c10) 909.23 ± 29.98 197.34 ± 218.87 16251.07 ± 6402.15 16250.34 ± 6402.15 16251.11 ± 6402.14
nvidia/Gemma-4-31B-IT-NVFP4 tg128 @ d16384 (c10) 36.52 ± 1.08 6.59 ± 1.70 96.67 ± 4.71 9.67 ± 0.47
nvidia/Gemma-4-31B-IT-NVFP4 ctx_pp @ d32768 (c1) 889.73 ± 2.78 889.73 ± 2.78 39931.08 ± 28.89 39930.34 ± 28.89 39931.17 ± 28.92
nvidia/Gemma-4-31B-IT-NVFP4 ctx_tg @ d32768 (c1) 10.68 ± 0.18 10.68 ± 0.18 11.67 ± 0.47 11.67 ± 0.47
nvidia/Gemma-4-31B-IT-NVFP4 pp2048 @ d32768 (c1) 509.42 ± 7.28 509.42 ± 7.28 4021.81 ± 58.06 4021.07 ± 58.06 4021.90 ± 58.07
nvidia/Gemma-4-31B-IT-NVFP4 tg128 @ d32768 (c1) 10.51 ± 0.16 10.51 ± 0.16 11.33 ± 0.47 11.33 ± 0.47
nvidia/Gemma-4-31B-IT-NVFP4 ctx_pp @ d32768 (c2) 902.36 ± 1.48 643.67 ± 192.37 60517.86 ± 18100.66 60517.13 ± 18100.66 60517.96 ± 18100.63
nvidia/Gemma-4-31B-IT-NVFP4 ctx_tg @ d32768 (c2) 5.28 ± 0.01 6.66 ± 4.00 22.67 ± 0.94 11.33 ± 0.47
nvidia/Gemma-4-31B-IT-NVFP4 pp2048 @ d32768 (c2) 516.03 ± 3.93 383.15 ± 125.18 5984.21 ± 1954.04 5983.48 ± 1954.04 5984.30 ± 1954.04
nvidia/Gemma-4-31B-IT-NVFP4 tg128 @ d32768 (c2) 16.02 ± 0.02 9.34 ± 1.28 22.00 ± 0.00 11.00 ± 0.00
nvidia/Gemma-4-31B-IT-NVFP4 ctx_pp @ d32768 (c5) 925.96 ± 3.43 403.36 ± 242.29 117402.38 ± 53507.08 117401.65 ± 53507.08 117402.44 ± 53507.04
nvidia/Gemma-4-31B-IT-NVFP4 ctx_tg @ d32768 (c5) 3.89 ± 0.00 3.14 ± 3.37 51.67 ± 2.36 10.73 ± 0.44
nvidia/Gemma-4-31B-IT-NVFP4 pp2048 @ d32768 (c5) 514.43 ± 2.17 184.78 ± 161.97 16590.95 ± 6282.70 16590.22 ± 6282.70 16590.98 ± 6282.68
nvidia/Gemma-4-31B-IT-NVFP4 tg128 @ d32768 (c5) 21.60 ± 0.27 8.48 ± 2.05 50.00 ± 0.00 10.27 ± 0.44
nvidia/Gemma-4-31B-IT-NVFP4 ctx_pp @ d32768 (c10) 914.18 ± 10.61 258.85 ± 221.75 215222.11 ± 111107.36 215221.38 ± 111107.36 215222.16 ± 111107.34
nvidia/Gemma-4-31B-IT-NVFP4 ctx_tg @ d32768 (c10) 3.51 ± 0.04 1.58 ± 2.19 84.67 ± 4.11 9.67 ± 1.01
nvidia/Gemma-4-31B-IT-NVFP4 pp2048 @ d32768 (c10) 99.14 ± 30.74 38.27 ± 84.59 124754.49 ± 85556.21 124753.75 ± 85556.21 124754.53 ± 85556.20
nvidia/Gemma-4-31B-IT-NVFP4 tg128 @ d32768 (c10) 6.53 ± 1.90 1.99 ± 2.27 83.33 ± 4.71 9.27 ± 1.15
nvidia/Gemma-4-31B-IT-NVFP4 ctx_pp @ d65535 (c1) 563.85 ± 0.32 563.85 ± 0.32 126007.44 ± 133.18 126006.71 ± 133.18 126007.54 ± 133.20
nvidia/Gemma-4-31B-IT-NVFP4 ctx_tg @ d65535 (c1) 11.09 ± 0.04 11.09 ± 0.04 12.00 ± 0.00 12.00 ± 0.00
nvidia/Gemma-4-31B-IT-NVFP4 pp2048 @ d65535 (c1) 301.44 ± 0.46 301.44 ± 0.46 6794.71 ± 10.34 6793.98 ± 10.34 6794.80 ± 10.34
nvidia/Gemma-4-31B-IT-NVFP4 tg128 @ d65535 (c1) 11.06 ± 0.03 11.06 ± 0.03 12.00 ± 0.00 12.00 ± 0.00
nvidia/Gemma-4-31B-IT-NVFP4 ctx_pp @ d65535 (c2) 564.48 ± 0.30 419.48 ± 137.63 189371.33 ± 61898.61 189370.60 ± 61898.61 189371.43 ± 61898.62
nvidia/Gemma-4-31B-IT-NVFP4 ctx_tg @ d65535 (c2) 1.87 ± 0.00 5.75 ± 4.81 22.67 ± 0.94 11.33 ± 0.47
nvidia/Gemma-4-31B-IT-NVFP4 pp2048 @ d65535 (c2) 306.26 ± 0.36 227.31 ± 74.20 10084.03 ± 3289.84 10083.29 ± 3289.84 10084.12 ± 3289.86
nvidia/Gemma-4-31B-IT-NVFP4 tg128 @ d65535 (c2) 13.07 ± 0.76 8.56 ± 1.99 23.33 ± 0.94 11.67 ± 0.47
nvidia/Gemma-4-31B-IT-NVFP4 ctx_pp @ d65535 (c5) 563.04 ± 1.21 254.48 ± 160.78 380554.18 ± 177731.75 380553.45 ± 177731.75 380554.25 ± 177731.70
nvidia/Gemma-4-31B-IT-NVFP4 ctx_tg @ d65535 (c5) 1.23 ± 0.00 2.20 ± 3.41 50.00 ± 0.00 10.40 ± 0.49
nvidia/Gemma-4-31B-IT-NVFP4 pp2048 @ d65535 (c5) 45.40 ± 13.42 79.92 ± 109.78 132474.54 ± 107178.07 132473.81 ± 107178.07 132474.60 ± 107178.06
nvidia/Gemma-4-31B-IT-NVFP4 tg128 @ d65535 (c5) 2.72 ± 0.77 3.19 ± 3.52 50.00 ± 0.00 10.13 ± 0.34
nvidia/Gemma-4-31B-IT-NVFP4 ctx_pp @ d65535 (c10) 563.54 ± 0.12 164.01 ± 146.30 694092.44 ± 361709.58 694091.71 ± 361709.58 694092.48 ± 361709.56
nvidia/Gemma-4-31B-IT-NVFP4 ctx_tg @ d65535 (c10) 1.11 ± 0.00 1.03 ± 2.20 70.00 ± 0.00 9.00 ± 1.41
nvidia/Gemma-4-31B-IT-NVFP4 pp2048 @ d65535 (c10) 17.86 ± 2.74 15.74 ± 54.27 596088.47 ± 381602.92 596087.74 ± 381602.92 596088.50 ± 381602.90
nvidia/Gemma-4-31B-IT-NVFP4 tg128 @ d65535 (c10) 1.17 ± 0.12 1.01 ± 2.18 70.00 ± 0.00 8.93 ± 1.48

Hi
I used the commands from the EUGR GitHub vLLM / spark-vLLM-docker to set up google/gemma-4-26B-A4B-it, but I noticed that the memory usage stays around 112 (about 87%). Is this normal? The model itself only takes about 50GB, so I’m not sure if this situation is reasonable.
Thank you.

Yes, this is the expected behaviour. The memory utilisation is a function of the allocated memory requested via the --gpu-memory-utilization vLLM flag, and does not necessarily reflect the space taken by the model weights on storage.

Hi @adg1

Thanks for your explanation. However, I noticed that the current YAML configuration sets gpu_memory_utilization: 0.7, but the actual memory usage has already exceeded this range. Is there some concept I might have overlooked?
Thank you.

I don’t know for sure. The figure that the DGX Dashboard gives you is the total memory occupation. But digging further at the command line should reveal the culprit, as there are probably other dimensions to be considered.

Probably CUDA Graphs Overhead, try --enforce-eager just to verify it
But vLLM will use much more memory than the model itself and KV Cache

Hey!

Thanks for sharing those bench test results. I’ve been playing around with the MoE 26B-A4B in FP16 for a few days too, and honestly? I’m right there with you. I haven’t done a formal human eval either, but the “vibe check” definitely feels like it’s lagging behind Qwen 3.5, despite having that extra billion active parameters under the hood.

I use it daily for coding and drafting emails, and I totally get the frustration with the Chinese models occasionally spitting out random Chinese tokens. I also figured a Western-aligned model would be a safer bet, but it’s surprisingly clunky—tripping over basic grammar and just straight-up ignoring system prompts.

For my studies, I recently built a classifier. I did it the “old school” ML way first, but then tried some zero-shot classification with LLMs. The MoE model really struggled to stick to the labels. I even pivoted to Gemma-4-31b, thinking a dense model would be the “go-to guy” for an English financial dataset, but it still got smoked by Qwen3.5-122b-10b-int4-autoround. It’s wild how much the quantization doesn’t seem to hurt the Qwen performance compared to the others.