New SOTA quantization: 4.25 bpw IQ4_KS #83
Merged
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.
It is similar to
IQ4_Kwith the following differencefloatscale instead of per block instead of per super-blockggml_halfIt ends up being 4.25 bpw, so the same as
IQ4_XS. Why add it then? Because it has a lower quantization error thanIQ4_XS. For some models the difference is quite significant. The following table gives some examples. Quantization errorQerris defined asPPL(Q)/PPL(f16)-1Performance is similar to
IQ4_XSor even slightly better, except for TG on the M2-Max GPU, where it is ~2% slower (Apple Silicon does not like non-sequential memory access, but having the row scale stored at the beginning of the row causes an additional memory jump in the dot product kernel).The PR also adds a new quantization mix -
IQ3_KL(Lfor "large"). It fills the gap betweenIQ4_KandIQ4_K(and nowIQ4_KS). The following graph illustrates where this new mix sits for LLaMA-3.1-8B-Instruct.