Uh oh!
There was an error while loading. Please reload this page.
ADFA-5188 | Enable KV cache quantization and flash attention - #76
ADFA-5188 | Enable KV cache quantization and flash attention#76jatezzz 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.
24429e7 to
55b74acCompareThe 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.
55b74ac to
c45cce1Compare
hal-eisen-adfa
left a comment
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.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
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.
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