Document DGX Spark and DFlash benchmark results
Browse files
README.md
CHANGED
|
@@ -26,10 +26,11 @@ datasets:
|
|
| 26 |
# llm-jp-4-8b-instruct — NVFP4 (Japanese-calibrated)
|
| 27 |
|
| 28 |
NVFP4 quantization of [llm-jp/llm-jp-4-8b-instruct](https://huggingface.co/llm-jp/llm-jp-4-8b-instruct)
|
| 29 |
-
for native serving on NVIDIA Blackwell GPUs
|
| 30 |
-
(0.52× of BF16),
|
| 31 |
-
|
| 32 |
-
|
|
|
|
| 33 |
|
| 34 |
The calibration set is a Japanese-heavy chat/instruction mix matched to the
|
| 35 |
model's expected deployment distribution. The full recipe, calibration
|
|
@@ -112,18 +113,50 @@ all rounds of both models in one batch session, generation max_tokens=2048.
|
|
| 112 |
Round-to-round generation spread is ±0.04–0.12. Scores are **relative**
|
| 113 |
comparisons only — not comparable to LLM-jp's published GPT-judge numbers.
|
| 114 |
|
| 115 |
-
## Throughput
|
| 116 |
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
| 1 | 84.4 | 148.1 | **1.76×** | 155→91 ms |
|
| 120 |
-
| 4 | 297 | 368 | 1.24× | 438→238 ms |
|
| 121 |
-
| 8 | 450 | 833 | 1.85× | 847→439 ms |
|
| 122 |
-
| 16 | 801 | 1170 | 1.46× | 1627→808 ms |
|
| 123 |
|
| 124 |
-
|
| 125 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 126 |
`--gpu-memory-utilization 0.9` grows ~15% thanks to the smaller weights.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 127 |
|
| 128 |
## Serving notes
|
| 129 |
|
|
@@ -134,8 +167,7 @@ benchmark-validated version.** 0.25.0 loads and scores identically in our
|
|
| 134 |
testing (same kernels, +2% decode), but we observed one unreproduced
|
| 135 |
`cudaErrorIllegalAddress` engine crash under high-concurrency load on it and
|
| 136 |
haven't cleared it for production yet. Validated end-to-end on **SM120**
|
| 137 |
-
(RTX PRO 6000)
|
| 138 |
-
card will be updated once verified.
|
| 139 |
|
| 140 |
The base model emits its responses in OpenAI-Harmony structure
|
| 141 |
(`<|channel|>analysis/final<|message|>…`), which is why the bundled plugin is
|
|
|
|
| 26 |
# llm-jp-4-8b-instruct — NVFP4 (Japanese-calibrated)
|
| 27 |
|
| 28 |
NVFP4 quantization of [llm-jp/llm-jp-4-8b-instruct](https://huggingface.co/llm-jp/llm-jp-4-8b-instruct)
|
| 29 |
+
for native serving on NVIDIA Blackwell GPUs with vLLM: RTX PRO 6000 (SM120)
|
| 30 |
+
and DGX Spark / GB10 (SM121). It is **8.9 GB (0.52× of BF16)**, recovers
|
| 31 |
+
**~99.1%** of the BF16 quality score, and improves single-stream decode by
|
| 32 |
+
**1.76× on RTX PRO 6000** and **2.02× on DGX Spark / GB10** in the
|
| 33 |
+
llama-benchy measurements below.
|
| 34 |
|
| 35 |
The calibration set is a Japanese-heavy chat/instruction mix matched to the
|
| 36 |
model's expected deployment distribution. The full recipe, calibration
|
|
|
|
| 113 |
Round-to-round generation spread is ±0.04–0.12. Scores are **relative**
|
| 114 |
comparisons only — not comparable to LLM-jp's published GPT-judge numbers.
|
| 115 |
|
| 116 |
+
## Throughput: BF16 vs NVFP4
|
| 117 |
|
| 118 |
+
Measured with llama-benchy, vLLM 0.24.0, 2,048 prompt tokens, 256 generated
|
| 119 |
+
tokens, and three measured runs.
|
|
|
|
|
|
|
|
|
|
|
|
|
| 120 |
|
| 121 |
+
| Hardware | SM | concurrency | BF16 decode tok/s | NVFP4 decode tok/s | speedup | TTFT (e2e) |
|
| 122 |
+
|---|---:|---:|---:|---:|---:|---:|
|
| 123 |
+
| RTX PRO 6000 | SM120 | 1 | 84.4 | 148.1 | **1.76×** | 155→91 ms |
|
| 124 |
+
| RTX PRO 6000 | SM120 | 4 | 297 | 368 | 1.24× | 438→238 ms |
|
| 125 |
+
| RTX PRO 6000 | SM120 | 8 | 450 | 833 | 1.85× | 847→439 ms |
|
| 126 |
+
| RTX PRO 6000 | SM120 | 16 | 801 | 1170 | 1.46× | 1627→808 ms |
|
| 127 |
+
| DGX Spark / GB10 | SM121 | 1 | 13.80 | 27.84 | **2.02×** | 648→348 ms |
|
| 128 |
+
| DGX Spark / GB10 | SM121 | 4 | 56.49 | 106.13 | 1.88× | 1775→1084 ms |
|
| 129 |
+
| DGX Spark / GB10 | SM121 | 8 | 97.36 | 173.16 | 1.78× | 2900→1597 ms |
|
| 130 |
+
| DGX Spark / GB10 | SM121 | 16 | 153.11 | 253.57 | 1.66× | 4763→2638 ms |
|
| 131 |
+
|
| 132 |
+
On RTX PRO 6000, c=1 decode is stable to <0.1% across runs; the c=4–16
|
| 133 |
+
points carry ±10–15% run-to-run spread. KV-cache capacity at
|
| 134 |
`--gpu-memory-utilization 0.9` grows ~15% thanks to the smaller weights.
|
| 135 |
+
The DGX Spark / GB10 rows were measured locally on 2026-07-26 against BF16
|
| 136 |
+
`llm-jp/llm-jp-4-8b-instruct` revision
|
| 137 |
+
`098f2b2cf33021eba19a6d3582aa3d071ccc0aff` and this NVFP4 checkpoint revision
|
| 138 |
+
`748431048bb5b7114424ae6c0a17bdd2172cc9cf`.
|
| 139 |
+
|
| 140 |
+
## Compatible DFlash Drafter
|
| 141 |
+
|
| 142 |
+
A companion DFlash drafter is available at
|
| 143 |
+
[`kel-jp/llm-jp-4-8b-instruct-NVFP4-speculator.dflash`](https://huggingface.co/kel-jp/llm-jp-4-8b-instruct-NVFP4-speculator.dflash).
|
| 144 |
+
|
| 145 |
+
It is not a standalone text-generation model. Use it as a draft/speculator
|
| 146 |
+
model while serving this NVFP4 model as the verifier in stock vLLM:
|
| 147 |
+
|
| 148 |
+
```bash
|
| 149 |
+
vllm serve kel-jp/llm-jp-4-8b-instruct-NVFP4 \
|
| 150 |
+
--trust-remote-code \
|
| 151 |
+
--reasoning-parser llmjp4 \
|
| 152 |
+
--speculative-config '{"method":"dflash","model":"kel-jp/llm-jp-4-8b-instruct-NVFP4-speculator.dflash","num_speculative_tokens":3}'
|
| 153 |
+
```
|
| 154 |
+
|
| 155 |
+
On DGX Spark / GB10 (SM121), a Japanese ELYZA-100 streaming decode benchmark
|
| 156 |
+
measured 14.42 tok/s for BF16, 29.73 tok/s for this NVFP4 checkpoint, and
|
| 157 |
+
49.04 tok/s for NVFP4 + DFlash. That is a 3.40× mean decode throughput
|
| 158 |
+
increase from BF16 to NVFP4 + DFlash, with DFlash adding 1.64× over the NVFP4
|
| 159 |
+
verifier baseline in the paired run.
|
| 160 |
|
| 161 |
## Serving notes
|
| 162 |
|
|
|
|
| 167 |
testing (same kernels, +2% decode), but we observed one unreproduced
|
| 168 |
`cudaErrorIllegalAddress` engine crash under high-concurrency load on it and
|
| 169 |
haven't cleared it for production yet. Validated end-to-end on **SM120**
|
| 170 |
+
(RTX PRO 6000) and **SM121** (DGX Spark / GB10).
|
|
|
|
| 171 |
|
| 172 |
The base model emits its responses in OpenAI-Harmony structure
|
| 173 |
(`<|channel|>analysis/final<|message|>…`), which is why the bundled plugin is
|