Qwen3.8-Flash-Next GSQ-RCO Q2_0, NInfer v3 artifact
1
9 commits
2 linked in READMEs
updated Oct 9, 2026
A NInfer v3 artifact of ISTA-DASLab's
Qwen3.8-Flash-Next GSQ-RCO Q2_0
(2.40 bits per weight over the transformer weights) for NInfer-all, the master branch of
iamwavecut/ninfer-all. Qwen3.8-Flash-Next is a
125B-parameter mixture of experts: 48 layers of 512 routed experts, 10 of them active per token,
about 6B active parameters. The GGUF assigns a ggml quantization type to every tensor; this artifact
keeps each tensor's ggml blocks byte for byte, so nothing is requantized, and the engine multiplies
the blocks in place. Q2_0 is the release built for speed: it avoids the lookup-table formats.
Stock NInfer builds refuse these files: the model family and the gguf_* formats exist only in that
line; build master from commit
82f120de on. NInfer serves it
with up to eight concurrent requests, prompt-prefix reuse, structured output and its Vision tower;
MTP drafting is not available (no GSQ-RCO release carries the MTP layer).
| component | representation |
|---|---|
| routed experts, 48 layers × 512 | Q2_0 gate, up and down banks, as in the GGUF; expert-major, so one expert is one contiguous range of bytes |
| shared experts | the GGUF's own blocks, one type per tensor: Q2_0, Q3_K, Q4_0, Q4_K, Q5_0, Q5_K, Q6_K, Q8_0, IQ4_XS, IQ4_NL |
| 36 Gated DeltaNet and 12 sparse-attention (QSA) layers | the GGUF's own blocks, Q2_0 to Q6_K per tensor |
| output head, token table | Q5_K, Q3_K |
| router, hyper-connection projections | BF16, as in the GGUF |
GDN controls, norms, convolution, A_log, dt_bias | BF16/FP32, restored from llama.cpp's exporter conventions (grouped value heads, w instead of 1 + w, A_log from -exp(A_log), the head-interleaved query and gate) |
| Vision tower | the release's mmproj-Qwen3.8-Flash-Next-BF16.gguf in BF16 (0.9 GB): the Qwen3.5/3.6 tower, 27 blocks of width 1152, merging 2×2 patches onto the text model's 2,560, with the checkpoint's image and video preprocessor configurations |
| n-gram table | not in this file: the model's ngram component names its table (the hash constants, IQ4_NL rows, SHA-256 dd55c289…6cc3 of the rows), the same table as every Flash-Next release, published once as WaveCut/Qwen3.8-Flash-Next-ngram-table-NInfer-v3 |
| chat template | Qwen/Qwen3.8-Flash-Next's chat_template.jinja |
One file, Qwen3.8-Flash-Next-GSQ-RCO-Q2_0-ninfer-v3.ninfer, of 38,535,551,488 bytes
(35.89 GiB), next to its conversion report, SHA256SUMS, NOTICE and LICENSE. Conversion
command, from the repository's tree:
python3 -m tools.convert --model Qwen3.8-Flash-Next \
--recipe qwen3_8_flash_next_gguf --components text,vision \
--source gguf=Qwen3.8-Flash-Next-GSQ-RCO-Q2_0-00001-of-00002.gguf \
--source ngram=Qwen3.8-Flash-Next-GSQ-RCO-Q2_0-00002-of-00002.gguf \
--source vision=mmproj-Qwen3.8-Flash-Next-BF16.gguf \
--device cpu --rows-per-chunk 65536 \
--name qwen3.8-flash-next --out Qwen3.8-Flash-Next-GSQ-RCO-Q2_0-ninfer-v3.ninfer
The converter reads the table shard to record its digest; the rows themselves are in the table
repository. --model needs the configuration, tokenizer and preprocessor files of
Qwen/Qwen3.8-Flash-Next (config.json,
tokenizer.json, tokenizer_config.json, chat_template.jinja, generation_config.json,
preprocessor_config.json, video_preprocessor_config.json).
Download the artifact and the n-gram table, then serve them from a build of master
(its README; CMAKE_CUDA_ARCHITECTURES is
86, 89 or 120a, and 120a needs CUDA 13.1 or newer):
hf download WaveCut/Qwen3.8-Flash-Next-GSQ-RCO-Q2_0-NInfer-v3 \
Qwen3.8-Flash-Next-GSQ-RCO-Q2_0-ninfer-v3.ninfer --local-dir models
hf download WaveCut/Qwen3.8-Flash-Next-ngram-table-NInfer-v3 \
Qwen3.8-Flash-Next-ngram-table-IQ4_NL-ninfer-v3.ninfer --local-dir models
M=models/Qwen3.8-Flash-Next-GSQ-RCO-Q2_0-ninfer-v3.ninfer
T=models/Qwen3.8-Flash-Next-ngram-table-IQ4_NL-ninfer-v3.ninfer
# One GPU of 48 GB or more (L40S, RTX PRO 6000): every expert in device memory.
ninfer-serve $M --ngram-table $T --model-id qwen3.8-flash-next --max-context 32768
# Two 24 GB GPUs (Linux): every expert in device memory, one pipeline stage per GPU.
ninfer-serve $M --ngram-table $T --model-id qwen3.8-flash-next --devices 0,1 --max-context 32768
# One 24 GB GPU: the experts in page-locked host memory (34 GB), the most used of them cached on the GPU.
ninfer-serve $M --ngram-table $T --model-id qwen3.8-flash-next --expert-residency host --max-context 32768
# One 24 GB GPU and little RAM: the experts stay in the file and stream into a GPU cache.
ninfer-serve $M --ngram-table $T --model-id qwen3.8-flash-next --expert-residency disk --max-context 32768
The Docker image (an NVIDIA driver of the CUDA
13 branch, 580 or newer, and the NVIDIA Container Toolkit) runs the same commands as serve with
the files under /models, and answers on http://localhost:8080/v1:
docker run --rm --gpus all -p 8080:8080 --ulimit memlock=-1 \
-v "$PWD/models:/models" -v ninfer-cache:/cache \
ghcr.io/iamwavecut/ninfer-all serve /models/Qwen3.8-Flash-Next-GSQ-RCO-Q2_0-ninfer-v3.ninfer \
--ngram-table /models/Qwen3.8-Flash-Next-ngram-table-IQ4_NL-ninfer-v3.ninfer \
--model-id qwen3.8-flash-next --expert-residency host --max-context 32768
With host experts the GPU holds the 3.7 GB of dense weights, the request state and an expert cache
that takes what is free after startup (--expert-cache-mib sets it). With disk experts the host keeps
no copy of the banks: the cache reads the experts each layer routes to from the file, through the OS
page cache. The n-gram rows are read from the table's file the same way (16 per token) unless
--ngram-ram loads the 28.8 GB table into RAM. A model started without its table is refused;
--no-ngram-table runs it without, a non-standard experimental mode with no practical use (see the
table's card). --vision adds the Vision tower (0.9 GB on the GPU) for images and video. The KV cache of the 12
sparse-attention layers is BF16.
Qwen3.8-Flash-Next
describes the placements and the execution.
NInfer computes what llama.cpp computes from the same GGUF. Over the first 72 KB of the WikiText
sample in the repository's eval/corpora/perplexity-1m, in 2,560-token windows that advance by 1,024
targets (llama.cpp's --ppl-stride 1024 -c 2048), the fourteen windows both programs score the same
way (14,336 targets) give:
| perplexity | |
|---|---|
| this artifact in NInfer, BF16 KV | 2.6579 |
| the GGUF in llama.cpp, BF16 KV | 2.6502 |
Window by window the two differ by -0.014 to +0.016 nats. Deep into a long context they agree as
closely: over four PG-19 streams of the same corpus joined (261,412 tokens), in 65,536-token windows
that advance by 32,768 targets (--ppl-stride 32768 -c 49152), so that every scored position lies
past the first 32,768 of its window, the five windows both score the same way give 8.0834 in NInfer
and 8.0802 in llama.cpp, window by window within 0.0011 nats (two RTX 5090s, BF16 KV).
The GSQ-RCO card evaluates this quantization in llama.cpp at AIME25 96.67, GPQA-Diamond 89.39 and LiveCodeBench v6 81.14 (BF16: 100.00, 91.92, 87.43), without stating its sampling, output limit or number of runs. In NInfer, EvalScope ran AIME 2025 and GPQA-Diamond against this artifact with its table on two RTX 5090s, every expert in device memory and six requests at a time: thinking on, temperature 1.0, top-p 0.95, top-k 20, one sampled run, at most 106,000 output tokens (October 2026). The answers cut there were then continued from where they stopped to 122,880 (AIME) and 245,760 (GPQA) output tokens:
| AIME 2025 | GPQA-Diamond | |
|---|---|---|
| this artifact in NInfer, the cut answers continued | 93.33 (28/30) | 86.36 (171/198) |
| this artifact in NInfer, at most 106,000 output tokens | 93.33 | 84.34 |
| the GGUF in llama.cpp (GSQ-RCO card) | 96.67 | 89.39 |
One AIME answer and ten GPQA answers reached 106,000 tokens without answering. Continued, four of the GPQA answers came out right and four wrong; one GPQA answer was still reasoning at 245,760 tokens, one was repeating a codon of its question's DNA sequence, and the AIME answer was still calculating at 122,880. One run of GPQA-Diamond's 198 questions has a standard error of about 2.5 points. The answers are long, 23,000 to 26,000 output tokens on average; the run took 7 h 44 min at 193 tokens per second across the six requests, and the continuations 58 min more. LiveCodeBench needs a code sandbox and was not run. Measurements has the details.
October 2026, greedy decoding, the repository's generate test (ninfer_qwen4_exp_generate_real).
Decode is measured over the 78 tokens of a short answer to a 20-token prompt and over the first five
tokens after a 4,463-token prompt; prefill is that prompt in 512-token chunks. Host memory is the
process's peak resident set. These are the weights of this file (the table and the Vision tower are
not read here).
The RTX PRO 6000 and RTX 5090 rows ran a 120a build with CUDA 13.1 and the separate table
artifact, single-GPU rows pinned to the GPU's NUMA node:
With host or disk experts the device expert cache takes the free memory, about 94 GB on the PRO 6000. The rows measure it while it is still filling.
The RTX 4090 rows ran this file with the separate table artifact on RTX 4090s at 450 W (PCIe 4.0 x16) in a cloud VM with two EPYC 7543 sockets, pinned to the CPUs of the GPUs' NUMA node, two runs each where a range is given; left unpinned, host experts decode there at 40 tok/s and disk experts at 32 to 33. The RTX 3090 Ti and first three RTX 3090 rows were measured before the weights moved into one file, the last in a single file with the table, on another RTX 3090 (310 W power limit, 62 GB of RAM, 23 cores of an AMD EPYC 7663) next to the IQ3_S artifact.
| hardware and placement | device memory | host memory | decode, short answer | decode after 4,463 tokens | prefill |
|---|---|---|---|---|---|
| RTX PRO 6000, experts on the GPU | 37.7 GiB | 0.8 GiB | 136.0-139.7 tok/s | 160.7-162.6 tok/s | 2,925-2,952 tok/s |
| RTX PRO 6000, experts in pinned host memory | 38.5 GiB | 34.0 GB pinned | 54.8-55.0 tok/s | 67.7-70.0 tok/s | 1,296-1,297 tok/s |
| RTX PRO 6000, experts on disk, artifact in the page cache | 93.6 GiB | 1.0 GiB + page cache | 75.9 tok/s | 115.8 tok/s | 2,024 tok/s |
| RTX PRO 6000, experts on disk, the files' pages evicted every second | 93.5 GiB | 1.0 GiB | 35.1 tok/s | 87.1 tok/s | 1,000 tok/s |
| 2× RTX 5090 (PCIe), experts on the GPUs | 18.8 + 19.6 GiB | 0.9 GiB | 136.1-136.3 tok/s | 157.0-157.2 tok/s | 3,807-3,811 tok/s |
| RTX 5090, experts in pinned host memory | 30.0 GiB | 34.0 GB pinned | 74.1-74.2 tok/s | 93.9-94.2 tok/s | 1,676-1,678 tok/s |
| RTX 5090, experts on disk, artifact in the page cache | 29.9 GiB | 1.0 GiB + page cache | 67.5 tok/s | 76.7 tok/s | 1,739 tok/s |
| RTX 5090, experts on disk, the files' pages evicted every second | 29.9 GiB | 1.0 GiB | 25.3 tok/s | 28.7 tok/s | 694 tok/s |
| 2× RTX 4090 (PCIe, no P2P), experts on the GPUs | 18.5 + 19.4 GiB | 0.8 GiB | 92.6-100.7 tok/s | 116-120 tok/s | 3,482-3,734 tok/s |
| 2× RTX 3090 Ti (PCIe, no P2P), experts on the GPUs | 18.4 + 19.4 GB | 0.7 GB | 90.2 tok/s | 107 tok/s | 1,504 tok/s |
| RTX 4090, experts in pinned host memory | 20.7 GiB | 34.0 GB pinned | 52.6-52.7 tok/s | 44.3-44.6 tok/s | 1,137-1,139 tok/s |
| RTX 4090, experts on disk, artifact in the page cache | 20.7 GiB | 1.0 GiB + page cache | 42.0 tok/s | 45.6 tok/s | 723 tok/s |
| RTX 4090, experts on disk, the file's pages evicted every second | 20.5 GiB | 1.0 GiB | 17.7 tok/s | 12.2 tok/s | 160 tok/s |
| RTX 3090, experts in pinned host memory | 22.6 GB | 34 GB pinned | 48.9 tok/s | 42.1 tok/s | 842 tok/s |
| RTX 3090, experts on disk, artifact in the page cache | 22.6 GB | 0.9 GB + page cache | 47.0 tok/s | 39.1 tok/s | 630 tok/s |
| RTX 3090, experts on disk, page cache dropped every second (NVMe) | 22.6 GB | 0.9 GB | 17.2 tok/s | 11.3 tok/s | 195 tok/s |
| RTX 3090, experts in pinned host memory, this file | 22.1 GiB | 34.0 GB pinned | 50.2 tok/s | 43.7 tok/s | 847 tok/s |
llama.cpp runs the GGUF with the experts on the CPU (--n-cpu-moe 48) at 11.2 tok/s decode (tg128)
and 267 tok/s prefill (pp512) on the first RTX 3090's machine (32 threads), and at 12.7 and 368 tok/s
on the second (23 threads).
Quantized weights: ISTA-DASLab,
Qwen3.8-Flash-Next GSQ-RCO GGUFs,
produced with GSQ and RCO
from Qwen/Qwen3.8-Flash-Next. The model is
released under the Qwen Community License 1.0, reproduced in LICENSE, and its conditions
apply to these files; ISTA-DASLab publish their GGUFs under Apache-2.0. Attribution notices are
collected in NOTICE. This repository only re-packs those weights into NInfer's container.
Qwen3.8-Flash-Next GSQ-RCO Q2_0, NInfer v3 artifact
1
9 commits
2 linked in READMEs
updated Oct 9, 2026
A NInfer v3 artifact of ISTA-DASLab's
Qwen3.8-Flash-Next GSQ-RCO Q2_0
(2.40 bits per weight over the transformer weights) for NInfer-all, the master branch of
iamwavecut/ninfer-all. Qwen3.8-Flash-Next is a
125B-parameter mixture of experts: 48 layers of 512 routed experts, 10 of them active per token,
about 6B active parameters. The GGUF assigns a ggml quantization type to every tensor; this artifact
keeps each tensor's ggml blocks byte for byte, so nothing is requantized, and the engine multiplies
the blocks in place. Q2_0 is the release built for speed: it avoids the lookup-table formats.
Stock NInfer builds refuse these files: the model family and the gguf_* formats exist only in that
line; build master from commit
82f120de on. NInfer serves it
with up to eight concurrent requests, prompt-prefix reuse, structured output and its Vision tower;
MTP drafting is not available (no GSQ-RCO release carries the MTP layer).
| component | representation |
|---|---|
| routed experts, 48 layers × 512 | Q2_0 gate, up and down banks, as in the GGUF; expert-major, so one expert is one contiguous range of bytes |
| shared experts | the GGUF's own blocks, one type per tensor: Q2_0, Q3_K, Q4_0, Q4_K, Q5_0, Q5_K, Q6_K, Q8_0, IQ4_XS, IQ4_NL |
| 36 Gated DeltaNet and 12 sparse-attention (QSA) layers | the GGUF's own blocks, Q2_0 to Q6_K per tensor |
| output head, token table | Q5_K, Q3_K |
| router, hyper-connection projections | BF16, as in the GGUF |
GDN controls, norms, convolution, A_log, dt_bias | BF16/FP32, restored from llama.cpp's exporter conventions (grouped value heads, w instead of 1 + w, A_log from -exp(A_log), the head-interleaved query and gate) |
| Vision tower | the release's mmproj-Qwen3.8-Flash-Next-BF16.gguf in BF16 (0.9 GB): the Qwen3.5/3.6 tower, 27 blocks of width 1152, merging 2×2 patches onto the text model's 2,560, with the checkpoint's image and video preprocessor configurations |
| n-gram table | not in this file: the model's ngram component names its table (the hash constants, IQ4_NL rows, SHA-256 dd55c289…6cc3 of the rows), the same table as every Flash-Next release, published once as WaveCut/Qwen3.8-Flash-Next-ngram-table-NInfer-v3 |
| chat template | Qwen/Qwen3.8-Flash-Next's chat_template.jinja |
One file, Qwen3.8-Flash-Next-GSQ-RCO-Q2_0-ninfer-v3.ninfer, of 38,535,551,488 bytes
(35.89 GiB), next to its conversion report, SHA256SUMS, NOTICE and LICENSE. Conversion
command, from the repository's tree:
python3 -m tools.convert --model Qwen3.8-Flash-Next \
--recipe qwen3_8_flash_next_gguf --components text,vision \
--source gguf=Qwen3.8-Flash-Next-GSQ-RCO-Q2_0-00001-of-00002.gguf \
--source ngram=Qwen3.8-Flash-Next-GSQ-RCO-Q2_0-00002-of-00002.gguf \
--source vision=mmproj-Qwen3.8-Flash-Next-BF16.gguf \
--device cpu --rows-per-chunk 65536 \
--name qwen3.8-flash-next --out Qwen3.8-Flash-Next-GSQ-RCO-Q2_0-ninfer-v3.ninfer
The converter reads the table shard to record its digest; the rows themselves are in the table
repository. --model needs the configuration, tokenizer and preprocessor files of
Qwen/Qwen3.8-Flash-Next (config.json,
tokenizer.json, tokenizer_config.json, chat_template.jinja, generation_config.json,
preprocessor_config.json, video_preprocessor_config.json).
Download the artifact and the n-gram table, then serve them from a build of master
(its README; CMAKE_CUDA_ARCHITECTURES is
86, 89 or 120a, and 120a needs CUDA 13.1 or newer):
hf download WaveCut/Qwen3.8-Flash-Next-GSQ-RCO-Q2_0-NInfer-v3 \
Qwen3.8-Flash-Next-GSQ-RCO-Q2_0-ninfer-v3.ninfer --local-dir models
hf download WaveCut/Qwen3.8-Flash-Next-ngram-table-NInfer-v3 \
Qwen3.8-Flash-Next-ngram-table-IQ4_NL-ninfer-v3.ninfer --local-dir models
M=models/Qwen3.8-Flash-Next-GSQ-RCO-Q2_0-ninfer-v3.ninfer
T=models/Qwen3.8-Flash-Next-ngram-table-IQ4_NL-ninfer-v3.ninfer
# One GPU of 48 GB or more (L40S, RTX PRO 6000): every expert in device memory.
ninfer-serve $M --ngram-table $T --model-id qwen3.8-flash-next --max-context 32768
# Two 24 GB GPUs (Linux): every expert in device memory, one pipeline stage per GPU.
ninfer-serve $M --ngram-table $T --model-id qwen3.8-flash-next --devices 0,1 --max-context 32768
# One 24 GB GPU: the experts in page-locked host memory (34 GB), the most used of them cached on the GPU.
ninfer-serve $M --ngram-table $T --model-id qwen3.8-flash-next --expert-residency host --max-context 32768
# One 24 GB GPU and little RAM: the experts stay in the file and stream into a GPU cache.
ninfer-serve $M --ngram-table $T --model-id qwen3.8-flash-next --expert-residency disk --max-context 32768
The Docker image (an NVIDIA driver of the CUDA
13 branch, 580 or newer, and the NVIDIA Container Toolkit) runs the same commands as serve with
the files under /models, and answers on http://localhost:8080/v1:
docker run --rm --gpus all -p 8080:8080 --ulimit memlock=-1 \
-v "$PWD/models:/models" -v ninfer-cache:/cache \
ghcr.io/iamwavecut/ninfer-all serve /models/Qwen3.8-Flash-Next-GSQ-RCO-Q2_0-ninfer-v3.ninfer \
--ngram-table /models/Qwen3.8-Flash-Next-ngram-table-IQ4_NL-ninfer-v3.ninfer \
--model-id qwen3.8-flash-next --expert-residency host --max-context 32768
With host experts the GPU holds the 3.7 GB of dense weights, the request state and an expert cache
that takes what is free after startup (--expert-cache-mib sets it). With disk experts the host keeps
no copy of the banks: the cache reads the experts each layer routes to from the file, through the OS
page cache. The n-gram rows are read from the table's file the same way (16 per token) unless
--ngram-ram loads the 28.8 GB table into RAM. A model started without its table is refused;
--no-ngram-table runs it without, a non-standard experimental mode with no practical use (see the
table's card). --vision adds the Vision tower (0.9 GB on the GPU) for images and video. The KV cache of the 12
sparse-attention layers is BF16.
Qwen3.8-Flash-Next
describes the placements and the execution.
NInfer computes what llama.cpp computes from the same GGUF. Over the first 72 KB of the WikiText
sample in the repository's eval/corpora/perplexity-1m, in 2,560-token windows that advance by 1,024
targets (llama.cpp's --ppl-stride 1024 -c 2048), the fourteen windows both programs score the same
way (14,336 targets) give:
| perplexity | |
|---|---|
| this artifact in NInfer, BF16 KV | 2.6579 |
| the GGUF in llama.cpp, BF16 KV | 2.6502 |
Window by window the two differ by -0.014 to +0.016 nats. Deep into a long context they agree as
closely: over four PG-19 streams of the same corpus joined (261,412 tokens), in 65,536-token windows
that advance by 32,768 targets (--ppl-stride 32768 -c 49152), so that every scored position lies
past the first 32,768 of its window, the five windows both score the same way give 8.0834 in NInfer
and 8.0802 in llama.cpp, window by window within 0.0011 nats (two RTX 5090s, BF16 KV).
The GSQ-RCO card evaluates this quantization in llama.cpp at AIME25 96.67, GPQA-Diamond 89.39 and LiveCodeBench v6 81.14 (BF16: 100.00, 91.92, 87.43), without stating its sampling, output limit or number of runs. In NInfer, EvalScope ran AIME 2025 and GPQA-Diamond against this artifact with its table on two RTX 5090s, every expert in device memory and six requests at a time: thinking on, temperature 1.0, top-p 0.95, top-k 20, one sampled run, at most 106,000 output tokens (October 2026). The answers cut there were then continued from where they stopped to 122,880 (AIME) and 245,760 (GPQA) output tokens:
| AIME 2025 | GPQA-Diamond | |
|---|---|---|
| this artifact in NInfer, the cut answers continued | 93.33 (28/30) | 86.36 (171/198) |
| this artifact in NInfer, at most 106,000 output tokens | 93.33 | 84.34 |
| the GGUF in llama.cpp (GSQ-RCO card) | 96.67 | 89.39 |
One AIME answer and ten GPQA answers reached 106,000 tokens without answering. Continued, four of the GPQA answers came out right and four wrong; one GPQA answer was still reasoning at 245,760 tokens, one was repeating a codon of its question's DNA sequence, and the AIME answer was still calculating at 122,880. One run of GPQA-Diamond's 198 questions has a standard error of about 2.5 points. The answers are long, 23,000 to 26,000 output tokens on average; the run took 7 h 44 min at 193 tokens per second across the six requests, and the continuations 58 min more. LiveCodeBench needs a code sandbox and was not run. Measurements has the details.
October 2026, greedy decoding, the repository's generate test (ninfer_qwen4_exp_generate_real).
Decode is measured over the 78 tokens of a short answer to a 20-token prompt and over the first five
tokens after a 4,463-token prompt; prefill is that prompt in 512-token chunks. Host memory is the
process's peak resident set. These are the weights of this file (the table and the Vision tower are
not read here).
The RTX PRO 6000 and RTX 5090 rows ran a 120a build with CUDA 13.1 and the separate table
artifact, single-GPU rows pinned to the GPU's NUMA node:
With host or disk experts the device expert cache takes the free memory, about 94 GB on the PRO 6000. The rows measure it while it is still filling.
The RTX 4090 rows ran this file with the separate table artifact on RTX 4090s at 450 W (PCIe 4.0 x16) in a cloud VM with two EPYC 7543 sockets, pinned to the CPUs of the GPUs' NUMA node, two runs each where a range is given; left unpinned, host experts decode there at 40 tok/s and disk experts at 32 to 33. The RTX 3090 Ti and first three RTX 3090 rows were measured before the weights moved into one file, the last in a single file with the table, on another RTX 3090 (310 W power limit, 62 GB of RAM, 23 cores of an AMD EPYC 7663) next to the IQ3_S artifact.
| hardware and placement | device memory | host memory | decode, short answer | decode after 4,463 tokens | prefill |
|---|---|---|---|---|---|
| RTX PRO 6000, experts on the GPU | 37.7 GiB | 0.8 GiB | 136.0-139.7 tok/s | 160.7-162.6 tok/s | 2,925-2,952 tok/s |
| RTX PRO 6000, experts in pinned host memory | 38.5 GiB | 34.0 GB pinned | 54.8-55.0 tok/s | 67.7-70.0 tok/s | 1,296-1,297 tok/s |
| RTX PRO 6000, experts on disk, artifact in the page cache | 93.6 GiB | 1.0 GiB + page cache | 75.9 tok/s | 115.8 tok/s | 2,024 tok/s |
| RTX PRO 6000, experts on disk, the files' pages evicted every second | 93.5 GiB | 1.0 GiB | 35.1 tok/s | 87.1 tok/s | 1,000 tok/s |
| 2× RTX 5090 (PCIe), experts on the GPUs | 18.8 + 19.6 GiB | 0.9 GiB | 136.1-136.3 tok/s | 157.0-157.2 tok/s | 3,807-3,811 tok/s |
| RTX 5090, experts in pinned host memory | 30.0 GiB | 34.0 GB pinned | 74.1-74.2 tok/s | 93.9-94.2 tok/s | 1,676-1,678 tok/s |
| RTX 5090, experts on disk, artifact in the page cache | 29.9 GiB | 1.0 GiB + page cache | 67.5 tok/s | 76.7 tok/s | 1,739 tok/s |
| RTX 5090, experts on disk, the files' pages evicted every second | 29.9 GiB | 1.0 GiB | 25.3 tok/s | 28.7 tok/s | 694 tok/s |
| 2× RTX 4090 (PCIe, no P2P), experts on the GPUs | 18.5 + 19.4 GiB | 0.8 GiB | 92.6-100.7 tok/s | 116-120 tok/s | 3,482-3,734 tok/s |
| 2× RTX 3090 Ti (PCIe, no P2P), experts on the GPUs | 18.4 + 19.4 GB | 0.7 GB | 90.2 tok/s | 107 tok/s | 1,504 tok/s |
| RTX 4090, experts in pinned host memory | 20.7 GiB | 34.0 GB pinned | 52.6-52.7 tok/s | 44.3-44.6 tok/s | 1,137-1,139 tok/s |
| RTX 4090, experts on disk, artifact in the page cache | 20.7 GiB | 1.0 GiB + page cache | 42.0 tok/s | 45.6 tok/s | 723 tok/s |
| RTX 4090, experts on disk, the file's pages evicted every second | 20.5 GiB | 1.0 GiB | 17.7 tok/s | 12.2 tok/s | 160 tok/s |
| RTX 3090, experts in pinned host memory | 22.6 GB | 34 GB pinned | 48.9 tok/s | 42.1 tok/s | 842 tok/s |
| RTX 3090, experts on disk, artifact in the page cache | 22.6 GB | 0.9 GB + page cache | 47.0 tok/s | 39.1 tok/s | 630 tok/s |
| RTX 3090, experts on disk, page cache dropped every second (NVMe) | 22.6 GB | 0.9 GB | 17.2 tok/s | 11.3 tok/s | 195 tok/s |
| RTX 3090, experts in pinned host memory, this file | 22.1 GiB | 34.0 GB pinned | 50.2 tok/s | 43.7 tok/s | 847 tok/s |
llama.cpp runs the GGUF with the experts on the CPU (--n-cpu-moe 48) at 11.2 tok/s decode (tg128)
and 267 tok/s prefill (pp512) on the first RTX 3090's machine (32 threads), and at 12.7 and 368 tok/s
on the second (23 threads).
Quantized weights: ISTA-DASLab,
Qwen3.8-Flash-Next GSQ-RCO GGUFs,
produced with GSQ and RCO
from Qwen/Qwen3.8-Flash-Next. The model is
released under the Qwen Community License 1.0, reproduced in LICENSE, and its conditions
apply to these files; ISTA-DASLab publish their GGUFs under Apache-2.0. Attribution notices are
collected in NOTICE. This repository only re-packs those weights into NInfer's container.