Book a demo Start for free

Compare model versions

Model: kingjones777/Qwen3.8-Flash-Next-ROCmFP4-STRIX-GGUF

Earlier snapshot Snapshot #430 Repository revision c9d60a9 (opens in a new tab) Recorded at 17 Sep 2026, 06:46 UTC
Later snapshot Snapshot #5936 Repository revision 7320914 (opens in a new tab) Recorded at 18 Sep 2026, 06:46 UTC Unchanged through 05 Nov 2026, 10:15 UTC

Summary

Licence

Unchanged

No change

Other Other

PinDiff reports the declared licence and licence files. It does not interpret licence terms.

Evidence Β· Observed by PinDiff

Earlier
Snapshot #430 Β· revision c9d60a9 Β· Recorded at 17 Sep 2026, 06:46 UTC
Later
Snapshot #5936 Β· revision 7320914 Β· Recorded at 18 Sep 2026, 06:46 UTC
Source
Licence tag declared in the model card metadata, observed via the Hugging Face API; licence file hashes from the repository file manifest.

Weights

Unchanged

No change

Evidence Β· Observed by PinDiff

Earlier
Snapshot #430 Β· revision c9d60a9 Β· Recorded at 17 Sep 2026, 06:46 UTC
Later
Snapshot #5936 Β· revision 7320914 Β· Recorded at 18 Sep 2026, 06:46 UTC
Source
Weight file hashes and sizes from the repository file manifest (Git LFS SHA256 where available). Weight files are not downloaded.

Remote code / configuration

Unchanged

No change

Remote code No No

Evidence Β· Observed by PinDiff

Earlier
Snapshot #430 Β· revision c9d60a9 Β· Recorded at 17 Sep 2026, 06:46 UTC
Later
Snapshot #5936 Β· revision 7320914 Β· Recorded at 18 Sep 2026, 06:46 UTC
Source
Stored config.json and generation_config.json at each revision (trust_remote_code / auto_map), and Python file hashes from the repository file manifest.

Access / gating

Unchanged

No change

Public Public

Evidence Β· Observed by PinDiff

Earlier
Snapshot #430 Β· revision c9d60a9 Β· Recorded at 17 Sep 2026, 06:46 UTC
Later
Snapshot #5936 Β· revision 7320914 Β· Recorded at 18 Sep 2026, 06:46 UTC
Source
Gated and private flags observed via the Hugging Face API.

Model card

Changed

Model card modified (3 sections)

Introduction Changed +4 βˆ’0

Diff

β‹― 12 unchanged lines
  > cmake --build build --target llama-server llama-quantize -j$(nproc)
  > ```
  >
Added: + > ⚠️ **Apply the bundled fix patches before `cmake`:** `qwen4exp-qsa-checkpoint-fix.patch`
Added: + > always, plus `qwen4exp-mtp-graph-fork.patch` if you want `--spec-type draft-mtp` on this
Added: + > clone. Full steps further down.
Added: + >
  > Verified 2026-08-27 on gfx1151: clean clone β†’ **0 build errors** β†’ `llama-server` loads a
  > `qwen4exp` ROCmFP4 GGUF from this family and generates coherent text.

Before

> ### πŸ”§ Runtime: build the ROCmFPX fork below
> Stock `llama.cpp` will not load this file. You need **both** the **`qwen4exp`** architecture
> **and** the ROCmFP4 tensor types in one tree. Upstream
> [`charlie12345/ROCmFPX`](https://github.com/charlie12345/ROCmFPX) has the ROCmFP4 types but
> not `qwen4exp`. Our fork has both:
>
> **[`kingjones30/ROCmFPX`](https://github.com/kingjones30/ROCmFPX)** β€” a fork of `charlie12345/ROCmFPX`, branch `main`.
>
> ```bash
> git clone https://github.com/kingjones30/ROCmFPX.git
> cd ROCmFPX
> cmake -B build -DGGML_HIP=ON -DGPU_TARGETS=gfx1151 -DGGML_NATIVE=ON -DCMAKE_BUILD_TYPE=Release
> cmake --build build --target llama-server llama-quantize -j$(nproc)
> ```
>
> Verified 2026-08-27 on gfx1151: clean clone β†’ **0 build errors** β†’ `llama-server` loads a
> `qwen4exp` ROCmFP4 GGUF from this family and generates coherent text.

After

> ### πŸ”§ Runtime: build the ROCmFPX fork below
> Stock `llama.cpp` will not load this file. You need **both** the **`qwen4exp`** architecture
> **and** the ROCmFP4 tensor types in one tree. Upstream
> [`charlie12345/ROCmFPX`](https://github.com/charlie12345/ROCmFPX) has the ROCmFP4 types but
> not `qwen4exp`. Our fork has both:
>
> **[`kingjones30/ROCmFPX`](https://github.com/kingjones30/ROCmFPX)** β€” a fork of `charlie12345/ROCmFPX`, branch `main`.
>
> ```bash
> git clone https://github.com/kingjones30/ROCmFPX.git
> cd ROCmFPX
> cmake -B build -DGGML_HIP=ON -DGPU_TARGETS=gfx1151 -DGGML_NATIVE=ON -DCMAKE_BUILD_TYPE=Release
> cmake --build build --target llama-server llama-quantize -j$(nproc)
> ```
>
> ⚠️ **Apply the bundled fix patches before `cmake`:** `qwen4exp-qsa-checkpoint-fix.patch`
> always, plus `qwen4exp-mtp-graph-fork.patch` if you want `--spec-type draft-mtp` on this
> clone. Full steps further down.
>
> Verified 2026-08-27 on gfx1151: clean clone β†’ **0 build errors** β†’ `llama-server` loads a
> `qwen4exp` ROCmFP4 GGUF from this family and generates coherent text.
⚑ Speculative decoding (MTP) now works β€” measured +27.7% at short context Changed +45 βˆ’20

Diff

β‹― 15 unchanged lines
  ```
  llama-server -m <the first shard in this repo>.gguf \
  -md mtp-Qwen3.8-Flash-Next-Q8_0.gguf --spec-type draft-mtp \
Removed: - --spec-draft-n-min 2 --spec-draft-n-max 4 --n-gpu-layers-draft 99 \
Added: + --spec-draft-n-min 0 --spec-draft-n-max 1 --n-gpu-layers-draft 99 \
  -ngl 999 -fa on -np 1 -c 32768 --jinja
  ```
  `-np 1` is required with `draft-mtp`.
 
Removed: - > β›” **Keep speculative decoding at ≀32K context for now β€” this includes `draft-mtp`.** It restores
Removed: - > context checkpoints whenever drafts are rejected, which is the same path as the β‰₯64K GPU wedge
Removed: - > field-reported in [`Qwen3.8-Flash-Next-ROCmFP4-STRIX-GGUF#6`](https://huggingface.co/kingjones777/Qwen3.8-Flash-Next-ROCmFP4-STRIX-GGUF/discussions/6), and it has only been tested at short context. The build recipe on
Removed: - > this card does not include a fix. For full 262K context, run without `-md` / `--spec-type`.
Added: + ⚠️ **Updated 2026-09-17 β€” re-download if you pulled it earlier.** `qwen4exp-mtp-graph.patch` now
Added: + carries the `models.h` and `llama-model.cpp` hunks it needs. The previous version applied cleanly but
Added: + **failed to compile** (`'graph_mtp' was not declared in this scope`). The bundled patch matches the
Added: + build steps on this card; for the other build path use `qwen4exp-mtp-graph-d3ca537.patch` (if you build `charlie12345/ROCmFPX` @ `d3ca537` + the arch patch), also bundled here.
 
Added: + **Measured plain vs `draft-mtp`** β€” median of 3 per cell, one binary, greedy, `cache_prompt:false`,
Added: + 256 generated tokens, `-c 2048`, Q8_0 head, Uncensored STRIX_LEAN-imatrix weights, gfx1151 / ROCm 7.2.4
Added: + (2026-09-17):
 
Added: + | workload | plain | `--spec-draft-n-max 4` | `--spec-draft-n-max 1` |
Added: + |---|---|---|---|
Added: + | reasoning | 23.91 | 30.94 (+29%, acc 0.680) | **31.94 (+34%, acc 0.945)** |
Added: + | JSON output | 23.99 | 28.31 (+18%, acc 0.597) | 27.24 (+14%, acc 0.758) |
Added: + | code | 24.09 | 21.56 (**βˆ’10%**, acc 0.422) | **26.80 (+11%, acc 0.711)** |
Added: + | long-document summary | 23.80 | 20.36 (**βˆ’14%**, acc 0.352) | **24.14 (+1%, acc 0.641)** |
Added: +
Added: + ⭐ **Use `--spec-draft-n-max 1`.** It did not lose a single workload here, and it wins most where the
Added: + next token is predictable. `n-max 4` pays for four draft forward passes per step, so it only wins when
Added: + acceptance is high (reasoning, JSON) and is a genuine loss on code and long-document work. MTP also
Added: + costs prefill speed, because the draft head processes the prompt too. The older **+27.7%** figure came
Added: + from one reasoning-shaped prompt β€” it holds for that shape, not universally, so measure your own.
Added: +
Added: + > βœ… **Depth:** with the bundled checkpoint fix applied, `draft-mtp` is verified from 2K to
Added: + > 128K β€” see the box further down for what was measured and what is still open.
Added: +
Added: +
  > ### ⚠️ Read this before comparing any number here to a discrete GPU
  >
  > Every measurement on this card is from an **AMD Ryzen AI MAX+ 395 "Strix Halo"** β€” an
β‹― 9 unchanged lines
  > This is also why the numbers below are reported as **GTT resident**, not "VRAM used" β€” on this
  > hardware those are the same pool, and `nvidia-smi`-style VRAM intuitions do not transfer.
 
Removed: - > ### β›” ngram-mod at β‰₯64K can wedge the GPU
Added: + > ### βœ… Depth: `draft-mtp` is fixed and measured (2026-09-17)
  >
Removed: - > `--spec-type ngram-mod` is the right spec-decode for this family on ROCm, and it is fine at 32K.
Removed: - > At 64K and above, a context-checkpoint restore desyncs the QSA indexer cache from the KV
Removed: - > caches. The next kernel then wedges the SDMA queue β€” `Ring sdma0 reset failure`, D-state
Removed: - > llama-server, `kill -9` useless, hard power-off to recover. Field report by
Removed: - > [@liusecret](https://huggingface.co/liusecret) on
Removed: - > [`Qwen3.8-Flash-Next-ROCmFP4-STRIX-GGUF#6`](https://huggingface.co/kingjones777/Qwen3.8-Flash-Next-ROCmFP4-STRIX-GGUF/discussions/6).
Added: + > The β‰₯64K wedge came from context-checkpoint restores leaving the QSA indexer cache (`mem_idx`) out
Added: + > of the checkpoint. The fix ships here as
Added: + > [`qwen4exp-qsa-checkpoint-fix.patch`](./qwen4exp-qsa-checkpoint-fix.patch) β€” it overrides
Added: + > `state_write` / `state_read` on `llama_memory_hybrid_idx`. Apply it with the build steps on this
Added: + > card **even if you never use speculative decoding**.
  >
Removed: - > **Workaround (no new binary required):**
Removed: - > ```
Removed: - > -ctxcp 0 -cpent -1
Removed: - > ```
Removed: - > `--ctx-checkpoints 0` plus `--checkpoint-every-n-tokens -1`. If no checkpoints are created,
Removed: - > the restore path never runs. Keep ngram-mod on ROCm; do not use it on Vulkan/gfx1151
Removed: - > (acceptance collapses to 0). A fork that serialises `mem_idx` is the real fix β€” until that
Removed: - > binary is in your hands, use the flags.
Added: + > With it applied, `--spec-type draft-mtp` ran clean from **2K to 128K** on gfx1151: 8 depth rungs,
Added: + > **864 context-checkpoint restores** (2 of them prompt-cache rollbacks at 64K), **0 GPU faults**,
Added: + > coherent output at every depth. Measured 2026-09-17 on Ryzen AI MAX+ 395 / ROCm 7.2.4 with the
Added: + > Uncensored STRIX_LEAN-imatrix weights + `mtp-Qwen3.8-Flash-Next-Q8_0.gguf`, `-c 262144`,
Added: + > `--spec-draft-n-max 4`, default context checkpoints. That 128K run used my own fork tree; the exact
Added: + > build steps on this card were verified to 16K.
Added: + >
Added: + > ⚠️ **Still open:** `--spec-type ngram-mod` at β‰₯64K has **not** been retested with the patch β€” the
Added: + > original field report ([`…-STRIX-GGUF#6`](https://huggingface.co/kingjones777/Qwen3.8-Flash-Next-ROCmFP4-STRIX-GGUF/discussions/6), thanks
Added: + > [@liusecret](https://huggingface.co/liusecret)) was ngram-mod, so keep `-ctxcp 0 -cpent -1` when you
Added: + > use it. And do not use speculative decoding of any kind on Vulkan/gfx1151 β€” acceptance collapses to 0.
Added: + >
Added: + > A `speculative replay stalled` warning on ~2% of restores is expected and harmless: that is the
Added: + > server's livelock guard dropping one draft and decoding that token normally.
 
  STRIX is the quality tier: same attention handling as STRIX\_LEAN, but the PLE table goes to Q8_0 and token embeddings to Q6_K. 25 GiB more on disk than FAST and β€” measured β€” not one byte more in GPU memory. Quantized directly from my own BF16 conversion of the release weights.
  `general.file_type` = **105** (`Q4_0_ROCMFP4_STRIX`). **5.51 bpw, 113.47 GiB.**

Before

The `qwen4exp` MTP graph shipped with a broken combiner (it mean-pooled the hyper-connection
streams), so `--spec-type draft-mtp` acceptance sat near **0.36** and gave no real speedup. That is
now **fixed** β€” this repo ships [`qwen4exp-mtp-graph.patch`](./qwen4exp-mtp-graph.patch); apply it to
the [`kingjones30/ROCmFPX`](https://github.com/kingjones30/ROCmFPX) fork and rebuild
(`git apply qwen4exp-mtp-graph.patch` before `cmake --build`).

Pair the model with a Flash-Next MTP head from
[`kingjones777/Qwen3.8-Flash-Next-MTP-Heads-GGUF`](https://huggingface.co/kingjones777/Qwen3.8-Flash-Next-MTP-Heads-GGUF).
**Measured** on the Uncensored FAST (imatrix) build with the **Q8_0 head** (`mtp-Qwen3.8-Flash-Next-Q8_0.gguf`) at
**short context (`-c 2048`)**: **acceptance 0.94**, **31.80 tok/s** vs **24.9 tok/s** no-draft
(**+27.7%**), warm 160-token completion, `cache_prompt:false`. The graph fix and the heads are shared
across the Flash-Next family, but this tier's own MTP speed has not been measured, and the Q6_K / Q4
heads were not benchmarked. The head only *proposes* draft tokens; the main model verifies every one,
so your output is unchanged.

```
llama-server -m <the first shard in this repo>.gguf \
  -md mtp-Qwen3.8-Flash-Next-Q8_0.gguf --spec-type draft-mtp \
  --spec-draft-n-min 2 --spec-draft-n-max 4 --n-gpu-layers-draft 99 \
  -ngl 999 -fa on -np 1 -c 32768 --jinja
```
`-np 1` is required with `draft-mtp`.

> β›” **Keep speculative decoding at ≀32K context for now β€” this includes `draft-mtp`.** It restores
> context checkpoints whenever drafts are rejected, which is the same path as the β‰₯64K GPU wedge
> field-reported in [`Qwen3.8-Flash-Next-ROCmFP4-STRIX-GGUF#6`](https://huggingface.co/kingjones777/Qwen3.8-Flash-Next-ROCmFP4-STRIX-GGUF/discussions/6), and it has only been tested at short context. The build recipe on
> this card does not include a fix. For full 262K context, run without `-md` / `--spec-type`.


> ### ⚠️ Read this before comparing any number here to a discrete GPU
>
> Every measurement on this card is from an **AMD Ryzen AI MAX+ 395 "Strix Halo"** β€” an
> **integrated GPU with unified memory**. There is no discrete VRAM. The Radeon 8060S addresses
> ordinary system RAM through the **GTT aperture**, and the box's 128 GB is **shared between CPU
> and GPU**.
>
> That is the entire reason a 98 GiB model runs here at all: the GPU can reach system memory, so
> capacity is enormous. The trade is **bandwidth** β€” roughly 215 GB/s measured, against ~1 TB/s on
> a high-end discrete card. So expect big-model *capacity* that a 24 GB dGPU cannot touch, and
> per-token *speed* well below one.
>
> This is also why the numbers below are reported as **GTT resident**, not "VRAM used" β€” on this
> hardware those are the same pool, and `nvidia-smi`-style VRAM intuitions do not transfer.

> ### β›” ngram-mod at β‰₯64K can wedge the GPU
>
> `--spec-type ngram-mod` is the right spec-decode for this family on ROCm, and it is fine at 32K.
> At 64K and above, a context-checkpoint restore desyncs the QSA indexer cache from the KV
> caches. The next kernel then wedges the SDMA queue β€” `Ring sdma0 reset failure`, D-state
> llama-server, `kill -9` useless, hard power-off to recover. Field report by
> [@liusecret](https://huggingface.co/liusecret) on
> [`Qwen3.8-Flash-Next-ROCmFP4-STRIX-GGUF#6`](https://huggingface.co/kingjones777/Qwen3.8-Flash-Next-ROCmFP4-STRIX-GGUF/discussions/6).
>
> **Workaround (no new binary required):**
> ```
> -ctxcp 0 -cpent -1
> ```
> `--ctx-checkpoints 0` plus `--checkpoint-every-n-tokens -1`. If no checkpoints are created,
> the restore path never runs. Keep ngram-mod on ROCm; do not use it on Vulkan/gfx1151
> (acceptance collapses to 0). A fork that serialises `mem_idx` is the real fix β€” until that
> binary is in your hands, use the flags.

STRIX is the quality tier: same attention handling as STRIX\_LEAN, but the PLE table goes to Q8_0 and token embeddings to Q6_K. 25 GiB more on disk than FAST and β€” measured β€” not one byte more in GPU memory. Quantized directly from my own BF16 conversion of the release weights.
`general.file_type` = **105** (`Q4_0_ROCMFP4_STRIX`). **5.51 bpw, 113.47 GiB.**

Read straight out of the GGUF headers of the files in this repo:

| tensor group | type |
|---|---|
| MoE expert weights (`ffn_*_exps`, 144) | `TYPE_101` (ROCmFP4, 4.251 bpw) |
| shared expert (`ffn_*_shexp`, 144) | `TYPE_101` |
| attention (`attn_*`, 120) | half `TYPE_100`, half `TYPE_101` |
| `per_layer_token_embd.weight` (PLE, 51.2B params) | `Q8_0` β€” 50.66 GiB |
| `token_embd.weight` | `Q6_K` |
| `output.weight` (lm head) | `Q6_K` |
| norms / biases | `F32` |

After

The `qwen4exp` MTP graph shipped with a broken combiner (it mean-pooled the hyper-connection
streams), so `--spec-type draft-mtp` acceptance sat near **0.36** and gave no real speedup. That is
now **fixed** β€” this repo ships [`qwen4exp-mtp-graph.patch`](./qwen4exp-mtp-graph.patch); apply it to
the [`kingjones30/ROCmFPX`](https://github.com/kingjones30/ROCmFPX) fork and rebuild
(`git apply qwen4exp-mtp-graph.patch` before `cmake --build`).

Pair the model with a Flash-Next MTP head from
[`kingjones777/Qwen3.8-Flash-Next-MTP-Heads-GGUF`](https://huggingface.co/kingjones777/Qwen3.8-Flash-Next-MTP-Heads-GGUF).
**Measured** on the Uncensored FAST (imatrix) build with the **Q8_0 head** (`mtp-Qwen3.8-Flash-Next-Q8_0.gguf`) at
**short context (`-c 2048`)**: **acceptance 0.94**, **31.80 tok/s** vs **24.9 tok/s** no-draft
(**+27.7%**), warm 160-token completion, `cache_prompt:false`. The graph fix and the heads are shared
across the Flash-Next family, but this tier's own MTP speed has not been measured, and the Q6_K / Q4
heads were not benchmarked. The head only *proposes* draft tokens; the main model verifies every one,
so your output is unchanged.

```
llama-server -m <the first shard in this repo>.gguf \
  -md mtp-Qwen3.8-Flash-Next-Q8_0.gguf --spec-type draft-mtp \
  --spec-draft-n-min 0 --spec-draft-n-max 1 --n-gpu-layers-draft 99 \
  -ngl 999 -fa on -np 1 -c 32768 --jinja
```
`-np 1` is required with `draft-mtp`.

⚠️ **Updated 2026-09-17 β€” re-download if you pulled it earlier.** `qwen4exp-mtp-graph.patch` now
carries the `models.h` and `llama-model.cpp` hunks it needs. The previous version applied cleanly but
**failed to compile** (`'graph_mtp' was not declared in this scope`). The bundled patch matches the
build steps on this card; for the other build path use `qwen4exp-mtp-graph-d3ca537.patch` (if you build `charlie12345/ROCmFPX` @ `d3ca537` + the arch patch), also bundled here.

**Measured plain vs `draft-mtp`** β€” median of 3 per cell, one binary, greedy, `cache_prompt:false`,
256 generated tokens, `-c 2048`, Q8_0 head, Uncensored STRIX_LEAN-imatrix weights, gfx1151 / ROCm 7.2.4
(2026-09-17):

| workload | plain | `--spec-draft-n-max 4` | `--spec-draft-n-max 1` |
|---|---|---|---|
| reasoning | 23.91 | 30.94 (+29%, acc 0.680) | **31.94 (+34%, acc 0.945)** |
| JSON output | 23.99 | 28.31 (+18%, acc 0.597) | 27.24 (+14%, acc 0.758) |
| code | 24.09 | 21.56 (**βˆ’10%**, acc 0.422) | **26.80 (+11%, acc 0.711)** |
| long-document summary | 23.80 | 20.36 (**βˆ’14%**, acc 0.352) | **24.14 (+1%, acc 0.641)** |

⭐ **Use `--spec-draft-n-max 1`.** It did not lose a single workload here, and it wins most where the
next token is predictable. `n-max 4` pays for four draft forward passes per step, so it only wins when
acceptance is high (reasoning, JSON) and is a genuine loss on code and long-document work. MTP also
costs prefill speed, because the draft head processes the prompt too. The older **+27.7%** figure came
from one reasoning-shaped prompt β€” it holds for that shape, not universally, so measure your own.

> βœ… **Depth:** with the bundled checkpoint fix applied, `draft-mtp` is verified from 2K to
> 128K β€” see the box further down for what was measured and what is still open.


> ### ⚠️ Read this before comparing any number here to a discrete GPU
>
> Every measurement on this card is from an **AMD Ryzen AI MAX+ 395 "Strix Halo"** β€” an
> **integrated GPU with unified memory**. There is no discrete VRAM. The Radeon 8060S addresses
> ordinary system RAM through the **GTT aperture**, and the box's 128 GB is **shared between CPU
> and GPU**.
>
> That is the entire reason a 98 GiB model runs here at all: the GPU can reach system memory, so
> capacity is enormous. The trade is **bandwidth** β€” roughly 215 GB/s measured, against ~1 TB/s on
> a high-end discrete card. So expect big-model *capacity* that a 24 GB dGPU cannot touch, and
> per-token *speed* well below one.
>
> This is also why the numbers below are reported as **GTT resident**, not "VRAM used" β€” on this
> hardware those are the same pool, and `nvidia-smi`-style VRAM intuitions do not transfer.

> ### βœ… Depth: `draft-mtp` is fixed and measured (2026-09-17)
>
> The β‰₯64K wedge came from context-checkpoint restores leaving the QSA indexer cache (`mem_idx`) out
> of the checkpoint. The fix ships here as
> [`qwen4exp-qsa-checkpoint-fix.patch`](./qwen4exp-qsa-checkpoint-fix.patch) β€” it overrides
> `state_write` / `state_read` on `llama_memory_hybrid_idx`. Apply it with the build steps on this
> card **even if you never use speculative decoding**.
>
> With it applied, `--spec-type draft-mtp` ran clean from **2K to 128K** on gfx1151: 8 depth rungs,
> **864 context-checkpoint restores** (2 of them prompt-cache rollbacks at 64K), **0 GPU faults**,
> coherent output at every depth. Measured 2026-09-17 on Ryzen AI MAX+ 395 / ROCm 7.2.4 with the
> Uncensored STRIX_LEAN-imatrix weights + `mtp-Qwen3.8-Flash-Next-Q8_0.gguf`, `-c 262144`,
> `--spec-draft-n-max 4`, default context checkpoints. That 128K run used my own fork tree; the exact
> build steps on this card were verified to 16K.
>
> ⚠️ **Still open:** `--spec-type ngram-mod` at β‰₯64K has **not** been retested with the patch β€” the

21 more lines not shown.

Building a runtime that loads these files Changed +5 βˆ’0

Diff

β‹― 5 unchanged lines
  ```bash
  git clone https://github.com/kingjones30/ROCmFPX.git
  cd ROCmFPX
Added: + # both fixes ship in this repo β€” apply them before configuring:
Added: + curl -LO https://huggingface.co/kingjones777/Qwen3.8-Flash-Next-ROCmFP4-STRIX-GGUF/resolve/main/qwen4exp-qsa-checkpoint-fix.patch
Added: + git apply qwen4exp-qsa-checkpoint-fix.patch # checkpoint safety at >=64K: apply this always
Added: + curl -LO https://huggingface.co/kingjones777/Qwen3.8-Flash-Next-ROCmFP4-STRIX-GGUF/resolve/main/qwen4exp-mtp-graph.patch
Added: + git apply qwen4exp-mtp-graph.patch # only if you want --spec-type draft-mtp
  cmake -B build -DGGML_HIP=ON -DGPU_TARGETS=gfx1151 -DGGML_NATIVE=ON -DCMAKE_BUILD_TYPE=Release
  cmake --build build --target llama-server llama-quantize -j$(nproc)
  ```

Before

You need **two** things in one tree: the `qwen4exp` architecture and the ROCmFP4 tensor types.
Neither side has both β€” `charlie12345/ROCmFPX` has the ROCmFP4 types but no `qwen4exp`, and the
upstream qwen4exp work has no ROCmFP4. **The patch that combines them ships in this repo:**
[`qwen4exp-on-rocmfpx-d3ca537.patch`](./qwen4exp-on-rocmfpx-d3ca537.patch) (156 KB, 25 files).

```bash
git clone https://github.com/kingjones30/ROCmFPX.git
cd ROCmFPX
cmake -B build -DGGML_HIP=ON -DGPU_TARGETS=gfx1151 -DGGML_NATIVE=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build --target llama-server llama-quantize -j$(nproc)
```

Verified from a clean clone: applies without conflicts, compiles with zero errors, and the
resulting `llama-server` loads these GGUFs and generates.

**What the patch adds** β€” the pieces people miss when copying files by hand:

| file | why |
|---|---|
| `src/llama-memory-hybrid-idx.{cpp,h}` | **new** β€” the Qwen Sparse Attention indexer needs its own memory class |
| `src/models/qwen4exp.cpp` | **new** β€” the arch implementation (picked up by the `models/*.cpp` GLOB) |
| `conversion/qwen4exp.py` | **new** β€” conversion support |
| `src/llama-{arch,batch,hparams,kv-cache,model,model-loader,model-saver,quant}.{cpp,h}` | interdependent β€” cherry-picking individual files will not work |

Conversion note: the entry point is the **`conversion/`** package, not `convert_hf_to_gguf.py`,
which rejects `Qwen4ExpForConditionalGeneration`. The 51B-parameter PLE table will also OOM a
naive conversion that builds an F32 intermediate β€” cast each shard straight to BF16 and write
positionally.

After

You need **two** things in one tree: the `qwen4exp` architecture and the ROCmFP4 tensor types.
Neither side has both β€” `charlie12345/ROCmFPX` has the ROCmFP4 types but no `qwen4exp`, and the
upstream qwen4exp work has no ROCmFP4. **The patch that combines them ships in this repo:**
[`qwen4exp-on-rocmfpx-d3ca537.patch`](./qwen4exp-on-rocmfpx-d3ca537.patch) (156 KB, 25 files).

```bash
git clone https://github.com/kingjones30/ROCmFPX.git
cd ROCmFPX
# both fixes ship in this repo β€” apply them before configuring:
curl -LO https://huggingface.co/kingjones777/Qwen3.8-Flash-Next-ROCmFP4-STRIX-GGUF/resolve/main/qwen4exp-qsa-checkpoint-fix.patch
git apply qwen4exp-qsa-checkpoint-fix.patch      # checkpoint safety at >=64K: apply this always
curl -LO https://huggingface.co/kingjones777/Qwen3.8-Flash-Next-ROCmFP4-STRIX-GGUF/resolve/main/qwen4exp-mtp-graph.patch
git apply qwen4exp-mtp-graph.patch               # only if you want --spec-type draft-mtp
cmake -B build -DGGML_HIP=ON -DGPU_TARGETS=gfx1151 -DGGML_NATIVE=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build --target llama-server llama-quantize -j$(nproc)
```

Verified from a clean clone: applies without conflicts, compiles with zero errors, and the
resulting `llama-server` loads these GGUFs and generates.

**What the patch adds** β€” the pieces people miss when copying files by hand:

| file | why |
|---|---|
| `src/llama-memory-hybrid-idx.{cpp,h}` | **new** β€” the Qwen Sparse Attention indexer needs its own memory class |
| `src/models/qwen4exp.cpp` | **new** β€” the arch implementation (picked up by the `models/*.cpp` GLOB) |
| `conversion/qwen4exp.py` | **new** β€” conversion support |
| `src/llama-{arch,batch,hparams,kv-cache,model,model-loader,model-saver,quant}.{cpp,h}` | interdependent β€” cherry-picking individual files will not work |

Conversion note: the entry point is the **`conversion/`** package, not `convert_hf_to_gguf.py`,
which rejects `Qwen4ExpForConditionalGeneration`. The 51B-parameter PLE table will also OOM a
naive conversion that builds an F32 intermediate β€” cast each shard straight to BF16 and write
positionally.

10 other sections unchanged.

Evidence Β· Observed by PinDiff

Earlier
Snapshot #430 Β· revision c9d60a9 Β· Recorded at 17 Sep 2026, 06:46 UTC
Later
Snapshot #5936 Β· revision 7320914 Β· Recorded at 18 Sep 2026, 06:46 UTC
Source
README.md at each revision, stored by PinDiff. Sections are compared individually.
Stored file SHA256
234f952811496c7464c669340dc7d7b097acc05be8fc1970bf0f7bc0a6e1213c β†’ a5b99a9594587a75b8924d808f9b39fd99b280dc19db584daa2136267ed84ab0

Repository status

Changed

Repository revision moved

Earlier
Revision c9d60a9 (opens in a new tab) Β· 6 files Β· 121.84 GB
Later
Revision 7320914 (opens in a new tab) Β· 8 files Β· 121.84 GB

A new revision does not by itself mean files changed; the categories above show what differs.

Evidence Β· Observed by PinDiff

Earlier
Snapshot #430 Β· revision c9d60a9 Β· Recorded at 17 Sep 2026, 06:46 UTC
Later
Snapshot #5936 Β· revision 7320914 Β· Recorded at 18 Sep 2026, 06:46 UTC
Source
Default-branch head commit observed via the Hugging Face API.

Files

Changed

3 other files changed

1 changed hash 2 added

Other files
FileStatusBeforeAfter
qwen4exp-mtp-graph.patch CHANGED Git blob ID 52e779e37b7ec6b9519ea7264fbb2020db8290c0 27.2 KB Git blob ID 9f84f390456b204e6dff8e1173373ec0d2f4a48b 31.7 KB (+4.5 KB)
qwen4exp-mtp-graph-d3ca537.patch ADDED β€” Git blob ID 2117ae0cf1140826ddebbfe2ff769e838b7f3b40 31.7 KB
qwen4exp-mtp-graph-fork.patch ADDED β€” Git blob ID 9f84f390456b204e6dff8e1173373ec0d2f4a48b 31.7 KB

Evidence Β· Observed by PinDiff

Earlier
Snapshot #430 Β· revision c9d60a9 Β· Recorded at 17 Sep 2026, 06:46 UTC
Later
Snapshot #5936 Β· revision 7320914 Β· Recorded at 18 Sep 2026, 06:46 UTC
Source
File hashes and sizes from the repository file manifest. Weights, licence, configuration, Python and model card files are covered above.

Evidence observed by PinDiff from the Hugging Face API and stored when recorded. PinDiff compares stored metadata, hashes and text files; it does not download weight files. Change events recorded between these snapshots