Views
No views yet
| Variant | Perplexity | Δ vs BF16 |
|---|---|---|
| BF16 (upstream) | 7.9722 | — |
| Affine 4-bit | 8.5230 | +0.55 (+6.9 %) |
| QuadRotor-Full 4-bit | 8.5660 | +0.59 (+7.4 %) |
ρ = ‖x‖₂ from direction x̄ = x/ρx̄ into 16 blocks of 4 coordinatesT(v) = q_L · v · q̄_R per block| Per group of 64 | Bytes |
|---|---|
| Quantized codes (uint8, 1 byte/code) | 64 |
scale (FP32) | 4 |
bias (FP32) | 4 |
ρ (FP32) | 4 |
| Total | 76 B / group → ~1 GB for 1.1 B params |
model.safetensors with sub-keys
<tensor>.quantized / .scales / .biases / .rho, plus a
quadrotor.json sidecar). Load via the quadrotor
package:1import json, torch
2from pathlib import Path
3from huggingface_hub import snapshot_download
4from safetensors.torch import load_file
5from quadrotor.quantize import QuadRotorConfig
6from quadrotor.state_dict import decode_state_dict
7
8p = Path(snapshot_download("majentik/TinyLlama-1.1B-Chat-v1.0-QuadRotor-Full-4bit"))
9sidecar = json.loads((p / "quadrotor.json").read_text())
10cfg = QuadRotorConfig(variant=sidecar["variant"], bits=sidecar["bits"], group_size=sidecar["group_size"])
11state = load_file(str(p / "model.safetensors"))
12restored = decode_state_dict(state, cfg, sidecar)github.com/ajentik/quadrotorTinyLlama/TinyLlama-1.1B-Chat-v1.0