首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >GGUF quantizer 独立指认 Transformer 三段式深度结构

GGUF quantizer 独立指认 Transformer 三段式深度结构

作者头像
山野大叔
发布2026-07-13 11:12:21
发布2026-07-13 11:12:21
350
举报

发布: 2026-07-09 类型: 工程观察日志

缘起启发

我们刚刚完成了老旧 V100 上 bs=1 decode 的收官优化——Qwen3-8B TPOT 34.53 → 22.39 ms(1.54×),追回 llama.cpp gap 的 52-53%。整个过程里发现了一个当时觉得"是 Qwen 家族偶然"的现象:

Qwen3-8B-Q4_K_M 是"层级混合精度"——36 层里,attn_v 和 ffn_down 各有 18 层 Q4_K + 18 层 Q6_K。llama.cpp 的 GGUF quantizer 自动做的选择,Q6_K(高精度)都集中在模型的头尾两端,中间大段是 Q4_K

这看起来很像“感觉/中间/输出的功能分层”,但当时我们只把它当成一个具体模型的经验参数,写死进 DP4A 分发逻辑就过去了,直到今天有了如下观察。

观察触发

朋友转来一篇文章:

38 个开源大模型被逐层"CT 扫描":不管谁训的,AI 大脑里都刻着同一张「通用深度布局」

背后是 PrimeIntellect 前 HuggingFace 研究员 Elie Bakouch 2026-07-08 在 X 上发的观测——他用 Anthropic 刚开源的jacobian-lens工具 + **CKA(Central Kernel Alignment)**表征相似度分析,扫描 38 个跨家族开源模型,发现:

  • 所有模型都自发形成三段式:感知层 → 工作空间 → 输出层
  • 分界点稳定在相对深度 46.5% 和 64.1%,跨模型、跨参数量都一致

信号是表征几何——activation space 的雅可比矩阵和 CKA。

刚好我们手上有一个完全独立的信号

llama.cpp/src/llama-quant.cpp 里的 llama_tensor_get_type 函数——它决定每一层的 attn/ffn 张量用什么量化格式(Q4_K 还是 Q6_K)——基于的是:

  • 该张量的每层 L2 quantization error 预估
  • 一些硬编码的"重要位置"(embedding、output tensor等)

它完全不看 activation,只看权重的量化误差。这是权重空间的信号,而 Bakouch 用的是激活空间的信号。如果 GGUF quantizer 独立地在同样的深度位置选出高精度——那就是两条独立通道对同一个物理事实的印证

实证 —— 三个模型跨家族验证

我们跑了 scripts/layer_quant_scan.py,扫描手上三个 Q4_K_M GGUF:

  • Qwen2.5-1.5B-Q4_K_M (28 层)
  • Qwen3-8B-Q4_K_M (36 层)
  • Llama-3-8B-Instruct-Q4_K_M (32 层)

Qwen 1.5B 和 Qwen 3 8B 是同一个团队训练的,共享经验和 pipeline,签名一致可能只是"Alibaba 家的量化偏好"。Llama-3 才是真正的独立验证。

Meta 的 Llama-3 是独立训练线

  • 不同数据(Meta 自有大规模网页 + 混合合成数据 vs Alibaba 自有中英日多语种)
  • 不同 tokenizer(BPE 128k vs Qwen 152k)
  • 不同 RoPE base(500k vs 1M)
  • 不同 GQA 布局(8 KV heads for 32 heads vs Qwen3 的 8/32)
  • 不同 post-training pipeline(RLHF vs Qwen 的多阶段 SFT+DPO)

同一个 GGUF quantizer 在完全不同来源的权重上,独立选出同样的"两端敏感、中间容忍"签名。46.5% 和 64.1% 附近的分界,跨三个模型对齐在 1-3 个百分点之内。

这告诉我们什么

Transformer decoder-only + next-token 目标 = 深度结构收敛

不同团队、不同数据、不同规模训练出的模型,在深度轴上自发分化出同样的功能敏感度画像。这个结构:

  • 用 CKA 看是活化空间的表征几何断点(Bakouch 视角)
  • 用 GGUF 看是权重的 L2 量化误差在各层的分布(我们的视角)
  • 用可解释性看是 Lad et al. 2024 提出的"detokenization → feature engineering → prediction ensembling → residual sharpening"四阶段

三条通道,同一个物理结构。

对 xLLM 的直接影响

昨天的收官报告里,我们在"remaining gap decomposition"章节把 uniform int8 KV cache 判了"NOT recommended for short-context V100"——因为一刀切 int8 有 4-5% 精度损失。

今天这个发现改变了这个结论层级感知(layer-aware)KV 量化——Phase B 的中间层允许 int4,两端保 fp16——是"精度损失小于一刀切 int8,同时长上下文省显存效果不减"的方案。

我们今天已经落地了 Stage 1:

代码语言:javascript
复制
[engine] kv_layer_format: n_layers=36 phase_B=[16,23) (7 layers, 19.4%) enabled=1
[engine] kv_layer_format map: AAAAAAAAAAAAAAAA|BBBBBBB|AAAAAAAAAAAAA

引擎启动时按 46.5%/64.1% × n_layers 计算 Phase B 边界,用 ASCII map 打出来。目前是 passive tag,还没接 kernel。Byte-eq gate 通过——首 token 完全一致。

Stage 2(写 INT4 KV read/write kernel)和 Stage 3(wire 进 forward loop)是接下来的工作。

当前的局限

未来还需要更多实验才能从机理角度进行解释。当前,我们只是从执行视角的独立观察——GGUF quantizer 的经验规则在三个模型上都指向同一片深度区域,这不是机理证明,是信号一致

同样:

  • Bakouch 也不是正式论文,是社区级技术观察(X post + 用 Anthropic 的开源工具跑的分析)
  • 我们的样本只有 3 个模型;Granite / Mixtral / Phi / SSM 架构没验证
  • 一部分"尾部锁死"是 GGUF quantizer 硬编码规则的产物(不完全是经验发现)
  • 最强的信号是 Phase B 的 dip(中间容忍)和渐变的头部(前 10% 逐渐从全 Q6 过渡到混合),因为这些不是硬编码规则

但即便如此——三条独立信号(activation CKA、weight L2、可解释性 lens)在三个独立训练的模型上对齐同一个三段式——这已经是相当结实的间接证据。

复现

未来随着验证实验全部完成,我们将整理开源到xLLM-Community & xLLMs。

脚本支持任意 GGUF,把路径加到 MODELS 列表就行。欢迎贡献你手上 GGUF 的扫描结果——特别是 non-Qwen non-Llama 家族的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-07-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 山野村夫AI工程笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 缘起启发
  • 观察触发
  • 刚好我们手上有一个完全独立的信号
  • 实证 —— 三个模型跨家族验证
  • 这告诉我们什么
  • 对 xLLM 的直接影响
  • 当前的局限
  • 复现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档