test(kv): measure KL by context depth; INT4 depth-stable, KIVI degrades (#69) - #76
Merged
Conversation
score_mode now reports mean KL(fp32||mode) separately for the first vs second half of positions, so 'near-lossless' can be checked as context grows. Rotation is per-position independent and INT4 quant is per-token, so quality should be depth-independent — this makes it measurable. A longer document via argv[2] drives the full long-context check.
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.
Closes #69.
Follow-up from #65: quality was measured only at a fixed length.
bench_kv_quality'sscore_modenow splits mean KL(fp32||mode) at the sequence midpoint (early vs late positions), so 'near-lossless' can be checked as context grows. A longer document viaargv[2]drives the full long-context run.Result (BitNet-2b4t, 314 tokens, early = first ~156, late = last ~157):
Two findings:
Caveat: this is a 314-token midpoint split, not a multi-thousand-token run — enough to show the trend (the KIVI drain fires ~token 128, so its depth-dependence is already visible), and the tooling now supports the full run via
argv[2].🤖 Generated with Claude Code