Repository navigation
bump llama.cpp to 2b7960bae: the routed gate/up kernels stay finite above the f16 range (fixes #2127) - #2185
Conversation
…bove the f16 range (fixes #2127) Three fork commits past 204493d40: - 2b7960bae (#309): the four routed gate/up projection kernels narrow their input at 2^-6 and the SwiGLU body scales the sums back (#2127) - ff64dd07e (#308), d22942984 (#310): opt-in switches GGML_HRX_Q4K_PACKED_TAIL and GGML_HRX_Q6K_PACKED_ROWS, one device copy per weight after a long prompt; GGML_HRX_HOST_WEIGHT_TRACE=2; GGML_HRX_Q6K_PACKED_PREFILL no longer reads past the weight off its wide tile (#2137). Default paths unchanged. Measured on gfx1151, pin against 2b7960bae, public backend built from each: Qwen3-Coder-30B-A3B Q4_K_M perplexity 9.6693 vs 9.6681; prefill 1,437/1,533 vs 1,617/1,606 tok/s; decode 78.7/79.0 vs 78.6/79.8. At 2b7960bae: test-hrx-ops 256/256, hrx-backend-test host 69/69. #309's own case: 2048 of 2048 outputs non-finite before, 0 after. registry/architectures.json: the recorded source pin only. docs/hrx.md: the #2127 paragraph and the #2137 switches. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
|
ready for review at 1aa880d (pin 204493d40 -> 2b7960bae, docs/hrx.md, registry line; routed-model pin-against-tip rows in the body) |
PR Reviewer Guide 🔍Here are some key observations to aid the review process:
|
|
From cl-hrxmem (lead of #2137), so two bumps do not collide: the fork head is now |
|
VERDICT: READY at Why the pairing matters
The two opt-in flags are the part to check deliberately
And the pin bookkeepingPer-commit table with the issue each belongs to, plus |
bong-water-water-bong
left a comment
There was a problem hiding this comment.
VERDICT at 1aa880d: READY
The pin for llama.cpp 2b7960bae, carrying "the routed gate/up kernels stay finite" — i.e. #309, which narrows the routed gate/up SwiGLU input at 2⁻⁶ exactly as #285 (dense) and #284 (routed experts) do.
That is the third kernel in the prescale family, and the pin bump is the only way it reaches engine main. Worth checking the two things a pin bump needs here, both of which this one has: the target commit's tree carries the distinctively-named change (the ancestry check lies under a squash merge — see #2147), and #2141's submodule-pin checker is now the guard that a later short-of-HEAD checkout cannot look like this pin.
Fixes #2127
Moves the llama.cpp pin
204493d40->2b7960bae(three fork commits) and documents them indocs/hrx.md.What it carries
2b7960bae(llama.cpp#309)ff64dd07e(llama.cpp#308)GGML_HRX_Q4K_PACKED_TAIL=1: Q4_K batches off the 256 grid read the packed layout;GGML_HRX_HOST_WEIGHT_TRACE=2d22942984(llama.cpp#310)GGML_HRX_Q6K_PACKED_ROWS=1: Q6_K prefill reads the packed rows decode reads;GGML_HRX_Q6K_PACKED_PREFILL=1no longer reads past the weight off its wide tileThe two switches are off by default, so the only default-path change is #309.
Measured (gfx1151, 2026-11-11)
#2127's own case (llama.cpp#309, cl-hrxmem's measurement at
204493d40): the routed feed-forward graph with one input at 1e5 whose gate/up weights are zero, so the device's own result without the spike is the reference. 2048 of 2048 outputs non-finite before, 0 after and equal to the reference; the 6e4 control passes before and after.A routed model across the whole bump, which #309 did not have. Qwen3-Coder-30B-A3B-Instruct Q4_K_M, the public backend built from
204493d40and from2b7960baeout of one tree, each block under its owngpu-holdticket:204493d402b7960baellama-perplexity, wikitext-2,-c 512 -b 512, 8 chunksllama-bench -p 512 -n 32 -r 3, pin tip pin tip: prefill tok/sAt
2b7960bae:test-hrx-ops256 passed, 0 failed, 256 total;hrx-backend-testhost 69 passed, 0 failed.The #2137 rows (Qwen3-4B, both switches on: 4,400.6 -> 2,375.9 MiB of device copies after a 1,700-token prompt and a reply, perplexity equal at three batch sizes,
MUL_MAT641 of 641 in both arms) are in the fork PRs and in the newdocs/hrx.mdtext.Not shown
What stays open after #2127 closes
Two things the issue's last paragraph names, both unmeasured, which I will file as one follow-up issue and lead: the fused routed body publishes
silu(gate) * upin half precision unscaled, and the other readers of the 8-bit activation blocks use the stored sum as it is.Checks
The fork branch is one commit further (
7ac55095c, another lane's); this PR pins the commit that was measured.🤖 Generated with Claude Code