arXiv'26 | Cassandra:不训练、不加显存,把 draft model 从 target 模型的 bit 里抠出来
arXiv’26 | Cassandra:不训练、不加显存,把 draft model 从 target 模型的 bit 里抠出来
原文:Cassandra: Enabling Reasoning LLMs at Edge via Self-Speculative Decoding
1. 前言
先交代下背景:我自己最近正好在 vLLM 里折腾 self-speculative decoding,对这个方向的痛点算是结结实实体会过——训练一个好用的 draft model 很贵(EAGLE 系列要单独训练),不训练的方法(layer skipping、KV 压缩)在低 batch 下加速又很有限。所以看到这篇 Cassandra 时眼睛一亮:它给出的答案是,draft model 根本不用另外造,直接从 target 模型的权重里按 bit 粒度”抠”一个出来。
场景设定很明确:消费级设备上的 reasoning LLM。Reasoning 模型的特点是 decode 阶段特别长(一道题思考几千 token),decode 又是 memory-bound 的,权重加载是大头;同时边缘设备 batch size 就是 1 或 2,量化这类有损方法在长推理链上的精度损失会被放大。无损加速里最顺手的武器就是 speculative decoding:

draft 模型先猜 N 个 token,target 模型并行验证,猜对了就白赚——输出分布和原模型严格一致,无损。问题在于 draft model 从哪来。
2. 核心矛盾:draft model 的”出身”问题
现有方案大致三类,各有各的坑:
- 训练式(EAGLE-3 等):效果好,但要训练,而且 draft 权重要额外占显存——边缘设备本来显存就抠抠搜搜
- Layer skipping(Draft&Verify、Swift):训练-free,但跳层对模型质量伤害大,acceptance rate 上不去
- KV 压缩式(MagicDec、QuantSpec):优化的是 attention/KV 路径,可低 batch + 中等长度序列时,decode 的瓶颈根本不在 attention,在 FFN 权重加载——药不对症
Cassandra 的 insight 是:投机解码里 draft model 不需要”自己能写出正确答案”,只要”接下来几个 token 大概率猜对”。这个要求比有损压缩的”保持任务精度”低得多,所以可以把多种有损压缩狠狠地叠加起来用——精度崩了没关系,反正有 target 模型兜底验证。
3. 方案
3.1 从 bit 里抠 draft model

如上图,原始权重和 KV Cache 经过三步变换,被切成两份:speculation data(draft 用)和 verification data(补全用):
- 非结构化 value pruning:按数值显著性挑权重,被剪掉的部分不是丢弃,而是归入 verification data
- mantissa truncation:保留的权重再砍尾数位,砍掉的尾数同样存进 verification data
- exponent 压缩:见下节
Draft 推理时只加载 speculation data,零填充回标准浮点格式跑;target 验证时把两份数据都加载、无损拼回原始模型。注意这个设计的妙处:draft 是 target 的严格子集,没有任何额外的参数存储——不像 EAGLE 还要塞一个 draft 网络进显存。计算量其实没省(照样跑全尺寸 FLOPs),省的是 memory bandwidth,而 decode 恰恰是 memory-bound,这刀砍在了正确的骨缝上。
3.2 被忽视的瓶颈:exponent
剪枝 + 截尾数之后,作者发现一个有意思的现象:指数位成了压缩瓶颈——尾数可以砍,符号位只有 1 bit,唯独 8 bit 的 exponent 动不得(动了数值就崩)。怎么办?测熵:

bf16 权重 exponent 的 Shannon 熵只有约 2.58-2.64 bit,KV Cache 也就 2.7-2.8 bit——8 bit 的存储里六成是水分。于是给出两条路线:
- Cassandra-1(无损):unary coding,高频 exponent 用短码。为什么不用压得更狠的 Huffman?因为 Huffman 解码要查 2^N 的 LUT 或者串行 parse,硬件不友好;unary 码”数零到一为止”,纯并行数字逻辑就能解,平均 2.85 bit,只比 Huffman 差一点
- Cassandra-2(微损):MX 格式共享 exponent,压得更狠、更快,换轻微精度损失
value pruning 和 mantissa truncation 的组合拳效果看这张图:

单用 VP 或 MT,压缩比一过 50-60% acceptance rate 就跳水;两者联用(VP+MT)能扛到 80% 压缩比,理想加速 2.5 倍左右才见顶。
3.3 硬件侧:2% 面积换掉格式转换开销
这套自定义 bit 格式在通用 SIMD 核上解码会有大量位级操作(去稀疏化、unary 解码、MX 转换),串行做会把省下的带宽又吐回去。所以配了专用 encoder/decoder(含并行 zero counter 做 unary 解码),SystemVerilog 实现、28nm 综合,在 64 TFLOPS 的 NPU 上面积开销约 2%。KV Cache 是推理时在线生成的,所以 encoder 也要在线压缩 KV——这也是为什么必须硬件化。
4. 效果
三个 reasoning 模型(DeepSeek-R1-Distill-Llama-8B、Qwen3-8B-Thinking、Qwen3-4B-Thinking)、三种硬件(RTX 4090、Jetson AGX Orin、systolic NPU):

- 对 BFloat16 baseline 加速 1.78-2.41 倍(INT8 量化只有 1.25-1.42 倍,还掉精度)
- Acceptance rate 稳定在 0.74-0.91,DeepSeek 蒸馏模型最高
和其他投机解码方法对刚:

Cassandra-1 全面压过训练-free 的同行(Draft&Verify 约 1.1 倍、MagicDec 低 batch 下甚至负优化 0.9 倍、Lookahead 1.1-1.46 倍),和要训练的 EAGLE-3 打得有来有回(GPQA 上 1.93 vs 2.38,LiveCodeBench 上 2.10 vs 2.12,AIME 上 1.88 vs 1.99)——不训练能摸到训练式方法的天花板,这就是最大卖点。
还有个容易被忽略的赢点——显存:

由于 exponent 压缩是实打实作用在整个模型上的,Cassandra 的显存占用比 BF16 baseline 还低:同样 24 GB 的 RTX 4090,BF16 和 Eagle-3 在 64K 序列附近撞墙,Cassandra 能撑到 128K,相同显存下能生成 11.59 倍于 Llama3-based 投机解码、1.81 倍于 Eagle-3 的 token 数。加速的同时还省显存,这在”加速方法普遍要多吃显存”的投机解码赛道里是个异类。
5. 一点个人 take
作为最近在 vLLM 里亲手搓过 self-spec decoding 的牛马,说几句体感:
- “draft 不需要对,只需要像”这个观察是整篇文章的灵魂。有损压缩的评价体系(perplexity、任务精度)在投机解码语境下完全换了坐标系——换成 acceptance rate vs compression ratio 的 trade-off。想通这一点,各种”平时不敢用”的激进压缩手段全部解锁。我自己实验里用 layer-skip 路线在 Qwen3-8B 上只拿到 1.1-1.2 倍,看到 bit 级方案能到 2 倍上下,只能说粒度选对了确实不一样:跳层是把某些”完整的思考步骤”整个扔掉,bit 级修剪是全体权重”均匀降精度”,后者对 next-token 预测的伤害显然更温和。
- Exponent 熵只有 2.6 bit 这个数字值得单独记住。这和前几天那篇逼近 Shannon 界的无损压缩论文(bf16 有效熵 10-12 bit)互相印证:浮点格式的 exponent 是整个 LLM 存储里水分最大的部位。以后看到任何压缩方案,先问一句”exponent 怎么处理的”。
- 泼冷水的部分:核心收益依赖自定义硬件解码器。RTX 4090 上的数字是模拟器给的,真实 GPU 没有那个并行 unary decoder,落地要等硬件厂商买账,或者看有没有人能用 tensor core + bit 操作 kernel 逼近这个效果——这其实是个挺有意思的开源坑位。
欢迎评论区交流,尤其是同样在搞 speculative decoding 的朋友。
顺带扯一句题外话:Cassandra 本质上是在”剪枝 + 截断 + 熵编码”的组合空间里找 acceptance rate 和压缩比的最优 trade-off——这个”在离散设计空间里搜索最优配置”的问题形态,和 NAS/AutoML 是同源的。我们把相关积累整理成了《动手学 AutoML:从 NAS 到大语言模型优化实战》,书里第 8 章讲 LLM 压缩(剪枝/量化),实战篇还有 LLM 后训练剪枝的完整实现,和这篇论文的 value pruning 思路可以对照着看。
