ege-g commited on
Commit
0e88ecf
·
verified ·
1 Parent(s): 7484310

Document DGX Spark and DFlash benchmark results

Browse files
Files changed (1) hide show
  1. README.md +47 -15
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 (SM120/SM121) with vLLM **8.9 GB
30
- (0.52× of BF16), 1.76× single-stream decode speedup, ~99.1% quality
31
- recovery**, calibrated on Japanese chat/instruction data through the model's
32
- own Harmony chat template.
 
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 (RTX PRO 6000, pp=2048/tg=256, llama-benchy, vLLM 0.24)
116
 
117
- | concurrency | BF16 decode tok/s | NVFP4 decode tok/s | speedup | TTFT (e2e) |
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
- c=1 decode is stable to <0.1% across runs; the c=4–16 points carry ±10–15%
125
- run-to-run spread (3 runs each, means shown). KV-cache capacity at
 
 
 
 
 
 
 
 
 
 
 
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); **SM121 (DGX Spark / GB10) validation is pending** and this
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