giannisan/Hy3-ds4-gguf
Hy3 (295B) GGUF for pulsar / ds4 / NeutronStar (SSD streaming, CUDA)
Mixed-precision GGUF of tencent/Hy3 (295B total / 21B active MoE, Apache 2.0) built for SSD-streaming inference engines: routed experts live on disk and stream per token, so the model runs on GPUs that cannot hold it.
Runs on pulsar (Rust + CUDA, recommended) and the NeutronStar hy3 branch (C, a CUDA port of antirez/ds4).
Measured decode, greedy, warm cache:
Per token only 8 of 192 experts per layer are read (~3GB/token at this quant); attention, shared experts, and the router stay resident.
Files
Both use the identical recipe and the same importance matrix; they differ only in what the quantizer saw as input.
fromBF16 (new): tencent/Hy3 BF16 (598GB) converted to a q80 intermediate with the [AngelSlim](https://huggingface.co/AngelSlim/Hy3-GGUF) llama.cpp patches (proper `hyv3` architecture support), then quantized with the imatrix in one step. q8_0 is effectively lossless as an intermediate, so the routed experts see exactly one lossy quantization.
original: built before the BF16 pipeline existed here, from the IQ4-UD edition of YanissAmz/Hy3-295B-A21B-GGUF. The tensors this recipe keeps at Q80 passed through essentially lossless, but the routed experts went through two lossy steps (IQ4XS/IQ3S to IQ2XXS). At a 2-bit target the 2-bit noise dominates, so the gap is small, but the fromBF16 file removes it entirely.
Recipe
The layout targets a streaming expert cache: routed experts must be uniform fixed-size slabs, and everything that makes decisions stays high precision. Same design as antirez's GLM-5.2 ds4 build, including the MTP layer riding at Q2_K because importance matrices never cover the draft layer (imatrix generation runs normal forwards, which skip it).
imatrix: the 125-chunk general-purpose matrix published with the source repo of the original build, reused for the fromBF16 build.
Usage
pulsar (recommended)
git clone https://github.com/giannisanni/pulsar
cd pulsar
CXX=g++-12 cargo build --release -p engine
./target/release/pulsar-cli -m Hy3-ds4-IQ2XXS-AttnQ8-fromBF16.gguf \
-p "The capital of France is" -n 64
# or interactive chat: --chat
# or OpenAI-compatible API: cargo build --release -p serveZero-config multi-GPU: pulsar measures each card's PCIe bandwidth at startup, streams experts over the fastest link, and fills spare GPUs with resident hot experts. First run is cold; a .warm sidecar makes every later run start hot. Main knob: PULSAR_CACHE_GB (host expert cache, defaults to measured free RAM minus a reserve).
NeutronStar / ds4
git clone -b hy3 https://github.com/giannisanni/neutronstar
cd neutronstar && make ds4
./ds4 -m Hy3-ds4-IQ2XXS-AttnQ8-fromBF16.gguf --cuda --ssd-streaming \
--ssd-streaming-cache-experts 64 --ctx 4096 --nothinkUseful knobs: DS4_CUDA_HOST_EXPERT_CACHE_GB=16 (host expert cache, the main speed lever) and DS4_CUDA_PARALLEL_FETCH_THREADS=16.
MTP note
blk.80 (the MTP draft layer) is present in both files. pulsar wires it behind PULSAR_MTP=1 (opt-in): drafts verify correctly at 44 percent acceptance, but measurements show speculative decoding only pays when the verify pass is fully cache-resident, which a 30GB-RAM box cannot deliver. Tencent's own AngelSlim deployment guidance reaches the same conclusion, enabling MTP only from 2x H20 (192GB) upward. Keep it off for speed; it is there for bigger boxes.
