hearth-lean-loomed-v1: one GGUF, 29.6 GiB

gpt-oss-120b with two KPS house adapters merged in, the whole body kept (all 128 experts in all 36 layers), and the routed experts compressed to the 1–2 bit IQ types so that it fits on one 128 GB Strix Halo with room for 16 Γ— 32k context.

file experts (gate/up Β· down) trained attention rest size sha256
v6-vanilla-lean-mixa-phie.gguf IQ1_M Β· IQ2_XXS (padded 2880 β†’ 3072) attn_output layers 24–35 at F32 Q8_0, output tensor kept 31,778,978,112 B (29.6 GiB) e7fe4d00…

Results

KPS serves this file on KPS Annul v5, its own serving engine (internal, not published). It is the Lean keep. Both columns below are the same file.

runtime KPS board, 921 plays 1 stream 8 12 16
KPS v3 runtime (llama.cpp tree with the pad change) 883 / 921 52–53 150 not measured 71
KPS Annul v5 889 / 921, 0 errors, 16 slots 50–54 152 153 173–177

Speed is aggregate tokens per second on one Strix Halo (Radeon 8060S, Vulkan), 16 slots Γ— 32k, Q8_0 KV, sampling 0.3 / 0.85 / 40, 400 tokens per stream. The board is KPS's own (math, reasoning, science, coding, SWE, agentic); the Annul run is at reasoning_effort: low. On Annul, four canary prompts, including a native get_weather tool call, pass at that sampling.

Annul is not public, so the 889 and the 16-stream speed are not something the build below reproduces. We have not measured the public build on the board or above a few streams.

Why 12–16 streams can be slow on Vulkan

gpt-oss sends each token to 4 of 128 experts, so with 12–16 streams each expert sees about one token per step. In llama.cpp's Vulkan backend, expert matmuls move from the mat-vec kernel to dequantize-then-mat-mat once a batch passes 8 tokens. For IQ1_M and IQ2_XXS that costs about 5Γ— per call in our profile (276 Β΅s at 8 tokens, 1,500 Β΅s at 12), and lanes drop from about 20 tok/s to about 5. The v3 runtime showed the cliff (71 tok/s at 16 streams), and so did an Annul build with the pad change alone (71–72). Annul v5 keeps those matmuls on the mat-vec kernel at 9–32 tokens, and that step took 16 streams to 173–177. On stock Vulkan llama.cpp, expect the lower figure at 12 or more streams, or serve fewer slots.

What was done

  • Loomed. Two low-rank adapters (rank 8, alpha 16) trained by KPS on our own corpus were merged into the base weights at scale 1.0: one on the attention output projection of layers 32–35, one on layers 24–31. The merged tensors are kept at F32: an adapter's change is smaller than one Q8_0 step, and re-encoding to Q8_0 would round it away.
  • Heal. One importance matrix computed on the merged body itself: a fresh pass over Harmony-format conversations mixed with the adapters' own training distribution (--parse-special, so the control tokens count; ~200 Γ— 2048), a broad text pass (40 Γ— 2048), blended with weights 1/Ο† : 1/φ² and the importance raised to 1/e.
  • Bonsai ("mix a"). Routed experts at IQ1_M (gate, up) and IQ2_XXS (down), quantized from the body with that imatrix. Everything else Q8_0 apart from the F32 trained tensors; the output tensor left as it was.
  • Pad. IQ1_M and IQ2_XXS need rows that are a multiple of 256; gpt-oss experts are 2880 wide (2880 % 256 = 64). Without padding, llama-quantize falls back to a larger type on every expert tensor and the pack comes out much bigger. The expert input dimension is zero-padded to 3072 at quantize time. Stock llama.cpp will not load this file; it needs the small patch in patches/.

"Magicpack" is the KPS bake law: Q8_0 everything except the routed experts, which take the compressed mix.

Build llama.cpp

The patch applies to upstream llama.cpp tag b11978. Full notes in patches/BUILD.md.

git clone --depth 1 --branch b11978 https://github.com/ggml-org/llama.cpp
cd llama.cpp
git apply ../patches/gpt-oss-expert-pad-3072-b11978.patch
cmake -B build-vk -DCMAKE_BUILD_TYPE=Release -DGGML_VULKAN=ON -DLLAMA_CURL=OFF
cmake --build build-vk --target llama-server llama-quantize -j

Serving (one Strix Halo, Radeon 8060S, Vulkan)

build-vk/bin/llama-server -m v6-vanilla-lean-mixa-phie.gguf -ngl 999 --load-mode none -fa on \
  -c 524288 -np 16 -b 4096 -ub 4096 --cache-type-k q8_0 --cache-type-v q8_0 \
  --jinja --chat-template-file gpt-oss-harmony-cot-toolnames.jinja --reasoning-format auto
  • About 41 GiB resident with 16 Γ— 32k slots (about 0.68 GiB per 32k slot on top of the pack, Q8_0 KV). The GPU driver will not evict page cache to map the weights: if a load dies with ErrorDeviceLost and the kernel log shows Couldn't update BO_VA (-12), free memory first (or start with fewer / shorter slots).
  • gpt-oss-harmony-cot-toolnames.jinja is the template we serve her with. It is the stock gpt-oss Harmony template with three fixes: a system message stays in the system block and a following developer message is no longer dropped; tool results that are strings render as raw text, not a JSON-quoted string; and write_file / edit_file / apply_patch are declared as freeform tools. Native tool calls come back through llama.cpp's normal gpt-oss parser.
  • Sampling is the caller's. We serve her at temperature 0.3, top_p 0.85, top_k 40, reasoning_effort: low.

Revisions

  • 2026-11-01. Card only: the Annul results and the concurrency note. The GGUF, the pad patch and the template are unchanged.

Provenance

Made by KPS Labs (Kith Precision Services), October 2026. The adapters and their training, the merge, the heal, the bonsai compression and the pad patch are KPS's. Base model: openai/gpt-oss-120b, whose Apache-2.0 license applies.

Downloads last month
18
GGUF
Model size
124B params
Architecture
gpt-oss
Hardware compatibility
Log In to add your hardware

We're not able to determine the quantization variants.

Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for nbKPS/hearth-lean-loomed-v1

Quantized
(134)
this model