Every Weight Is a Path of Shared Discrete Decisions
论文提出 TWIG:把每个权重写成一串共享的离散决策(符号、2 的幂移位、零门、共享表索引),让剪枝、量化、低秩、码本统一成同一种对象;配套开源的 statetree 实现了其中最简单的一种——每 64 个值共用一个指数,把 BF16 权重和 KV 缓存无损存成约 12 位,并直接在压缩格式上做矩阵乘和解码注意力。
论文提出 TWIG:把每个权重写成一串共享的离散决策(符号、2 的幂移位、零门、共享表索引),让剪枝、量化、低秩、码本统一成同一种对象;配套开源的 statetree 实现了其中最简单的一种——每 64 个值共用一个指数,把 BF16 权重和 KV 缓存无损存成约 12 位,并直接在压缩格式上做矩阵乘和解码注意力。
点赞 19 · 代码星数 17
**理由**
- 不是量化:README 称权重和每个缓存的键值都能逐位还原成原始 BF16,不需要校准数据,也不牺牲精度;输出只因浮点加法顺序与 BF16 有微小差异。
- 解码阶段受显存带宽限制,读的字节少了就更快:作者在一张 A100-40GB 上用 Qwen3-8B + vLLM 测得权重显存 15.3 GiB 降到 12.8 GiB,KV 缓存可容纳的 token 从 119K 增到 178K,单路生成从 75.6 升到 97.2 tok/s(作者称)。
- 自带的分页解码注意力内核直接读压缩后的 KV 页,作者称比 vLLM 自带的 FlashAttention-2 快 1.21–2.46 倍。
- 论文本身的数字是另一回事:在大模型的 5 个权重矩阵上,按电路代价选 2 的幂项,3 / 4 比特精度下比 GPTQ 少 9–15% 加法、离群值多的矩阵少 20–55%(作者称),面向权重固化在芯片里的硬件。
**用法**
- 代码:github.com/ammarali32/StateTree-Representation(Apache-2.0)。需要计算能力 8.0 以上的 NVIDIA 显卡(A100、RTX 30/40 系、L4、H100)和与 PyTorch 同主版本的 CUDA 工具链,按 README 从源码装:pip install wheel ninja && pip install --no-build-isolation .
- vLLM(README 要求 0.32):vllm serve Qwen/Qwen3-8B --dtype bfloat16 --representation statetree --kv-representation statetree,两个参数可单独用,前缀缓存、分块预填充、CUDA graph 照常工作。
- Transformers:statetree.convert(model) 把权重转成状态树后照常 generate;KV 缓存用 StateTreeKVCache;statetree.save\_pretrained / load\_pretrained 存取压缩后的模型,作者称磁盘占用小 24%。
**风险**
- README 写了 pip install statetree,但 PyPI 上查不到这个包,目前只能从源码编译 CUDA 扩展。
- 当前版本不支持 MoE 模型;KV 缓存只支持 BF16、头维度 128,不支持投机解码、滑动窗口和 attention sink;只做推理,没有反向传播。
- 所有数字只在 A100 上测过;预填充是计算受限,作者称首 token 延迟会长 3–15%;README 承认 CUDA 内核在 AI 编程助手协助下写成,尚未充分优化。
*编辑:读 README 时注意区分:开源的是无损的 12 位格式,论文里和 GPTQ 比加法次数的是另一种面向定制芯片的有损用法。*
[打开](https://arxiv.org/abs/2610.31931) · [代码](https://github.com/ammarali32/StateTree-Representation) · [抱脸论文页](https://huggingface.co/papers/2610.31931)