Qwen3.5-122B-A10B IQ3_XXS-B2 GGUF (for a 16 GB GPU + 64 GB RAM)
A 51.1 GB GGUF of Qwen/Qwen3.5-122B-A10B (Apache 2.0), sized so the whole model fits a 16 GB GPU plus a 64 GB RAM PC with nothing read from the SSD while it writes. The routed experts are IQ3_XXS with an importance matrix; everything else (attention, the delta-net projections, the shared experts, the token embedding and the output head) is kept at Q8_0.
The same recipe as Ornith-1.5-122B-IQ3_XXS-16G64G-GGUF,
with one fix: token_embd and output are set to Q8_0 explicitly (--token-embedding-type / --output-tensor-type).
Without them llama-quantize picks IQ3_S / Q5_K for those two whatever the other overrides say.
日本語の説明は下にあります。
Files
| file | size | bits per weight |
|---|---|---|
Qwen3.5-122B-A10B-IQ3_XXS-B2-00001-of-00002.gguf + -00002-of-00002.gguf |
51.1 GB (29.8 + 21.2) | 3.35 |
imatrix-qwen35-122b.gguf (optional, to requantize) |
0.36 GB | - |
Two shards (llama-gguf-split), since the Hub takes files up to 50 GB: point llama.cpp or Abyss at the first one.
The BF16 GGUF this was made from (unsloth/Qwen3.5-122B-A10B-GGUF)
has 48 blocks and no NextN (MTP) block, so there is no MTP drafter in this file.
Quality (KL against BF16)
llama-perplexity --kl-divergence against the BF16 GGUF, 8 chunks of 1024 tokens of a held-out English and
Japanese text (not the imatrix text). BF16's own perplexity on it: 14.38.
| file | size | mean KL | 99% KL | same top token | PPL |
|---|---|---|---|---|---|
IQ3_XXS-B (the same, token_embd IQ3_S / output Q5_K; not uploaded) |
50.3 GB | 0.0379 | 0.247 | 88.0% | 14.63 |
| this file (IQ3_XXS-B2) | 51.1 GB | 0.0349 | 0.238 | 89.3% | 14.58 |
This is a lossy 3-bit file. Qwen3.5-122B-A10B takes the cut well: its KL here is about a quarter of what the same recipe gave Ornith-1.5-122B (0.138).
Speed
Abyss v1.3.57 ./abyss.sh --bench --deep, on one PC set up as a 16 GB GPU +
64 GB RAM machine without an iGPU: an AMD Radeon AI PRO R9700 capped at 16 GB (STRATA_GLM_VRAM_GB=16), a RAM tier
inside a 64 GB memory limit, the experts the GPU misses computed on the CPU (Ryzen AI Max+ 395, 16 threads), PCIe Gen4
x4. Greedy, 3 answers of 256 tokens.
| this file | |
|---|---|
| decode | 41.2 tok/s |
decode, --deep's own-share runs |
42.1 / 48.2 tok/s |
| prompt, 2K / 8K tokens | 735 / 1015 tok/s |
| SSD waits a token | 0% |
what limits it (--bench) |
the GPU |
Abyss drafts with n-grams here (no MTP block), 45% of the drafts accepted. The CPU here has fast memory (LPDDR5X); a desktop with dual-channel DDR5 computes the missed experts more slowly, so expect less there. And a 16 GB card that also drives the screen has ~14.5 GB for the model, not 16 - the file still fits GPU + RAM there, with a smaller GPU share.
Coding tasks (llmbench-style)
Each task is a small repository with a bug report or a feature request and hidden tests; "resolved" means the tests pass. Same Abyss server (16 GB + 64 GB setup), temperature 0.6 / top_p 0.95 / top_k 20.
| 60 tasks (easy 5, medium 5, hard 10, expert 12, frontier 8, architect 20) | resolved |
|---|---|
| this file, run 1 | 50/60 (83.3%) |
| this file, run 2 | 53/60 (88.3%) |
| IQ3_XXS-B (not uploaded), one run | 53/60 (88.3%) |
A task or two either way between runs is noise: 5 tasks (t020, t046, t047, t057, t059) failed in all three runs, the others came and went. Decode speed in run 2: 44 tok/s on the middle task, 42-47 tok/s for 80% of them.
How it was made
llama.cpp bed0a8566 (build 11370), from unsloth's BF16 GGUF:
llama-imatrix -m Qwen3.5-122B-A10B-BF16-00001-of-00005.gguf -f calib.txt -c 2048 -b 8192 -ub 8192 --chunks 32 \
-o imatrix-qwen35-122b.gguf
llama-quantize --imatrix imatrix-qwen35-122b.gguf \
--token-embedding-type q8_0 --output-tensor-type q8_0 \
--tensor-type 'attn_=q8_0' --tensor-type 'ssm_=q8_0' --tensor-type 'shexp=q8_0' \
Qwen3.5-122B-A10B-BF16-00001-of-00005.gguf Qwen3.5-122B-A10B-own-IQ3_XXS-B2.gguf IQ3_XXS 16
llama-gguf-split --split --split-max-size 30G Qwen3.5-122B-A10B-own-IQ3_XXS-B2.gguf Qwen3.5-122B-A10B-IQ3_XXS-B2
- The imatrix text (0.7 MB) is English and Japanese technical writing and code. It is not uploaded.
- The two shards were checked tensor by tensor (all 879) against the unsplit file.
Running it
- llama.cpp (qwen35moe):
llama-server -m Qwen3.5-122B-A10B-IQ3_XXS-B2-00001-of-00002.gguf -ngl 99 --n-cpu-moe <n>, choosing<n>so the dense weights and as many experts as fit sit on the GPU. - Abyss: pack it with
tools/iq_pack.py --gguf <dir>/Qwen3.5-122B-A10B-IQ3_XXS-B2-00001-of-00002.gguf --out <dir>/pack(the pack indexes the shards in place) and use a config likedocs/ornith/README.md's (the same qwen35moe engine). On a 16 GB GPU + 64 GB RAM PC,STRATA_GLM_RAM_GB~46.
Sampling as the model card: temperature 0.6, top_p 0.95, top_k 20.
License
Apache 2.0, as the original model (model card). This repository only holds a quantized conversion; all credit for the model goes to its authors.
日本語
Qwen/Qwen3.5-122B-A10B(Apache 2.0)を 51.1 GB の GGUF にしたものです。 GPU 16 GB + RAM 64 GB の PC に全体が収まり、生成中に SSD を読まないサイズを狙いました。 ルーティングされるエキスパートは imatrix 付きの IQ3_XXS で、それ以外(attention、delta-net の射影、共有エキスパート、 トークンの埋め込み、出力ヘッド)は Q8_0 のまま残しています。
- 作り方は Ornith の 16G64G 版 と同じです。
違いは、
token_embdとoutputを明示的に Q8_0 にしたことです。指定しないと、llama-quantize がこの 2 つだけ IQ3_S / Q5_K にしてしまいます。 - 品質:BF16 との KL は 0.0349、1 位の予測が BF16 と同じ割合は 89.3%。3 bit なので劣化はありますが、同じ作り方の Ornith(KL 0.138)の 4 分の 1 ほどで、このモデルは量子化に強い部類です。
- 速度(Abyss v1.3.57、GPU 16 GB・RAM 64 GB・iGPU なしを想定した設定):生成 41.2 tok/s、プロンプト 8K は 1015 tok/s、 SSD 待ちは 0%。テストに使った CPU はメモリが速い(LPDDR5X)ので、DDR5 デュアルチャネルのデスクトップでは これより遅くなります。画面もつないだ 16 GB のカードでは、モデルに使えるのは 14.5 GB ほどです。
- コーディング課題 60 問:2 回回して 50 問と 53 問。1〜2 問の差は回ごとの揺れの範囲です。課題中の生成速度は中央値 44 tok/s(8 割の課題が 42〜47 tok/s)。
- 元にした BF16 GGUF には NextN(MTP)の層がないので、MTP による下書きはありません(Abyss では n-gram の下書き)。
- 2 つのファイルに分けています(Hub は 1 ファイル 50 GB まで)。1 つ目のファイルを指定してください。
- 作り方・速度・ライセンスは上の英語の節のとおりです。