NullSense commited on
Commit
4b8767c
·
verified ·
1 Parent(s): f8ec33a

Refresh EAGLE-3 references for the thinking-aware v2 head (2026-07-24 retrain); concurrency section re-measured (501/878/1017 tok/s, ITL 6.2-7.6ms)

Browse files
Files changed (2) hide show
  1. README.md +14 -13
  2. assets/chart_concurrency.png +2 -2
README.md CHANGED
@@ -152,16 +152,16 @@ inter-token latency stays essentially flat under load.
152
 
153
  | concurrent streams | aggregate output tok/s | TTFT p50 (ms) | ITL p50 (ms) |
154
  |---|---|---|---|
155
- | 4 | 435 | 56 | 7.7 |
156
- | 8 | 750 | 187 | 8.2 |
157
- | 16 | 993 | 303 | 8.5 |
158
 
159
  Measured with [GuideLLM](https://github.com/vllm-project/guidellm) on an RTX 5090,
160
- vLLM v0.25.1, real multi-kB article prompts. Single-stream decode is the 154-244
161
- tok/s in the Speed table; this shows the same server saturating to ~1000 tok/s
162
- aggregate at concurrency 16 with per-token latency near-constant, i.e. it batches
163
- well for multi-user / parallel-agent workloads. Spec acceptance held over the run
164
- (165k accepted / 502k drafted).
165
 
166
  ## Serving (vLLM)
167
 
@@ -180,10 +180,11 @@ vllm serve <this-repo> --trust-remote-code \
180
  ```
181
 
182
  Since 2026-07-23 the recommended speculation is my
183
- [EAGLE-3 draft head](https://huggingface.co/NullSense/Nanbeige4.2-3B-EAGLE3):
184
- 221 freeform / 244 short-passage summarize / 262 code tok/s in one config
185
- (TRITON_ATTN required with it; FlashInfer + spec drops CUDA graphs to piecewise on
186
- SM120). One measured exception: LONG-document summarization (multi-k-char inputs)
 
187
  still favors the ngram config (`{"method":"ngram","num_speculative_tokens":8,
188
  "prompt_lookup_max":4,"prompt_lookup_min":2}`): 231 vs 160 output tok/s on 16 real
189
  articles; verbatim copy-spans reward lookup drafting. Pick per dominant workload.
@@ -230,7 +231,7 @@ transformers-5 loading (llmcompressor, finetuning); vLLM serving does not use th
230
  | [FP8-Dynamic](https://huggingface.co/NullSense/Nanbeige4.2-3B-FP8-Dynamic) (this repo) | 4.9 GB | 154 / 206 | default: no measured quality loss on any gate. Recommended. |
231
  | [NVFP4-FP8-LoopShield](https://huggingface.co/NullSense/Nanbeige4.2-3B-NVFP4-FP8-LoopShield) | 4.5 GB | 159 / 202 | smallest artifact that keeps reasoning at FP8 parity; best JSON reliability. Recommended for tight VRAM. |
232
  | [NVFP4A16](https://huggingface.co/NullSense/Nanbeige4.2-3B-NVFP4A16) | 3.6 GB | 175 / 220 | fastest; summarization/extraction only (reasoning drops 8 GSM8K points). Not for math/agentic. |
233
- | [EAGLE3 draft](https://huggingface.co/NullSense/Nanbeige4.2-3B-EAGLE3) | +1.5 GB | 221 / 244 (262 code) | add-on speculator for any of the above: +33-58% decode, lossless. Serve with TRITON_ATTN. |
234
 
235
  All three serve identically (same plugin, same flags); only the checkpoint differs.
236
  Rule of thumb: this model + 64k fp8-KV context fits in ~7 GB VRAM at FP8, ~6 GB at
 
152
 
153
  | concurrent streams | aggregate output tok/s | TTFT p50 (ms) | ITL p50 (ms) |
154
  |---|---|---|---|
155
+ | 4 | 501 | 166 | 6.2 |
156
+ | 8 | 878 | 70 | 6.7 |
157
+ | 16 | 1017 | 242 | 7.6 |
158
 
159
  Measured with [GuideLLM](https://github.com/vllm-project/guidellm) on an RTX 5090,
160
+ vLLM v0.25.1, real multi-kB article prompts, EAGLE-3 v2 (thinking-aware) head. The
161
+ server saturates to ~1000 tok/s aggregate at concurrency 16 with per-token latency
162
+ near-flat (6.2 to 7.6 ms), so it batches well for multi-user / parallel-agent
163
+ workloads. TTFT p50 is queueing-dominated at these request counts, not a decode
164
+ signal. Spec acceptance held over the run (154k accepted / 354k drafted, 0.44).
165
 
166
  ## Serving (vLLM)
167
 
 
180
  ```
181
 
182
  Since 2026-07-23 the recommended speculation is my
183
+ [EAGLE-3 draft head](https://huggingface.co/NullSense/Nanbeige4.2-3B-EAGLE3),
184
+ thinking-aware since the 2026-07-24 retrain: thinking-mode acceptance 0.41 (0.33
185
+ before), and +12-41% single-stream decode over the prior head depending on context,
186
+ in one config (TRITON_ATTN required with it; FlashInfer + spec drops CUDA graphs to
187
+ piecewise on SM120). One measured exception: LONG-document summarization (multi-k-char inputs)
188
  still favors the ngram config (`{"method":"ngram","num_speculative_tokens":8,
189
  "prompt_lookup_max":4,"prompt_lookup_min":2}`): 231 vs 160 output tok/s on 16 real
190
  articles; verbatim copy-spans reward lookup drafting. Pick per dominant workload.
 
231
  | [FP8-Dynamic](https://huggingface.co/NullSense/Nanbeige4.2-3B-FP8-Dynamic) (this repo) | 4.9 GB | 154 / 206 | default: no measured quality loss on any gate. Recommended. |
232
  | [NVFP4-FP8-LoopShield](https://huggingface.co/NullSense/Nanbeige4.2-3B-NVFP4-FP8-LoopShield) | 4.5 GB | 159 / 202 | smallest artifact that keeps reasoning at FP8 parity; best JSON reliability. Recommended for tight VRAM. |
233
  | [NVFP4A16](https://huggingface.co/NullSense/Nanbeige4.2-3B-NVFP4A16) | 3.6 GB | 175 / 220 | fastest; summarization/extraction only (reasoning drops 8 GSM8K points). Not for math/agentic. |
234
+ | [EAGLE3 draft](https://huggingface.co/NullSense/Nanbeige4.2-3B-EAGLE3) | +1.5 GB | +12-41% decode | add-on speculator for any of the above; thinking-aware retrain (2026-07-24), thinking-mode acceptance 0.41, lossless. Serve with TRITON_ATTN. |
235
 
236
  All three serve identically (same plugin, same flags); only the checkpoint differs.
237
  Rule of thumb: this model + 64k fp8-KV context fits in ~7 GB VRAM at FP8, ~6 GB at
assets/chart_concurrency.png CHANGED

Git LFS Details

  • SHA256: 210b33ce20636f46e1b7b6ba6f9ac74094824073cb5cad25e52917756104abe7
  • Pointer size: 131 Bytes
  • Size of remote file: 142 kB

Git LFS Details

  • SHA256: 0b36479c84c5da85723dadc56a0b630ada96a4c155bebdb72051174c23a66a30
  • Pointer size: 130 Bytes
  • Size of remote file: 49.3 kB