Skip to page content
SAVRN
Search Plan a project

Open-weight model · Image and text to text

Qwen3.8-27B-Coder390-EfficientThink-Opus5.5-GPT6Astra-Grok4.7-DSV4Pro-K3-SFT-RLOO-MTP-DFlash2

by Lynn nerkyor/Qwen3.8-27B-Coder390-EfficientThink-Opus5.5-GPT6Astra-Grok4.7-DSV4Pro-K3-SFT-RLOO-MTP-DFlash2

Qwen3.8-27B-Coder390-EfficientThink-Opus5.5-GPT6Astra-Grok4.7-DSV4Pro-K3-SFT-RLOO-MTP-DFlash2 is an open-weight model for image and text to text from Lynn, released under Apache License 2.0. Its published files total 697.2 GB. It draws 42.3k downloads a month.

A model post-trained with several rounds of SFT and RLOO on top of Qwen3.8-27B-EfficientThink-SFT-SimPO-DFlash2, which is itself the official Qwen3.8-27B post-trained with SFT and SimPO.

Parameters—
Context—
Weights405.5 GB
Licenseapache-2.0
AccessOpen weights
Monthly Downloads42.3k

Model Card

By Lynn, published under apache-2.0, revision a55e9b5b1c25.

A model post-trained with several rounds of SFT and RLOO on top of Qwen3.8-27B-EfficientThink-SFT-SimPO-DFlash2, which is itself the official Qwen3.8-27B post-trained with SFT and SimPO. It is built to fix the original model's habit of failing to stop: it already has an answer, yet keeps re-deriving until it hits the 94K cap with no final answer. This repository provides five safetensors tiers, BF16, static FP8 Block128, NVFP4 W4A16, NVFP4 W4A4, and NVFP4 W4A4-W8A8 (mixed precision), all fully multimodal (text + image/video) with the official BF16 MTP bundled; all load in SGLang without patches, and the FP8 package is also smoke-tested on vLLM. It also has NInfer W4A4 / W4A4-W8A8…

Read Lynn's full model card

A model post-trained with several rounds of SFT and RLOO on top of Qwen3.8-27B-EfficientThink-SFT-SimPO-DFlash2, which is itself the official Qwen3.8-27B post-trained with SFT and SimPO. It is built to fix the original model's habit of failing to stop: it already has an answer, yet keeps re-deriving until it hits the 94K cap with no final answer. This repository provides five safetensors tiers, BF16, static FP8 Block128, NVFP4 W4A16, NVFP4 W4A4, and NVFP4 W4A4-W8A8 (mixed precision), all fully multimodal (text + image/video) with the official BF16 MTP bundled; all load in SGLang without patches, and the FP8 package is also smoke-tested on vLLM. It also has NInfer W4A4 / W4A4-W8A8 (NVFP4-NInfer/), INT8 W8A8 (INT8/W8A8/), INT8 W8A16 (INT8/W8A16/, text + image), INT4 W4A16 (INT4/W4A16/, text + image, vLLM), and GGUF Q2 / Q3 / Q4 LynnStyle (plus Q8 MTP versions), Q6_K, and Q8_0 (GGUF/, GGUF-NInfer/, built-in MTP).

  • Far fewer 94K truncations: under the same protocol, 4 → 1 on GPQA and 13 → 3 on LCB.
  • No regression on any suite: GPQA 178/198, MMLU 450/500, LCB 90/100 (static FP8), vs. 177 / 444 / 83 for the original FP8.
  • Lossless quantization: GPQA and LCB are identical across BF16, dynamic FP8, and static FP8.
  • Two speculative-decoding options (mutually exclusive): about 180 tok/s per request with DFlash2 and 91 tok/s with MTP, vs. about 46 tok/s without speculation.

Related repositories

Training method

Lineage: original Qwen3.8 27B (FP8; 177 / 444 / 83) → our SFT + SimPO110 final, i.e. the EfficientThink base (171 / 442 / 89) → K3 continuation SFT → week-2 SFT (week2dose, update-225) → first RLOO round (182 groups) → another SFT round (merge-sft-100), giving sft-base-rloo (177 / 448 / 90) → second RLOO round (172 groups) → Coder390 (178 / 445 / 90, dynamic FP8). Numbers are GPQA / MMLU / LCB, all full suites under the same 100K protocol.

Training base: this model starts from our own EfficientThink SFT + SimPO model (the SimPO110 final) and goes through several rounds of SFT and RLOO, which is itself a post-trained version of the official Qwen3.8-27B: Qwen3.8-27B-EfficientThink-SFT-SimPO-DFlash2.

Name part Meaning
Coder Strengthened coding
390 GPQA, MMLU, and LCB all reach 90
EfficientThink Training goal: remove unproductive reasoning tails while keeping necessary long reasoning
Opus5.5, GPT6Astra Wrote the gold answers and teacher trajectories
Grok4.7 Host of this training run; checked and filtered data throughout
DSV4Pro, K3 Their trajectories served as teacher-model data; K3 also performed the RLOO value review and wrote part of the problems
SFT-RLOO Method: alternating SFT and RLOO rounds on an SFT (incl. SimPO) base
MTP / DFlash2 Bundled BF16 MTP head / companion DFlash2 speculative-decoding draft

The problem: after the model already has a local answer, it keeps re-running the same derivation with Wait / Actually until the context is full, and the final answer is empty. In most of these cases the model can solve the problem; it just does not stop.

RLOO data: 8 trajectories sampled per problem; only groups with both correct and wrong trajectories are kept (all-correct groups are dropped). Groups with 0 or 1 correct trajectory receive one reviewed short teacher trajectory, which replaces the shortest wrong trajectory in that group (27 groups). Final set: 172 groups, 1,376 trajectories: 859 correct and 517 wrong, including 68 empty answers.

Reward: penalties apply only to wrong trajectories; long correct reasoning still earns a positive reward, so necessary long reasoning is not suppressed.

Case Reward
Short and correct (<24K) +1.05
Long and correct +1.0
Short and wrong (<24K) −0.2
Wrong, 24K–48K −0.5
Wrong, ≥48K −0.7
Reached 94K with an answer letter, but wrong −0.9
Empty answer −1.0

Result: under the same protocol, 94K truncations drop from 4 to 1 on GPQA and from 13 to 3 on LCB (FP8) compared with the original Qwen3.8 27B (FP8), and none of the three scores falls below it (all FP8 figures; see the NVFP4 scores below).

Scores

Protocol: the same Coder390 merged weights; two RTX PRO 6000 GPUs, C8 per GPU, 100K context, 94,208-token generation cap, no client-side timeout, DFlash2 draft, SGLang; full GPQA 198, MMLU 500, and LCB 100. Empty answers count as wrong, truncated-but-correct answers count as correct, and every failed sample stays in the denominator.

Suite Original Qwen3.8 27B (FP8) BF16 Dynamic FP8 Static FP8
GPQA 177/198 178/198 178/198 178/198
MMLU 444/500 446/500 445/500 450/500
LCB 83/100 90/100 90/100 90/100

GPQA and LCB are identical across all three precisions. MMLU varies between 445 and 450, which is sampling noise rather than a precision effect. Dynamic FP8 means online FP8 quantization of the BF16 weights at inference time; it is not shipped as a separate package.

All tiers: scores, reasoning length, 94K truncation, and empty answers

Reasoning length is usage.reasoning_tokens; a 94K truncation means the output hit the generation cap. LCB empty answers are the number of problems for which no runnable code could be extracted. The original, BF16, dynamic FP8, and static FP8 rows use two RTX PRO 6000 GPUs with C8 per GPU; the three NVFP4 tiers use a single RTX PRO 6000 at C8; the rest of the protocol is the same.

Suite Precision Score Reasoning P50 / P70 / P90 94K trunc. Empty
GPQA Original Qwen3.8 27B (FP8) 177/198 5,299 / 12,607 / 50,577 4 3
GPQA BF16 178/198 3,196 / 8,200 / 28,417 2 2
GPQA Dynamic FP8 178/198 2,815 / 8,371 / 27,744 1 1
GPQA Static FP8 178/198 2,966 / 7,832 / 26,431 1 2
GPQA NVFP4 W4A16 170/198 2,965 / 9,667 / 28,433 2 3
GPQA NVFP4 W4A4 167/198 2,876 / 10,996 / 31,986 2 3
GPQA NVFP4 W4A4-W8A8 172/198 2,953 / 10,010 / 35,731 2 4
MMLU Original Qwen3.8 27B (FP8) 444/500 205 / 373 / 1,622 1 0
MMLU BF16 446/500 154 / 252 / 779 1 0
MMLU Dynamic FP8 445/500 138 / 271 / 881 1 0
MMLU Static FP8 450/500 154 / 279 / 937 1 0
MMLU NVFP4 W4A16 439/500 159 / 277 / 1,061 1 0
MMLU NVFP4 W4A4 440/500 168 / 306 / 967 2 0
MMLU NVFP4 W4A4-W8A8 442/500 157 / 273 / 778 0 0
LCB Original Qwen3.8 27B (FP8) 83/100 8,388 / 24,241 / 94,208 13 13
LCB BF16 90/100 5,073 / 16,033 / 38,911 2 2
LCB Dynamic FP8 90/100 4,791 / 15,866 / 41,168 4 4
LCB Static FP8 90/100 4,511 / 16,027 / 43,992 3 3
LCB NVFP4 W4A16 91/100 5,119 / 15,790 / 47,768 4 3
LCB NVFP4 W4A4 92/100 6,338 / 15,771 / 54,096 3 3
LCB NVFP4 W4A4-W8A8 88/100 4,731 / 15,122 / 41,344 2 1

Bold marks values better than the original Qwen3.8 27B (FP8): a higher score, or lower P50 / P70 / P90, 94K truncations, or empty answers; values equal to or worse than the original are not bolded.

LCB improves the most: all 13 of the original's 94K truncations ended with empty code (13 truncations, 13 empty answers), and the Coder390 tiers cut this to 2–4. The 3 for W4A4 are problems 0, 53, and 96 (problem ids in the score file), likewise truncated with no code; of the 4 for W4A16, problems 6, 7, and 54 have no code, and problem 53 has 20 characters of code but is wrong; of the 2 for W4A4-W8A8, problem 11 has no code, and problem 6 has 2,338 characters of code but is wrong. On GPQA the original had 4 truncations at the 94K cap and the tiers have 1–2; on MMLU the original had 1 and the tiers have 0–2, with no clear change.

Details for six precisions (bucketed by reasoning length) Buckets are "correct / questions in bucket", split by reasoning length, left-closed and right-open. | Suite | Precision | Score | Reasoning P50 / P70 / P90 | 94K trunc. | Empty | <2K | 2–12K | 12–24K | 24–48K | ≥48K | |---|---|---:|---|---:|---:|---:|---:|---:|---:|---:| | GPQA | BF16 | 178/198 | 3,196 / 8,200 / 28,417 | 2 | 2 | 80/85 | 66/68 | 17/20 | 12/18 | 3/7 | | GPQA | Dynamic FP8 | 178/198 | 2,815 / 8,371 / 27,744 | 1 | 1 | 78/81 | 68/70 | 18/21 | 11/17 | 3/9 | | GPQA | Static FP8 | 178/198 | 2,966 / 7,832 / 26,431 | 1 | 2 | 82/84 | 68/74 | 17/19 | 9/17 | 2/4 | | GPQA | NVFP4 W4A16 | 170/198 | 2,965 / 9,667 / 28,433 | 2 | 3 | 77/80 | 64/70 | 17/21 | 8/17 | 4/10 | | GPQA | NVFP4 W4A4 | 167/198 | 2,876 / 10,996 / 31,986 | 2 | 3 | 76/82 | 58/60 | 20/23 | 12/26 | 1/7 | | GPQA | NVFP4 W4A4-W8A8 | 172/198 | 2,953 / 10,010 / 35,731 | 2 | 4 | 79/82 | 58/63 | 19/22 | 14/22 | 2/9 | | MMLU | BF16 | 446/500 | 154 / 252 / 779 | 1 | 0 | 432/472 | 13/23 | 1/3 | 0/0 | 0/2 | | MMLU | Dynamic FP8 | 445/500 | 138 / 271 / 881 | 1 | 0 | 436/477 | 8/21 | 0/1 | 0/0 | 1/1 | | MMLU | Static FP8 | 450/500 | 154 / 279 / 937 | 1 | 0 | 435/469 | 13/27 | 2/3 | 0/0 | 0/1 | | MMLU | NVFP4 W4A16 | 439/500 | 159 / 277 / 1,061 | 1 | 0 | 427/471 | 11/26 | 0/1 | 1/1 | 0/1 | | MMLU | NVFP4 W4A4 | 440/500 | 168 / 306 / 967 | 2 | 0 | 426/469 | 13/28 | 0/1 | 0/0 | 1/2 | | MMLU | NVFP4 W4A4-W8A8 | 442/500 | 157 / 273 / 778 | 0 | 0 | 432/477 | 8/20 | 1/2 | 1/1 | 0/0 | | LCB | BF16 | 90/100 | 5,073 / 16,033 / 38,911 | 2 | 2 | 40/40 | 25/26 | 11/14 | 9/11 | 5/9 | | LCB | Dynamic FP8 | 90/100 | 4,791 / 15,866 / 41,168 | 4 | 4 | 38/39 | 25/26 | 11/14 | 12/13 | 4/8 | | LCB | Static FP8 | 90/100 | 4,511 / 16,027 / 43,992 | 3 | 3 | 39/39 | 24/26 | 13/13 | 12/14 | 2/8 | | LCB | NVFP4 W4A16 | 91/100 | 5,119 / 15,790 / 47,768 | 4 | 3 | 38/38 | 26/27 | 13/13 | 10/12 | 4/10 | | LCB | NVFP4 W4A4 | 92/100 | 6,338 / 15,771 / 54,096 | 3 | 3 | 33/33 | 30/31 | 9/11 | 13/14 | 7/11 | | LCB | NVFP4 W4A4-W8A8 | 88/100 | 4,731 / 15,122 / 41,344 | 2 | 1 | 40/41 | 21/24 | 16/16 | 7/10 | 4/9 |

NVFP4 tiers

Protocol: one RTX PRO 6000, C8, 100K context, 94,208-token generation cap, no client-side timeout, DFlash2 draft, SGLang; full GPQA 198, MMLU 500, and LCB 100.

Suite NVFP4 W4A16 NVFP4 W4A4 NVFP4 W4A4-W8A8
GPQA 170/198 167/198 172/198
MMLU 439/500 440/500 442/500
LCB 91/100 92/100 88/100

Reasoning length, 94K truncations, and empty answers for the three NVFP4 tiers are in the "All tiers" table above. LCB correctness is judged by each problem's pass field. Raw records: evaluation/SCORES_NVFP4_W4A16.json, evaluation/SCORES_NVFP4_W4A4.json, and evaluation/SCORES_NVFP4_MIXED.json (the W4A4-W8A8 tier).

NInfer tiers: scores, reasoning length, 94K truncations, and empty answers

Protocol: scores carried over from the official triad run on 2026-10-05 on the same NInfer text path; one RTX PRO 6000, official NInfer engine (Neroued/ninfer), C8, 100K context, 94,208 generation cap, client not timed, no speculation; full GPQA 198 / MMLU 500 / LCB 100; empty answers count as wrong, truncations that still answer correctly count as correct, and every failure stays in the denominator. The packages uploaded now add a Q8 MTP head, the DFlash2 draft, and the proposal head on top of that text path; the text path is unchanged and the full triad was not re-run. Only the NInfer engine can load .ninfer; SGLang / vLLM / llama.cpp / transformers cannot.

Reasoning length is usage.reasoning_tokens (i.e. completion_tokens_details.reasoning_tokens); a 94K truncation means the generation cap was hit. LCB empty answers are the number of problems for which no runnable code could be extracted. Bold means better than the original Qwen3.8 27B (FP8).

Suite Precision Score Reasoning P50 / P70 / P90 94K trunc. Empty
GPQA NInfer W4A4 177/198 2,934 / 7,646 / 25,804 2 2
GPQA NInfer W4A4-W8A8 177/198 3,176 / 8,844 / 24,804 2 2
MMLU NInfer W4A4 449/500 164 / 285 / 830 0 0
MMLU NInfer W4A4-W8A8 444/500 163 / 281 / 923 0 0
LCB NInfer W4A4 89/100 3,994 / 15,533 / 36,125 2 2
LCB NInfer W4A4-W8A8 92/100 4,046 / 15,829 / 40,479 2 3

For NInfer W4A4, the 2 LCB empty answers are problems 11 and 15, both truncated with no code; the 2 GPQA empty answers are problems 79 and 127, both truncated with an empty pred. MMLU has no truncations and no empty answers. For NInfer W4A4-W8A8, the 3 LCB empty answers are problems 17, 53, and 54 (problem 17 stopped normally with no code; 53 and 54 were truncated with no code); the 2 GPQA empty answers are problems 79 and 127, both truncated with an empty pred. MMLU has no truncations and no empty answers.

Details for the two NInfer tiers (by reasoning-length bucket) Buckets are "correct / problems in bucket", half-open on the left. | Suite | Precision | Score | Reasoning P50 / P70 / P90 | 94K trunc. | Empty | <2K | 2–12K | 12–24K | 24–48K | ≥48K | |---|---|---:|---|---:|---:|---:|---:|---:|---:|---:| | GPQA | NInfer W4A4 | 177/198 | 2,934 / 7,646 / 25,804 | 2 | 2 | 76/83 | 69/71 | 17/22 | 14/19 | 1/3 | | GPQA | NInfer W4A4-W8A8 | 177/198 | 3,176 / 8,844 / 24,804 | 2 | 2 | 79/82 | 70/74 | 13/21 | 12/16 | 3/5 | | MMLU | NInfer W4A4 | 449/500 | 164 / 285 / 830 | 0 | 0 | 438/480 | 11/19 | 0/1 | 0/0 | 0/0 | | MMLU | NInfer W4A4-W8A8 | 444/500 | 163 / 281 / 923 | 0 | 0 | 435/478 | 8/21 | 1/1 | 0/0 | 0/0 | | LCB | NInfer W4A4 | 89/100 | 3,994 / 15,533 / 36,125 | 2 | 2 | 40/41 | 21/23 | 12/14 | 13/16 | 3/6 | | LCB | NInfer W4A4-W8A8 | 92/100 | 4,046 / 15,829 / 40,479 | 2 | 3 | 38/38 | 26/26 | 14/16 | 11/12 | 3/8 |

INT8 W8A8: scores, 94K truncations, and empty answers

Protocol: one RTX PRO 6000, vLLM 0.28, C8, 100K context, 94,208 generation cap, client not timed, no speculation, reasoning effort xhigh; full GPQA 198 / MMLU 500 / LCB 100; empty answers count as wrong, truncations that still answer correctly count as correct, and every failure stays in the denominator. INT8 W8A8 loads only in vLLM.

A 94K truncation means the generation cap was hit. LCB empty answers are the number of problems for which no runnable code could be extracted. Bold means better than the original Qwen3.8 27B (FP8); its numbers are in the all-tier table above.

Suite Precision Score Reasoning P50 / P70 / P90 94K trunc. Empty
GPQA INT8 W8A8 175/198 3,862 / 9,055 / 25,299.5 1 1
MMLU INT8 W8A8 450/500 156 / 291 / 864.4 0 0
LCB INT8 W8A8 91/100 — 2 0

Note: the INT8 W8A8 eval ran vLLM without a reasoning parser, so usage.reasoning_tokens is 0 throughout and reasoning plus answer were returned as content. GPQA and MMLU reasoning lengths were recounted from the raw text: the text before </think> in the content, counted with the BF16 tokenizer (the same method as the GGUF tiers). The LCB result file kept only the code, not the reasoning text, so it cannot be counted; that cell reads "—".

GPQA's 1 truncation is problem 127, with an empty pred, so it also counts as the empty answer. LCB's 2 truncations are problems 7 and 53: problem 7 left code that raised a runtime error and was judged wrong; problem 53 was truncated, but its code was still judged correct; LCB has no empty answers. MMLU has no truncations and no empty answers. By difficulty, LCB is hard 38/46, medium 30/31, and easy 23/23.

INT8 W8A16: scores, 94K truncations, and empty answers

Protocol: one RTX PRO 6000, vLLM 0.28, C8, 100K context, 94,208 generation cap, client not timed, reasoning effort xhigh, MTP speculation with 3 draft tokens (external draft INT8/W8A16/MTP-BF16/), --reasoning-parser qwen3; full GPQA 198 / MMLU 500 / LCB 100; empty answers count as wrong, truncations that still answer correctly count as correct, and every failure stays in the denominator. INT8 W8A16 loads only in vLLM (pack-quantized GPTQ W8A16). Vision and MTP smoke-tested on the same stack (MTP mean accept length 3.31; image OCR correct with and without thinking).

A 94K truncation means the generation cap was hit. LCB empty answers are the number of problems for which no runnable code could be extracted. Bold means better than the original Qwen3.8 27B (FP8); its numbers are in the all-tier table above.

Suite Precision Score Reasoning P50 / P70 / P90 94K trunc. Empty
GPQA INT8 W8A16 170/198 3,203 / 7,999 / 27,188 1 1
MMLU INT8 W8A16 449/500 162 / 287 / 876 0 0
LCB INT8 W8A16 94/100 5,422 / 17,884 / 39,584 1 1

Reasoning lengths come from usage.reasoning_tokens returned by vLLM. GPQA: 1 truncation (problem 79), 1 empty answer (problem 79). MMLU has no truncations and no empty answers. LCB: 1 truncation (atcoder:arc195_d:54), 1 empty answer (atcoder:arc195_d:54). By difficulty, LCB is easy 23/23, medium 31/31, hard 40/46.

Same-protocol TPS / concurrency tables will be added after the speed harness finishes; smoke decode was ~119 tok/s wall with MTP+vision on a short prompt.

INT4 W4A16: scores, 94K truncations, and empty answers

Protocol: one RTX PRO 6000, vLLM 0.28, C8, 100K context, 94,208 generation cap, client not timed, reasoning effort xhigh, MTP speculation with 3 draft tokens (built-in head), --reasoning-parser qwen3; full GPQA 198 / MMLU 500 / LCB 100; empty answers count as wrong, truncations that still answer correctly count as correct, and every failure stays in the denominator. The run was paused on 2026-10-09 and resumed with the same server settings; finished problems were kept.

A 94K truncation means the generation cap was hit. LCB empty answers are the number of problems for which no runnable code could be extracted. Bold means better than the original Qwen3.8 27B (FP8); its numbers are in the all-tier table above.

Suite Precision Score Reasoning P50 / P70 / P90 94K trunc. Empty
GPQA INT4 W4A16 177/198 3,136 / 8,115 / 27,856 1 1
MMLU INT4 W4A16 446/500 176 / 322 / 1,098 0 0
LCB INT4 W4A16 87/100 4,494 / 19,046 / 36,053 2 2

Reasoning lengths come from usage.reasoning_tokens returned by vLLM. GPQA: 1 truncation (problem 79), 1 empty answer (problem 79). MMLU has no truncations and no empty answers. LCB: 2 truncations (problem atcoder:arc182_e:6, atcoder:arc195_d:54), 2 empty answers (problem atcoder:arc182_e:6, atcoder:arc195_d:54). By difficulty, LCB is hard 37/46, medium 27/31, and easy 23/23. Mean MTP accept length over the run (vLLM log, 3 draft tokens): 2.81.

GGUF Q2 / Q3 / Q4 LynnStyle: scores, reasoning length, 94K truncations, and empty answers

Protocol: one RTX PRO 6000, llama.cpp (llama-server), C4, about 100K context per slot, 94,208 generation cap, client not timed, thinking on; full GPQA 198 / MMLU 500 / LCB 100; empty answers count as wrong, truncations that still answer correctly count as correct, and every failure stays in the denominator. Scored before the built-in MTP head was attached (external Q8 MTP draft); same quantized weights. The matching .ninfer packages under GGUF-NInfer/ are converted from the same GGUFs; the full triad was run only on the GGUF.

A 94K truncation means the generation cap was hit. LCB empty answers are the number of problems for which no runnable code could be extracted. Bold means better than the original Qwen3.8 27B (FP8); its numbers are in the all-tier table above.

Suite Precision Score Reasoning P50 / P70 / P90 94K trunc. Empty
GPQA GGUF Q2 LynnStyle 177/198 2,989.5 / 8,923.8 / 27,156.1 3 0
MMLU GGUF Q2 LynnStyle 433/500 181 / 326.3 / 1,020.5 1 0
LCB GGUF Q2 LynnStyle 90/100 5,656.5 / 17,835.8 / 40,067.3 1 1
GPQA GGUF Q3 LynnStyle 173/198 3,125.5 / 7,265.2 / 24,343.1 1 1
MMLU GGUF Q3 LynnStyle 449/500 148 / 279.3 / 923.4 0 0
LCB GGUF Q3 LynnStyle 92/100 4,421 / 14,232.2 / 34,946 1 1
GPQA GGUF Q4 LynnStyle 175/198 2,951.0 / 8,159.3 / 25,649.0 1 2
MMLU GGUF Q4 LynnStyle 448/500 164 / 312.9 / 1,077.7 0 0
LCB GGUF Q4 LynnStyle 89/100 3,669.5 / 14,810.5 / 38,182.1 2 2

Note: reasoning lengths are counted from the raw text with the BF16 tokenizer (GPQA/LCB: reasoning field; MMLU: text before the last line of response), not from the API reasoning_tokens.

GGUF Q6_K: scores, reasoning length, 94K truncations, and empty answers

Protocol: one RTX PRO 6000, llama.cpp (llama-server) loading GGUF/Qwen3.8-27B-Coder390-EfficientThink-Q6_K-MTP.gguf, C4, 100K context, 94,208 generation cap, client not timed, reasoning effort xhigh; full GPQA 198 / MMLU 500 / LCB 100; empty answers count as wrong, truncations that still answer correctly count as correct, and every failure stays in the denominator. GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q6_K-MTP.ninfer is converted from the same GGUF with the same backbone quantization; the full triad was run only on the GGUF.

Reasoning length is usage.reasoning_tokens; a 94K truncation means the generation cap was hit. LCB empty answers are the number of problems for which no runnable code could be extracted. Bold means better than the original Qwen3.8 27B (FP8); its numbers are in the all-tier table above.

Suite Precision Score Reasoning P50 / P70 / P90 94K trunc. Empty
GPQA GGUF Q6_K 174/198 3,683 / 9,814 / 27,966 2 2
MMLU GGUF Q6_K 448/500 162 / 310.3 / 939.4 0 0
LCB GGUF Q6_K 91/100 — 0 1

Note: for MMLU and LCB, llama.cpp did not return reasoning tokens separately (usage has no reasoning_tokens). MMLU reasoning length is the text before the last line of response, counted with the BF16 tokenizer (the same method as Q8_0); the LCB result file kept no reasoning text, so it cannot be counted and reads "—". GPQA reasoning tokens were counted separately by the eval script.

GPQA's 2 truncations are problems 79 and 127; both hit 94,208 with an empty pred, so they also count as the empty answers. MMLU has no truncations and no empty answers.

LCB has no 94K truncations; its 1 empty answer is problem 92, which stopped normally without producing code.

LCB is scored on llama.cpp: the LCB eval script gets replies from NInfer that are not valid JSON. This is a compatibility issue between the eval script and the API, not a model-quality issue; the same GGUF on llama.cpp passed every problem in the same spot-check batch.

GGUF Q8_0: scores, reasoning length, 94K truncations, and empty answers

Protocol: single RTX PRO 6000, llama.cpp (llama-server) loading GGUF/Qwen3.8-27B-Coder390-EfficientThink-Q8_0-MTP.gguf, C4, 100K context, generation cap 94,208, no client timeout, thinking xhigh; full GPQA 198 / MMLU 500 / LCB 100; empty answers count as wrong; truncated-but-correct counts as correct. GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q8_0-MTP.ninfer is converted from the same GGUF; the full triad was run on GGUF only.

Reasoning length: GPQA from usage.reasoning_tokens; MMLU from text before the last newline of response, counted with the BF16 tokenizer; LCB from saved reasoning text. 94K truncation means hitting the generation cap. LCB empty means no runnable code was extracted. Bold beats original Qwen3.8 27B (FP8).

Bench Precision Score Reasoning P50 / P70 / P90 94K trunc. Empty
GPQA GGUF Q8_0 171/198 3,102.5 / 7,971 / 28,891.6 2 0
MMLU GGUF Q8_0 443/500 164 / 291 / 741 0 0
LCB GGUF Q8_0 90/100 4,098.5 / 16,087.8 / 39,135.5 3 3

GPQA: 2 truncations, 0 empty. MMLU: 0 / 0. LCB: 3 truncations, 3 empty (length with no code).

LCB is scored on llama.cpp: the LCB harness gets non-JSON replies from NInfer — a harness issue, not model quality.

Quantization tiers

Tier Directory Notes Package size (bytes) BPW GPQA / MMLU / LCB
BF16 BF16/ Fully multimodal, original config, official BF16 MTP bundled, DFlash2 draft included, no patches needed 55,583,125,732 (≈51.8 GiB) 16.00 178 / 446 / 90
Static FP8 Block128 FP8/ Fully multimodal, official BF16 MTP bundled, DFlash2 draft included 33,669,220,491 (≈31.4 GiB) 9.00 178 / 450 / 90
NVFP4 W4A16 NVFP4/W4A16/ Fully multimodal, language-model Linear layers with NVFP4 weights + BF16 activations, official BF16 MTP bundled, DFlash2 draft included, no patches needed in SGLang 20,613,406,953 (≈19.2 GiB, excluding the draft) 5.93 170 / 439 / 91
NVFP4 W4A4 NVFP4/W4A4/ Fully multimodal, language-model Linear layers with NVFP4 weights + NVFP4 activations, official BF16 MTP bundled, DFlash2 draft included, no patches needed in SGLang 20,613,386,462 (≈19.2 GiB, excluding the draft) 5.93 167 / 440 / 92
NVFP4 W4A4-W8A8 NVFP4/W4A4-W8A8/ Fully multimodal, language-model MLP layers in NVFP4 W4A4 and attention / linear-attention projections in FP8 W8A8, official BF16 MTP bundled, DFlash2 draft included, no patches needed in SGLang 23,769,634,648 (≈22.1 GiB, excluding the draft) 6.84 172 / 442 / 88
NInfer W4A4 NVFP4-NInfer/W4A4/ Official NInfer package (.ninfer), W4A4 text path with a Q8 MTP head, the DFlash2 draft, the proposal head, and the vision component built in (image input with --vision); loadable only by the official NInfer engine (Neroued/ninfer) 23,773,675,264 (≈22.1 GiB) 6.76 177 / 449 / 89
NInfer W4A4-W8A8 NVFP4-NInfer/W4A4-W8A8/ Official NInfer mixed-precision package (.ninfer), W4A4-W8A8 text path with a Q8 MTP head, the DFlash2 draft, the proposal head, and the vision component built in (image input with --vision); loadable only by the official NInfer engine (Neroued/ninfer) 23,773,675,264 (≈22.1 GiB) 6.76 177 / 444 / 92
INT8 W8A8 INT8/W8A8/ Text + image (Qwen3_5ForConditionalGeneration; the BF16 vision tower is a separate file, model_visual.safetensors, added 2026-10-09): SmoothQuant per-channel INT8 weights + per-token dynamic INT8 activations in compressed-tensors format; does not include the DFlash2 draft; MTP comes as a separate BF16 draft folder (INT8/W8A8/MTP-BF16/) for vLLM speculative decoding; loadable only by vLLM 30,422,466,299 (≈28.3 GiB) 8.77 175 / 450 / 91
INT8 W8A16 INT8/W8A16/ Text + image (Qwen3_5ForConditionalGeneration): GPTQ symmetric per-channel INT8 weights + BF16 activations (compressed-tensors pack-quantized); BF16 vision tower model_visual.safetensors; MTP as separate BF16 draft folder INT8/W8A16/MTP-BF16/; no DFlash2 draft; loadable only by vLLM 30,370,996,824 (≈28.3 GiB including vision; MTP draft extra) 8.76 170 / 449 / 94
INT4 W4A16 INT4/W4A16/ Text + image (Qwen3_5ForConditionalGeneration): GPTQ INT4 weights (symmetric, group size 128) with BF16 activations in compressed-tensors format; built-in BF16 MTP head (model_mtp.safetensors) for vLLM speculative decoding; BF16 vision tower (model_visual.safetensors); no DFlash2 draft; tested on vLLM 19,437,985,972 (≈18.1 GiB) 5.25 177 / 446 / 87
GGUF Q3 LynnStyle GGUF/ Mixed-precision LynnStyle GGUF (Qwen3.8-27B-Coder390-EfficientThink-Q3LynnStyle-MTP.gguf): lowest type Q3; built-in Q4 MTP; vision external 17,303,770,432 (~16.1 GiB) 5.07 173 / 449 / 92
GGUF Q3 LynnStyle · NInfer GGUF-NInfer/ NInfer from Q3 LynnStyle GGUF; built-in Q4_K MTP and vision; NInfer-all and ninfer-fusion-kvmem 17,596,369,920 (~16.4 GiB) 5.07 173 / 449 / 92
GGUF Q3 LynnStyle · Q8MTP GGUF/ The same Q3 LynnStyle GGUF with only the built-in MTP head re-encoded as Q8_0 (Qwen3.8-27B-Coder390-EfficientThink-Q3LynnStyle-Q8MTP.gguf); every other tensor is byte-identical to the original; an alternative with a Q8_0 MTP head (the original's Q4_0 MTP head is supported by llama.cpp); llama.cpp vision via the mmproj in GGUF/ 17,516,107,072 (~16.3 GiB) 5.13 173 / 449 / 92
GGUF Q3 LynnStyle · Q8MTP · NInfer GGUF-NInfer/ NInfer package from the Q8MTP GGUF above (Qwen3.8-27B-Coder390-EfficientThink-Q3LynnStyle-Q8MTP.ninfer), built-in Q8_0 MTP head and vision, model id qwen3.8-27b-coder390-Q3LynnStyle-Q8Mtp; body weights identical to the original Q3 LynnStyle package, scores carried over 17,808,706,560 (~16.6 GiB) 5.13 173 / 449 / 92
GGUF Q4 LynnStyle GGUF/ Mixed-precision LynnStyle GGUF (Qwen3.8-27B-Coder390-EfficientThink-Q4LynnStyle-MTP.gguf): lowest type Q4; built-in Q4 MTP; vision external 19,620,406,592 (~18.3 GiB) 5.75 175 / 448 / 89
GGUF Q4 LynnStyle · NInfer GGUF-NInfer/ NInfer from Q4 LynnStyle GGUF; built-in Q4_K MTP and vision; NInfer-all and ninfer-fusion-kvmem 19,913,006,080 (~18.5 GiB) 5.74 175 / 448 / 89
GGUF Q4 LynnStyle · Q8MTP GGUF/ The same Q4 LynnStyle GGUF with only the built-in MTP head re-encoded as Q8_0 (Qwen3.8-27B-Coder390-EfficientThink-Q4LynnStyle-Q8MTP.gguf); every other tensor is byte-identical to the original; an alternative with a Q8_0 MTP head (the original's Q4_0 MTP head is supported by llama.cpp); llama.cpp vision via the mmproj in GGUF/ 19,832,743,232 (~18.5 GiB) 5.81 175 / 448 / 89
GGUF Q4 LynnStyle · Q8MTP · NInfer GGUF-NInfer/ NInfer package from the Q8MTP GGUF above (Qwen3.8-27B-Coder390-EfficientThink-Q4LynnStyle-Q8MTP.ninfer), built-in Q8_0 MTP head and vision, model id qwen3.8-27b-coder390-Q4LynnStyle-Q8Mtp; body weights identical to the original Q4 LynnStyle package, scores carried over 20,125,342,720 (~18.7 GiB) 5.81 175 / 448 / 89
GGUF Q2 LynnStyle GGUF/ Mixed-precision LynnStyle GGUF (Qwen3.8-27B-Coder390-EfficientThink-Q2LynnStyle-MTP.gguf): lowest type Q2; built-in Q4 MTP; vision external 13,276,009,792 (~12.4 GiB) 3.89 177 / 433 / 90
GGUF Q2 LynnStyle · NInfer GGUF-NInfer/ NInfer from Q2 LynnStyle GGUF; built-in Q4_K MTP and vision; NInfer-all and ninfer-fusion-kvmem 13,568,617,472 (~12.6 GiB) 3.89 177 / 433 / 90
GGUF Q2 LynnStyle · Q8MTP GGUF/ The same Q2 LynnStyle GGUF with only the built-in MTP head re-encoded as Q8_0 (Qwen3.8-27B-Coder390-EfficientThink-Q2LynnStyle-Q8MTP.gguf); every other tensor is byte-identical to the original; an alternative with a Q8_0 MTP head (the original's Q4_0 MTP head is supported by llama.cpp); llama.cpp vision via the mmproj in GGUF/ 13,488,346,432 (~12.6 GiB) 3.95 177 / 433 / 90
GGUF Q2 LynnStyle · Q8MTP · NInfer GGUF-NInfer/ NInfer package from the Q8MTP GGUF above (Qwen3.8-27B-Coder390-EfficientThink-Q2LynnStyle-Q8MTP.ninfer), built-in Q8_0 MTP head and vision, model id qwen3.8-27b-coder390-Q2LynnStyle-Q8Mtp; body weights identical to the original Q2 LynnStyle package, scores carried over 13,780,954,112 (~12.8 GiB) 3.95 177 / 433 / 90
GGUF Q8_0 GGUF/ GGUF single file for llama.cpp (Qwen3.8-27B-Coder390-EfficientThink-Q8_0-MTP.gguf): Q8_0 backbone, built-in MTP head, no external draft; llama.cpp vision via --mmproj with the mmproj in GGUF/ 29,069,202,688 (~27.1 GiB) 8.51 171 / 443 / 90
GGUF Q8_0 · NInfer GGUF-NInfer/ NInfer package converted from the same Q8_0 GGUF (.ninfer), built-in MTP head and vision component; loadable only by NInfer-all (iamwavecut/ninfer-all); scores from the same GGUF on llama.cpp 29,361,802,240 (~27.3 GiB) 8.51 171 / 443 / 90
GGUF Q6_K GGUF/ Single GGUF file for llama.cpp (Qwen3.8-27B-Coder390-EfficientThink-Q6_K-MTP.gguf): Q6_K backbone with imatrix calibration and a built-in Q8 MTP head, so no external draft is needed; llama.cpp vision via --mmproj with the mmproj in GGUF/ 23,177,516,384 (≈21.6 GiB) 6.79 174 / 448 / 91
GGUF Q6_K · NInfer GGUF-NInfer/ NInfer package (.ninfer) converted from the same GGUF, same backbone quantization, built-in MTP head (attention/MLP weights Q6_K, input projection Q8_0), vision component built in (image input with --vision); loadable only by NInfer-all (iamwavecut/ninfer-all); scores measured on the same GGUF with llama.cpp 23,379,962,880 (≈21.8 GiB) 6.76 174 / 448 / 91

Community fork ninfer-fusion-kvmem: the Q2 / Q3 / Q4 LynnStyle NInfer packages (GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q2LynnStyle-Q4MTP.ninfer, GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q3LynnStyle-Q4MTP.ninfer, GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q4LynnStyle-Q4MTP.ninfer) carry a built-in MTP head re-encoded as Q4_K and load and run MTP on both the official NInfer-all master and the community fork ninfer-fusion-kvmem (tested 2026-10-11). The .gguf files in GGUF/ keep a Q4_0 MTP head, which llama.cpp supports. The Q8 MTP versions remain available as an alternative (same weights, only the MTP head re-encoded as Q8_0): GGUF/Qwen3.8-27B-Coder390-EfficientThink-Q2LynnStyle-Q8MTP.gguf, GGUF/Qwen3.8-27B-Coder390-EfficientThink-Q3LynnStyle-Q8MTP.gguf and GGUF/Qwen3.8-27B-Coder390-EfficientThink-Q4LynnStyle-Q8MTP.gguf for llama.cpp, and GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q2LynnStyle-Q8MTP.ninfer, GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q3LynnStyle-Q8MTP.ninfer and GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q4LynnStyle-Q8MTP.ninfer for NInfer (model ids qwen3.8-27b-coder390-Q2LynnStyle-Q8Mtp, qwen3.8-27b-coder390-Q3LynnStyle-Q8Mtp, qwen3.8-27b-coder390-Q4LynnStyle-Q8Mtp).

Q8 MTP versions · check (2026-10-09, one RTX PRO 6000): NInfer-all master with --spec mtp --draft-tokens 3 --vision, int8 KV, 8,192 context; llama.cpp with --spec-type draft-mtp --spec-draft-n-max 4 and --mmproj; one image request each, short runs. The image question was answered correctly in every run (llama.cpp with thinking on and off).

Package NInfer decode tok/s NInfer MTP acceptance (tokens/round) llama.cpp decode tok/s llama.cpp draft acceptance Image
Q2 LynnStyle · Q8MTP 211.7 64.2% (3.14) 180.1 0.879 correct
Q3 LynnStyle · Q8MTP 134.9 51.7% (2.55) 138.3 0.904 correct
Q4 LynnStyle · Q8MTP 154.8 71.0% (3.13) 135.6 0.879 correct

BPW (bits per weight) is the effective average bit width of the whole package: the total bytes of the main-model weight files (.safetensors, including the vision tower, MTP, and scale tensors, excluding the DFlash2 draft) × 8 ÷ total parameter count. The parameter count is taken from the safetensors headers and is identical across the five tiers at 27,781,427,952 (an NVFP4 packed U8 tensor counts 2 elements per byte; scale tensors add no elements). The weight-file totals for BF16, static FP8, NVFP4 W4A16, NVFP4 W4A4, and NVFP4 W4A4-W8A8 are 55,563,008,568, 31,242,033,200, 20,593,097,872, 20,593,145,056, and 23,749,329,544 bytes respectively. Every tier is mixed precision (different layers use different bit widths), so the nominal bit width can mislead; BPW reflects quality density per unit of size.

BPW for the two NInfer tiers is the whole .ninfer file bytes × 8 ÷ total parameter count 27,781,427,952: both files were 23,477,856,260 bytes before the vision component was added, so BPW is 6.76 for each. Each .ninfer package includes the Q8 MTP head, the DFlash2 draft, and the proposal head; the vision component added on 2026-10-09 (295,720,448 bytes) is not counted in this BPW; the safetensors-based BPW above for NVFP4 / BF16 / FP8 excludes the DFlash2 draft, so the two formulas differ and BPW should not be compared directly across those families.

INT8 W8A8's BPW counts only its 8 INT8 text weight files (the BF16 vision file model_visual.safetensors, 921,497,224 bytes, is not counted): their total bytes, 29,480,791,128, × 8 ÷ the text parameter count 26,895,998,464, giving 8.77. The text parameter count comes from the safetensors headers of the 8 INT8 weight files (INT8 and BF16 tensors count their elements; scale tensors add no elements) and equals the BF16 package's count without the vision tower (460,730,096) and MTP (424,699,392); because the denominator differs from the 27,781,427,952 used above, BPW should not be compared directly with the other tiers.

BPW for the two GGUF Q8_0 packages is the single file's bytes × 8 ÷ the text + MTP parameter count 27,320,697,856: the GGUF is 29,069,202,688 bytes, giving 8.51, and the NInfer package was 29,065,983,488 bytes before the vision component was added, giving 8.51. BPW for the two GGUF Q6_K packages is the single file's bytes × 8 ÷ the text + MTP parameter count 27,320,697,856: the GGUF is 23,177,516,384 bytes, giving 6.79, and the NInfer package was 23,084,144,128 bytes before the vision component was added, giving 6.76. The parameter count comes from the GGUF header (866 tensors: text 26,895,998,464 + MTP 424,699,392); vision is not counted in the denominator (neither the llama.cpp mmproj nor the 295,720,448-byte vision part now inside each .ninfer). Because the denominator differs from both the 27,781,427,952 used above and the 26,895,998,464 used for INT8 W8A8, BPW should not be compared directly with the other tiers.

  • Each tier carries its own copy of the DFlash2 draft (identical files, 2,407,384,680 bytes): FP8/DFlash2-FP8/, BF16/DFlash2-FP8/, NVFP4/W4A16/DFlash2-FP8/, NVFP4/W4A4/DFlash2-FP8/, and NVFP4/W4A4-W8A8/DFlash2-FP8/.
  • For a BF16 DFlash2 draft (e.g. for V100 or engines that cannot load the FP8 draft), use the upstream incoai/Qwen3.8-27B-DFlash2.
  • DFlash2 draft format: FP8 E4M3 weights with 128×128 block scales (weight_scale_inv), the same format as the FP8 body; q/k/v projections, fc, the candidate selector, convolutions and norms stay BF16. It replaced the earlier per-tensor-scale draft on 2026-10-08 (engines that only read block scales, such as radiance, loaded the old draft without error but accepted almost no draft tokens). Checked on one RTX PRO 6000 on 2026-10-09 (SGLang 0.5.21, FP8 body, --speculative-num-draft-tokens 8 --speculative-dflash-block-size 8, one request at a time, 6 coding prompts, 1,024-token cap): greedy mean accept length is 5.05 at 171 tok/s per request (median), against 4.99 at 178 tok/s for the earlier draft with the same command. At temperature 1.0 the two run at 155 and 152 tok/s. In SGLang the new draft accepts as well as the old one. The other DFlash2 speed numbers in this card were measured with the earlier draft.
  • Speed figures for BF16 and static FP8 were measured on the static FP8 package (BF16 was not benchmarked separately and shares the same figures); the three NVFP4 tiers were each benchmarked on their own package.
  • NVFP4 scores were measured on a single GPU at C8; see "NVFP4 tiers" above for the protocol.
  • NInfer tier scores are carried over from the 2026-10-05 triad on the same text path (single GPU, C8, official NInfer, no speculation); see the NInfer tiers section above. NInfer speeds were measured separately on the new packages; see "NInfer tiers" under Best-TPS and concurrency recommendations below.
  • INT8 W8A8 scores are a full triad measured on a single GPU at C8 with vLLM and no speculation; see the INT8 W8A8 section above for the protocol. Its speeds come from a quick benchmark; see "INT8 W8A8" under Best-TPS and concurrency recommendations below.
  • INT4 W4A16 scores are a full triad measured on a single GPU at C8 with vLLM 0.28 and MTP (3 draft tokens, built-in head); see the INT4 W4A16 section above for the protocol, and "INT4 W4A16" under Best-TPS and concurrency recommendations below for speeds.
  • GGUF Q6_K scores are a full triad measured on a single GPU at C4 with llama.cpp; see the GGUF Q6_K section above for the protocol. Its speeds come from a quick benchmark; see "GGUF Q6_K" under Best-TPS and concurrency recommendations below.
  • GGUF Q8_0 scores are a full triad measured on a single GPU at C4 with llama.cpp; see the GGUF Q8_0 section above for the protocol. For speeds see "GGUF Q8_0" below (NInfer C8 MTP 486.3; llama.cpp C4 MTP 190.8).
  • The two NInfer tiers are under NVFP4-NInfer/W4A4/ and NVFP4-NInfer/W4A4-W8A8/, INT8 W8A8 is under INT8/W8A8/, INT4 W4A16 is under INT4/W4A16/, and GGUF Q2 / Q3 / Q4 LynnStyle (plus their Q8 MTP versions), Q6_K, and Q8_0 are under GGUF/ and GGUF-NInfer/.

Best-TPS and concurrency recommendations

Environment: one RTX PRO 6000 Blackwell 96GB; SGLang, 32K context (32,768), 4,096-token generation cap, thinking enabled, model-default sampling.

Goal Pick Aggregate tok/s Per-request tok/s
Fastest single request DFlash2 · C1 146.7 180.3
Highest aggregate throughput DFlash2 · C16 1,057.5 93.6
Balanced daily use DFlash2 · C8 646.3 113.9
MTP only: fastest single request MTP · C1 82.1 91.1
MTP only: highest aggregate throughput MTP · C16 612.7 60.1
MTP only: balanced daily use MTP · C8 380.3 71.1
  • Which speculation: at every measured concurrency (C1–C16), DFlash2 beats MTP on both aggregate and per-request speed. Use DFlash2 whenever you can.
  • When to use MTP: when you do not want to load the separate DFlash2 draft (DFlash2 has only been validated on SGLang; vLLM 0.28 + MTP: temporarily unavailable for FP8; use SGLang for now). If you run MTP only: use C1 for the fastest single request (91.1 tok/s), C4 for interactive use with a few users (293.3 aggregate, 84.0 per request), C8 for shared serving (380.3 aggregate, 71.1 per request), and C16 when only total throughput matters (612.7 aggregate, 60.1 per request).
  • Concurrency: C1–C4 for interactive use, C8 for shared or batch serving, C16 when only total throughput matters. Concurrency above C16 was not tested.
Full measured table C1 is the main run (4 requests); C4/C8/C16 are reruns with more requests (6×C per cell). "vs. no spec" is the ratio of aggregate throughput at the same concurrency. | Speculation | Concurrency | Aggregate tok/s | Per-request decode tok/s (median) | TTFT s (median) | Accept length | Accept rate | vs. no spec | |---|---|---:|---:|---:|---:|---:|---:| | MTP (bundled BF16) | C1 | 82.1 | 91.1 | 0.12 | 2.858 | 0.619 | 1.82× | | MTP (bundled BF16) | C4 | 293.3 | 84.0 | 0.15 | 2.844 | 0.615 | 1.96× | | MTP (bundled BF16) | C8 | 380.3 | 71.1 | 0.16 | 2.813 | 0.604 | 1.34× | | MTP (bundled BF16) | C16 | 612.7 | 60.1 | 0.17 | 2.747 | 0.582 | 1.45× | | DFlash2 | C1 | 146.7 | 180.3 | 0.12 | 4.289 | 0.470 | 3.25× | | DFlash2 | C4 | 384.9 | 124.4 | 0.16 | 3.982 | 0.425 | 2.57× | | DFlash2 | C8 | 646.3 | 113.9 | 0.15 | 4.131 | 0.447 | 2.28× | | DFlash2 | C16 | 1,057.5 | 93.6 | 0.24 | 4.017 | 0.431 | 2.50× | | No speculation | C1 | 45.1 | 45.6 | 0.11 | n/a | n/a | 1.00× | | No speculation | C4 | 149.5 | 42.2 | 0.13 | n/a | n/a | 1.00× | | No speculation | C8 | 283.0 | 41.7 | 0.12 | n/a | n/a | 1.00× | | No speculation | C16 | 422.8 | 38.4 | 0.13 | n/a | n/a | 1.00× | | Speculation | Fastest per request | Recommended (highest aggregate with per-request speed ≥ 60% of C1) | Highest aggregate | |---|---|---|---| | MTP | C1 (91.1 tok/s) | C16 (612.7 tok/s, 60.1 per request) | C16 | | DFlash2 | C1 (180.3 tok/s) | C8 (646.3 tok/s, 113.9 per request) | C16 (1,057.5 tok/s) | | No speculation | C1 (45.6 tok/s) | C16 (422.8 tok/s) | C16 |

NVFP4 tiers

Same environment as above: one RTX PRO 6000 Blackwell 96GB; SGLang, 32K context (32,768), 4,096-token generation cap, thinking enabled, model-default sampling. Data from evaluation/BENCH_NVFP4_W4A16.json, evaluation/BENCH_NVFP4_W4A4.json, and evaluation/BENCH_NVFP4_MIXED.json (the W4A4-W8A8 tier).

Goal Pick W4A16 aggregate tok/s W4A16 per-request tok/s W4A4 aggregate tok/s W4A4 per-request tok/s W4A4-W8A8 aggregate tok/s W4A4-W8A8 per-request tok/s
Fastest single request DFlash2 · C1 147.4 218.4 188.6 211.5 175.1 216.8
Highest aggregate throughput DFlash2 · C16 1,012.3 96.6 1,143.2 121.1 1,146.4 105.5
Balanced daily use DFlash2 · C8 472.4 131.7 689.8 132.4 627.9 132.4
MTP only: fastest single request MTP · C1 101.1 128.9 104.7 124.5 99.9 116.3
MTP only: highest aggregate throughput MTP · C16 817.3 70.6 912.4 73.0 580.2 69.4
MTP only: balanced daily use MTP · C8 450.7 91.3 355.5 86.6 417.2 83.2
  • Which speculation: on W4A4 and W4A4-W8A8, DFlash2 beats MTP on both aggregate and per-request speed at every measured concurrency (C1–C16). On W4A16, MTP has the higher aggregate only at C4 (351.4 vs. 315.2); DFlash2 is faster at every other level and on per-request speed throughout.
  • MTP only: on W4A16, use C1 for the fastest single request (128.9 tok/s), C4 for interactive use with a few users (351.4 aggregate, 108.0 per request), C8 for shared serving (450.7 aggregate, 91.3 per request), and C16 when only total throughput matters (817.3 aggregate, 70.6 per request). On W4A4 the same levels give C1 124.5 tok/s, C4 323.2 / 103.9, C8 355.5 / 86.6, and C16 912.4 / 73.0; on W4A4-W8A8, C1 116.3 tok/s, C4 213.0 / 99.8, C8 417.2 / 83.2, and C16 580.2 / 69.4 (aggregate / per request).
  • Accept length: MTP 2.608–2.967 (W4A16), 2.597–2.923 (W4A4), and 2.647–2.865 (W4A4-W8A8); DFlash2 3.351–4.143 (W4A16), 3.723–4.327 (W4A4), and 3.828–4.364 (W4A4-W8A8).
  • Concurrency: above C16 was not tested.
NVFP4 W4A16 full measured table Requests per level: 4 at C1, 12 at C4, 24 at C8, 48 at C16. "vs. no spec" is the ratio of aggregate throughput at the same concurrency. | Speculation | Concurrency | Aggregate tok/s | Per-request decode tok/s (median) | TTFT s (median) | Accept length | Accept rate | vs. no spec | |---|---|---:|---:|---:|---:|---:|---:| | MTP (bundled BF16) | C1 | 101.1 | 128.9 | 0.11 | 2.608 | 0.537 | 1.44× | | MTP (bundled BF16) | C4 | 351.4 | 108.0 | 0.13 | 2.796 | 0.599 | 2.34× | | MTP (bundled BF16) | C8 | 450.7 | 91.3 | 0.13 | 2.743 | 0.581 | 1.50× | | MTP (bundled BF16) | C16 | 817.3 | 70.6 | 0.15 | 2.967 | 0.656 | 1.58× | | DFlash2 | C1 | 147.4 | 218.4 | 0.10 | 3.469 | 0.353 | 2.11× | | DFlash2 | C4 | 315.2 | 164.9 | 0.13 | 3.351 | 0.337 | 2.10× | | DFlash2 | C8 | 472.4 | 131.7 | 0.14 | 3.454 | 0.351 | 1.57× | | DFlash2 | C16 | 1,012.3 | 96.6 | 0.23 | 4.143 | 0.449 | 1.96× | | No speculation | C1 | 70.0 | 71.6 | 0.09 | n/a | n/a | 1.00× | | No speculation | C4 | 150.3 | 62.1 | 0.10 | n/a | n/a | 1.00× | | No speculation | C8 | 300.9 | 62.1 | 0.10 | n/a | n/a | 1.00× | | No speculation | C16 | 515.8 | 54.7 | 0.10 | n/a | n/a | 1.00× | | Speculation | Fastest per request | Recommended (highest aggregate with per-request speed ≥ 60% of C1) | Highest aggregate | |---|---|---|---| | MTP | C1 (128.9 tok/s) | C8 (450.7 tok/s, 91.3 per request) | C16 (817.3 tok/s) | | DFlash2 | C1 (218.4 tok/s) | C8 (472.4 tok/s, 131.7 per request) | C16 (1,012.3 tok/s) | | No speculation | C1 (71.6 tok/s) | C16 (515.8 tok/s) | C16 (515.8 tok/s) |
NVFP4 W4A4 full measured table Requests per level: 4 at C1, 12 at C4, 24 at C8, 48 at C16. "vs. no spec" is the ratio of aggregate throughput at the same concurrency. | Speculation | Concurrency | Aggregate tok/s | Per-request decode tok/s (median) | TTFT s (median) | Accept length | Accept rate | vs. no spec | |---|---|---:|---:|---:|---:|---:|---:| | MTP (bundled BF16) | C1 | 104.7 | 124.5 | 0.15 | 2.685 | 0.562 | 1.48× | | MTP (bundled BF16) | C4 | 323.2 | 103.9 | 0.18 | 2.597 | 0.531 | 2.04× | | MTP (bundled BF16) | C8 | 355.5 | 86.6 | 0.17 | 2.683 | 0.561 | 1.12× | | MTP (bundled BF16) | C16 | 912.4 | 73.0 | 0.18 | 2.923 | 0.641 | 1.86× | | DFlash2 | C1 | 188.6 | 211.5 | 0.14 | 4.327 | 0.476 | 2.66× | | DFlash2 | C4 | 456.1 | 182.1 | 0.16 | 4.011 | 0.430 | 2.88× | | DFlash2 | C8 | 689.8 | 132.4 | 0.17 | 3.723 | 0.389 | 2.18× | | DFlash2 | C16 | 1,143.2 | 121.1 | 0.28 | 3.985 | 0.427 | 2.33× | | No speculation | C1 | 70.9 | 72.0 | 0.13 | n/a | n/a | 1.00× | | No speculation | C4 | 158.3 | 62.8 | 0.15 | n/a | n/a | 1.00× | | No speculation | C8 | 316.8 | 62.5 | 0.14 | n/a | n/a | 1.00× | | No speculation | C16 | 490.5 | 55.2 | 0.14 | n/a | n/a | 1.00× | | Speculation | Fastest per request | Recommended (highest aggregate with per-request speed ≥ 60% of C1) | Highest aggregate | |---|---|---|---| | MTP | C1 (124.5 tok/s) | C8 (355.5 tok/s, 86.6 per request) | C16 (912.4 tok/s) | | DFlash2 | C1 (211.5 tok/s) | C8 (689.8 tok/s, 132.4 per request) | C16 (1,143.2 tok/s) | | No speculation | C1 (72.0 tok/s) | C16 (490.5 tok/s) | C16 (490.5 tok/s) |
NVFP4 W4A4-W8A8 full measured table Requests per level: 4 at C1, 12 at C4, 24 at C8, 48 at C16. "vs. no spec" is the ratio of aggregate throughput at the same concurrency. | Speculation | Concurrency | Aggregate tok/s | Per-request decode tok/s (median) | TTFT s (median) | Accept length | Accept rate | vs. no spec | |---|---|---:|---:|---:|---:|---:|---:| | MTP (bundled BF16) | C1 | 99.9 | 116.3 | 0.17 | 2.865 | 0.621 | 1.61× | | MTP (bundled BF16) | C4 | 213.0 | 99.8 | 0.19 | 2.667 | 0.555 | 1.09× | | MTP (bundled BF16) | C8 | 417.2 | 83.2 | 0.18 | 2.647 | 0.549 | 1.33× | | MTP (bundled BF16) | C16 | 580.2 | 69.4 | 0.19 | 2.772 | 0.591 | 1.24× | | DFlash2 | C1 | 175.1 | 216.8 | 0.16 | 4.201 | 0.458 | 2.82× | | DFlash2 | C4 | 395.0 | 152.4 | 0.19 | 3.995 | 0.427 | 2.02× | | DFlash2 | C8 | 627.9 | 132.4 | 0.19 | 3.828 | 0.404 | 2.00× | | DFlash2 | C16 | 1,146.4 | 105.5 | 0.30 | 4.364 | 0.479 | 2.44× | | No speculation | C1 | 62.2 | 63.0 | 0.15 | n/a | n/a | 1.00× | | No speculation | C4 | 195.7 | 56.4 | 0.17 | n/a | n/a | 1.00× | | No speculation | C8 | 314.0 | 53.4 | 0.16 | n/a | n/a | 1.00× | | No speculation | C16 | 469.4 | 47.7 | 0.16 | n/a | n/a | 1.00× | | Speculation | Fastest per request | Recommended (highest aggregate with per-request speed ≥ 60% of C1) | Highest aggregate | |---|---|---|---| | MTP | C1 (116.3 tok/s) | C8 (417.2 tok/s, 83.2 per request) | C16 (580.2 tok/s) | | DFlash2 | C1 (216.8 tok/s) | C8 (627.9 tok/s, 132.4 per request) | C16 (1,146.4 tok/s) | | No speculation | C1 (63.0 tok/s) | C16 (469.4 tok/s) | C16 (469.4 tok/s) |

NInfer tiers

Setup: one RTX PRO 6000 Blackwell; official NInfer with the same context flags as the NInfer launch commands below (--max-context 102400 --kv-capacity 819200 --max-concurrency 8 --kv-dtype fp8); 4,096 generation cap, thinking on (template default xhigh), sampling temperature 1.0, top_p 0.95, top_k 20, same prompts as the NVFP4 benchmark above; 4 requests at C1, 12 at C4, 24 at C8. MTP uses 4 draft tokens and DFlash2 uses 8, both with --lm-head-draft. Numbers are aggregate decode tok/s. NInfer supports at most 8 concurrent requests, so C16 was not tested.

Speculation Tier C1 C4 C8
No speculation NInfer W4A4 68.1 195.8 306.8
No speculation NInfer W4A4-W8A8 68.1 236.1 369.5
MTP (4 draft tokens) NInfer W4A4 154.8 498.3 678.3
MTP (4 draft tokens) NInfer W4A4-W8A8 162.5 367.6 663.9
DFlash2 (8 draft tokens) NInfer W4A4 207.1 539.6 975.9
DFlash2 (8 draft tokens) NInfer W4A4-W8A8 199.1 650.1 804.9
  • Best setting: for both tiers and all three modes, aggregate throughput peaks at C8. NInfer W4A4 tops out with DFlash2 · C8 (975.9 tok/s) and NInfer W4A4-W8A8 with DFlash2 · C8 (804.9 tok/s); with MTP only, C8 gives 678.3 and 663.9 tok/s respectively.
  • C8 versus NVFP4 W4A4 (SGLang): NInfer W4A4 reaches 306.8 vs 316.8 with no speculation, 678.3 vs 355.5 with MTP, and 975.9 vs 689.8 tok/s with DFlash2. The engines and context settings differ, so treat this as a rough comparison.

INT8 W8A8

Setup: one RTX PRO 6000 Blackwell; vLLM 0.28 with --max-model-len 102400 and --max-num-seqs 8; 512 generation cap, thinking on (xhigh), sampling temperature 1.0, top_p 0.95, top_k 20; each level sends only as many requests as its concurrency (1 at C1, 2 at C2, 4 at C4, 8 at C8). This is a quick benchmark with few requests and short outputs, so the numbers are not directly comparable with the tiers above. Numbers are aggregate tok/s (all output tokens ÷ wall-clock time). Both rows were measured on a separate, unreleased comparison build with MTP (the same INT8 text weights plus one BF16 MTP layer); with no speculation the MTP layer is not used. This package does not include MTP; a separate MTP draft folder is now provided (see below).

Speculation C1 C2 C4 C8
No speculation 30.8 45.5 101.2 177.3
MTP (earlier comparison build, not the released draft) 23.9 37.8 72.5 145.9
  • Recommendation (this table): no speculation at C8 (177.3 tok/s); aggregate throughput rises with concurrency, and nothing above C8 was tested.
  • The MTP row above came from an earlier, unreleased comparison build and is kept for reference only; it does not describe the MTP-BF16/ draft folder, which is measured separately below. This tier has no DFlash2 draft.

With the MTP-BF16/ draft folder

Setup: one NVIDIA RTX PRO 6000 Blackwell (96 GB); vLLM 0.28 with --max-model-len 102400, --max-num-seqs 8, and --gpu-memory-utilization 0.85; MTP row uses --speculative-config '{"method":"mtp","model":"./INT8/W8A8/MTP-BF16","num_speculative_tokens":3}'. 1024 generation cap, thinking on, sampling temperature 1.0, top_p 0.95, top_k 20; each level sends 2 × concurrency requests over the same 8 prompts. Numbers are aggregate tok/s (all output tokens ÷ wall-clock time); the last column is the median per-request decode speed at C1. Different hardware and settings from the table above, so compare rows only within this table.

Speculation C1 C2 C4 C8 C1 per request
No speculation 31.1 59.9 81.9 127.0 31.6
MTP (3 draft tokens) 65.9 120.5 199.4 389.8 75.7
  • Accept length (mean tokens per step, including the verified token): 2.74–2.90 across C1–C8.
  • With this draft, 3 draft tokens is faster at every level on this machine: 65.9 tok/s at C1 against 31.1 with no speculation, and 389.8 tok/s at C8 against 127.0.
  • The INT8 scores above were measured without speculation; the draft folder does not change any INT8 weight file.

INT4 W4A16

Setup: one NVIDIA RTX PRO 6000 Blackwell (96 GB); vLLM 0.28 with --max-model-len 102400, --max-num-seqs 8, and --gpu-memory-utilization 0.85; MTP row uses the built-in head with --speculative-config '{"method":"mtp","num_speculative_tokens":3}'. 1024 generation cap, thinking on, sampling temperature 1.0, top_p 0.95, top_k 20; each level sends 2 × concurrency requests over the same 8 prompts (same script as the INT8 MTP-BF16/ table). Numbers are aggregate tok/s (all output tokens ÷ wall-clock time); the last column is the median per-request decode speed at C1.

Speculation C1 C2 C4 C8 C1 per request
No speculation 67.3 110.1 197.4 350.0 68.4
MTP (3 draft tokens) 121.2 193.2 347.5 500.1 135.2
  • Accept length (mean tokens per step, including the verified token): 2.77–2.92 across C1–C8 in this table; 2.81 averaged over the full eval run.
  • The INT4 scores above were measured with MTP (3 draft tokens).

GGUF Q6_K

Setup: one RTX PRO 6000 Blackwell; 1-minute quick benchmark, 512 generation cap, thinking on (xhigh), sampling temperature 1.0, top_p 0.95, top_k 20; each level sends only as many requests as its concurrency (1 at C1, 2 at C2, 4 at C4, 8 at C8). Numbers are aggregate tok/s (all output tokens ÷ wall-clock time). This is a quick benchmark with few requests and short outputs, so the numbers are not directly comparable with the full SGLang / NInfer benchmarks above. NInfer rows were measured on the GGUF-NInfer/ package with the server at --max-context 32768 --kv-capacity 32768 --kv-dtype rk8v4 --max-concurrency 8; llama.cpp rows were measured on the GGUF/ package.

Engine · speculation C1 C2 C4 C8
NInfer · MTP (3 draft tokens) 131.9 161.9 235.5 388.1
NInfer · no speculation 56.0 93.9 162.1 298.1
llama.cpp · MTP 97.2 95.3 168.1 189.0
llama.cpp · no speculation 53.4 not measured 123.0 not measured
  • Recommendation: NInfer + C4 + MTP (235.5 tok/s), matching the recommended launch command below (--max-concurrency 4). For aggregate throughput alone, C8 is higher (388.1 tok/s); raise --max-concurrency to 8 for that.
  • MTP is built in: both packages carry a built-in MTP head (GGUF: Q8_0; NInfer: Q6_K attention/MLP weights), so no external draft model is needed. For a single request, NInfer with MTP reaches 131.9 tok/s, about 2.5× llama.cpp without speculation (53.4 tok/s); llama.cpp with MTP reaches 97.2 tok/s aggregate at C1 (119.0 tok/s single-request decode).

GGUF Q8_0

Hardware: single RTX PRO 6000 Blackwell. llama.cpp rows use the quick protocol (thinking on, fused MTP): C1=4 requests, C2=6, C4=12; aggregate decode tok/s. NInfer rows use the same-caliber bench (thinking on, template default xhigh, max_tokens 4096, temperature 1.0, top_p 0.95, top_k 20; C1=4, C4=12, C8=24; MTP draft-tokens 4).

Engine · speculation C1 C2 C4 C8
NInfer · MTP (draft 4) 109.5 not measured 332.0 486.3
llama.cpp · MTP 85.3 133.6 190.8 not measured
  • Recommended: NInfer + C8 + MTP (486.3 tok/s). Fastest llama.cpp point is C4 MTP (190.8 tok/s).
  • MTP built in: both packages carry an MTP head; no external draft model.

Recommended launch commands

Quantization scheme

  • BF16 (BF16/): all weights in BF16 with the original multimodal config (mrope retained, mtp_num_hidden_layers=1) and no quantization_config.
  • Static FP8 (FP8/): official-style static FP8, E4M3 weights in 128×128 blocks with one scale per block (weight_scale_inv); activations use dynamic FP8. The config only adds a top-level FP8 quantization_config.
  • NVFP4 W4A16 (NVFP4/W4A16/): ModelOpt local-Hessian calibration. NVFP4 is E2M1 in 16-element blocks with one E4M3 scale per block plus a per-tensor FP32 second-level scale. MLP gate/up/down, full-attention q/k/v/o, and linear-attention in_proj_qkv / in_proj_z / out_proj (400 Linear layers) use NVFP4 weights with BF16 activations; linear-attention in_proj_a / in_proj_b and lm_head (97 layers) stay in BF16. The quantization metadata uses ModelOpt's MIXED_PRECISION format (each of the 400 layers tagged W4A16_NVFP4), which SGLang detects as modelopt_mixed. 1,999 tensors: 1,651 language, 333 vision, 15 MTP.
  • NVFP4 W4A4 (NVFP4/W4A4/): same calibration data and algorithm and the same 400 Linear layers, with both weights and activations in NVFP4 (activations are quantized at inference in 16-element blocks). Standard NVFP4 export, detected by SGLang as modelopt_fp4. 2,399 tensors: 2,051 language, 333 vision, 15 MTP.
  • NVFP4 W4A4-W8A8 (NVFP4/W4A4-W8A8/): mixed precision with the same calibration data and algorithm. MLP gate/up/down (192 Linear layers) use NVFP4 W4A4 (both weights and activations in NVFP4; activations are quantized at inference in 16-element blocks); full-attention q/k/v/o and linear-attention in_proj_qkv / in_proj_z / out_proj (208 Linear layers) use FP8 W8A8 (E4M3 weights and activations with static per-tensor scales; activation scales come from calibration); linear-attention in_proj_a / in_proj_b and lm_head (97 layers) stay in BF16. The quantization metadata uses ModelOpt's MIXED_PRECISION format (each layer tagged NVFP4 or FP8), which SGLang detects as modelopt_mixed. 2,191 tensors: 1,843 language, 333 vision, 15 MTP.
  • NVFP4 calibration data: complete trajectories (prompt + reasoning + final answer) that were correct and non-empty, taken from this model's own RLOO training data: 512 samples, about 1.735M tokens, at most 4,096 tokens each. No official GPQA, MMLU, or LCB problems are used. See evaluation/NVFP4_CALIBRATION_METHOD.md. In all three tiers the vision tower (333 tensors) and MTP (15 tensors) are BF16.
  • Architecture: Qwen3_5ForConditionalGeneration, 64 layers (linear attention and full attention alternating 3:1). The FP8 package has 1,599 tensors: 1,251 language, 333 vision, 15 MTP.
Component (static FP8 package) Precision
Linear attention A_log, dt_bias, norm, conv1d, in_proj_a / in_proj_b (×48) BF16
Linear attention in_proj_qkv, in_proj_z, out_proj (×48) FP8 E4M3 Block128
Full-attention q/k/v/o and all MLP gate/up/down (400 Linear layers including the row above) FP8 E4M3 Block128
embed_tokens, lm_head BF16
Vision tower (333 tensors) BF16, taken unchanged from the RLOO merged weights
MTP (15 tensors) BF16, taken unchanged from the official Qwen3.8-27B

All SSM control branches stay in BF16; the exclusion list matches Qwen's official FP8 release, keeping 146 language-model modules in BF16. FP8 package smoke tests passed: patch-free load in SGLang, greedy output identical to the text-only evaluation build, SGLang image request, SGLang MTP, and vLLM image request. vLLM 0.28 + MTP: temporarily unavailable for FP8; use SGLang for now.

NVFP4 smoke tests: patch-free load in SGLang, greedy parity, and the image request passed. MTP and DFlash2 speed and accept length come from the separate benchmark runs (all C1–C16 levels completed; see above).

GGUF Q8_0 (GGUF/, GGUF-NInfer/): Q8_0 backbone with built-in MTP head (blk.64.nextn), no external draft; 866 tensors; .ninfer converted from the same GGUF; the GGUF has no vision weights (llama.cpp uses GGUF/mmproj-Qwen3.8-27B-Q8_0.gguf via --mmproj); the .ninfer carries the vision component inside the package (add --vision; see NInfer · vision below).

GGUF Q6_K (GGUF/, GGUF-NInfer/): Q6_K backbone calibrated with a 512-chunk imatrix, plus structure protection: the linear-attention (SSM) ssm_alpha / ssm_beta stay BF16, the token embedding and output head are Q8_0, and the MTP head (blk.64 attn q/k/v/output, ffn gate/up/down, and nextn.eh_proj) is entirely Q8_0 with its norms kept in F32. The GGUF has 866 tensors in 65 blocks (64 backbone layers + 1 MTP layer). The .ninfer is converted from the same GGUF with the same backbone quantization; its MTP attention/MLP weights are Q6_K (gguf_q6_k) and only mtp/input_projection is Q8_0; the GGUF has no vision weights (llama.cpp uses GGUF/mmproj-Qwen3.8-27B-Q8_0.gguf via --mmproj); the .ninfer carries the vision component inside the package (add --vision; see NInfer · vision below).

Commands

Requires official SGLang ≥ 0.5.19; vLLM ≥ 0.28 (MTP only). vLLM MTP on NVFP4 with tensor parallel ≥ 2 has a known issue (vLLM #52480); use a single GPU there. vLLM 0.28 + MTP: temporarily unavailable for FP8; use SGLang for now. INT8 W8A8 and INT4 W4A16 load only in vLLM (tested on 0.28); their commands are below, after the NInfer commands.

MTP and DFlash2 are mutually exclusive; enable only one per launch. The examples use ./FP8; for the BF16 tier, replace the --model-path path with ./BF16, and for the NVFP4 tiers replace --model-path with ./NVFP4/W4A16, ./NVFP4/W4A4, or ./NVFP4/W4A4-W8A8. The DFlash2 draft is the DFlash2-FP8 folder inside each tier (e.g. ./FP8/DFlash2-FP8, ./BF16/DFlash2-FP8, ./NVFP4/W4A16/DFlash2-FP8). SGLang detects the NVFP4 quantization format automatically, so no --quantization flag is needed; among these SGLang-format tiers, vLLM was validated only on the FP8 package (without MTP), and NVFP4 was tested only on SGLang; INT8 W8A8 and INT4 W4A16 are vLLM-only and were evaluated on vLLM 0.28. Concurrency and context settings match the benchmark runs; adjust as needed.

SGLang · MTP (bundled BF16)

python -m sglang.launch_server \
  --model-path ./FP8 \
  --context-length 32768 \
  --max-running-requests 16 \
  --mamba-ssm-dtype bfloat16 \
  --speculative-algorithm EAGLE \
  --speculative-num-steps 3 \
  --speculative-eagle-topk 1 \
  --speculative-num-draft-tokens 4

vLLM · MTP

vLLM 0.28 + MTP: temporarily unavailable for FP8; use SGLang for now (see the SGLang MTP command above).

SGLang · DFlash2

python -m sglang.launch_server \
  --model-path ./FP8 \
  --context-length 32768 \
  --max-running-requests 16 \
  --mamba-ssm-dtype bfloat16 \
  --speculative-algorithm DFLASH \
  --speculative-draft-model-path ./FP8/DFlash2-FP8 \
  --speculative-draft-model-quantization fp8 \
  --speculative-num-draft-tokens 8

SGLang · NVFP4 W4A16 · DFlash2 (for W4A4, replace both W4A16 with W4A4; for MTP on NVFP4, use the MTP command above and change only --model-path)

python -m sglang.launch_server \
  --model-path ./NVFP4/W4A16 \
  --context-length 32768 \
  --max-running-requests 16 \
  --mamba-ssm-dtype bfloat16 \
  --speculative-algorithm DFLASH \
  --speculative-draft-model-path ./NVFP4/W4A16/DFlash2-FP8 \
  --speculative-draft-model-quantization fp8 \
  --speculative-num-draft-tokens 8

SGLang · NVFP4 W4A4-W8A8 · DFlash2 (for MTP, use the MTP command above and change only --model-path)

python -m sglang.launch_server \
  --model-path ./NVFP4/W4A4-W8A8 \
  --context-length 32768 \
  --max-running-requests 16 \
  --mamba-ssm-dtype bfloat16 \
  --speculative-algorithm DFLASH \
  --speculative-draft-model-path ./NVFP4/W4A4-W8A8/DFlash2-FP8 \
  --speculative-draft-model-quantization fp8 \
  --speculative-num-draft-tokens 8

The BF16 / FP8 / NVFP4 scores in this card were measured on SGLang with DFlash2 enabled (NInfer and INT8 W8A8 without speculation, INT4 W4A16 with MTP, GGUF on llama.cpp; see each section); speculative decoding does not change the target model's output distribution. Default sampling is in generation_config.json (temperature 1.0, top_p 0.95, top_k 20).

Images on SGLang / vLLM: BF16/, FP8/, NVFP4/W4A16/, NVFP4/W4A4/ and NVFP4/W4A4-W8A8/ are full multimodal checkpoints: config.json declares Qwen3_5ForConditionalGeneration with a vision_config, each folder has preprocessor_config.json and video_preprocessor_config.json, and the weight index maps all 333 vision-tower tensors (to vision-bf16.safetensors in that folder; for BF16, to model-00002-of-00002.safetensors). The SGLang and vLLM commands above accept images as they are, with no extra flag; send OpenAI-style image_url parts to POST /v1/chat/completions (request example under NInfer · vision below; set model to the served model name). INT8/W8A8/ accepts images too since 2026-10-09 (Qwen3_5ForConditionalGeneration; BF16 vision tower in model_visual.safetensors, preprocessor configs included): use the INT8 vLLM commands below as they are. INT4/W4A16/ accepts images too (BF16 vision tower in model_visual.safetensors): use the INT4 vLLM command below.

NVFP4 · NInfer (.ninfer, official NInfer)

W4A4 is shown; for W4A4-W8A8, change the path to ./NVFP4-NInfer/W4A4-W8A8/Qwen3.8-27B-Coder390-EfficientThink-W4A4-W8A8-MTP-DFlash2.ninfer and --model-id to qwen3.8-27b-coder390-w4a4-w8a8.

The MTP-DFlash2 packages already contain the Q8 MTP head and the DFlash2 draft, so NInfer needs no external draft model (unlike the SGLang commands above, which take a DFlash2 draft path); pass either --spec mtp or --spec dflash2, or omit --spec to run without speculation.

Images: the two V3 MTP-DFlash2 .ninfer packages in NVFP4-NInfer/ (W4A4 and W4A4-W8A8) contain the vision component since 2026-10-09 (295,720,448 bytes, quantized from the BF16 vision weights: patch embedding Q6, attention q/k/v and MLP fc1 Q4, other projections Q5, merger Q8, norms and biases BF16). Text, MTP and DFlash2 weights are byte-for-byte unchanged. Add --vision to any NInfer command below and send images as OpenAI-style image_url parts to POST /v1/chat/completions. Without --vision the packages run text-only, as before. The V2 packages (-NInferV2-NOT-FOR-V3) are unchanged and still have no vision. GPU test on 2026-10-09 (one RTX PRO 6000, NInfer-all 64492cb with --vision, image prompt): both MTP-DFlash2 packages answered correctly. W4A4-MTP-DFlash2: MTP (3 draft tokens) accept length 2.89, decode 153 tok/s; DFlash2 (7 draft tokens) accept length 3.53, decode 185 tok/s. W4A4-W8A8-MTP-DFlash2: MTP 3.19, 164 tok/s; DFlash2 3.74, 195 tok/s.

NInfer · no speculation

ninfer-serve ./NVFP4-NInfer/W4A4/Qwen3.8-27B-Coder390-EfficientThink-W4A4-MTP-DFlash2.ninfer \
  --host 127.0.0.1 --port 19931 --device 0 \
  --model-id qwen3.8-27b-coder390-w4a4 \
  --max-context 102400 --kv-capacity 819200 --max-concurrency 8 \
  --kv-dtype fp8

NInfer · MTP (4 draft tokens)

ninfer-serve ./NVFP4-NInfer/W4A4/Qwen3.8-27B-Coder390-EfficientThink-W4A4-MTP-DFlash2.ninfer \
  --host 127.0.0.1 --port 19931 --device 0 \
  --model-id qwen3.8-27b-coder390-w4a4 \
  --max-context 102400 --kv-capacity 819200 --max-concurrency 8 \
  --kv-dtype fp8 \
  --spec mtp --draft-tokens 4 --lm-head-draft

NInfer · DFlash2 (8 draft tokens)

ninfer-serve ./NVFP4-NInfer/W4A4/Qwen3.8-27B-Coder390-EfficientThink-W4A4-MTP-DFlash2.ninfer \
  --host 127.0.0.1 --port 19931 --device 0 \
  --model-id qwen3.8-27b-coder390-w4a4 \
  --max-context 102400 --kv-capacity 819200 --max-concurrency 8 \
  --kv-dtype fp8 \
  --spec dflash2 --draft-tokens 8 --lm-head-draft

NInfer · vision (image input), one command per package

Each command is the matching NInfer command above plus --vision. Nothing else is needed: the vision component is inside every V3 .ninfer, so the vision-bf16.safetensors next to the packages is not used at run time.

# W4A4 · MTP-DFlash2 package · no speculation
ninfer-serve ./NVFP4-NInfer/W4A4/Qwen3.8-27B-Coder390-EfficientThink-W4A4-MTP-DFlash2.ninfer \
  --host 127.0.0.1 --port 19931 --device 0 \
  --model-id qwen3.8-27b-coder390-w4a4 \
  --max-context 102400 --kv-capacity 819200 --max-concurrency 8 \
  --kv-dtype fp8 \
  --vision

# W4A4 · MTP-DFlash2 package · MTP
ninfer-serve ./NVFP4-NInfer/W4A4/Qwen3.8-27B-Coder390-EfficientThink-W4A4-MTP-DFlash2.ninfer \
  --host 127.0.0.1 --port 19931 --device 0 \
  --model-id qwen3.8-27b-coder390-w4a4 \
  --max-context 102400 --kv-capacity 819200 --max-concurrency 8 \
  --kv-dtype fp8 \
  --spec mtp --draft-tokens 4 --lm-head-draft \
  --vision

# W4A4 · MTP-DFlash2 package · DFlash2
ninfer-serve ./NVFP4-NInfer/W4A4/Qwen3.8-27B-Coder390-EfficientThink-W4A4-MTP-DFlash2.ninfer \
  --host 127.0.0.1 --port 19931 --device 0 \
  --model-id qwen3.8-27b-coder390-w4a4 \
  --max-context 102400 --kv-capacity 819200 --max-concurrency 8 \
  --kv-dtype fp8 \
  --spec dflash2 --draft-tokens 8 --lm-head-draft \
  --vision

# W4A4-W8A8 · MTP-DFlash2 package · no speculation
ninfer-serve ./NVFP4-NInfer/W4A4-W8A8/Qwen3.8-27B-Coder390-EfficientThink-W4A4-W8A8-MTP-DFlash2.ninfer \
  --host 127.0.0.1 --port 19931 --device 0 \
  --model-id qwen3.8-27b-coder390-w4a4-w8a8 \
  --max-context 102400 --kv-capacity 819200 --max-concurrency 8 \
  --kv-dtype fp8 \
  --vision

# W4A4-W8A8 · MTP-DFlash2 package · MTP
ninfer-serve ./NVFP4-NInfer/W4A4-W8A8/Qwen3.8-27B-Coder390-EfficientThink-W4A4-W8A8-MTP-DFlash2.ninfer \
  --host 127.0.0.1 --port 19931 --device 0 \
  --model-id qwen3.8-27b-coder390-w4a4-w8a8 \
  --max-context 102400 --kv-capacity 819200 --max-concurrency 8 \
  --kv-dtype fp8 \
  --spec mtp --draft-tokens 4 --lm-head-draft \
  --vision

# W4A4-W8A8 · MTP-DFlash2 package · DFlash2
ninfer-serve ./NVFP4-NInfer/W4A4-W8A8/Qwen3.8-27B-Coder390-EfficientThink-W4A4-W8A8-MTP-DFlash2.ninfer \
  --host 127.0.0.1 --port 19931 --device 0 \
  --model-id qwen3.8-27b-coder390-w4a4-w8a8 \
  --max-context 102400 --kv-capacity 819200 --max-concurrency 8 \
  --kv-dtype fp8 \
  --spec dflash2 --draft-tokens 8 --lm-head-draft \
  --vision

Image request: OpenAI-style image_url part in POST /v1/chat/completions; url takes an http(s):// image link; a data URI of a local image also works, and model must match --model-id.

curl http://127.0.0.1:19931/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3.8-27b-coder390-w4a4",
    "messages": [{"role": "user", "content": [
      {"type": "image_url", "image_url": {"url": "https://example.com/demo.png"}},
      {"type": "text", "text": "Describe this image."}
    ]}],
    "max_tokens": 2048
  }'

Health check: curl -sf http://127.0.0.1:19931/health. The chat endpoint is POST /v1/chat/completions; the request model must match --model-id.

vLLM · INT8 W8A8 (no speculation)

VLLM_DISABLED_KERNELS=CutlassInt8ScaledMMLinearKernel \
VLLM_USE_FLASHINFER_SAMPLER=0 \
vllm serve ./INT8/W8A8 \
  --trust-remote-code --dtype bfloat16 \
  --max-model-len 102400 --served-model-name int8 \
  --gpu-memory-utilization 0.85 --max-num-seqs 8 \
  --reasoning-parser qwen3

On RTX PRO 6000 Blackwell, vLLM's Cutlass INT8 kernel is unavailable and the server will not start unless it is disabled with VLLM_DISABLED_KERNELS=CutlassInt8ScaledMMLinearKernel; vLLM then uses its Triton INT8 kernel (the startup log shows TritonInt8ScaledMMLinearKernel). VLLM_USE_FLASHINFER_SAMPLER=0 matches the tested setup. Tested on vLLM 0.28; SGLang cannot load this package (ModelOptFp8Config raises an error). --reasoning-parser qwen3 returns the reasoning separately in reasoning_content (it was off during scoring).

vLLM · INT8 W8A8 · MTP (external draft INT8/W8A8/MTP-BF16/)

VLLM_DISABLED_KERNELS=CutlassInt8ScaledMMLinearKernel \
VLLM_USE_FLASHINFER_SAMPLER=0 \
vllm serve ./INT8/W8A8 \
  --trust-remote-code --dtype bfloat16 \
  --max-model-len 102400 --served-model-name int8 \
  --gpu-memory-utilization 0.85 --max-num-seqs 8 \
  --reasoning-parser qwen3 \
  --speculative-config '{"method":"mtp","model":"./INT8/W8A8/MTP-BF16","num_speculative_tokens":3}'

On an RTX PRO 6000 Blackwell, set VLLM_DISABLED_KERNELS=CutlassInt8ScaledMMLinearKernel and VLLM_USE_FLASHINFER_SAMPLER=0, as in the command above. Both rows of the new table used those two settings.

vLLM · INT4 W4A16 · MTP (built-in head) · text and images

VLLM_USE_FLASHINFER_SAMPLER=0 \
vllm serve ./INT4/W4A16 \
  --trust-remote-code --dtype bfloat16 \
  --max-model-len 102400 --served-model-name int4 \
  --gpu-memory-utilization 0.85 --max-num-seqs 8 \
  --reasoning-parser qwen3 \
  --speculative-config '{"method":"mtp","num_speculative_tokens":3}'

Images go as OpenAI-style image_url parts with the same server; no extra flag is needed:

curl -s http://127.0.0.1:8000/v1/chat/completions -H 'Content-Type: application/json' -d '{
  "model": "int4",
  "messages": [{"role": "user", "content": [
    {"type": "image_url", "image_url": {"url": "https://example.com/chart.png"}},
    {"type": "text", "text": "Describe this image."}
  ]}],
  "max_tokens": 2048
}'

Remove --speculative-config to run without speculation. Tested on vLLM 0.28 (VLLM_USE_FLASHINFER_SAMPLER=0 matches the tested setup); SGLang and NInfer were not tested with this package. --reasoning-parser qwen3 returns the reasoning separately.

GGUF / GGUF-NInfer

Load the .ninfer with NInfer-all (the master branch of iamwavecut/ninfer-all): the package keeps the GGUF quantization blocks, which other NInfer builds cannot read. llama.cpp needs an upstream build that supports --spec-type draft-mtp. NInfer's --kv-capacity is one KV pool shared by all requests; llama.cpp's -c 409600 -np 4 splits the context evenly across 4 slots, so each request gets at most 102,400 tokens, enough for a single request to reach 94K. The chat endpoint is POST /v1/chat/completions; for NInfer the request model must match --model-id. Vision: GGUF/mmproj-Qwen3.8-27B-Q8_0.gguf for llama.cpp --mmproj (629,247,008 bytes, sha256 cae9799dc9196449b0d83f716e64af89d5cf65147510462e5a629a2aa23adb32). Each .ninfer package carries the vision component; add --vision to ninfer-serve to accept images (see NInfer · vision below).

Community fork ninfer-fusion-kvmem: the Q2 / Q3 / Q4 LynnStyle NInfer packages (GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q2LynnStyle-Q4MTP.ninfer, GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q3LynnStyle-Q4MTP.ninfer, GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q4LynnStyle-Q4MTP.ninfer) carry a built-in MTP head re-encoded as Q4_K and load and run MTP on both the official NInfer-all master and the community fork ninfer-fusion-kvmem (tested 2026-10-11). The .gguf files in GGUF/ keep a Q4_0 MTP head, which llama.cpp supports. The Q8 MTP versions remain available as an alternative (same weights, only the MTP head re-encoded as Q8_0): GGUF/Qwen3.8-27B-Coder390-EfficientThink-Q2LynnStyle-Q8MTP.gguf, GGUF/Qwen3.8-27B-Coder390-EfficientThink-Q3LynnStyle-Q8MTP.gguf and GGUF/Qwen3.8-27B-Coder390-EfficientThink-Q4LynnStyle-Q8MTP.gguf for llama.cpp, and GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q2LynnStyle-Q8MTP.ninfer, GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q3LynnStyle-Q8MTP.ninfer and GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q4LynnStyle-Q8MTP.ninfer for NInfer (model ids qwen3.8-27b-coder390-Q2LynnStyle-Q8Mtp, qwen3.8-27b-coder390-Q3LynnStyle-Q8Mtp, qwen3.8-27b-coder390-Q4LynnStyle-Q8Mtp).

MTP and DFlash2: every package under GGUF/ and GGUF-NInfer/ has a built-in MTP head (Q2 / Q3 / Q4 LynnStyle use built-in Q4 MTP: Q4_0 in the .gguf, Q4_K in the -Q4MTP.ninfer; their -Q8MTP versions use a Q8_0 MTP head). To enable it, add --spec mtp --draft-tokens N for NInfer or --spec-type draft-mtp --spec-draft-n-max N for llama.cpp; leave these out to run without speculation. DFlash2 is an external draft model and is not in these GGUF / NInfer packages; this repository does not ship a DFlash2 draft for GGUF / GGUF-NInfer. For DFlash2, use the DFlash2-FP8/ draft that ships with the BF16 / FP8 / NVFP4 tiers in this repository (SGLang --speculative-algorithm DFLASH) or the .ninfer packages under NVFP4-NInfer/ (--spec dflash2). MTP and DFlash2 are mutually exclusive: a server runs one or the other, never both.

GGUF · NInfer

NInfer · GGUF Q2 LynnStyle · MTP (draft 4, recommended concurrency 8)

ninfer-serve ./GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q2LynnStyle-Q4MTP.ninfer \
  --model-id qwen3.8-27b-coder390-Q2LynnStyle-Mtp \
  --max-context 102400 --kv-capacity 819200 --kv-dtype rk8v4 \
  --max-concurrency 8 --spec mtp --draft-tokens 4

vLLM · INT8 W8A16 (no speculation)

VLLM_DISABLED_KERNELS=CutlassInt8ScaledMMLinearKernel VLLM_USE_FLASHINFER_SAMPLER=0 \
vllm serve ./INT8/W8A16 \
  --served-model-name qwen3.8-27b-coder390-int8-w8a16 \
  --trust-remote-code --max-model-len 102400 --max-num-seqs 8 \
  --gpu-memory-utilization 0.90 --reasoning-parser qwen3

vLLM · INT8 W8A16 · MTP (external draft INT8/W8A16/MTP-BF16/)

VLLM_DISABLED_KERNELS=CutlassInt8ScaledMMLinearKernel VLLM_USE_FLASHINFER_SAMPLER=0 \
vllm serve ./INT8/W8A16 \
  --served-model-name qwen3.8-27b-coder390-int8-w8a16 \
  --trust-remote-code --max-model-len 102400 --max-num-seqs 8 \
  --gpu-memory-utilization 0.90 --reasoning-parser qwen3 \
  --speculative-config '{"method":"mtp","model":"./INT8/W8A16/MTP-BF16","num_speculative_tokens":3}'

NInfer · GGUF Q3 LynnStyle · MTP (draft 4, recommended concurrency 8)

ninfer-serve ./GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q3LynnStyle-Q4MTP.ninfer \
  --host 127.0.0.1 --port 8080 --device 0 \
  --model-id qwen3.8-27b-coder390-Q3LynnStyle-Mtp \
  --max-context 102400 --kv-capacity 819200 --max-concurrency 8 \
  --kv-dtype rk8v4 \
  --spec mtp --draft-tokens 4

NInfer · GGUF Q4 LynnStyle · MTP (draft 4, recommended concurrency 8)

ninfer-serve ./GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q4LynnStyle-Q4MTP.ninfer \
  --host 127.0.0.1 --port 8080 --device 0 \
  --model-id qwen3.8-27b-coder390-Q4LynnStyle-Mtp \
  --max-context 102400 --kv-capacity 819200 --max-concurrency 8 \
  --kv-dtype rk8v4 \
  --spec mtp --draft-tokens 4

NInfer · GGUF Q4 LynnStyle · Q8MTP · MTP (draft 4, recommended concurrency 8): an alternative with a Q8_0 MTP head (the -Q4MTP packages also run on NInfer-all and ninfer-fusion-kvmem); for Q2 / Q3 replace Q4 with Q2 / Q3 in the file name and model id.

ninfer-serve ./GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q4LynnStyle-Q8MTP.ninfer \
  --host 127.0.0.1 --port 8080 --device 0 \
  --model-id qwen3.8-27b-coder390-Q4LynnStyle-Q8Mtp \
  --max-context 102400 --kv-capacity 819200 --max-concurrency 8 \
  --kv-dtype rk8v4 \
  --spec mtp --draft-tokens 4

NInfer · GGUF Q6_K · MTP (draft 3, recommended concurrency 4)

ninfer-serve ./GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q6_K-MTP.ninfer \
  --model-id qwen3.8-27b-coder390-q6k-mtp \
  --max-context 102400 --kv-capacity 409600 --kv-dtype rk8v4 \
  --max-concurrency 4 --spec mtp --draft-tokens 3

NInfer · GGUF Q8_0 · MTP (draft 4, recommended concurrency 8)

ninfer-serve ./GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q8_0-MTP.ninfer \
  --model-id qwen3.8-27b-coder390-q8-mtp \
  --max-context 102400 --kv-capacity 819200 --kv-dtype rk8v4 \
  --max-concurrency 8 --spec mtp --draft-tokens 4

Do not use --max-context 131072 --kv-capacity 131072 (the KV pool then holds only one full context and queued requests return HTTP 503). Do not use --lm-head-q6 / --embedding-q4. Requires NInfer-all (ninfer-serve); official ninfer-src cannot read gguf_blocks_v1.

NInfer · vision (image input)

Every .ninfer in GGUF-NInfer/ contains the vision component (295,720,448 bytes, added on 2026-10-09). It was quantized from the BF16 vision weights in the NInfer vision formats: patch embedding Q6, attention q/k/v and MLP fc1 Q4, other projections Q5, merger Q8, norms and biases BF16. The text and MTP weights are byte-for-byte the same as before. Add --vision to any NInfer command above; nothing else is needed (the separate vision-bf16.safetensors is not used). These packages have a built-in MTP head but no DFlash2 draft, so each package has two commands: no speculation and MTP.

# Q2LynnStyle · no speculation
ninfer-serve ./GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q2LynnStyle-Q4MTP.ninfer \
  --host 127.0.0.1 --port 8080 --device 0 \
  --model-id qwen3.8-27b-coder390-Q2LynnStyle-Mtp \
  --max-context 102400 --kv-capacity 819200 --max-concurrency 8 \
  --kv-dtype rk8v4 \
  --vision

# Q2LynnStyle · MTP (4 draft tokens)
ninfer-serve ./GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q2LynnStyle-Q4MTP.ninfer \
  --host 127.0.0.1 --port 8080 --device 0 \
  --model-id qwen3.8-27b-coder390-Q2LynnStyle-Mtp \
  --max-context 102400 --kv-capacity 819200 --max-concurrency 8 \
  --kv-dtype rk8v4 \
  --spec mtp --draft-tokens 4 \
  --vision

# Q3LynnStyle · no speculation
ninfer-serve ./GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q3LynnStyle-Q4MTP.ninfer \
  --host 127.0.0.1 --port 8080 --device 0 \
  --model-id qwen3.8-27b-coder390-Q3LynnStyle-Mtp \
  --max-context 102400 --kv-capacity 819200 --max-concurrency 8 \
  --kv-dtype rk8v4 \
  --vision

# Q3LynnStyle · MTP (4 draft tokens)
ninfer-serve ./GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q3LynnStyle-Q4MTP.ninfer \
  --host 127.0.0.1 --port 8080 --device 0 \
  --model-id qwen3.8-27b-coder390-Q3LynnStyle-Mtp \
  --max-context 102400 --kv-capacity 819200 --max-concurrency 8 \
  --kv-dtype rk8v4 \
  --spec mtp --draft-tokens 4 \
  --vision

# Q4LynnStyle · no speculation
ninfer-serve ./GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q4LynnStyle-Q4MTP.ninfer \
  --host 127.0.0.1 --port 8080 --device 0 \
  --model-id qwen3.8-27b-coder390-Q4LynnStyle-Mtp \
  --max-context 102400 --kv-capacity 819200 --max-concurrency 8 \
  --kv-dtype rk8v4 \
  --vision

# Q4LynnStyle · MTP (4 draft tokens)
ninfer-serve ./GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q4LynnStyle-Q4MTP.ninfer \
  --host 127.0.0.1 --port 8080 --device 0 \
  --model-id qwen3.8-27b-coder390-Q4LynnStyle-Mtp \
  --max-context 102400 --kv-capacity 819200 --max-concurrency 8 \
  --kv-dtype rk8v4 \
  --spec mtp --draft-tokens 4 \
  --vision

# Q6_K · no speculation
ninfer-serve ./GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q6_K-MTP.ninfer \
  --host 127.0.0.1 --port 8080 --device 0 \
  --model-id qwen3.8-27b-coder390-q6k-mtp \
  --max-context 102400 --kv-capacity 409600 --max-concurrency 4 \
  --kv-dtype rk8v4 \
  --vision

# Q6_K · MTP (3 draft tokens)
ninfer-serve ./GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q6_K-MTP.ninfer \
  --host 127.0.0.1 --port 8080 --device 0 \
  --model-id qwen3.8-27b-coder390-q6k-mtp \
  --max-context 102400 --kv-capacity 409600 --max-concurrency 4 \
  --kv-dtype rk8v4 \
  --spec mtp --draft-tokens 3 \
  --vision

# Q8_0 · no speculation
ninfer-serve ./GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q8_0-MTP.ninfer \
  --host 127.0.0.1 --port 8080 --device 0 \
  --model-id qwen3.8-27b-coder390-q8-mtp \
  --max-context 102400 --kv-capacity 819200 --max-concurrency 8 \
  --kv-dtype rk8v4 \
  --vision

# Q8_0 · MTP (4 draft tokens)
ninfer-serve ./GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q8_0-MTP.ninfer \
  --host 127.0.0.1 --port 8080 --device 0 \
  --model-id qwen3.8-27b-coder390-q8-mtp \
  --max-context 102400 --kv-capacity 819200 --max-concurrency 8 \
  --kv-dtype rk8v4 \
  --spec mtp --draft-tokens 4 \
  --vision

Image request (OpenAI-style image_url part; url takes an http(s):// image link; a data URI of a local image also works; model must match --model-id):

curl http://127.0.0.1:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3.8-27b-coder390-Q4LynnStyle-Mtp",
    "messages": [{"role": "user", "content": [
      {"type": "image_url", "image_url": {"url": "https://example.com/demo.png"}},
      {"type": "text", "text": "Describe this image."}
    ]}],
    "max_tokens": 2048
  }'

Send images as OpenAI-style image_url parts to POST /v1/chat/completions. --vision keeps the vision encoder on the GPU; if VRAM is tight, use --vision-cpu instead (it runs on the CPU, and each image is capped at 256 merged tokens unless you set --vision-max-merged). Without --vision the package runs text-only, as before. GGUF-NInfer/vision-bf16.safetensors is the BF16 source of the vision part and is not needed to run NInfer. Engine test (2026-10-09, one RTX PRO 6000): the Q2 LynnStyle package with --vision answered an image prompt correctly; with MTP at 3 draft tokens the accept length was 3.00 and decode speed 207 tok/s. On NInfer-all master, the Q3 / Q4 LynnStyle, Q6_K, and Q8_0 packages were also tested with MTP and --vision and all answered correctly (short single runs: Q4 151.9 tok/s, accept rate 66.7%; Q6_K 131.1 tok/s, 65.4%; Q8_0 121.5 tok/s, 68.2%); for the Q8 MTP versions see "Q8 MTP versions · check" above.

GGUF · llama.cpp

llama.cpp · GGUF Q2 LynnStyle · MTP (representative; swap the -m path for Q3 / Q4 / Q6_K / Q8_0)

llama-server -m ./GGUF/Qwen3.8-27B-Coder390-EfficientThink-Q2LynnStyle-MTP.gguf \
  -c 409600 -np 4 -ngl 99 --jinja \
  --host 127.0.0.1 --port 8080 \
  --alias qwen3.8-27b-coder390-Q2LynnStyle-Mtp \
  --spec-type draft-mtp --spec-draft-n-max 4

To use another GGUF tier, only change -m to ...-Q3LynnStyle-MTP.gguf, ...-Q4LynnStyle-MTP.gguf, ...-Q6_K-MTP.gguf, or ...-Q8_0-MTP.gguf (and the --alias, e.g. qwen3.8-27b-coder390-q6k-mtp, qwen3.8-27b-coder390-q8-mtp). MTP is fused inside the GGUF (blk.64); do not attach an external draft; the log should show creating MTP draft context against the target model. For image input add --mmproj ./GGUF/mmproj-Qwen3.8-27B-Q8_0.gguf.

llama.cpp · vision (image input)

llama-server -m ./GGUF/Qwen3.8-27B-Coder390-EfficientThink-Q2LynnStyle-MTP.gguf \
  --mmproj ./GGUF/mmproj-Qwen3.8-27B-Q8_0.gguf \
  -c 409600 -np 4 -ngl 99 --jinja \
  --host 127.0.0.1 --port 8080 \
  --alias qwen3.8-27b-coder390-Q2LynnStyle-Mtp \
  --spec-type draft-mtp --spec-draft-n-max 4

The GGUF files have no vision weights; --mmproj ./GGUF/mmproj-Qwen3.8-27B-Q8_0.gguf adds them and works with all eight GGUF files (swap -m and --alias as above; image input tested on Q3 / Q4 LynnStyle, Q6_K, and Q8_0). Leave out --spec-type / --spec-draft-n-max to run without speculation. Without --mmproj llama.cpp runs text-only. Images go as OpenAI-style image_url parts to POST /v1/chat/completions (same request as the NInfer example, with model set to the --alias).

Optional: external Q8_0 MTP draft. GGUF/mtp-Qwen3.8-27B-Coder390-EfficientThink-Q8_0.gguf (3,164,006,656 bytes) is a standalone Q8_0 MTP head, the same weights as the built-in MTP head of the Q6_K and Q8_0 packages. Q2, Q3 and Q4 LynnStyle ship a smaller Q4 MTP head; add -md pointing at this file to use the Q8 head instead. Q6_K and Q8_0 already contain a Q8 head, so they gain nothing from it. With -md the log shows loading draft model rather than creating MTP draft context against the target model. Checked on one RTX PRO 6000 on 2026-10-09 (llama.cpp, Q3 LynnStyle target, --spec-draft-n-max 4): the log shows loading draft model. Greedy acceptance is 66.1% at 110.2 tok/s, against 66.0% at 112.2 tok/s for the built-in Q4 MTP head with the same command and no -md. At temperature 1.0 the two are 52.4% at 94.4 tok/s and 51.9% at 95.6 tok/s. All 12 prompts produced the same text; the Q8 file is not faster.

llama-server -m ./GGUF/Qwen3.8-27B-Coder390-EfficientThink-Q3LynnStyle-MTP.gguf \
  -md ./GGUF/mtp-Qwen3.8-27B-Coder390-EfficientThink-Q8_0.gguf \
  -c 409600 -np 4 -ngl 99 --jinja \
  --host 127.0.0.1 --port 8080 \
  --alias qwen3.8-27b-coder390-Q3LynnStyle-Mtp \
  --spec-type draft-mtp --spec-draft-n-max 4

Files overview

FP8/ (main package: 19 files, 31,262,188,871 bytes)

FP8/SHA256SUMS covers the first 18 files below.

File Bytes SHA256
FP8/chat_template.jinja 8,952 c3cf9e34abf4f9e36c2d72165aa9c132d3e2a725b6c2586aaa3a8af9d7a81041
FP8/config.json 17,784 9e58e8daf2914c2d11c07449dc7f03bbb822ba39dec37c4c5b3bd1f623492f90
FP8/generation_config.json 214 df6f86c3fdce573ecdb55cec35f502ddda70e70abe78288a78164aef120232e7
FP8/model.safetensors.index.json 135,976 989573833195e17342983c7fd109e010155c423a355068b5aceb6631fcee83f2
FP8/mtp-bf16.safetensors 849,400,424 90fa0e3eed5a647c035c6df9ecabc416c0f8d573ff84ac12485b085f00a7cdf2
FP8/preprocessor_config.json 390 27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516
FP8/text-01.safetensors 2,542,796,928 54d83c1d36631de231876217a8e0c2483eccee8746369a482b79442bdfc5d958
FP8/text-02.safetensors 3,998,718,144 5b1e34725cd88924495765149ff816903d702180c72561c2e22e8377e2044fa8
FP8/text-03.safetensors 3,969,173,888 5e2376d6cce25aecf2d8901959f9d6f98801a0b2e98331f4088481bf839c9cf3
FP8/text-04.safetensors 3,925,079,000 669b87fd69d2de004073ed633f8e2890c8c9c90e1101bd59c859f1431b5cb967
FP8/text-05.safetensors 3,994,338,456 3f150179f9e3f03e2ef2e1afc805e7d745c1ab88dd72776fadf7c33f1d73ae67
FP8/text-06.safetensors 3,920,901,280 4d658974b7efb906972bc66cb4fd6dc7f1b7ac1fa79a7db068442314e3bf75d4
FP8/text-07.safetensors 3,972,285,640 d155ad91985b57e2515cea321a474708dd162665d1f5870df1c85601a2ca9b2c
FP8/text-08.safetensors 3,147,842,216 e37d025cd9bcacdd00fa0969f5c827d2504019c020585dfe1aca3934152b7700
FP8/tokenizer.json 19,989,325 06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523
FP8/tokenizer_config.json 1,075 91a08f825d370d085d692e04cf117cdd7faad7bf18e996f1e6031b6dab03db72
FP8/video_preprocessor_config.json 385 7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13
FP8/vision-bf16.safetensors 921,497,224 d7defc90994f7bbc58a8feb8d3c4144895babb434a9be9f47e88ae3646e1df33
FP8/SHA256SUMS 1,570 (checksum list itself)

FP8/DFlash2-FP8/ (4 files, 2,407,384,680 bytes)

File Bytes SHA256
FP8/DFlash2-FP8/model.safetensors 2,407,379,992 a7b48bc293a989494ce2db64ac01a0261c370499641b0f5a668d8005c8cbfb93
FP8/DFlash2-FP8/config.json 2,642 6c41f9b7b068b6c3cfaafe2d8af6e86cf82917a187590a78966ea6249069b2f7
FP8/DFlash2-FP8/manifest.json 1,804 7f674162e4670c862596f4bb46ddd9f7d3524a7b0dacd7c86c397a8a66a29b45
FP8/DFlash2-FP8/SHA256SUMS 242 0186950b8563dda734f5d8998e1488812b3a089d62672acde272d6e9bf9c56d8

BF16/ (12 files, 55,583,125,732 bytes; the DFlash2 subdirectory is listed separately below)

BF16/SHA256SUMS covers the first 11 files below. mtp-bf16.safetensors is byte-identical to the file of the same name in the FP8 package.

File Bytes SHA256
BF16/chat_template.jinja 8,952 c3cf9e34abf4f9e36c2d72165aa9c132d3e2a725b6c2586aaa3a8af9d7a81041
BF16/config.json 3,799 b25e4020b4f791f2b20a3bf486f7ded5116fa0680cf7aa2ac50f80ee353663ce
BF16/generation_config.json 214 df6f86c3fdce573ecdb55cec35f502ddda70e70abe78288a78164aef120232e7
BF16/model-00001-of-00002.safetensors 49,825,162,976 ed83b8a41d447f4592c490b6135917419aea00fc7dbf9d6f5eb9525631f86fe0
BF16/model-00002-of-00002.safetensors 4,888,445,168 5c56330027c0eb9a776e89f80ef1643e60b1c2ae3adbbaf4b5142ebf7cb57271
BF16/model.safetensors.index.json 112,034 e8e177ff98a940337d496a0820e51c9fb68b2ab98fb68647d26aef9368dedeab
BF16/mtp-bf16.safetensors 849,400,424 90fa0e3eed5a647c035c6df9ecabc416c0f8d573ff84ac12485b085f00a7cdf2
BF16/preprocessor_config.json 390 27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516
BF16/tokenizer.json 19,989,325 06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523
BF16/tokenizer_config.json 1,075 91a08f825d370d085d692e04cf117cdd7faad7bf18e996f1e6031b6dab03db72
BF16/video_preprocessor_config.json 385 7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13
BF16/SHA256SUMS 990 (checksum list itself)

BF16/DFlash2-FP8/ (4 files, 2,407,384,680 bytes)

Byte-identical to FP8/DFlash2-FP8/.

File Bytes SHA256
BF16/DFlash2-FP8/model.safetensors 2,407,379,992 a7b48bc293a989494ce2db64ac01a0261c370499641b0f5a668d8005c8cbfb93
BF16/DFlash2-FP8/config.json 2,642 6c41f9b7b068b6c3cfaafe2d8af6e86cf82917a187590a78966ea6249069b2f7
BF16/DFlash2-FP8/manifest.json 1,804 7f674162e4670c862596f4bb46ddd9f7d3524a7b0dacd7c86c397a8a66a29b45
BF16/DFlash2-FP8/SHA256SUMS 242 0186950b8563dda734f5d8998e1488812b3a089d62672acde272d6e9bf9c56d8

NVFP4/W4A16/ (main package: 17 files, 20,613,406,953 bytes; the DFlash2 subdirectory is listed separately below)

NVFP4/W4A16/SHA256SUMS covers the first 16 files below; its own SHA256 is ecc28d31be0d97e23509af61625251af14980db5b67189a1d1ca75a3fc9652f3. mtp-bf16.safetensors is byte-identical to the file of the same name in the FP8 package.

File Bytes SHA256
NVFP4/W4A16/chat_template.jinja 8,952 c3cf9e34abf4f9e36c2d72165aa9c132d3e2a725b6c2586aaa3a8af9d7a81041
NVFP4/W4A16/config.json 69,785 e71fd7b2cbade1ebb8be0382c81f7bf69eb1e039e30734914378d2c41217ef62
NVFP4/W4A16/generation_config.json 214 df6f86c3fdce573ecdb55cec35f502ddda70e70abe78288a78164aef120232e7
NVFP4/W4A16/hf_quant_config.json 65,978 2ff46ad6bc27eb740e29831e642522ee4c110fea1ae9520b89272566b0d12d62
NVFP4/W4A16/model.safetensors.index.json 171,578 13651163cd9c1c20af460e6595616075a1f0d7f5995a3efc46d3ac449bc4f51e
NVFP4/W4A16/mtp-bf16.safetensors 849,400,424 90fa0e3eed5a647c035c6df9ecabc416c0f8d573ff84ac12485b085f00a7cdf2
NVFP4/W4A16/preprocessor_config.json 390 27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516
NVFP4/W4A16/text-01.safetensors 3,994,732,420 dfdd15ab6b889eee01357d38910552bb0968248df0e21a9564d7ae29482d3139
NVFP4/W4A16/text-02.safetensors 3,981,611,096 8e4a2a7b4c9325c27380a41de0fb51028065ff97090af9d4213cb5a50629d517
NVFP4/W4A16/text-03.safetensors 3,960,207,028 c92929b575321e080d0ea2ca7c1a26b49fa638a8d03bacfef2cd0b6f83237689
NVFP4/W4A16/text-04.safetensors 3,983,003,152 feb69e1a4c7a374f1a11cf3e4af5d70fdd870963519e71469eb067a86fb35634
NVFP4/W4A16/text-05.safetensors 2,902,646,528 28dda5f9a39b83736ae458c2e626b429bbd18e408be63ef598dbb47327c97e3e
NVFP4/W4A16/tokenizer.json 19,989,325 06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523
NVFP4/W4A16/tokenizer_config.json 1,075 91a08f825d370d085d692e04cf117cdd7faad7bf18e996f1e6031b6dab03db72
NVFP4/W4A16/video_preprocessor_config.json 385 7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13
NVFP4/W4A16/vision-bf16.safetensors 921,497,224 d7defc90994f7bbc58a8feb8d3c4144895babb434a9be9f47e88ae3646e1df33
NVFP4/W4A16/SHA256SUMS 1,399 ecc28d31be0d97e23509af61625251af14980db5b67189a1d1ca75a3fc9652f3

NVFP4/W4A16/DFlash2-FP8/ (4 files, 2,407,384,680 bytes)

Byte-identical to FP8/DFlash2-FP8/.

File Bytes SHA256
NVFP4/W4A16/DFlash2-FP8/model.safetensors 2,407,379,992 a7b48bc293a989494ce2db64ac01a0261c370499641b0f5a668d8005c8cbfb93
NVFP4/W4A16/DFlash2-FP8/config.json 2,642 6c41f9b7b068b6c3cfaafe2d8af6e86cf82917a187590a78966ea6249069b2f7
NVFP4/W4A16/DFlash2-FP8/manifest.json 1,804 7f674162e4670c862596f4bb46ddd9f7d3524a7b0dacd7c86c397a8a66a29b45
NVFP4/W4A16/DFlash2-FP8/SHA256SUMS 242 0186950b8563dda734f5d8998e1488812b3a089d62672acde272d6e9bf9c56d8

NVFP4/W4A4/ (main package: 17 files, 20,613,386,462 bytes; the DFlash2 subdirectory is listed separately below)

NVFP4/W4A4/SHA256SUMS covers the first 16 files below; its own SHA256 is 5aea8bb9c1f1979661bfa5c1216de7aafeb64cd708aa8cc71f3b185c224cfde0. mtp-bf16.safetensors is byte-identical to the file of the same name in the FP8 package.

File Bytes SHA256
NVFP4/W4A4/chat_template.jinja 8,952 c3cf9e34abf4f9e36c2d72165aa9c132d3e2a725b6c2586aaa3a8af9d7a81041
NVFP4/W4A4/config.json 18,130 4df9be90e61070a553447129e504fea7be8e60dc22ae9e9f7a85bdfc140c0054
NVFP4/W4A4/generation_config.json 214 df6f86c3fdce573ecdb55cec35f502ddda70e70abe78288a78164aef120232e7
NVFP4/W4A4/hf_quant_config.json 13,956 d3603810fba7548903ba2f3382fdd30f5704d3b6e0688e2dccf34fe023c11d31
NVFP4/W4A4/model.safetensors.index.json 207,580 541d828aed73b4df9f9fc86be7111aa404983d55d9797ca1cfb3e71474bfd3b7
NVFP4/W4A4/mtp-bf16.safetensors 849,400,424 90fa0e3eed5a647c035c6df9ecabc416c0f8d573ff84ac12485b085f00a7cdf2
NVFP4/W4A4/preprocessor_config.json 390 27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516
NVFP4/W4A4/text-01.safetensors 3,994,737,240 1ea4cf8a0036b5d87815b65a38d0d2c00b37c010056a03d0db1fc72eb6c829bc
NVFP4/W4A4/text-02.safetensors 3,981,625,016 c9a0d2c3c506ad17da4dd47bf571326eef201e40db6f259a9d42971778033359
NVFP4/W4A4/text-03.safetensors 3,960,220,600 3c8778873d2ef08c512b7e457d61a6ac9ea047975e4723cd3804d0d18e86c1db
NVFP4/W4A4/text-04.safetensors 3,983,016,880 40081557adf0713f1624cdb2d1c53ea5fd2a30e09f5f964799457b23e4e2304d
NVFP4/W4A4/text-05.safetensors 2,902,647,672 0266ba0fa0354a4c409bc180c9d9a67ed12c915fc9886970745c87f8babcaa24
NVFP4/W4A4/tokenizer.json 19,989,325 06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523
NVFP4/W4A4/tokenizer_config.json 1,075 91a08f825d370d085d692e04cf117cdd7faad7bf18e996f1e6031b6dab03db72
NVFP4/W4A4/video_preprocessor_config.json 385 7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13
NVFP4/W4A4/vision-bf16.safetensors 921,497,224 d7defc90994f7bbc58a8feb8d3c4144895babb434a9be9f47e88ae3646e1df33
NVFP4/W4A4/SHA256SUMS 1,399 5aea8bb9c1f1979661bfa5c1216de7aafeb64cd708aa8cc71f3b185c224cfde0

NVFP4/W4A4/DFlash2-FP8/ (4 files, 2,407,384,680 bytes)

Byte-identical to FP8/DFlash2-FP8/.

File Bytes SHA256
NVFP4/W4A4/DFlash2-FP8/model.safetensors 2,407,379,992 a7b48bc293a989494ce2db64ac01a0261c370499641b0f5a668d8005c8cbfb93
NVFP4/W4A4/DFlash2-FP8/config.json 2,642 6c41f9b7b068b6c3cfaafe2d8af6e86cf82917a187590a78966ea6249069b2f7
NVFP4/W4A4/DFlash2-FP8/manifest.json 1,804 7f674162e4670c862596f4bb46ddd9f7d3524a7b0dacd7c86c397a8a66a29b45
NVFP4/W4A4/DFlash2-FP8/SHA256SUMS 242 0186950b8563dda734f5d8998e1488812b3a089d62672acde272d6e9bf9c56d8

NVFP4/W4A4-W8A8/ (main package: 18 files, 23,769,634,648 bytes; the DFlash2 subdirectory is listed separately below)

NVFP4/W4A4-W8A8/SHA256SUMS covers the first 17 files below; its own SHA256 is c177f4907a7dd037efe91b8d34927dd3a3624227f259238b82db0f12f8b0b8e2. mtp-bf16.safetensors is byte-identical to the file of the same name in the FP8 package.

File Bytes SHA256
NVFP4/W4A4-W8A8/chat_template.jinja 8,952 c3cf9e34abf4f9e36c2d72165aa9c132d3e2a725b6c2586aaa3a8af9d7a81041
NVFP4/W4A4-W8A8/config.json 71,802 d1cc2af6971ae0bb776f5f36eb1c923546742fda3a83e6d8355720a652e27b5d
NVFP4/W4A4-W8A8/generation_config.json 214 df6f86c3fdce573ecdb55cec35f502ddda70e70abe78288a78164aef120232e7
NVFP4/W4A4-W8A8/hf_quant_config.json 43,976 2bd65f6f325ea8e8e40c37b6e7d386633ac6236db6fcde3d7e9de128d961a599
NVFP4/W4A4-W8A8/model.safetensors.index.json 187,500 1257454a255efb01ba8047fe41bf34460b551c210db7cc8c4713f1c01150c69d
NVFP4/W4A4-W8A8/mtp-bf16.safetensors 849,400,424 90fa0e3eed5a647c035c6df9ecabc416c0f8d573ff84ac12485b085f00a7cdf2
NVFP4/W4A4-W8A8/preprocessor_config.json 390 27225450ac9c6529872ee1924fcb0962ff5634834f817040f444118116f4e516
NVFP4/W4A4-W8A8/text-01.safetensors 3,981,847,464 b5502eb2c54c5a53ee08712c48935023ed924e0f054acb3573e1288095d2e3ff
NVFP4/W4A4-W8A8/text-02.safetensors 3,956,368,808 f08e7fccb4d2467af8b2b2d3bc587e6e8404b5764e9fc8e640ad0ff4f445d293
NVFP4/W4A4-W8A8/text-03.safetensors 3,956,368,928 8299287bb0e570efda02bcbe67c4bd9c5378b44bbf84c17ff062fc5ce6ba53e0
NVFP4/W4A4-W8A8/text-04.safetensors 3,967,919,248 bea560dda7b885cca987b8352e2ae659acaee70c3255fde7fa487c1fd73badf2
NVFP4/W4A4-W8A8/text-05.safetensors 3,573,130,520 a969faa5f2a3963450ad64bb84664035676c426877499593aea91080643ba6fa
NVFP4/W4A4-W8A8/text-06.safetensors 2,542,796,928 54d83c1d36631de231876217a8e0c2483eccee8746369a482b79442bdfc5d958
NVFP4/W4A4-W8A8/tokenizer.json 19,989,325 06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523
NVFP4/W4A4-W8A8/tokenizer_config.json 1,075 91a08f825d370d085d692e04cf117cdd7faad7bf18e996f1e6031b6dab03db72
NVFP4/W4A4-W8A8/video_preprocessor_config.json 385 7768af27c1fafa9cc9011c1dc20067e03f8915e03b63504550e11d5066986d13
NVFP4/W4A4-W8A8/vision-bf16.safetensors 921,497,224 d7defc90994f7bbc58a8feb8d3c4144895babb434a9be9f47e88ae3646e1df33
NVFP4/W4A4-W8A8/SHA256SUMS 1,485 c177f4907a7dd037efe91b8d34927dd3a3624227f259238b82db0f12f8b0b8e2

NVFP4/W4A4-W8A8/DFlash2-FP8/ (4 files, 2,407,384,680 bytes)

Byte-identical to FP8/DFlash2-FP8/.

File Bytes SHA256
NVFP4/W4A4-W8A8/DFlash2-FP8/model.safetensors 2,407,379,992 a7b48bc293a989494ce2db64ac01a0261c370499641b0f5a668d8005c8cbfb93
NVFP4/W4A4-W8A8/DFlash2-FP8/config.json 2,642 6c41f9b7b068b6c3cfaafe2d8af6e86cf82917a187590a78966ea6249069b2f7
NVFP4/W4A4-W8A8/DFlash2-FP8/manifest.json 1,804 7f674162e4670c862596f4bb46ddd9f7d3524a7b0dacd7c86c397a8a66a29b45
NVFP4/W4A4-W8A8/DFlash2-FP8/SHA256SUMS 242 0186950b8563dda734f5d8998e1488812b3a089d62672acde272d6e9bf9c56d8

evaluation/

Score, benchmark, smoke-test (static FP8 and BF16), and calibration records. evaluation/SHA256SUMS covers the first 22 files below (23 files in total, including the checksum list itself). NVFP4_*.results.summary.json are the raw summaries of the three suites for the three NVFP4 tiers (NVFP4_MIXED_* is the W4A4-W8A8 tier).

File Bytes SHA256
evaluation/SCORES_STATICFP8.json 3,935 eba280071a75fc8dd90e5866df783a68ccd08bdb4d4dde85c062f7d398ea0eb0
evaluation/BENCH_STATICFP8.json 6,511 c62c6c82f234a27fa93faf691d1d4ee01a2408a18bbe94efafe341e4ad10db20
evaluation/BENCH_STATICFP8.md 1,405 ea662952b73446d5b88422b2a3dbcc215829521cc001cb26ad492caa137fa2ac
evaluation/SMOKE_STATICFP8.json 2,119 1a2383ad0f8e26f02ec7d65db418fea2bd50e73458ee247cc9d2f9322ffbb833
evaluation/SCORES_BF16.json 4,279 76e921712bab0577853499d3f67440de6f3577f4818c40184f4b0580e5f7a77e
evaluation/SMOKE_BF16.json 889 01ea5e4518615af2a3c574fa49ae6f2a4819482bbaafce2695b62016b14a582f
evaluation/SCORES_NVFP4_W4A16.json 3,319 7294901f3493f593e0de6d7f95b860c44578780300aebcb52bca6f06ead1ddfd
evaluation/BENCH_NVFP4_W4A16.json 3,992 1877fe3e4126de72ad1165a1e0f5d1dd569f73f1dcd16a93249c389b3d47f2d3
evaluation/SCORES_NVFP4_W4A4.json 3,212 eee169bb6cde4d048d12d604a72c7570b0ebd0fee88a3c19d39ad4493a912f30
evaluation/BENCH_NVFP4_W4A4.json 3,922 2ebedf7e221f69765364a73deaca459a9636a4c190b2cbde06de8d119a15f4a7
evaluation/SCORES_NVFP4_MIXED.json 3,063 845027e6324b5300ed5ce306b3515b559f75b5c0e8ef1aac4d1b98d62d135454
evaluation/BENCH_NVFP4_MIXED.json 4,038 3d6f348425b6fd184d620c101a803139d7bcc0d620ff3237c28cc627e8f85ca7
evaluation/NVFP4_CALIBRATION_METHOD.md 3,712 e3678dbe9020a83998a5c66207b515376defebd78e6fadf4f63e55059785e03a
evaluation/NVFP4_W4A16_gpqa.results.summary.json 1,182 4835f8cf4b403047487b0a52db88574a2125ba103a30404b8b9e97e7112511bd
evaluation/NVFP4_W4A16_lcb.results.summary.json 2,642 56990657d101c2ce47b44d5fcdcb498a286bbf6093ae7790cde5809ba266d5a1
evaluation/NVFP4_W4A16_mmlu.results.summary.json 4,075 e9d507b5da71621032a13f487eb60159e0369c025ed12c4fa613e70b6f0f71e5
evaluation/NVFP4_W4A4_gpqa.results.summary.json 1,189 961b3f98b4a54d78d1983896a0b12b10a3d1e7facf456f594793dc7bbefb5e70
evaluation/NVFP4_W4A4_lcb.results.summary.json 2,640 bd371e898121ee5dd6fda47065254cc2137ba783b466b3830f0c58d631137688
evaluation/NVFP4_W4A4_mmlu.results.summary.json 4,076 b468cf81854562e0e20bf232ddd13b68ed58e10a4da840e6bd3c20564d20f74a
evaluation/NVFP4_MIXED_gpqa.results.summary.json 1,171 72c000ffc4ff15db8d542b6d9d924c5795ad491d946dee0f6c3f11b0e62151f1
evaluation/NVFP4_MIXED_lcb.results.summary.json 2,641 7e3d3146dd98954ef80358ce88f5505798f77427c1a5ddf73c65dd728cf3afc2
evaluation/NVFP4_MIXED_mmlu.results.summary.json 4,077 3088c6254dad8af25ace3b44f4cfa688b192eca98f693afa1c595df121cb9afb
evaluation/SHA256SUMS 2,071 (checksum list itself)

Verification

(cd FP8 && sha256sum -c SHA256SUMS && cd DFlash2-FP8 && sha256sum -c SHA256SUMS)
(cd BF16 && sha256sum -c SHA256SUMS)
(cd NVFP4/W4A16 && sha256sum -c SHA256SUMS && cd DFlash2-FP8 && sha256sum -c SHA256SUMS)
(cd NVFP4/W4A4 && sha256sum -c SHA256SUMS && cd DFlash2-FP8 && sha256sum -c SHA256SUMS)
(cd NVFP4/W4A4-W8A8 && sha256sum -c SHA256SUMS && cd DFlash2-FP8 && sha256sum -c SHA256SUMS)
(cd NVFP4-NInfer/W4A4 && sha256sum -c SHA256SUMS)
(cd NVFP4-NInfer/W4A4-W8A8 && sha256sum -c SHA256SUMS)
(cd INT8/W8A8 && sha256sum -c SHA256SUMS && cd MTP-BF16 && sha256sum -c SHA256SUMS)
(cd INT4/W4A16 && sha256sum -c SHA256SUMS)
(cd GGUF && sha256sum -c SHA256SUMS)
(cd GGUF-NInfer && sha256sum -c SHA256SUMS)
(cd evaluation && sha256sum -c SHA256SUMS)

NInfer loading notes

  • Only the NInfer engine can load .ninfer; SGLang, vLLM, llama.cpp, and transformers cannot.
  • Use ninfer-serve from official NInfer (Neroued/ninfer, master branch); no patches are needed. (Only the GGUF-derived .ninfer packages need NInfer-all.) Tested on one RTX PRO 6000 Blackwell (compute capability 12.0); NInfer supports at most 8 concurrent requests.
  • NVFP4-NInfer/W4A4/ and NVFP4-NInfer/W4A4-W8A8/ each hold one .ninfer file with MTP and DFlash2: the text path is the same one scored on 2026-10-05, and the package also carries a Q8 MTP head, the DFlash2 draft, the proposal head, and (since 2026-10-09) the vision component, so --vision enables image input; the vision-bf16.safetensors in the same folder is the BF16 source of that part and is not needed at run time. The MTP projections are Q8 because several of their matrix shapes have no BF16 kernel in NInfer, and a BF16 MTP makes the server exit while building the compute graph.
  • MTP and DFlash2 are mutually exclusive per launch (--spec mtp or --spec dflash2); --lm-head-draft must be used together with --spec. MTP accepts 1–5 draft tokens and DFlash2 1–15; the NInfer commands under Commands above use 4 and 8, as in the benchmark. The DFlash2 draft is built into the package, so no separate DFlash2-FP8/ directory is needed.
  • These context flags are verified to start: --max-context 102400 --kv-capacity 819200 --max-concurrency 8 --kv-dtype fp8. --kv-capacity must fall between max-context and max-context × max-concurrency; 819,200 is exactly 8 × 102,400.
  • The HF packages under the NVFP4 directories still run in SGLang (MTP or DFlash2); they are not interchangeable with the NInfer packages.

NInfer V2 packages (Tesla V100 only)

The four packages whose filenames contain NInferV2-NOT-FOR-V3 are for Tesla V100 only (ninfer-v100 branch); on any other GPU, use the packages without this suffix.

  • The 4 packages whose filenames contain NInferV2-NOT-FOR-V3 use the NInfer V2 container and are only for the Tesla V100 ninfer-v100 branch. Official NInfer (ninfer-serve) reads V3 only and rejects these files; on other GPUs, use the V3 packages above (without NInferV2 in the name). Do not rename the V2 packages to V3 filenames or use them to replace the V3 packages.
  • The two text-only packages (Qwen3.8-27B-Coder390-W4A4-NInferV2-NOT-FOR-V3.ninfer, Qwen3.8-27B-Coder390-W4A4-W8A8-NInferV2-NOT-FOR-V3.ninfer) have no MTP or DFlash2, so do not pass --spec; the two MTP-DFlash2 packages (…-MTP-DFlash2-NInferV2-NOT-FOR-V3.ninfer) accept --spec mtp or --spec dflash2; they already contain the MTP head and the DFlash2 draft, so no external draft model is needed. None of the four V2 packages includes the vision component, so they cannot take images (no --vision); for image input use the V3 packages.
  • V100 has no NVFP4 KV or K8V4 KV, so do not use the V3 flags --kv-dtype rk8v4 or --kv-capacity 819200; when serving on V100, add --prefill-chunk 2048.
  • The V2 packages have not been separately evaluated; they have only passed SHA256 verification. In SHA256SUMS, the two V2 lines come after a # comment line, separate from the V3 lines.
# V100 ninfer-v100 branch · text-only package (no --spec)
ninfer ./NVFP4-NInfer/W4A4/Qwen3.8-27B-Coder390-W4A4-NInferV2-NOT-FOR-V3.ninfer \
  --prompt "Explain prefill and decode in three sentences." \
  --max-context 8192 \
  --max-new 256

# V100 ninfer-v100 branch · MTP-DFlash2 package (MTP on)
ninfer ./NVFP4-NInfer/W4A4/Qwen3.8-27B-Coder390-W4A4-MTP-DFlash2-NInferV2-NOT-FOR-V3.ninfer \
  --prompt "Explain prefill and decode in three sentences." \
  --max-context 8192 \
  --max-new 256 \
  --spec mtp --draft-tokens 3

NVFP4-NInfer/W4A4/ (5 files, 68,925,700,831 bytes)

File Bytes SHA256
NVFP4-NInfer/W4A4/Qwen3.8-27B-Coder390-EfficientThink-W4A4-MTP-DFlash2.ninfer 23,773,675,264 3c2d39f364a8932c82b41d4c424c940285573b0309481a67c2fde048368bf808
NVFP4-NInfer/W4A4/Qwen3.8-27B-Coder390-W4A4-NInferV2-NOT-FOR-V3.ninfer 20,752,831,236 eac9e3d47fe6731c021d7154fd2f801a8263ac6d00e6d16834e54947ee58bcf8
NVFP4-NInfer/W4A4/Qwen3.8-27B-Coder390-W4A4-MTP-DFlash2-NInferV2-NOT-FOR-V3.ninfer 23,477,696,516 e93f3b83f7589fdb776ce25a0cdef98ed1892e101ef564fdb844a5aacff13d22
NVFP4-NInfer/W4A4/vision-bf16.safetensors 921,497,224 d7defc90994f7bbc58a8feb8d3c4144895babb434a9be9f47e88ae3646e1df33
NVFP4-NInfer/W4A4/SHA256SUMS 591 1b84a36b7b7c150376bdb00c61c629565040b92b0b8a84784dcdcb8c35dc6b3e

NVFP4-NInfer/W4A4-W8A8/ (5 files, 68,925,700,846 bytes)

File Bytes SHA256
NVFP4-NInfer/W4A4-W8A8/Qwen3.8-27B-Coder390-EfficientThink-W4A4-W8A8-MTP-DFlash2.ninfer 23,773,675,264 cccfbf0ba3ec4e86837e8e6481ec32ee3e10636633e421429f19ea3ea97926e2
NVFP4-NInfer/W4A4-W8A8/Qwen3.8-27B-Coder390-W4A4-W8A8-NInferV2-NOT-FOR-V3.ninfer 20,752,831,236 01a4440f77dcdac66906e1bb061e1c38c6b236b805ff7bcb644aedf90f06a038
NVFP4-NInfer/W4A4-W8A8/Qwen3.8-27B-Coder390-W4A4-W8A8-MTP-DFlash2-NInferV2-NOT-FOR-V3.ninfer 23,477,696,516 099b2d00fa3982d601218d6587dc25222cc21ef708de7dab8b2e2c0bee60da74
NVFP4-NInfer/W4A4-W8A8/vision-bf16.safetensors 921,497,224 d7defc90994f7bbc58a8feb8d3c4144895babb434a9be9f47e88ae3646e1df33
NVFP4-NInfer/W4A4-W8A8/SHA256SUMS 606 78a23ee97290b0d82b7d2a8fb163a2dab4479592568d36bd093ab82ad8747549

INT8 W8A8 notes

  • Text and image (since 2026-10-09): the architecture is Qwen3_5ForConditionalGeneration (64 text layers, linear and full attention alternating 3:1). The BF16 vision tower from the BF16 tier is a separate file (model_visual.safetensors, 333 tensors, 921,497,224 bytes), with preprocessor_config.json / video_preprocessor_config.json; it is excluded from quantization. The 8 INT8 weight files are unchanged. The package has no embedded MTP head (use MTP-BF16/) and no DFlash2 draft. Checked on one RTX PRO 6000 on 2026-10-09 (vLLM 0.28, Cutlass INT8 kernel disabled, MTP-BF16/ with 3 draft tokens): the image prompt was answered correctly, text output was normal, accept length 3.21, single-request decode 86 tok/s.
  • Quantization: SmoothQuant + INT8 W8A8. Weights are quantized to INT8 per output channel, and activations are quantized to INT8 per token at runtime; the SmoothQuant pre-scale is folded into the weights, so no inference-engine patch is needed. Quantization metadata uses the compressed-tensors (int-quantized) format.
  • Layer layout: MLP gate/up/down, full-attention q/k/v/o, and linear-attention in_proj_qkv / in_proj_z / out_proj make up 400 INT8 Linear layers; linear-attention in_proj_a / in_proj_b and lm_head, 97 in total, stay BF16; linear-attention control branches such as A_log, dt_bias, norm, and conv1d also stay BF16.
  • Calibration and error: 512 calibration samples; held-out NLL rises from 0.50535 (BF16) to 0.52812, a perplexity ratio of 1.023 (measured before the pre-scale was folded into the weights).
  • Loading: validated only on vLLM 0.28; not for SGLang or NInfer. VLLM_LOAD.json records the load requirements. On RTX PRO 6000 Blackwell the Cutlass INT8 kernel must be disabled; see Commands above.
  • MTP draft: INT8/W8A8/MTP-BF16/ holds the BF16 MTP tensors only. Checked on one RTX PRO 6000 on 2026-10-09 (vLLM 0.28, Cutlass INT8 kernel disabled, num_speculative_tokens=3): mean accept length 2.74–2.90.

INT8/W8A8/ (19 files, 30,422,466,299 bytes)

File Bytes SHA256
INT8/W8A8/VLLM_LOAD.json 329 b1101c2ef1d53e76f132686a15079068fc76ad2ae139514817e088c6223adf7b
INT8/W8A8/chat_template.jinja 8,952 c3cf9e34abf4f9e36c2d72165aa9c132d3e2a725b6c2586aaa3a8af9d7a81041
INT8/W8A8/config.json 25,572 66e645bdd0e52dc70fbb7058ada49e937fefd799ac5d8ffddf04a933bb487e17
INT8/W8A8/generation_config.json 214 a4cef85934ea1fdcb207944dbc6eee70dbbf16806874428556ae33023336c0a4
INT8/W8A8/model-00001-of-00008.safetensors 3,978,325,744 f8f7ecb52576f50108d2a9335074e5621dd5a0c2b5ee92b830929c8acc34900a
INT8/W8A8/model-00002-of-00008.safetensors 3,990,728,496 73c182d4362ca9351329eb9c812aa44f627631d1d1866868a326010dc8387a45
INT8/W8A8/model-00003-of-00008.safetensors 3,927,632,952 59510687bfca9272147d8153b0d3cc55a2672a03c7326d7099d78a313cc4f102
INT8/W8A8/model-00004-of-00008.safetensors 3,995,896,560 fd9c32e4a11dec2dbf42dfb4e5da653bbbc01cd075ff60e593869022138e2efd
INT8/W8A8/model-00005-of-00008.safetensors 3,922,465,008 7478173acc5b54c80329756cf2bb81b5b804a0fa107217fbba5d0cb3353c3f77
INT8/W8A8/model-00006-of-00008.safetensors 3,984,366,360 `c

Identity and Version

Repository
nerkyor/Qwen3.8-27B-Coder390-EfficientThink-Opus5.5-GPT6Astra-Grok4.7-DSV4Pro-K3-SFT-RLOO-MTP-DFlash2
Publisher
Lynn
Task
Image and text to text
Modality
Image and text
Library
Not stated by the source
Parameters
Not stated by the source
Languages
en, zh
Revision
a55e9b5b1c25b2d1cb718cf5ac0484d07f670ad1
First published
2026-10-04
Last updated
2026-10-11

Files and Weights

218 files, 697.2 GB in total. The weights are 70 files totalling 405.5 GB in gguf, safetensors.

Weights70 files · 405.5 GB
Configuration80 files · 1.8 MB
Tokenizer16 files · 159.9 MB
Documentation3 files · 270.1 KB
Other48 files · 291.5 GB
Repository1 file · 5.9 KB
Every file
FileTypeSizeSHA-256
BF16/DFlash2-FP8/model.safetensorsWeights2.4 GB a7b48bc293a9
BF16/model-00001-of-00002.safetensorsWeights49.8 GB ed83b8a41d44
BF16/model-00002-of-00002.safetensorsWeights4.9 GB 5c56330027c0
BF16/mtp-bf16.safetensorsWeights849.4 MB 90fa0e3eed5a
FP8/DFlash2-FP8/model.safetensorsWeights2.4 GB a7b48bc293a9
FP8/mtp-bf16.safetensorsWeights849.4 MB 90fa0e3eed5a
FP8/text-01.safetensorsWeights2.5 GB 54d83c1d3663
FP8/text-02.safetensorsWeights4.0 GB 5b1e34725cd8
FP8/text-03.safetensorsWeights4.0 GB 5e2376d6cce2
FP8/text-04.safetensorsWeights3.9 GB 669b87fd69d2
FP8/text-05.safetensorsWeights4.0 GB 3f150179f9e3
FP8/text-06.safetensorsWeights3.9 GB 4d658974b7ef
FP8/text-07.safetensorsWeights4.0 GB d155ad91985b
FP8/text-08.safetensorsWeights3.1 GB e37d025cd9bc
FP8/vision-bf16.safetensorsWeights921.5 MB d7defc90994f
GGUF-NInfer/vision-bf16.safetensorsWeights921.5 MB d7defc90994f
GGUF/Qwen3.8-27B-Coder390-EfficientThink-Q2LynnStyle-MTP.ggufWeights13.3 GB cad973b3b7cc
GGUF/Qwen3.8-27B-Coder390-EfficientThink-Q2LynnStyle-Q8MTP.ggufWeights13.5 GB 62fd6cf6079d
GGUF/Qwen3.8-27B-Coder390-EfficientThink-Q3LynnStyle-MTP.ggufWeights17.3 GB 9985b3d41fc7
GGUF/Qwen3.8-27B-Coder390-EfficientThink-Q3LynnStyle-Q8MTP.ggufWeights17.5 GB 2c74a65df9d2
GGUF/Qwen3.8-27B-Coder390-EfficientThink-Q4LynnStyle-MTP.ggufWeights19.6 GB 56c7c605a597
GGUF/Qwen3.8-27B-Coder390-EfficientThink-Q4LynnStyle-Q8MTP.ggufWeights19.8 GB 5e2a1784298f
GGUF/Qwen3.8-27B-Coder390-EfficientThink-Q6_K-MTP.ggufWeights23.2 GB 302597c53d1b
GGUF/Qwen3.8-27B-Coder390-EfficientThink-Q8_0-MTP.ggufWeights29.1 GB b24e8c5fe3f2
GGUF/mmproj-Qwen3.8-27B-Q8_0.ggufWeights629.2 MB cae9799dc919
GGUF/mtp-Qwen3.8-27B-Coder390-EfficientThink-Q8_0.ggufWeights3.2 GB 50a030e85228
INT4/W4A16/model.safetensorsWeights17.6 GB e74d9161d57a
INT4/W4A16/model_mtp.safetensorsWeights849.4 MB 1d8268aa85ac
INT4/W4A16/model_visual.safetensorsWeights921.5 MB d7defc90994f
INT8/W8A16/MTP-BF16/mtp-bf16.safetensorsWeights849.4 MB 1d8268aa85ac
INT8/W8A16/model-00001-of-00002.safetensorsWeights20.0 GB 56df395c6e33
INT8/W8A16/model-00002-of-00002.safetensorsWeights9.5 GB 004c9641a2f2
INT8/W8A16/model_visual.safetensorsWeights921.5 MB d7defc90994f
INT8/W8A8/MTP-BF16/mtp-bf16.safetensorsWeights849.4 MB 90fa0e3eed5a
INT8/W8A8/model-00001-of-00008.safetensorsWeights4.0 GB f8f7ecb52576
INT8/W8A8/model-00002-of-00008.safetensorsWeights4.0 GB 73c182d4362c
INT8/W8A8/model-00003-of-00008.safetensorsWeights3.9 GB 59510687bfca
INT8/W8A8/model-00004-of-00008.safetensorsWeights4.0 GB fd9c32e4a11d
INT8/W8A8/model-00005-of-00008.safetensorsWeights3.9 GB 7478173acc5b
INT8/W8A8/model-00006-of-00008.safetensorsWeights4.0 GB cd53edb6084e
INT8/W8A8/model-00007-of-00008.safetensorsWeights3.1 GB 997de745c52a
INT8/W8A8/model-00008-of-00008.safetensorsWeights2.5 GB 6866cf8adccc
INT8/W8A8/model_visual.safetensorsWeights921.5 MB d7defc90994f
NVFP4-NInfer/W4A4-W8A8/vision-bf16.safetensorsWeights921.5 MB d7defc90994f
NVFP4-NInfer/W4A4/vision-bf16.safetensorsWeights921.5 MB d7defc90994f
NVFP4/W4A16/DFlash2-FP8/model.safetensorsWeights2.4 GB a7b48bc293a9
NVFP4/W4A16/mtp-bf16.safetensorsWeights849.4 MB 90fa0e3eed5a
NVFP4/W4A16/text-01.safetensorsWeights4.0 GB dfdd15ab6b88
NVFP4/W4A16/text-02.safetensorsWeights4.0 GB 8e4a2a7b4c93
NVFP4/W4A16/text-03.safetensorsWeights4.0 GB c92929b57532
NVFP4/W4A16/text-04.safetensorsWeights4.0 GB feb69e1a4c7a
NVFP4/W4A16/text-05.safetensorsWeights2.9 GB 28dda5f9a39b
NVFP4/W4A16/vision-bf16.safetensorsWeights921.5 MB d7defc90994f
NVFP4/W4A4-W8A8/DFlash2-FP8/model.safetensorsWeights2.4 GB a7b48bc293a9
NVFP4/W4A4-W8A8/mtp-bf16.safetensorsWeights849.4 MB 90fa0e3eed5a
NVFP4/W4A4-W8A8/text-01.safetensorsWeights4.0 GB b5502eb2c54c
NVFP4/W4A4-W8A8/text-02.safetensorsWeights4.0 GB f08e7fccb4d2
NVFP4/W4A4-W8A8/text-03.safetensorsWeights4.0 GB 8299287bb0e5
NVFP4/W4A4-W8A8/text-04.safetensorsWeights4.0 GB bea560dda7b8
NVFP4/W4A4-W8A8/text-05.safetensorsWeights3.6 GB a969faa5f2a3
NVFP4/W4A4-W8A8/text-06.safetensorsWeights2.5 GB 54d83c1d3663
NVFP4/W4A4-W8A8/vision-bf16.safetensorsWeights921.5 MB d7defc90994f
NVFP4/W4A4/DFlash2-FP8/model.safetensorsWeights2.4 GB a7b48bc293a9
NVFP4/W4A4/mtp-bf16.safetensorsWeights849.4 MB 90fa0e3eed5a
NVFP4/W4A4/text-01.safetensorsWeights4.0 GB 1ea4cf8a0036
NVFP4/W4A4/text-02.safetensorsWeights4.0 GB c9a0d2c3c506
NVFP4/W4A4/text-03.safetensorsWeights4.0 GB 3c8778873d2e
NVFP4/W4A4/text-04.safetensorsWeights4.0 GB 40081557adf0
NVFP4/W4A4/text-05.safetensorsWeights2.9 GB 0266ba0fa035
NVFP4/W4A4/vision-bf16.safetensorsWeights921.5 MB d7defc90994f
BF16/DFlash2-FP8/config.jsonConfiguration2.6 KB —
BF16/DFlash2-FP8/manifest.jsonConfiguration1.8 KB —
BF16/config.jsonConfiguration3.8 KB —
BF16/generation_config.jsonConfiguration214 B —
BF16/model.safetensors.index.jsonConfiguration112.0 KB —
BF16/preprocessor_config.jsonConfiguration390 B —
BF16/video_preprocessor_config.jsonConfiguration385 B —
FP8/DFlash2-FP8/config.jsonConfiguration2.6 KB —
FP8/DFlash2-FP8/manifest.jsonConfiguration1.8 KB —
FP8/config.jsonConfiguration17.8 KB —
FP8/generation_config.jsonConfiguration214 B —
FP8/model.safetensors.index.jsonConfiguration136.0 KB —
FP8/preprocessor_config.jsonConfiguration390 B —
FP8/video_preprocessor_config.jsonConfiguration385 B —
INT4/W4A16/VLLM_LOAD.jsonConfiguration510 B —
INT4/W4A16/config.jsonConfiguration5.1 KB —
INT4/W4A16/generation_config.jsonConfiguration214 B —
INT4/W4A16/model.safetensors.index.jsonConfiguration189.3 KB —
INT4/W4A16/preprocessor_config.jsonConfiguration390 B —
INT4/W4A16/recipe.yamlConfiguration359 B —
INT4/W4A16/video_preprocessor_config.jsonConfiguration385 B —
INT8/W8A16/MTP-BF16/config.jsonConfiguration2.7 KB —
INT8/W8A16/VLLM_LOAD.jsonConfiguration619 B —
INT8/W8A16/config.jsonConfiguration5.1 KB —
INT8/W8A16/generation_config.jsonConfiguration214 B —
INT8/W8A16/model.safetensors.index.jsonConfiguration216.0 KB —
INT8/W8A16/preprocessor_config.jsonConfiguration390 B —
INT8/W8A16/recipe.yamlConfiguration969 B —
INT8/W8A16/video_preprocessor_config.jsonConfiguration385 B —
INT8/W8A8/MTP-BF16/config.jsonConfiguration2.7 KB —
INT8/W8A8/VLLM_LOAD.jsonConfiguration329 B —
INT8/W8A8/config.jsonConfiguration25.6 KB —
INT8/W8A8/generation_config.jsonConfiguration214 B —
INT8/W8A8/model.safetensors.index.jsonConfiguration150.0 KB —
INT8/W8A8/preprocessor_config.jsonConfiguration390 B —
INT8/W8A8/video_preprocessor_config.jsonConfiguration385 B —
NVFP4/W4A16/DFlash2-FP8/config.jsonConfiguration2.6 KB —
NVFP4/W4A16/DFlash2-FP8/manifest.jsonConfiguration1.8 KB —
NVFP4/W4A16/config.jsonConfiguration69.8 KB —
NVFP4/W4A16/generation_config.jsonConfiguration214 B —
NVFP4/W4A16/hf_quant_config.jsonConfiguration66.0 KB —
NVFP4/W4A16/model.safetensors.index.jsonConfiguration171.6 KB —
NVFP4/W4A16/preprocessor_config.jsonConfiguration390 B —
NVFP4/W4A16/video_preprocessor_config.jsonConfiguration385 B —
NVFP4/W4A4-W8A8/DFlash2-FP8/config.jsonConfiguration2.6 KB —
NVFP4/W4A4-W8A8/DFlash2-FP8/manifest.jsonConfiguration1.8 KB —
NVFP4/W4A4-W8A8/config.jsonConfiguration71.8 KB —
NVFP4/W4A4-W8A8/generation_config.jsonConfiguration214 B —
NVFP4/W4A4-W8A8/hf_quant_config.jsonConfiguration44.0 KB —
NVFP4/W4A4-W8A8/model.safetensors.index.jsonConfiguration187.5 KB —
NVFP4/W4A4-W8A8/preprocessor_config.jsonConfiguration390 B —
NVFP4/W4A4-W8A8/video_preprocessor_config.jsonConfiguration385 B —
NVFP4/W4A4/DFlash2-FP8/config.jsonConfiguration2.6 KB —
NVFP4/W4A4/DFlash2-FP8/manifest.jsonConfiguration1.8 KB —
NVFP4/W4A4/config.jsonConfiguration18.1 KB —
NVFP4/W4A4/generation_config.jsonConfiguration214 B —
NVFP4/W4A4/hf_quant_config.jsonConfiguration14.0 KB —
NVFP4/W4A4/model.safetensors.index.jsonConfiguration207.6 KB —
NVFP4/W4A4/preprocessor_config.jsonConfiguration390 B —
NVFP4/W4A4/video_preprocessor_config.jsonConfiguration385 B —
evaluation/BENCH_NVFP4_MIXED.jsonConfiguration4.0 KB —
evaluation/BENCH_NVFP4_W4A16.jsonConfiguration4.0 KB —
evaluation/BENCH_NVFP4_W4A4.jsonConfiguration3.9 KB —
evaluation/BENCH_STATICFP8.jsonConfiguration6.5 KB —
evaluation/NVFP4_MIXED_gpqa.results.summary.jsonConfiguration1.2 KB —
evaluation/NVFP4_MIXED_lcb.results.summary.jsonConfiguration2.6 KB —
evaluation/NVFP4_MIXED_mmlu.results.summary.jsonConfiguration4.1 KB —
evaluation/NVFP4_W4A16_gpqa.results.summary.jsonConfiguration1.2 KB —
evaluation/NVFP4_W4A16_lcb.results.summary.jsonConfiguration2.6 KB —
evaluation/NVFP4_W4A16_mmlu.results.summary.jsonConfiguration4.1 KB —
evaluation/NVFP4_W4A4_gpqa.results.summary.jsonConfiguration1.2 KB —
evaluation/NVFP4_W4A4_lcb.results.summary.jsonConfiguration2.6 KB —
evaluation/NVFP4_W4A4_mmlu.results.summary.jsonConfiguration4.1 KB —
evaluation/SCORES_BF16.jsonConfiguration4.3 KB —
evaluation/SCORES_NVFP4_MIXED.jsonConfiguration3.1 KB —
evaluation/SCORES_NVFP4_W4A16.jsonConfiguration3.3 KB —
evaluation/SCORES_NVFP4_W4A4.jsonConfiguration3.2 KB —
evaluation/SCORES_STATICFP8.jsonConfiguration3.9 KB —
evaluation/SMOKE_BF16.jsonConfiguration889 B —
evaluation/SMOKE_STATICFP8.jsonConfiguration2.1 KB —
README.mdDocumentation265.0 KB —
evaluation/BENCH_STATICFP8.mdDocumentation1.4 KB —
evaluation/NVFP4_CALIBRATION_METHOD.mdDocumentation3.7 KB —
BF16/DFlash2-FP8/SHA256SUMSOther242 B —
BF16/SHA256SUMSOther990 B —
BF16/chat_template.jinjaOther9.0 KB —
FP8/DFlash2-FP8/SHA256SUMSOther242 B —
FP8/SHA256SUMSOther1.6 KB —
FP8/chat_template.jinjaOther9.0 KB —
GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q2LynnStyle-Q4MTP.ninferOther13.6 GB a6555ef4623f
GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q2LynnStyle-Q8MTP.ninferOther13.8 GB 993ff3e54f7b
GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q3LynnStyle-Q4MTP.ninferOther17.6 GB f1d4e45fb12d
GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q3LynnStyle-Q8MTP.ninferOther17.8 GB 815241ba4d8f
GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q4LynnStyle-Q4MTP.ninferOther19.9 GB e445a0a970ea
GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q4LynnStyle-Q8MTP.ninferOther20.1 GB f88730f1fc8d
GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q6_K-MTP.ninferOther23.4 GB 60d7b3f4f793
GGUF-NInfer/Qwen3.8-27B-Coder390-EfficientThink-Q8_0-MTP.ninferOther29.4 GB 8ace439259c8
GGUF-NInfer/SHA256SUMSOther1.1 KB —
GGUF/SHA256SUMSOther1.2 KB —
INT4/W4A16/SHA256SUMSOther1.2 KB —
INT4/W4A16/chat_template.jinjaOther9.0 KB —
INT8/W8A16/MTP-BF16/SHA256SUMSOther165 B —
INT8/W8A16/SHA256SUMSOther1.2 KB —
INT8/W8A16/chat_template.jinjaOther9.0 KB —
INT8/W8A8/MTP-BF16/SHA256SUMSOther165 B —
INT8/W8A8/SHA256SUMSOther1.7 KB —
INT8/W8A8/chat_template.jinjaOther9.0 KB —
NVFP4-NInfer/W4A4-W8A8/Qwen3.8-27B-Coder390-EfficientThink-W4A4-W8A8-MTP-DFlash2.ninferOther23.8 GB cccfbf0ba3ec
NVFP4-NInfer/W4A4-W8A8/Qwen3.8-27B-Coder390-W4A4-W8A8-MTP-DFlash2-NInferV2-NOT-FOR-V3.ninferOther23.5 GB 099b2d00fa39
NVFP4-NInfer/W4A4-W8A8/Qwen3.8-27B-Coder390-W4A4-W8A8-NInferV2-NOT-FOR-V3.ninferOther20.8 GB 01a4440f77dc
NVFP4-NInfer/W4A4-W8A8/SHA256SUMSOther606 B —
NVFP4-NInfer/W4A4/Qwen3.8-27B-Coder390-EfficientThink-W4A4-MTP-DFlash2.ninferOther23.8 GB 3c2d39f364a8
NVFP4-NInfer/W4A4/Qwen3.8-27B-Coder390-W4A4-MTP-DFlash2-NInferV2-NOT-FOR-V3.ninferOther23.5 GB e93f3b83f758
NVFP4-NInfer/W4A4/Qwen3.8-27B-Coder390-W4A4-NInferV2-NOT-FOR-V3.ninferOther20.8 GB eac9e3d47fe6
NVFP4-NInfer/W4A4/SHA256SUMSOther591 B —
NVFP4/W4A16/DFlash2-FP8/SHA256SUMSOther242 B —
NVFP4/W4A16/SHA256SUMSOther1.4 KB —
NVFP4/W4A16/chat_template.jinjaOther9.0 KB —
NVFP4/W4A4-W8A8/DFlash2-FP8/SHA256SUMSOther242 B —
NVFP4/W4A4-W8A8/SHA256SUMSOther1.5 KB —
NVFP4/W4A4-W8A8/chat_template.jinjaOther9.0 KB —
NVFP4/W4A4/DFlash2-FP8/SHA256SUMSOther242 B —
NVFP4/W4A4/SHA256SUMSOther1.4 KB —
NVFP4/W4A4/chat_template.jinjaOther9.0 KB —
assets/coder390-gguf-en.pngOther297.7 KB a25eb5065cfe
assets/coder390-gguf-zh.pngOther532.8 KB 52678ee0d7fa
assets/coder390-nvfp4-int8-ninfer-en.pngOther312.4 KB 1de517abf60b
assets/coder390-nvfp4-int8-ninfer-zh.pngOther575.5 KB 967b3009898d
assets/header-fp8-vs-base-en.pngOther741.5 KB 5b3d379f63fd
assets/header-fp8-vs-base-zh.pngOther703.9 KB bc121b562965
evaluation/SHA256SUMSOther2.1 KB —
.gitattributesRepository5.9 KB —
BF16/tokenizer.jsonTokenizer20.0 MB 06b9509352d2
BF16/tokenizer_config.jsonTokenizer1.1 KB —
FP8/tokenizer.jsonTokenizer20.0 MB 06b9509352d2
FP8/tokenizer_config.jsonTokenizer1.1 KB —
INT4/W4A16/tokenizer.jsonTokenizer20.0 MB 06b9509352d2
INT4/W4A16/tokenizer_config.jsonTokenizer1.1 KB —
INT8/W8A16/tokenizer.jsonTokenizer20.0 MB 06b9509352d2
INT8/W8A16/tokenizer_config.jsonTokenizer1.1 KB —
INT8/W8A8/tokenizer.jsonTokenizer20.0 MB 06b9509352d2
INT8/W8A8/tokenizer_config.jsonTokenizer1.1 KB —
NVFP4/W4A16/tokenizer.jsonTokenizer20.0 MB 06b9509352d2
NVFP4/W4A16/tokenizer_config.jsonTokenizer1.1 KB —
NVFP4/W4A4-W8A8/tokenizer.jsonTokenizer20.0 MB 06b9509352d2
NVFP4/W4A4-W8A8/tokenizer_config.jsonTokenizer1.1 KB —
NVFP4/W4A4/tokenizer.jsonTokenizer20.0 MB 06b9509352d2
NVFP4/W4A4/tokenizer_config.jsonTokenizer1.1 KB —

License and Download

License
apache-2.0
Access
Open weights, no gate
Download size
405.5 GB
Download from Lynn

Released by Lynn through its official repository on Hugging Face. Read the license.

Built From

  • Derived from nerkyor/Qwen3.8-27B-EfficientThink-Uncensored-K3-Opus5-Grok4.6-GPT5.6Sol-SFT-SimPO-DFlash2
  • Quantized from nerkyor/Qwen3.8-27B-EfficientThink-Uncensored-K3-Opus5-Grok4.6-GPT5.6Sol-SFT-SimPO-DFlash2

Memory Requirements

PrecisionWeights in memory
As published405.5 GB

Weights only, from the published parameter count; the key-value cache and runtime add to this.

Questions About Qwen3.8-27B-Coder390-EfficientThink-Opus5.5-GPT6Astra-Grok4.7-DSV4Pro-K3-SFT-RLOO-MTP-DFlash2

Can I use Qwen3.8-27B-Coder390-EfficientThink-Opus5.5-GPT6Astra-Grok4.7-DSV4Pro-K3-SFT-RLOO-MTP-DFlash2 commercially?

Yes. Qwen3.8-27B-Coder390-EfficientThink-Opus5.5-GPT6Astra-Grok4.7-DSV4Pro-K3-SFT-RLOO-MTP-DFlash2 is released under Apache License 2.0. The Apache License 2.0 is a permissive open-source license. It permits commercial use, modification and redistribution. It requires keeping the license and copyright notices and any NOTICE file, stating significant changes, and it includes an express patent grant from contributors.

Similar Models

Non-uniform GGUF quantizations of a 512-expert MoE, produced with GSQ and RCO, with a vision projector for multimodal use. This repository provides GGUF quantizations of Qwen3.8-Flash-Next at four sizes, together with the model's vision projector (mmproj) for multimodal use. In contrast to uniform quantization, which applies a single quantization type to all weight tensors, each model here assigns a separate quantization type to every tensor. The assignment is obtained by a gradient-based search that allocates precision according to per-tensor sensitivity, subject to a total size budget. The resulting files are standard GGUF and run unmodified in llama.cpp, Ollama, and LM Studio. A…

Open weights apache-2.0 gguf

Model · Image and text to text

Huihui-Qwen3.8-27B-abliterated-GGUF

Huihui.ai

This is an uncensored version of Qwen/Qwen3.8-27B created with abliteration (see remove-refusals-with-transformers to know more about it). This is a crude, proof-of-concept implementation to remove refusals from an LLM model without using TransformerLens. The newly added Huihui-Qwen3.8-27B-abliterated-Underdog-Saluki series come from ConwayResearch/Underdog-Saluki-27B-1.0 and ukisai/Swift-1.5-Qwen3.8-27B-GSQ-RCO-GGUF. Only layers 22 to 52 (0-based indexing) have been ablated, while the other layers remain unablated. It may come with a small disclaimer warning. Due to ConwayResearch/Underdog-Saluki-27B-1.0 not providing an imatrix file, we will attempt to perform ablation by mixing the GGUF…

Open weights apache-2.0 transformers

Qwen3.8-27B uncensored by HauhauCS 0/465 Refusals. This is the Aggressive variant: direct answers, no refusal behavior, and minimal preamble on hard prompts. Every text GGUF preserves Qwen3.8's native NextN head, and this release adds HauhauCS FastMTP: a specific acceleration sidecar qualified across the complete quant lineup at maximum native context. Vision is included through the separate BF16 projector. No changes to datasets or intended capabilities. This release preserves Qwen3.8-27B's text, reasoning, agentic, image, and video capabilities while applying the HauhauCS Aggressive uncensoring profile. Pick Aggressive when you specifically want the model to get to the answer without…

Open weights apache-2.0

Model · Image and text to text

Qwen3.8-27B-iMatrix-NVFP4-MTP-GGUF

Michał Piszczek

I built this quant because the ready-made FP4 file answered the wrong question. It was fast, but on my short WikiText-2 control it scored 6.4949 PPL. Plain Q40 scored 6.3798. The first higher-quality hybrid went too far the other way: good perplexity, 34.19 tok/s, and no comfortable room for 256K plus vision. This is the build that survived both gates. It is a 17.1 GB, 5.01 BPW mixed-precision GGUF of Qwen/Qwen3.8-27B. It keeps large, tolerant matrices in native NVFP4 and spends more bits on selected attention, Gated DeltaNet, and late FFN tensors. The trained MTP layer remains embedded in the same GGUF. This is not a fine-tune. I built the private calibration workload from 5,472 messages…

Open weights apache-2.0

Model · Image and text to text

Qwen3.8-27B-GGUF

GGML Org

Run it in the Llama app: https://llama.app - https://huggingface.co/Qwen/Qwen3.8-27B - https://huggingface.co/incoai/Qwen3.8-27B-DFlash2 - add info

Open weights apache-2.0

lm mmap --lazy-mode on -ngl 99 -c 32768 \ mmproj-Qwen3.8-Flash-Next-BF16.gguf --local-dir. llama-mtmd-cli -m IQ3S/Qwen3.8-Flash-Next-GSQ-RCO-abliterated-IQ3S-00001-of-00002.gguf \ --mmproj mmproj-Qwen3.8-Flash-Next-BF16.gguf -lm mmap --lazy-mode on \ -md mtp-Qwen3.8-Flash-Next-Q80.gguf --draft-max 4 -lm mmap --lazy-mode on -ngl 99 -lm mmap --lazy-mode on keeps the n-gram table memory-mapped on disk: it is 28.8 GB and one row is read per token. Shard 1 wants to be resident (VRAM or RAM); shard 2 is fine on an SSD. The vision projector is a standard clip GGUF shared with the upstream tiers, 0.91 GB. Native context is 262,144 tokens and the KV cache grows with it, so start at -c 32768 and work…

Open weights apache-2.0 gguf