gemma4-31b-layer-study
收藏Gemma 4 31B IT — Layer Analysis Study 数据集概述
数据集基本信息
- 数据集名称: Gemma 4 31B IT — Layer Analysis Study
- 托管地址: https://huggingface.co/datasets/KikoCis/gemma4-31b-layer-study
- 许可协议: Apache 2.0
- 语言: 英语 (en)
- 规模: n<1K
- 标签: gemma4, layer-analysis, pruning, mechanistic-interpretability, benchmark
研究内容
这是一个针对 Google Gemma 4 31B IT 模型的三阶段实证研究,旨在识别其 Transformer 层中哪些是关键的、冗余的或对模型预测有害的。
数据集包含文件
| 文件 | 描述 |
|---|---|
layer_stats.json |
阶段 A — 每层的块影响力 (BI)、残差范数、差值 (300个探针 × 60层) |
logit_lens.json |
阶段 B — Logit Lens 探测 (60个探针,60层,top-k tokens,目标排名) |
ablation.json |
阶段 C — 单层消融 (35个段落,60层,困惑度差值) |
block_ablation.json |
阶段 C2 — 块消融 (4种丢弃大小: 10/14/18/22层) |
probes.json |
使用的 300 个探针 (6个类别 × 50个提示) |
phase_a.py |
阶段 A 计算脚本 (mlx-lm hooks) |
phase_b.py |
阶段 B Logit Lens 脚本 |
phase_c.py |
阶段 C 单层消融脚本 |
phase_c2.py |
阶段 C2 块消融脚本 |
index.html |
交互式可视化 (Chart.js,可在浏览器中点击查看) |
RESULTS.md |
对比剪枝变体与基础变体的基准测试结果 |
drop_plan.json |
基于证据的最终丢弃方案 |
关键发现
阶段 A — 块影响力 (BI 分数)
在残差流上测量了 1 - cosine_similarity(h_in, h_out),覆盖 60 层和 6 个类别 (CLI/bash、代码/Python、数学、事实、多语言、对话) 的 300 个探针。
- 第 10-22 层 极度冗余 — 所有类别中 BI < 0.005。
- 第 52-59 层 是“决策层” — BI 为 0.1 至 0.95。
- 冗余层的跨类别方差接近于零 (中间层没有类别特定的专门化)。
- 令人惊讶的是,全注意力层 11 和 17 也是冗余的 (BI 0.002-0.004)。
阶段 B — Logit Lens
将每层的隐藏状态通过模型的最终归一化层和绑定的语言模型头进行投影,以检测模型在何处确定答案。
- 直到约第 30 层,目标 token 排名约为 250,000 (随机) — 未做出决策。
- 决策级联发生在第 56-59 层: 目标排名从 2533 → 51 → 3 → 1 急剧下降。
- 对话类最早决策 (第 49 层),事实/多语言类最晚决策 (第 58-59 层)。
- 前 30 层在一个不投影到词汇表的潜在空间中运行。
阶段 C — 单层消融
单独禁用每一层 (跳过残差更新),并在 35 个保留段落上测量困惑度差值。
| 影响 | 层数 | 备注 |
|---|---|---|
| 关键 (PPL ×2 至 ×2360) | 0, 1, 58, 59 | 嵌入/决策层 — 绝不能移除 |
| 强负面影响 | 39, 49, 56 | PPL +100% 至 +355% |
| 轻微正面贡献 | 3, 10, 13, 16, 18, 19, 20, 44, 45, 46, 48, 50 | PPL +5% 至 +11% |
| 净中性 (在 ±5% 内) | 2, 4, 6, 7, 9, 14, 52, 57 | 大部分可以安全丢弃 |
| 净负面 — 移除后模型改进 | 5, 8, 11, 12, 15, 21-38, 41, 47 | PPL -10% 至 -74% |
最大发现:
- 第 27 层 消融: PPL 下降 74% — 该层增加了噪声。
- 第 29 层 消融 (全注意力层!): PPL 下降 71%。
- 第 23-38 层 大部分单独存在时都对模型有害 — 但集体存在时它们是负载承载的 (复合效应)。
阶段 C2 — 块消融
同时禁用多个“安全”层以检测复合效应:
| 丢弃数量 | PPL | Δ% |
|---|---|---|
| 0 (基线) | 329 | — |
| 10 | 659 | +100% |
| 14 | 991 | +201% |
| 18 | 2075 | +531% |
| 22 | 28038 | +8428% |
→ 即使有单层消融证据,丢弃多层也会产生严重的复合负面影响。层之间会相互补偿。
最终丢弃方案: Otter v3
基于所有三个阶段的综合证据,最安全的剪枝方案是仅丢弃 2 层:
丢弃层 {27, 29} → 58 层模型,命名为 "otter-v3":
- 第 27 层单层消融: -74% PPL
- 第 29 层单层消融: -71% PPL
- 块 {27,29} 消融: 496 → 117 PPL (-76%)
- 实证 CLI 测试: 7/7 在 7 个问题的 CLI 基准测试上
剪枝后的模型发布于:
- https://huggingface.co/KikoCis/gemma-4-31b-otter-v3-GGUF
方法论说明
- mlx-lm 类级别猴子补丁: 替换
DecoderLayer.__call__以记录激活或跳过层,允许在不修改 mlx-lm 源代码的情况下进行零开销的每层测量。 - 保留评估: 用于分析的探针与困惑度测试集是分离的,防止了记忆驱动的人工痕迹。
- 测量复合效应: 在推荐任何丢弃方案之前,用块消融验证了单层证据。
- 无需微调: Otter v3 继承了基础模型的所有权重;手术纯粹是结构性的。
对比: Otter v3 与基础模型
| 指标 | Base IQ3_XS (60 层) | Otter v3 Q3_K_M (58 层) |
|---|---|---|
| 大小 | 13.1 GB | 14.1 GB |
| 层数 | 60 | 58 |
| CLI 7/7 带思考 | 7/7 ✓ | 7/7 ✓ |
| 推理速度 (M4 Max) | ~21 tok/s | ~22 tok/s |
| NL2Bash 基准测试 | 见 RESULTS.md | 见 RESULTS.md |
如何复现
python
在任何兼容模型上运行阶段 A
python phase_a.py --model /path/to/gemma-4-31b-it
运行所有阶段
python phase_a.py --model /path/to/model python phase_b.py --model /path/to/model python phase_c.py --model /path/to/model python phase_c2.py --model /path/to/model
打开可视化
open index.html
引用
如果使用本研究或 Otter v3 模型,请引用:
Cisneros, K. (2026). Gemma 4 31B Layer Analysis Study. HuggingFace: KikoCis/gemma4-31b-layer-study




