Instructions to use halt95/Qwen3.8-Flash-Next-W4A16-Merlin with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Merlin
How to use halt95/Qwen3.8-Flash-Next-W4A16-Merlin with Merlin:
# No code snippets available yet for this library. # To use this model, check the repository files and the library's documentation. # Want to help? PRs adding snippets are welcome at: # https://github.com/huggingface/huggingface.js
- Notebooks
- Google Colab
- Kaggle
Qwen3.8-Flash-Next-W4A16-Merlin
A 4-bit build of Qwen3.8-Flash-Next, Qwen's 125B mixture-of-experts model (6B active per token, with vision), made to run at its full 262,144-token context on four 24 GB GPUs. It is 115 GiB instead of the original 335 GiB: the routed experts are INT4, the 51B-parameter n-gram table is FP8, and attention and the vision tower stay in BF16. It is served by the Merlin engine, a vLLM 0.33.0 fork tuned for Ampere and Ada that keeps the n-gram table in host RAM and the whole KV cache in VRAM. Measured on RTX 3090s; the engine also ships profiles for other Ampere and Ada cards, from RTX 4090s and 48 GB workstation cards to A100s and CMP 170HX (see What it fits on).
numbers: Merlin 3.0.2 (vLLM 0.33.0) on 4× RTX 3090 w/o NVLINK @ 220W, P2P on, with the gpu-unlock host upgrade, 2026-11-04 bench card. KV pool: FP8, all in VRAM; three 262K sessions held at once (3.0.0 run). Agents: eight 16K conversations, then eight simultaneous 512-token follow-ups, thinking on (effort medium). Decode: one stream, thinking on (effort medium, the server default), exactly 261,888 prompt tokens + 128 out, median of 3. Prefill: one cold 101,845-token prompt. Each figure is also in a table below.
The checkpoint
| Component | Format |
|---|---|
| Routed experts (512 per layer) | INT4 g128, from Intel's AutoRound release |
| MTP draft-head experts | INT4 g128, packed in place |
| Gated DeltaNet QKV/Z and output projections | INT8 per channel |
| N-gram (PLE) embedding table, 51B parameters | FP8, kept in host RAM at serve time (RadixArk) |
| Attention, norms, embeddings, lm_head, shared expert, routers, QSA indexer, gated-residual weights, DeltaNet a/b and conv, MTP non-expert layers, vision tower | BF16, unchanged |
| KV cache | FP8 E4M3 with calibrated static scales (qsa_kv_scales_262k.json) |
Files in this repository
| Files | What they hold | Size |
|---|---|---|
model-000NN-of-00017.safetensors (15) |
Routed experts, DeltaNet projections, attention, norms, embeddings, shared expert, vision tower | 66.2 GiB |
model-plefp8-0000N.safetensors (10) |
The n-gram embedding table, FP8; loaded into host RAM at serve time | 47.7 GiB |
mtp-routed-experts-int4.safetensors |
MTP draft-head experts, INT4 | 1.2 GiB |
model_extra_tensors.safetensors |
Further tensors listed in the index | 0.2 GiB |
qsa_kv_scales_262k.json |
Calibrated static scales for the FP8 KV cache | 1.4 KiB |
model.safetensors.index.json |
Which file holds each tensor | 24.3 MiB |
chat_template.jinja |
Qwen's own chat template, unchanged (byte-identical to the upstream file). Merlin serves Froggeric's fixed Qwen3.8 template (v22.5) by default; see Use it | 8.7 KiB |
config.json, quantization_config.json, tokenizer, processor configs |
Model, quantisation, tokenizer and processor settings | 12.3 MiB |
LICENSE |
Qwen Community License 1.0 | 3.1 KiB |
115.3 GiB in total. There are no shards 00002 and 00016: model.safetensors.index.json maps no tensor to them, so nothing is missing.
Speed
| Prompt | Decode, one stream | Time to first token |
|---|---|---|
| 4K | 172 tok/s | 0.66 s |
| 32K (3.0.1 run) | 172 tok/s | 4.59 s |
| 131K | 189 tok/s | 18.6 s |
| 262K | 207 tok/s | 38.6 s |
4× RTX 3090, thinking on at reasoning effort medium (the server default). The needle-prompt ladder (4,046 / 32,566 / 130,386 prompt tokens, every send a cold prefill) and the exact 261,888-token prompt (send 1 cold; sends 2 and 3 reuse the prefix before the needle). Decode: ≤ 256 tokens out (128 at 262K), median of 3. Time to first token: the median of 3 cold sends below 262K, the cold send 1 at 262K. The 32K row was not re-run for 3.0.2. The 262K needle was found in 3 of 3 thinking-off sends (3.0.0 run).
| Cold prefill, one send | Prefill | Time to first token |
|---|---|---|
| 10,157 tokens | 6,585 tok/s | 1.54 s |
| 101,845 tokens | 6,994 tok/s | 14.6 s |
| 261,888 tokens | 6,782 tok/s | 38.6 s |
One cold request per prompt, 8 tokens out at 10K and 100K. The 261,888-token row is the cold first send of the exact-262K run with thinking on, the same send as the 262K row above. The 101,845-token figure is the hero's prefill number.
| Agents at once | Total tok/s |
|---|---|
| 2 (3.0.0 run) | 222 |
| 4 (3.0.0 run) | 378 |
| 8, thinking off (3.0.1 run) | 664 |
| 8, thinking on (effort medium) | 654 |
N 16K conversations, then N simultaneous 512-token follow-ups, total tok/s while all N decode; thinking off unless stated. With thinking on a 512-token follow-up may end inside the reasoning and reasoning tokens count, so that total measures decoded tokens, not finished answers. Overlap windows: 4.55 and 5.22 s for the 3.0.0 rows, 5.90 s for the thinking-off row (3.0.1 run) and 5.51 s for thinking on (3.0.2): a few seconds each, so read these rows loosely.
| Sessions held at once | Needles found | Re-sent from cache, lowest |
|---|---|---|
| 3 × 262K | 3 / 3 | 99.95 % |
| 6 × 131K | 6 / 6 | 99.91 % |
N needle prompts (thinking off, greedy) sent at once, then re-sent one by one: every re-send served from the prefix cache means the pool held all N. Peak pool use 100 %, 0 preemptions. 3.0.0 run, 2026-10-20; the KV pool (924,993 tokens) and the sessions it holds are unchanged in 3.0.1 and 3.0.2.
Against the previous release (3.0.1)
| Measure | 3.0.1 | 3.0.2 | Change |
|---|---|---|---|
| Decode, 4K prompt, thinking on | 177.5 | 172.4 | −2.9 % |
| Decode, 131K prompt, thinking on | 182.9 | 188.7 | +3.2 % |
| Decode, exactly 261,888 tokens, thinking on | 197.2 | 206.7 | +4.8 % |
| Decode, 4K prompt, thinking off | 134.9 | 128.8 | −4.5 % |
| Decode, 131K prompt, thinking off | 125.2 | 134.5 | +7.4 % |
| Decode, exactly 261,888 tokens, thinking off | 148.4 | 152.9 | +3.0 % |
| Prefill, 10K prompt | 6,628 | 6,585 | −0.6 % |
| Prefill, 100K prompt | 7,064 | 6,994 | −1.0 % |
| Prefill, 261,888-token prompt | 6,803 | 6,782 | −0.3 % |
| 8 agents, thinking on (effort medium) | 677 | 654 | −3.4 % |
tok/s. Both releases on the same host and settings (gpu-unlock on, thinking effort medium). MTP acceptance moves decode by several percent between sends and between runs: the three 3.0.2 sends at exactly 262K with thinking on ran 183.7–212.6 tok/s, so a difference smaller than that spread is not resolved by these runs. The 3.0.2 prefill prompts are 30 tokens shorter at 10K and 100K (10,157 against 10,187). The 32K and 259K ladder rows and the thinking-off 8-agent run were not re-run for 3.0.2; the bench card sets the rest side by side.
How it was measured
- Host: 4× RTX 3090 (24 GB, sm_86) at 220 W, PCIe Gen4 with P2P, no NVLink, driver 610.43.02, with the Zagitta's gpu-unlock host upgrade on (as for the 3.0.1 runs; the 3.0.0 runs did not have it).
- Engine: Merlin 3.0.2 on vLLM 0.33.0 (the release wheel's engine), served by
merlin servewith the shipped defaults, one fresh boot; runs of 2026-11-04 (UTC). - Layout: TP2 × PP2 + EP on four cards, MTP K=3, FP8 KV, BF16 draft lm_head, thinking effort
medium, the server default. - Decode: T=0, a needle prompt at depth, every send a cold prefill, 3 sends per cell, median. At exactly 262K the three sends share one cache salt (send 1 cold; in this run send 2 was served cold too and send 3 reused 135,168 tokens). tok/s = tokens after the first streamed event / time from first to last event.
- Streams are client-timed. Full tables, thinking-off rows, ITL and the quality A/B: the bench card.
Quality
This checkpoint, measured on the Merlin engine:
| Check | Result | Setting |
|---|---|---|
| GSM8K-200 | 199 / 200 | 5-shot, thinking off |
| GSM8K-200, thinking on | 197 / 200 on four cards (3.0.1 run) | 5-shot, effort medium, none cut at the 8,192-token cap |
| GSM8K, full test set | 1,281 / 1,319 (97.1 %); 3.0.1: 1,276 and 1,275 (96.7 %) | 5-shot, thinking off, temperature 0, 512 tokens; Merlin 3.0.2 against 3.0.1 in one session |
| Needles at 32K, follow-up question | 4 / 9; 3.0.1: 6 / 9 in both runs | the same session; every miss a refusal (the needle is phrased as a secret passphrase), never a wrong answer |
| Needles at 131K | 10 / 10 | single-occurrence needles, an image in the prompt, thinking off, greedy, cold cache |
| Needles at 262K | 23 / 23 | as above |
| Needle at exactly 261,888 tokens | 3 / 3 | thinking off |
| Image, 4096 × 2048 (8,388,608 px) | 1 / 1 · 2 / 2 at once · 1 / 1 with four in one prompt | thinking off; names both colours of a two-colour image (with four, of the last one) |
Full GSM8K test set and 32K needles: Merlin 3.0.2 on vLLM 0.33.0, 2026-11-04, in one session with 3.0.1 before and after it, each a fresh boot on the reference host. Thinking-on GSM8K-200 (3.0.1 run): four cards, the same 200 problems and scorer as the thinking-off row, temperature 0. Every other row is a 3.0.0 run, not re-run for 3.0.1 or 3.0.2. GSM8K and images: the Merlin 3.0.0 release wheel, 2026-10-20. Needle panel: a pre-release engine build, 2026-10-17. These are checks of this checkpoint, not a matched BF16 comparison: no BF16 run of the same checks was made, so how much quality the 4-bit build keeps is not quantified here.
The base model, as reported by Qwen for the BF16 weights:
| Area | Benchmark | Qwen3.8-Flash-Next (BF16) |
|---|---|---|
| Coding | SWE-bench Pro | 62.5 |
| Coding | DeepSWE 1.1 | 58.7 |
| Coding | LiveCodeBench v6 | 91.9 |
| Agents | Toolathlon Verified (Pass@1) | 73.5 |
| Agents | CoWorkBench | 73.9 |
| Reasoning and instructions | GPQA Diamond | 91.7 |
| Reasoning and instructions | HLE | 35.9 |
| Reasoning and instructions | IFBench | 81.3 |
| Vision | AndroidWorld | 84.5 |
| Vision | RealWorldQA | 88.5 |
| Vision | LVBench | 76.6 |
A selection from the upstream card, which has the full tables and comparisons with other models. These were not re-run on this 4-bit build.
What it fits on
| Measured on | Context per request | KV pool | Held at once | Images |
|---|---|---|---|---|
| 4× RTX 3090, 24 GB (🟢 Tested) | 262,144 tokens | 924,993 tokens, FP8, all in VRAM | 3 × 262K or 6 × 131K | 8 MP |
Measured on the reference host (3.0.0 run, 2026-10-20 bench card): three 262K and six 131K sessions held at once with every re-send served from cache; a 4096 × 2048 image (8,388,608 px) with at least 1,026 MiB free on every card.
Other GPUs. The engine also ships profiles for these; the Status column says how far each has been run:
| GPUs | Arch | Profile | Context fit | Status |
|---|---|---|---|---|
| 4× RTX 3090 Ti, RTX A5000, A10 (24 GB) | Ampere, sm_86 | fn-quad-3090 |
~3 × 262K (as the 3090) | ⚫ Untested |
| 4× RTX 3090 without P2P | Ampere, sm_86 | fn-quad-3090-nop2p |
~3 × 262K | ⚫ Untested |
| 8× RTX 3090 | Ampere, sm_86 | fn-octo-3090-tp2pp4 |
~17 × 262K | ⚫ Untested |
| 4× RTX 4090 (24 GB) | Ada, sm_89 | fn-quad-24g-sm89 |
~3 × 262K | 🟡 Testing |
| 4× RTX 4080 Super 32 GB (modified) | Ada, sm_89 | fn-quad-32g-sm89 |
~10 × 262K | ⚫ Untested |
| 2 / 4× 48 GB: RTX A6000, A40 | Ampere, sm_86 | fn-2x48g-pp2-sm86, fn-4x48g-tp2pp2-sm86 |
~5 / ~25 × 262K | ⚫ Untested |
| 2 / 4× 48 GB: RTX 6000 Ada, L40S | Ada, sm_89 | fn-2x48g-pp2-sm89, fn-4x48g-tp2pp2-sm89 |
~5 / ~25 × 262K | ⚫ Untested |
| 4× A10G, L4 (cloud, 22.5 GiB as reported) | Ampere / Ada | fn-quad-3090-nop2p, fn-quad-24g-sm89 |
~1 × 262K | ⚫ Untested |
| 1 / 2 / 4× A100 80 GB | Ampere, sm_80 | fn-sm80-80g-x1, -x2-tp2, -x4-tp2pp2 |
~1 / ~11 / ~28 × 262K | ⚫ Untested |
| 4× A100 40 GB, CMP 170HX 40 GB | Ampere, sm_80 | fn-sm80-40g-x4-pp4 |
~7 × 262K | ⚫ Untested |
| 3 / 4× CMP 170HX 32 GB | Ampere, sm_80 | fn-sm80-32g-x3-pp3, fn-sm80-32g-x4-pp4 |
~1 / ~4 × 262K | ⚫ Untested |
| 4× A30 (24 GB) | Ampere, sm_80 | fn-quad-24g-sm80 |
~1 × 262K | ⚫ Untested |
| 2× CMP 170HX 64 GB | Ampere, sm_80 | fn-sm80-64g-x2-pp2 |
~6 × 262K | 🟡 Testing |
| 4× CMP 170HX 64 GB | Ampere, sm_80 | fn-sm80-64g-x4-pp4 |
17 × 262K (8 at once) | 🟡 Testing |
merlin serve and ./setup.sh pick the profile from the GPUs they find. A ~ is the engine's estimate, not a measurement. "(8 at once)": the KV pool holds 17 full 262K conversations, and the server admits 8 requests at a time; the rest queue. On sm_80 cards (A100, A30, CMP 170HX) this checkpoint defaults to a BF16 KV cache, so fewer sessions fit; KV_DTYPE=fp8 opts into FP8 (untested ⚫). 🟢 measured by us · ⚫ a profile ships, not yet run by us (expected to work). Every profile: the engine's hardware matrix. 🟡 Testing: full-model runs passed on cloud-hosted cards; not yet qualified against the reference host.
| Need | Details |
|---|---|
| Host RAM | 72 GiB tested minimum on four cards (startup is refused below about 69 GiB, plus the KV RAM cache size when it's on; with --ple int6 about 60 GiB (estimated, not boot-tested)). 96 GiB is the reference allocation; the FP8 n-gram table alone takes about 47.7 GiB, which --ple-store disk (experimental) reads from NVMe instead. |
| Disk | About 115 GiB for the checkpoint, plus the engine environment and caches |
| Engine host | Linux x86-64 (glibc 2.38 or newer), NVIDIA driver R580 or later (CUDA 13), Python 3.13, GCC/G++ 13 or newer, /dev/shm of at least 1 GB; GPUs headless with no other CUDA process. merlin doctor checks the host. |
Use it
git clone https://github.com/halt95/merlin-engine.git && cd merlin-engine
./setup.sh --model flash-next
One command does the rest: after a small uv and Python bootstrap it checks the GPUs, driver, RAM and disk, shows the engine, package and checkpoint downloads with their sizes before fetching them, installs the prebuilt engine, downloads and verifies this checkpoint, and starts an OpenAI-compatible server on 127.0.0.1:8000; requests name the model flash-next-v2 (also flash-next). Enter takes the recommended answer at each question; --yes takes them all, --dry-run shows the plan. Run ./setup.sh again to start the server, and git pull && ./setup.sh to update the engine without downloading the model again.
This checkpoint needs the Merlin engine; stock vLLM was not tested with it.
Manual install
git clone https://github.com/halt95/merlin-engine.git && cd merlin-engine
curl -LO https://github.com/halt95/merlin-engine/releases/download/merlin-v3.0.2/vllm-0.33.0+merlin.665f43d2cf-cp313-cp313-linux_x86_64.whl
MERLIN_WHEEL="$PWD/vllm-0.33.0+merlin.665f43d2cf-cp313-cp313-linux_x86_64.whl" bash release/install-env.sh ./venv
venv/bin/hf download halt95/Qwen3.8-Flash-Next-W4A16-Merlin --revision cec53e9f90e5995b81691604ec0b32191debf797 \
--local-dir ~/models/flash-next
(cd ~/models/flash-next && sha256sum -c "$OLDPWD/models/flash-next/checkpoint.sha256")
venv/bin/merlin serve ~/models/flash-next
MERLIN_WHEEL installs the prebuilt engine (sm_80, sm_86, sm_89; Merlin 3.0.2 on vLLM 0.33.0, a new wheel that needs a new venv), checked against release/merlin-wheel.sha256; without it the installer compiles the engine instead, about 1.5 hours on 8 cores. merlin serve recognises the checkpoint, picks the largest tested layout for the GPUs it finds (or, with none, the largest untested one that fits, labelled as such) and serves on 127.0.0.1:8000. Add --dry-run to print the resolved command without starting anything. The first start compiles kernels; the server is ready when merlin: Ready: ... prints.
Recommended settings (Qwen's, for this model):
| Mode | temperature | top_p | top_k | presence_penalty |
|---|---|---|---|---|
| Thinking (default) | 1.0 | 0.95 | 20 | 0.0 |
| Non-thinking | 0.7 | 0.80 | 20 | 1.5 |
Qwen's recommendation for this model, with min_p=0.0 and repetition_penalty=1.0 in both modes. A presence_penalty between 0 and 2 reduces endless repetition; higher values can mix languages.
- Turn thinking off for a request with
"chat_template_kwargs": {"enable_thinking": false}. With thinking on, a shortmax_tokenscan end inside the reasoning with emptycontent. - Reasoning effort: Merlin serves
mediumby default; pick another per request with"chat_template_kwargs": {"reasoning_effort": "low"}(low/medium/xhigh). - Chat template: Merlin serves Froggeric's fixed Qwen3.8 template (v22.5) by default, not the file in this repository. It accepts system messages after the first turn, so coding agents' per-turn notes stay in place and the prefix cache keeps hitting.
CHAT_TEMPLATE=<path>serves another template;CHAT_TEMPLATE=(empty) serves this repository's own. - With Qwen's own template (
CHAT_TEMPLATE=), earlier turns' reasoning is kept by default and"chat_template_kwargs": {"preserve_thinking": false}keeps only the latest. - Images: up to 42 per request (the launcher's cap), 8 MP each; four 8 MP images in one prompt were checked on the Flash-Next checkpoint.
- Tool calls use the standard
toolsfield, parsed with the Qwen3 coder tool parser. - To reach it from other machines, answer
networkat setup's Access question (it generates an API key), or startmerlin servewithHOST=0.0.0.0andVLLM_API_KEYset; put a TLS reverse proxy in front before opening it beyond your own network.
Optional Merlin 3.0.2 features, all off by default (flags and limits):
- KV RAM cache (experimental).
--kv-ram-cache 24gkeeps conversation prefixes the GPU evicts in host RAM and restores them instead of recomputing them, with exactly the same output as a GPU cache hit. On Flash-Next a 262K restore took 1.2–1.4 s instead of about 45 s to recompute (measured on Merlin 3.0.1). It works with the MTP drafter only (not with--spec dflash2) and adds no context or sessions. - More sessions with
--swarm(experimental). Raises the session cap on four RTX 3090s from 8 to 24, with a 48 GB KV RAM cache. Tested on this checkpoint with P2P; without P2P it uses the same cap untested (⚫, expected to work). - DFlash2 drafter.
--spec dflash2on four RTX 3090s with P2P decoded 5–18 % faster than the default MTP drafter across the Flash-Next family (measured on Merlin 3.0.1); the server then holds three 262K sessions instead of six 131K ones../setup.sh --spec dflash2downloads the 1.2 GB drafter. - INT6 n-gram table.
--ple int6loads a smaller INT6 copy of the n-gram table and saves about 9 GiB of host RAM per server, with quality checks passed on this checkpoint and on Swift1.5. It is one shared pack laid over the FP8 files you downloaded, which stay untouched; FP8 stays the default. - PLE table on NVMe (experimental).
--ple-store diskreads the n-gram table from the checkpoint's files on local NVMe instead of holding it in host RAM, which frees about 47.7 GiB (38.7 GiB with--ple int6). Output matchedramtoken for token; decode is about 2 % slower once the table is cached and 9–11 % slower on text whose rows are not cached yet, and the first request after a cold start waits longer for its first token.ramstays the default; other disks are untested (⚫). Costs and limits. - Past 262K with YaRN. No profile turns YaRN on by default.
--context SIZE(experimental;512k= 524,288 tokens), or--max-model-lenabove 262,144, adds YaRN built from the checkpoint's config, and a size above the layout's KV pool is refused. The recipes were tested on the reference host at 393K and 524K (MTP and DFlash2) and 917K (MTP) on Merlin 3.0.1, not yet on 3.0.2; 1M is untested. Details in How to serve.
The base model
Qwen3.8-Flash-Next is Qwen's preview of the architecture behind Qwen4. What changed, in short:
- Hybrid attention. Three Gated DeltaNet (linear-attention) layers for every Qwen Sparse Attention layer. QSA attends over micro-blocks instead of single tokens, which keeps long-context latency down.
- Sparse experts. 512 experts per layer with 10 routed and 1 shared active per token: 6B of the 125B parameters do the work for each token.
- N-gram embedding. A 51B-parameter bigram/trigram table at layer 2 adds parameter capacity with less computation than adding experts would. Merlin keeps it in host RAM, so the VRAM goes to KV cache.
- Gated residual. Widened residual streams with a data-dependent read gate and a per-branch write gate.
- Multi-token prediction. One MTP layer, trained over several steps; Merlin uses it for speculative decoding.
- Thinking by default, with a non-thinking mode per request; Qwen's template keeps earlier turns' reasoning by default (preserved thinking).
| Property | Qwen3.8-Flash-Next |
|---|---|
| Type | Causal language model with a vision encoder (images and video) |
| Parameters | 125B total, 6B active, plus 51B n-gram embedding and 4B MTP |
| Layers | 48: 12 × (3 × Gated DeltaNet → MoE, then 1 × Qwen Sparse Attention → MoE) |
| Experts | 512 per layer; 10 routed + 1 shared active; expert width 640 |
| Attention | QSA: 24 query / 2 KV heads, head dim 256, budget 512 blocks or 2,048 tokens · Gated DeltaNet: 48 V / 16 QK heads, head dim 128 |
| Context | 262,144 tokens native (Qwen: extensible to 1M with YaRN). Merlin serves 262,144 by default and, with YaRN (--context), past that: tested at 393K, 524K and 917K on Merlin 3.0.1 (see Use it) |
Architecture as reported by Qwen on the upstream card.
Other builds
| Checkpoint | Base | GPUs | Decode at 262K |
|---|---|---|---|
| Flash-Next (this card) | Qwen3.8-Flash-Next, 125B MoE | 4× 3090 | 207 tok/s |
| Swift1.5 | Flash-Next fine-tune | 4× 3090 | 186 tok/s |
| Swift1.5-Huihui | Swift1.5, abliterated | 4× 3090 | 193 tok/s |
| Qwen3.8-27B | Qwen3.8-27B, dense | 1×, 2× or 4× 3090 | 77 / 146 / 250 tok/s |
| ThinkingCap | Qwen3.8-27B fine-tune | 2× or 4× 3090 | 160 / 223 tok/s |
| Nemotron 3.5 Super VL | Nemotron 3.5 Super VL, 120B-A12B MoE | 4× 3090 | 106 tok/s |
| Ornith 1.5 | Qwen3.5-122B-A10B fine-tune (ornith-ai), 122B MoE | 4× 3090 | 111 tok/s |
One stream, thinking on, 261,888 prompt tokens + 128 out, median of 3; Merlin 3.0.2, 2026-11-04 and 2026-11-05 bench cards. Thinking on at reasoning effort medium, the server default, wherever the checkpoint has effort levels; the Nemotron and Ornith 1.5 templates have none, so those two ran at full thinking.
Good to know
- Every figure we measured for this checkpoint comes from one setup: 4× RTX 3090 at 220 W, PCIe Gen4 x16 with P2P (the 3.0.1 and 3.0.2 figures also with the gpu-unlock host upgrade on), except the rented-host row under Other GPUs; upstream results and the Other builds rows use their stated setups. Hosts without P2P use the no-P2P profiles (see What it fits on).
- Only if you shrink the KV pool yourself: keep it larger than
--max-model-lenplus a few blocks. With the shipped settings this cannot occur. - Coming from the
qwen38-flash-next-3090sengine (v2.x or earlier)? It is replaced by the Merlin engine; this checkpoint's files are unchanged.
Changes
| Date | Change to this repository |
|---|---|
| 2026-11-05 | Card updated for Merlin 3.0.2 (speed figures, options and install lines). The weights are unchanged. |
| 2026-11-02 | Card updated for Merlin 3.0.1 (speed figures and options). The weights are unchanged. |
| 2026-10-06 | tokenizer.json replaced with the upstream file; re-fetch it if you downloaded earlier |
| 2026-09-18 | config.json gains ple_embedding_dtype in text_config, which the engine needs since v2; re-fetch it if you downloaded earlier |
| 2026-09-08 | Weights published; unchanged since |
Other card-only edits are not listed. Engine releases and their speed changes: the engine's CHANGELOG.
Credits and licence
Qwen (model; Qwen Community License 1.0, see LICENSE), Intel (AutoRound experts), RadixArk (FP8 PLE table), DominikBucko (MTP packing recipe), froggeric (the fixed Qwen3.8 chat template the engine serves), the vLLM community PLE-offload work, aikitoria (peer-to-peer on consumer Ampere), Neiko2002, brandon-nuttall (YaRN past 262K report), R-omk (YaRN past 262K crash report and recipes), and a community idle-power report (behind the v2.5.2 engine fix). Upstream fixes are credited in the engine repository.
- Downloads last month
- 1,260