Views
No views yet


hy_v3 support merged in
PR #25395 — i.e. any commit after
505b1ed; the current master is fine) and build it following the official
build guide:1git clone https://github.com/ggml-org/llama.cpp llama.cpp-hyv3
2# build per docs/build.md (CUDA / Metal / CPU as appropriate for your machine)llama.cpp-hyv3/build/bin/.Already downloaded an older GGUF? Earlier GGUFs here were built against a patched llama.cpp and won't load correctly on today's upstream. To build and run those, follow the previous README (thesetup_hyv3_llama.sh+ patches flow) instead.
1# plain serve (no speculative decoding)
2./llama.cpp-hyv3/build/bin/llama-server -m /path/to/Hy3.gguf -ctk q8_0 -ctv q8_0 -fa on -c 65536
3
4# serve + MTP self-speculative decoding (needs an MTP gguf, i.e. converted WITHOUT --no-mtp)
5./llama.cpp-hyv3/build/bin/llama-server -m /path/to/Hy3-mtp.gguf --spec-type draft-mtp --spec-draft-n-max 3 --spec-draft-n-min 1 -ctk q8_0 -ctv q8_0 -ctkd q8_0 -ctvd q8_0 -fa on -c 65536| GPUs | build | MTP | -c (context) | KV cache |
|---|---|---|---|---|
| 1× H20 (96 GB) | IQ1_M | no | -c 65536 | -ctk q8_0 -ctv q8_0 |
| 2× H20 (192 GB) | IQ1_M | yes | / (default) | / (f16) |
| 2× H20 (192 GB) | Q4_K_M | yes | -c 65536 | -ctk q8_0 -ctv q8_0 -ctkd q8_0 -ctvd q8_0 |
| 4× H20 (384 GB) | Q4_K_M | yes | / (default) | / (f16) |
-c/KV flags), but Q4_K_M+MTP is tight, so
keep -c 65536 and q8_0 KV (main + draft). 4 cards run Q4_K_M+MTP comfortably.recipes/ spend bits where they matter:attn_q/k/v) and the token embedding / output head stay high
(q8_0 / q4_K / q6_K) — cheap in size, and where low bits hurt most.ffn_*_shexp, active on every token) stay at q5_K–q6_K.ffn_*_exps) carry the aggressive low bits and dominate the file
size. In the IQ1_M recipe most layers are iq1_m, with ffn_down a bit higher
(iq3_xxs) and sensitive layers upgraded (iq2_xxs) layer-by-layer.| recipe | target | MTP head |
|---|---|---|
recipes/hyv3_q4km_recipe.txt | ~Q4_K_M mixed | no |
recipes/hyv3_q4km_mtp_recipe.txt | ~Q4_K_M mixed | yes |
recipes/hyv3_iq1m_recipe.txt | ~IQ1_M mixed (extreme) | no |
recipes/hyv3_iq1m_mtp_recipe.txt | ~IQ1_M mixed (extreme) | yes |
*_mtp variants add the MTP block (blk.<n>.nextn.* and layer-<n> experts).
Use them only for a gguf that still has the MTP head; use the plain ones for a gguf
converted with --no-mtp. (The MTP block's experts stay at K-quant, not IQ*, because
very-low-bit IQ types need an imatrix and the imatrix only covers the trunk layers.)1PYTHONPATH=./llama.cpp-hyv3/gguf-py python ./llama.cpp-hyv3/convert_hf_to_gguf.py /path/to/HYV3-hf --outfile Hy3-BF16.gguf --outtype bf16
2# add --no-mtp to drop the MTP head (then use a non-mtp recipe below)-f). The imatrix is independent of the
target quant type — compute it once on BF16 and reuse it for any recipe.1./llama.cpp-hyv3/build/bin/llama-imatrix -m Hy3-BF16.gguf -f calib.txt -o imatrix.gguf --output-format gguf --parse-special
2# single GPU can't hold BF16 -> add --cpu-moe (keep experts on CPU) or -ngl 0--token-embedding-type differs: keep it at q8_0 for Q4_K_M (embedding is
cheap, no reason to crush it), drop it to q4_K for the extreme IQ1_M build. The
examples below are for MTP ggufs — use the non-mtp recipe for a --no-mtp gguf.1# ~Q4_K_M mixed
2./llama.cpp-hyv3/build/bin/llama-quantize --imatrix imatrix.gguf --tensor-type-file recipes/hyv3_q4km_mtp_recipe.txt --token-embedding-type q8_0 --output-tensor-type q6_K Hy3-BF16-mtp.gguf Hy3-Q4_K_M-mtp.gguf Q4_K_M
3
4# ~IQ1_M mixed (extreme)
5./llama.cpp-hyv3/build/bin/llama-quantize --imatrix imatrix.gguf --tensor-type-file recipes/hyv3_iq1m_mtp_recipe.txt --token-embedding-type q4_K --output-tensor-type q6_K Hy3-BF16-mtp.gguf Hy3-IQ1_M-mtp.gguf IQ1_M