KV1-1.2B / MODEL_DETAILS.md
Banaxi-Tech's picture
KV1-1.2B release (copied from klein-ml/KV1-1.2B-Prerelease)
6f9e1a0 verified
|
Raw History Blame Contribute Delete
5.27 kB
# BananaMind-KV1-v2-1.2B-Liquid-Experimental-Instruct
2-bit KV-cache quantization-aware training (KV1 v2 recipe: Hadamard rotation, 4 fp16 sink tokens, logits + hidden-state distillation) of [LiquidAI/LFM2.5-1.2B-Instruct](https://huggingface.co/LiquidAI/LFM2.5-1.2B-Instruct)
by self-distillation: the frozen original model with fp KV is the teacher, the loss is KL(teacher || student) on every
token. Input text mix: UltraData-SFT-2605 (no_think, rendered with the Instruct chat template) 60%, UltraData-SFT-Agent-2609 (tool-use trajectories) 16%, Ultra-FineWeb en 7%, UltraData-Code L2 12%, UltraData-Math L2-preview 5%.
* Checkpoint: step 2,862, 0.750B / 0.75B tokens
* KV quantization: post-RoPE K and V, per token x per KV head over head_dim=64, 4 levels (2-bit), mode=`affine`,
Hadamard rotation=True, STE. 2.500 bits/value incl. fp16 metadata (6.40x vs fp16 KV).
* Only the 6 GQA layers have a KV cache; LFM2 conv layers are untouched.
* Weights are standard LFM2 (bf16). Loading normally gives fp KV; to run with the ternary KV path:
```python
import kv_ternary as kvt # file in this repo
kvt.configure(levels=4, mode="affine", hadamard=True, sink=4)
model = AutoModelForCausalLM.from_pretrained("BananaMind/BananaMind-KV1-v2-1.2B-Liquid-Experimental-Instruct", attn_implementation=kvt.register())
```
## Held-out KL to the fp-KV teacher, per domain (this checkpoint)
```json
{
"groups": {
"chat": {
"kld_ternary_bits": 0.2494346898506812,
"kld_fp_bits": 0.1419860143176317,
"ce_teacher": 2.2847921764478087,
"ce_student_ternary": 2.125999036245048,
"eval_tokens": 262144,
"top1": 83.85467529296875,
"top1_conf": 99.1996169106581
},
"agent": {
"kld_ternary_bits": 0.33562924788600773,
"kld_fp_bits": 0.2308978811055062,
"ce_teacher": 2.1201335513032973,
"ce_student_ternary": 1.8623797902837396,
"eval_tokens": 131072,
"top1": 83.07723999023438,
"top1_conf": 98.4333874450346
},
"web": {
"kld_ternary_bits": 0.30666880462890567,
"kld_fp_bits": 0.17421943807342427,
"ce_teacher": 2.7278448045253754,
"ce_student_ternary": 2.7597829401493073,
"eval_tokens": 131072,
"top1": 77.75039672851562,
"top1_conf": 99.12357581069237
},
"code": {
"kld_ternary_bits": 0.32928879322411847,
"kld_fp_bits": 0.19199722187913681,
"ce_teacher": 1.5456873746588826,
"ce_student_ternary": 1.5028161080554128,
"eval_tokens": 131072,
"top1": 83.27713012695312,
"top1_conf": 98.53736973932403
},
"math": {
"kld_ternary_bits": 0.29759900914698034,
"kld_fp_bits": 0.17996008644524872,
"ce_teacher": 2.1323286555707455,
"ce_student_ternary": 2.083978658542037,
"eval_tokens": 131072,
"top1": 80.85784912109375,
"top1_conf": 98.96853511148156
}
},
"kld_ternary_bits": 0.2946758724312291,
"kld_fp_bits": 0.17684110935642988,
"ce_teacher": 2.1825964564923197,
"ce_student_ternary": 2.0768259282534323,
"eval_tokens": 786432,
"top1": 82.11199442545573,
"top1_conf": 98.86640786462193
}
```
## Baseline (original Instruct weights, before training)
```json
{
"groups": {
"chat": {
"kld_ternary_bits": 1.0920360561536933,
"kld_fp_bits": 0.002457815578676199,
"ce_teacher": 2.2847921764478087,
"ce_student_ternary": 2.555535623803735,
"eval_tokens": 262144,
"top1": 69.39353942871094,
"top1_conf": 91.60110822273909
},
"agent": {
"kld_ternary_bits": 1.5093662310168983,
"kld_fp_bits": 0.0024159978223440575,
"ce_teacher": 2.1201335513032973,
"ce_student_ternary": 2.3469435470178723,
"eval_tokens": 131072,
"top1": 65.64254760742188,
"top1_conf": 87.50492521552744
},
"web": {
"kld_ternary_bits": 0.6309144172280389,
"kld_fp_bits": 0.0013030000546159451,
"ce_teacher": 2.7278448045253754,
"ce_student_ternary": 2.98703445866704,
"eval_tokens": 131072,
"top1": 68.902587890625,
"top1_conf": 96.38475021910605
},
"code": {
"kld_ternary_bits": 1.006716521157041,
"kld_fp_bits": 0.0012283830409732235,
"ce_teacher": 1.5456873746588826,
"ce_student_ternary": 2.0545026026666164,
"eval_tokens": 131072,
"top1": 70.14541625976562,
"top1_conf": 89.01945019944958
},
"math": {
"kld_ternary_bits": 0.8196465303417501,
"kld_fp_bits": 0.0012562345679355744,
"ce_teacher": 2.1323286555707455,
"ce_student_ternary": 2.5224284287542105,
"eval_tokens": 131072,
"top1": 68.45626831054688,
"top1_conf": 91.1075224005001
}
},
"kld_ternary_bits": 1.0251193020085192,
"kld_fp_bits": 0.0018532077738701996,
"ce_teacher": 2.1825964564923197,
"ce_student_ternary": 2.5036633807855346,
"eval_tokens": 786432,
"top1": 68.65564982096355,
"top1_conf": 90.50192142560965
}
```
Training: KD temperature 1.0, seq_len 32768, 262,144 tokens/step, AdamW lr 2e-05 cosine->2e-06,
warmup 100, wd 0.1, quant ramp 100 steps, 1x RTX Pro 6000.
License follows the base model (LFM Open License).