tis-stage3-ert / README.md
oldman-dev's picture
Upload folder using huggingface_hub
4246a1c verified
|
Raw
History Blame Contribute Delete
4.62 kB
---
license: mit
language:
- en
tags:
- kv-cache
- token-importance
- llm-compression
- mistral
- pytorch
base_model: mistralai/Mistral-7B-v0.3
---
# TIS Stage 3 — Closed-Loop Retrieval Checkpoint
**v2 — replaces earlier incorrect upload (June 2026 release used wrong artifact)**
This is the Token Importance Scoring (TIS) checkpoint for learned KV cache compression,
trained via the closed-loop retrieval objective on Mistral-7B-v0.3.
## What Changed in v2
The original `tis-stage3-ert` upload contained a 128-step prototype training run
(`stage3_ert_local_fresh`) rather than the trained checkpoint. That artifact had near-zero
`out_proj` weights (max 0.0007) and produced non-discriminative scores (std ≈ 1.7, range 45–54
for all tokens), which explains the 0%/12.5% NIAH results reported by external testers.
This v2 replaces it with the correct `closed_loop_retrieval_v6` checkpoint (2000 steps,
out_proj max 0.028, score std ≈ 22, full 0–100 range).
SHA256 of `tis_components.pt`: `794cb761d8d840709afb0bea6f0f9b73...` *(run `sha256sum tis_components.pt` to verify)*
## Architecture
- Base model: `mistralai/Mistral-7B-v0.3`
- TIS components: `ImportanceUpdateHead` with RMSNorm + cross-attention
- State dict keys: 7 (`cross_attn.in_proj_weight`, `cross_attn.in_proj_bias`,
`cross_attn.out_proj.weight`, `cross_attn.out_proj.bias`, `out_proj.weight`,
`out_proj.bias`, `score_norm.scale`)
- Attention hook lambda: 0.0 (hook inactive; scoring via `out_proj(hidden)` direct path)
- Importance embedding projection: initialized to zero
## Benchmark Results
Measured with `scripts/eval_niah_hard.py` on 50 examples, context 2048 tokens, seed 42.
**These are hard-NIAH numbers** (answer token must appear in top-5 final-position logits).
| Budget | Learned | SnapKV proxy | Heuristic | No eviction |
|--------|---------|-------------|-----------|-------------|
| 10% | 4% | 2% | 4% | 52% |
| 25% | 22% | 22% | 14% | 52% |
| 50% | **74%** | 24% | 28% | 52% |
| 75% | **78%** | 32% | 40% | 52% |
Evidence survival at 50% budget: 99.9%
Evidence survival at 75% budget: 100%
**Note:** The `no_eviction` ceiling is 52% because this hard evaluator tests whether the answer
token appears in the top-5 logits of the final token position. Eviction can actually *improve*
accuracy by removing distractors, which is the mechanism being measured here.
## Scorer Path
The `eval_niah_hard.py` evaluator uses the **direct token scorer**:
```python
# Direct scorer — what eval_niah_hard.py uses
scores = sigmoid(importance_head.out_proj(hidden)) * 100.0
```
This is different from the full `ImportanceUpdateHead.forward()` which uses cross-attention
and RMSNorm. The direct scorer applies `out_proj` token-by-token to final-layer hidden states.
See [Source Code README](https://github.com/nitroxido/token-importance-scoring/blob/main/SOURCE-CODE-README.md)
for details on all scorer paths.
## Training Details
- Training type: closed-loop retrieval
- Steps: 2000
- Learning rate: 0.001
- Loss weights: α_rank=1.0, β_retrieve=2.0, γ_stability=0.05
- Final loss: ~0.79
- Final evidence survival (training metric): ~70%
## Usage
```bash
# Clone repository
git clone https://github.com/nitroxido/token-importance-scoring.git
cd token-importance-scoring
# Setup
python -m venv .venv && source .venv/bin/activate
pip install -e .
# Download this checkpoint
hf download oldman-dev/tis-stage3-ert --local-dir checkpoints/stage3_ert_learned
# Run hard NIAH evaluation
python scripts/eval_niah_hard.py \
--learned-checkpoint checkpoints/stage3_ert_learned \
--budgets 0.25 0.5 0.75 \
--num-tests 50 \
--context-tokens 2048 \
--device cuda \
--seed 42
```
## Reference Environment
```
transformers==4.36.0 # reference; Transformers 5 has SDPA compat issues with PatchedCausalLM
torch==2.1.2
bitsandbytes==0.41.3
python==3.11
```
Transformers 5 breaks the `PatchedCausalLM` forward path (attention mask injection conflicts
with the SDPA backend). The direct scorer (`out_proj(hidden)`) works under any version because
it does not go through the patched attention path.
## Related Checkpoints
- [tis-v8b-hard-anchor](https://huggingface.co/oldman-dev/tis-v8b-hard-anchor): Hard-anchor
training on top of this checkpoint. Better at low budgets (25%).
- [tis-stage1-oracle](https://huggingface.co/oldman-dev/tis-stage1-oracle): Oracle baseline
using ground-truth labels.
## License
MIT — see [repository](https://github.com/nitroxido/token-importance-scoring)