This repository contains a five-layer DFlash draft model that predicts a seven-token speculative block from selected verifier decoder states, trained for the frozen google/t5gemma-2-1b-1b verifier.
The checkpoint is a speculative draft model, not a standalone language model. It must be paired with the base verifier. This repository includes inference weights, complete optimizer and scheduler states, validation metrics, the exact training command, continuation state, TensorBoard events, and raw benchmark summaries.
"Large" distinguishes this 200,000-example mixed-data run from the earlier development checkpoint.
Model details
Item
Value
Draft architecture
DFlashDraftModel
Verifier
google/t5gemma-2-1b-1b
Draft transformer layers
5
Draft hidden / intermediate size
1,152 / 6,912
Draft vocabulary
32,000 tokens mapped from the verifier vocabulary
Speculative block
8 positions: one anchor and up to 7 proposed tokens
The plugin reads the verifier reference from config.json and loads google/t5gemma-2-1b-1b automatically.
Limit the number of draft tokens
To override K, serve the verifier explicitly and reference this Hub repository. The adapter uses method: "dflash" for all DFlash-family schedulers, then dispatches to the concrete architecture recorded in the draft checkpoint.
Set num_speculative_tokens to an integer from 1 through 7. K=3 and K=7 were benchmarked below. CUDA Graph remains enabled when --enforce-eager is omitted.
bash
1curl http://127.0.0.1:8000/v1/completions \2 -H 'Content-Type: application/json'\3 -d '{
4 "model": "t5gemma-2-1b-1b-dflash",
5 "prompt": "Solve step by step.\n\nQuestion: A train travels 60 miles in 2 hours. What is its average speed?\nAnswer:",
6 "max_tokens": 128,
7 "temperature": 0
8 }'
This draft is not intended to be loaded independently with Transformers AutoModelForSeq2SeqLM. The verifier supplies encoder execution, verification, embeddings, and target hidden states.
Training
Training used online hidden-state extraction. The frozen verifier and trainable draft shared one RTX 5070 Ti 16 GB GPU under WSL2; hidden states were generated in process rather than stored for the full dataset.
Data mixture
The mixture contained exactly 200,000 examples and was deterministically shuffled with seed 42.
The prepared data used a 90%/10% train/validation split. Encoder inputs were truncated to 2,048 tokens and decoder targets to 1,024 tokens. Exact retained counts and converters are in training/data_config.json.
The requested cumulative comparison logs are included: dflash_t5gemma2_mixture_200k.
tensorboard --logdir tensorboard --port 6006
Validation metrics
These are teacher-forced metrics from the selected epoch-5 checkpoint. Position accuracy is not equivalent to runtime acceptance because later runtime positions depend on all earlier draft tokens being accepted.
The raw verifier and all drafts used identical saved prompt snapshots on one RTX 5070 Ti 16 GB under WSL2. The vLLM development build was based on commit e4b3da3feb20c1854a4b23e431cfb787ee268f72.
Common settings: greedy decoding, seed 0, maximum model length 2,048, maximum output 128, --max-num-batched-tokens 4096, GPU memory utilization 0.85, chunked prefill disabled, CUDA Graph enabled, and 8 excluded warm-up requests. BS1 used concurrency/max-num-seqs 1; BS4 used 4. Dataset sizes: MATH-500 500, GSM8K 1,319, HumanEval 164, MBPP 500, MT-Bench 160 independent turns, and UltraChat test_sft 5,000.
Base tok/s is raw verifier throughput; Draft tok/s is end-to-end verified throughput. Speedup is their ratio. Latency, TTFT, and ITL are mean/p95 milliseconds. Acceptance rate is accepted tokens divided by all proposed draft tokens. Acceptance length is 1 + accepted_tokens / draft_steps. Values below 1.0x are genuine slowdowns for this setup.
Batch size 1
Dataset
K
Base tok/s
Draft tok/s
Speedup
Latency mean/p95 ms
TTFT mean/p95 ms
ITL mean/p95 ms
Accept rate
Accept p1/p2/p3
Accept len
math500
3
113.45
64.68
0.570x
1970.50/2394.33
176.98/348.85
14.18/17.33
6.32%
16.82%/1.89%/0.26%
1.190
math500
7
113.45
74.16
0.654x
1716.92/2122.72
138.95/232.84
12.49/15.42
2.73%
16.89%/1.92%/0.26%
1.191
gsm8k
3
115.56
65.68
0.568x
1943.86/2365.31
178.53/355.62
13.93/16.93
6.84%
18.35%/1.95%/0.21%
1.205
gsm8k
7
115.56
73.26
0.634x
1743.27/2099.80
152.56/246.42
12.55/15.04
2.75%
17.19%/1.83%/0.20%
1.192
humaneval
3
93.66
58.98
0.630x
1178.81/2207.20
162.99/323.05
15.05/20.25
5.99%
16.43%/1.45%/0.10%
1.180
humaneval
7
93.66
64.81
0.692x
1022.86/2083.64
157.66/238.51
13.24/16.24
2.71%
17.46%/1.41%/0.08%
1.189
mbpp
3
117.61
67.35
0.573x
1830.21/2291.14
181.88/374.19
13.37/16.29
6.52%
18.39%/1.10%/0.06%
1.196
mbpp
7
117.61
74.82
0.636x
1635.87/2016.28
152.67/244.47
12.10/14.41
2.84%
18.66%/1.14%/0.06%
1.199
mt_bench
3
116.89
65.85
0.563x
1907.75/2463.49
175.25/376.67
13.83/17.45
6.04%
16.21%/1.76%/0.15%
1.181
mt_bench
7
116.89
73.27
0.627x
1714.64/2135.27
139.66/237.62
12.69/15.55
2.35%
14.88%/1.46%/0.09%
1.164
ultrachat
3
62.83
52.06
0.829x
2442.49/3377.26
168.36/252.91
18.01/24.71
7.08%
18.36%/2.59%/0.30%
1.212
ultrachat
7
62.83
51.13
0.814x
2487.86/3443.12
172.78/258.77
18.33/25.19
3.06%
18.49%/2.58%/0.32%
1.215
Batch size 4
Dataset
K
Base tok/s
Draft tok/s
Speedup
Latency mean/p95 ms
TTFT mean/p95 ms
ITL mean/p95 ms
Accept rate
Accept p1/p2/p3
Accept len
math500
3
266.74
185.18
0.694x
2740.52/3396.06
232.73/422.78
19.89/24.71
6.29%
16.64%/1.97%/0.24%
1.189
math500
7
266.74
188.44
0.706x
2690.23/3411.27
223.15/410.68
19.61/24.83
2.74%
16.86%/2.02%/0.26%
1.192
gsm8k
3
280.58
188.79
0.673x
2702.38/3317.10
235.61/424.62
19.48/24.18
6.81%
18.37%/1.86%/0.20%
1.204
gsm8k
7
280.58
188.46
0.672x
2705.30/3477.26
301.18/834.45
18.98/23.59
2.74%
17.14%/1.81%/0.20%
1.192
humaneval
3
194.21
147.26
0.758x
1856.84/3610.00
250.89/497.85
24.55/42.01
5.95%
16.41%/1.35%/0.08%
1.179
humaneval
7
194.21
141.91
0.731x
1877.28/3978.09
343.90/982.06
22.96/33.21
2.68%
17.40%/1.31%/0.09%
1.188
mbpp
3
275.24
189.94
0.690x
2595.66/3320.97
234.11/439.53
19.14/23.96
6.46%
18.25%/1.11%/0.04%
1.194
mbpp
7
275.24
170.29
0.619x
2875.58/4074.32
634.04/1885.92
18.20/24.69
2.85%
18.78%/1.13%/0.05%
1.200
mt_bench
3
309.23
195.62
0.633x
2573.23/3166.33
221.35/448.16
18.68/23.10
6.07%
16.45%/1.71%/0.06%
1.182
mt_bench
7
309.23
180.37
0.583x
2753.90/3791.87
381.83/1026.59
21.71/25.58
2.48%
15.47%/1.60%/0.12%
1.173
ultrachat
3
155.46
135.15
0.869x
3763.95/4515.90
257.60/405.56
27.76/33.28
7.09%
18.40%/2.57%/0.30%
1.213
ultrachat
7
155.46
134.03
0.862x
3794.92/4543.27
255.94/399.63
28.03/33.56
3.07%
18.54%/2.58%/0.31%
1.215
Full results, all quantiles, request counts, prompt hashes, baseline rows, and complete suite comparisons are included in benchmarks/bs1 and benchmarks/bs4.
Repository contents
model.safetensors: selected draft weights.
config.json, config.py: architecture and verifier linkage.
For optimizer-level continuation, restore the root checkpoint files as an epoch directory in a compatible Speculators checkpoint tree and point checkpoint_best to it.
Limitations
Performance depends on hardware, workload, batch size, and vLLM version; universal acceleration is not claimed.
The plugin path was validated for single-GPU text serving. Tensor/pipeline parallelism, quantized serving, and the vision path require separate validation.
Teacher-forced validation accuracy does not guarantee equal runtime acceptance.
K=3 reduces draft work but changes block length relative to eight-position training; K=7 matches the trained block shape.
Generated outputs retain the behavior and limitations of the verifier and training data.
License and attribution
This checkpoint is derived from T5Gemma 2 and is distributed under the Gemma license. Using the verifier requires accepting Google's Gemma terms. Each dataset retains its own license and conditions.
Training used the vLLM Speculators project with T5Gemma 2, DFlare, DSpark, online-extraction, and logging extensions from the accompanying development branch.