NVFP4 quantized version of
bknyaz/Qwen3-235B-A22B-Instruct-2507-REAP. Compressed from 350 GB (BF16) to 102 GB (NVFP4) — fits entirely in the DGX Spark's 128 GB of coherent unified memory on the GB10 Blackwell GPU, with room for 128K token context using FP8 KV cache.
1# Pull the NGC vLLM container (has Blackwell NVFP4 support)
2sudo docker pull nvcr.io/nvidia/vllm:26.01-py3
3
4# Download the model
5pip install huggingface_hub[hf_transfer]
6HF_HUB_ENABLE_HF_TRANSFER=1 hf download \
7 Banana-Bae/Qwen3-235B-A22B-Instruct-2507-REAP-nvfp4 \
8 --local-dir ~/models/Qwen3-REAP-nvfp4
9
10# Serve with 128K context
11sudo docker run -d --gpus all --name qwen3-nvfp4 \
12 -p 8000:8000 \
13 -v ~/models/Qwen3-REAP-nvfp4:/model \
14 --shm-size=16g \
15 nvcr.io/nvidia/vllm:26.01-py3 \
16 python -m vllm.entrypoints.openai.api_server \
17 --model /model \
18 --gpu-memory-utilization 0.93 \
19 --max-model-len 131072 \
20 --max-num-seqs 1 \
21 --kv-cache-dtype fp8 \
22 --enforce-eager \
23 --trust-remote-code
The server takes ~10 minutes to load the model. Once ready, it exposes a standard OpenAI-compatible API.
1from openai import OpenAI
2
3client = OpenAI(base_url="http://localhost:8000/v1", api_key="not-needed")
4
5response = client.chat.completions.create(
6 model="/model",
7 messages=[{"role": "user", "content": "Explain quantum computing in simple terms."}],
8 max_tokens=256,
9 temperature=0.7,
10)
11print(response.choices[0].message.content)
1curl http://localhost:8000/v1/completions \
2 -H "Content-Type: application/json" \
3 -d '{"model":"/model","prompt":"Hello!","max_tokens":100,"temperature":0.7}'
Tested on NVIDIA DGX Spark (ARM64 Grace CPU + GB10 Blackwell GPU, 128 GB unified LPDDR5x memory).
1import requests, time, json
2
3base = "http://localhost:8000/v1"
4model_id = "/model"
5
6tests = [
7 ("50 tokens", "Explain what a neural network is in one sentence."),
8 ("200 tokens", "Write a detailed explanation of how gradient descent works."),
9 ("500 tokens", "Write a comprehensive guide on transformer architectures, "
10 "encoder vs decoder models, LLM training, and inference optimizations."),
11 ("~4K tokens", ("The quick brown fox jumps over the lazy dog. " * 500)
12 + "\n\nSummarize the above."),
13]
14
15for label, prompt in tests:
16 t0 = time.time()
17 r = requests.post(f"{base}/completions", json={
18 "model": model_id, "prompt": prompt,
19 "max_tokens": 256, "temperature": 0.0, "stream": True
20 }, stream=True)
21
22 first_token_time = None
23 token_count = 0
24 for line in r.iter_lines():
25 if line:
26 line = line.decode()
27 if line.startswith("data: ") and line != "data: [DONE]":
28 if first_token_time is None:
29 first_token_time = time.time()
30 token_count += 1
31
32 end_time = time.time()
33 ttft = first_token_time - t0 if first_token_time else -1
34 gen_time = end_time - first_token_time if first_token_time else -1
35 decode_tps = token_count / gen_time if gen_time > 0 else 0
36 prompt_tokens = int(len(prompt.split()) * 1.3)
37 prefill_tps = prompt_tokens / ttft if ttft > 0 else 0
38
39 print(f"{label:>12} | prefill: {prefill_tps:>8.1f} tok/s | "
40 f"decode: {decode_tps:>5.1f} tok/s | TTFT: {ttft:.2f}s | "
41 f"generated: {token_count} tokens")
Evaluated with lm_eval + vLLM on NVIDIA B200 GPUs.
bknyaz/Qwen3-235B-A22B-Instruct-2507-REAP — a 25% expert-pruned variant of Qwen3-235B-A22B-Instruct-2507, reducing MoE experts from 128 to 96 per layer (235B → 178B params) while retaining ≥99% of original performance via the
REAP method (Redundant Expert Ablation and Pruning).