OPTIC:Gemma 4 逐层嵌入的极限压缩(Extreme Compression of Per-Layer Embeddings via Cross-Layer Latent Vector Quantization)

Gemma 4 E2B / E4B 给每个词在每一层都配一条单独的“逐层嵌入”(PLE),在 E4B 里占 35.2% 的参数、BF16 下 5.64 GB。OPTIC 给每个词只存一组所有层共用的量化码,每层再用一个小的仿射解码器还原,码本和解码器按 PLE 输出投影处的误差来拟合,而不是按存储的向量本身。

Gemma 4 E2B / E4B 给每个词在每一层都配一条单独的“逐层嵌入”(PLE),在 E4B 里占 35.2% 的参数、BF16 下 5.64 GB。OPTIC 给每个词只存一组所有层共用的量化码,每层再用一个小的仿射解码器还原,码本和解码器按 PLE 输出投影处的误差来拟合,而不是按存储的向量本身。

点赞 14 · 代码星数 5

理由

  • 作者称约 100 倍压缩下,BF16 的 E4B 在 7 个基准上保留 97.8% 性能,六种常规方法里最强的乘积量化只保留 66.3%;在官方 W4A16(4 位权重)版本上同样压缩保留 96.9%。
  • 更极端的压缩也有数字:594 倍保留 90.5%、1002 倍保留 84.1%,1002 倍时 E4B 的 PLE 只剩 5.6 MB(作者称)。
  • 省的是显存,几乎不拖慢:README 称在一张 RTX 4090、固定 1 GiB KV 缓存下,BF16 权重显存少 29.7%、W4A16 少 43.1%,耗时最多增加 0.40% / 0.69%;vLLM 报告的模型显存从 15.3 GiB 降到约 10 GiB。
  • 与端侧部署直接相关:Gemma 4 的 E 系列本来就面向小显存设备,嵌入表正是其中最占地方、又最难用常规量化压下去的部分。

用法

  • 代码:github.com/VILA-Lab/optic(Apache-2.0);压缩产物:抱脸 zcahjl3/gemma-4-E4B-it-OPTIC-100x(apache-2.0,单个 compressed_ple.npz),首次运行时连同指定版本的 Gemma 4 E4B 原模型一起自动下载。
  • 需要 Python 3.12 和 CUDA 显卡,README 称 24 GiB 显存够跑 BF16 E4B 的短生成:pip install -r requirements-inference.txt && pip install -e . 后 python examples/generate.py --prompt "…",加 --image 可做图文问答。
  • vLLM(文档要求 0.19.1):把 PLE_OPTIC_ARTIFACT 指向下载的 npz,照常 vllm serve google/gemma-4-E4B-it,仓库安装的插件会在加载时替换稠密 PLE 表;已加载的模型也可用 install_compact_ple(model, artifact) 接入。
  • 复现论文:ple-eval evaluate --gpus 0 --run-id optic-e4b 跑 7 个基准;拟合自己的压缩版本看 docs/fitting.md。

风险

  • 只针对 Gemma 4 E2B / E4B 这类带逐层嵌入的模型,其余权重不压缩;只放出了 E4B BF16 的 100 倍产物,E2B 和更高倍率需要自己拟合。
  • vLLM 下压缩 PLE 只支持张量并行 1;显存与速度数字只在一张 RTX 4090 上测得,均为作者报告。

编辑:注意“100 倍”说的是嵌入表本身,不是整个模型;整体显存的节省是约三成。

打开 · 代码 · 抱脸论文页

Hugging Face Daily Papers

浏览最新 AI 动态