ADFA-5188 | Enable KV cache quantization and flash attention - #76
Open
jatezzz wants to merge 4 commits into
Open
ADFA-5188 | Enable KV cache quantization and flash attention#76jatezzz wants to merge 4 commits into
jatezzz wants to merge 4 commits into
Conversation
There was a problem hiding this comment.
Claude Code Review
This repository is configured for manual code reviews. Comment @claude review for a one-time review, or @claude review always to subscribe this PR to a review on every future push.
Tip: disable this comment in your organization's Code Review settings.
jatezzz
requested review from
a team,
Daniel-ADFA,
dara-abijo-adfa and
itsaky-adfa
August 21, 2026 20:24
jatezzz
force-pushed
the
fix/ADFA-5188-kv-cache-quantization
branch
from
August 26, 2026 17:14
24429e7 to
55b74ac
Compare
The cache was always f16. A load now asks for q8_0 where the model's head widths divide into whole blocks, costing 34 bytes per 32 elements instead of 64 and so buying about 1.88x the context from the same RAM budget. Flash attention is requested as AUTO, since llama.cpp needs it for a quantized value cache; if a context is refused anyway, the native side retries at f16 at a shorter length.
jatezzz
force-pushed
the
fix/ADFA-5188-kv-cache-quantization
branch
from
August 26, 2026 20:20
55b74ac to
c45cce1
Compare
hal-eisen-adfa
left a comment
Contributor
There was a problem hiding this comment.
Four things worth a look before this merges — details inline. In short: the native fallback allocates about the same number of bytes as the attempt that just failed, a failed new_context leaks the whole model, the KV budget doesn't account for the weights that get mmap'd right after, and there's a 16 KB page-size ABI change riding along unannounced.
Charge the model weights against the budget the quantized cache is sized from, and floor clamp_context at DEFAULT_N_CTX so the f16 fallback cannot drop a short-context model below the context it always had.
The f16 retry was sized out of the same RAM budget as the q8_0 attempt, so it asked the allocator for roughly the bytes that had just failed, and was byte-identical when quantization was off. Adds a second retry at the DEFAULT_N_CTX floor, the only lever that answers memory pressure, and frees the model and any partial handles when a load step fails instead of pinning the weights for the life of the IDE process.
Keep the pure ModelContextResolver.resolve that takes an already-parsed header, and have it answer with the q8_0 cache type and the f16 fallback size. The clamped KV-budget subtractions now guard the quantized path too, which is the one that can actually grow the context.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This PR implements KV cache quantization (
q8_0) and enables flash attention in thellama.cppcontext parameters to drastically improve memory efficiency and generation speed.type_kandtype_vto useGGML_TYPE_Q8_0and enables flash attention (LLAMA_FLASH_ATTN_TYPE_AUTO).f16KV cache and flash attention disabled.q8_0halves its byte size, allowing for much longer conversations before context is dropped and drastically reducing mid-generation crashes on 4–6 GB RAM devices. Flash attention mitigates generation latency on longer contexts.Details
Logs confirming
n_ctxinitialization, cache type used (q8_0vsf16), and fallback activations.Flash Attention Enabled
Q8_0 KV cache
Ticket
ADFA-5188
Observation
This implementation works in tandem with dynamic
n_ctxsizing and should be validated alongside ADFA-5187, as the memory measurement relies on both features working concurrently.#75 Needs to be merged first