Issues / #2947
#2947 Qwen3.6 2-bit GSQ-hybrid (Q2_0 experts) crashes 0xC0000005 in the hybrid CPU expert pool; Windows HIP (RX 7800 XT)
open · @wanlemur · 0 コメント · GitHub で見る
BenchmarksAMD / HIPNVIDIA / CUDAModels & quantsWindows
本文
I wanted to test whether Strata can run the 2-bit GSQ quant of Qwen3.6-35B-A3B (chitsgit/Qwen3.6-35B-A3B-2Bit-GSQ-hybrid-GGUF, Q2_0 routed experts). The engine already runs Q2_0 for Qwen3.8-Flash-Next, and Qwen3.6 is the same model family/architecture, so the q36 path should handle it too.
It loads and works when every routed expert fits in VRAM, but crashes with 0xC0000005 in ~7 threads whenever the engine runs it in hybrid mode (some experts on the CPU pool). The same engine, machine, and config run the official UD-Q4_K_XL in hybrid mode without any problem, so this looks specific to Q2_0 experts in the q36 hybrid CPU path.
**Note:** the GGUF loads in Strata only after I patched its metadata by hand, so the file is NOT byte-identical to what chtisgit published. Two things the engine did not accept from the stock file:
1. The file has no MTP/nextn tensors, but the engine's GGUF checks for `qwen35moe` require `qwen35moe.nextn_predict_layers`. I added it with value 0.
2. `ffn_gate_inp_shexp.weight` is stored as `[2048, 1]`; the layout check wanted a plain `[2048]`. I rewrote the shape.
After the patches, the engine reports 733 tensors (layout checked).
## The crash: only in hybrid mode
At `--max-context 65536` the engine keeps the packed Q8_0 decode copies and runs hybrid mode:
```
strata-q36: context 65536 cells, prompt chunk 4096, 4.72 GiB of VRAM free
strata-q36: hybrid experts: 107 of 256 per layer in VRAM (3.53 GiB),
all 8.44 GiB in pinned host memory; the rest of a batch of <= 128 rows
on 7 CPU threads, bigger prompt chunks streamed (0.42 GiB staging)
strata-q36: 6.1 s
```
Then `Exception Code: 0xC0000005` (x7):
- Deterministic: identical stack offsets across runs (+0x2F4F0A, +0x2E0DC2, +0x2D990E, ... in strata.exe).
- Reproduces with `--prefill auto:16384` and `--prefill 4096`, and with different hybrid splits (155/256 in VRAM in one run, 107/256 in the other), so it does not look like a VRAM/staging fit problem.
- 7 exceptions ≈ the expert pool's threads + the host thread: the CPU half of the hybrid MoE, not the GPU side.
- The crash comes right after the `hybrid experts:` line, during load warm-up, before any `warmed up` line.
One-flag repro: at `--max-context 32768` the engine itself avoids hybrid mode ("the packed Q8_0 decode copies (1.75 GiB) given back so that every routed expert fits in VRAM") and everything runs. So hybrid on = crash, hybrid off = works.
##
Same GSQ-hybrid file, all experts in VRAM (`--max-context 32768`, the engine gives back the packed copies) — fully working, benchmarked:
| test | result (median, range) |
| --- | --- |
| short chat decode | 96.9 tok/s (94.3–97.2), TTFT 0.26 s |
| 4K prompt, fresh | 1,268.6 tok/s (1,258.6–1,273.2) |
| 16K prompt, fresh | 1,057.7 tok/s (1,057.3–1,058.9) |
| agent session, follow-up turns | 78.4 tok/s decode (66.2–89.8) |
.
## Environment
- OS: Windows 11
- GPU: AMD Radeon RX 7800 XT (gfx1101), 16 GB
- CPU / RAM: Ryzen 7700, 32 GB RAM
- Strata: 0.1.45
##
[strata.log](https://github.com/user-attachments/files/33606092/strata.log)関連リンク
インストール・モデル・リリースへの站内リンク。