LLM 内部机制深度破解:通用语言的蛛丝马迹
深度分析 LLM 内部结构和 hacking 技巧,探索 LLM 中的结构规律。对想理解 LLM 原理的开发者有硬核价值。
深度分析 LLM 内部结构和 hacking 技巧,探索 LLM 中的结构规律。对想理解 LLM 原理的开发者有硬核价值。
在进行优化工作之前,我想展示一些新的东西。在第一部分中,三阶段假设——早期层编码、中间层推理、晚期层解码——是从 Base64 观察和热图模式间接推断出来的。这是个有说服力的假说,但我看不到直接的神经结构。我只能看到它的后果。
这一切改变了,要感谢 Evan Maunder,他在阅读第一部分后进行了一个巧妙简洁的实验。他将三个语义相同的句子通过模型处理——一个英文、一个普通话、一个编码为 Base64——并测量了它们在每一层隐藏状态的余弦相似性。结果精确展现了三阶段结构:前几层的快速收敛(编码)、中间部分接近完美的相似性(在格式不可知空间中进行推理)和最后几层的发散(解码回表面形式)。
我想更进一步。Evan 的实验在固定内容的情况下比较了不同语言。但当你同时改变两者会怎样?如果中间层真的在一个通用的"思考空间"中运作,那么两个关于相同主题的句子应该比两个关于不同主题且使用相同语言的句子更相似——即使一个用英文,另一个用中文。
所以我在 Qwen3.5-27B 上设置了一个六向对比。四个输入:英文事实、英文诗歌、中文事实、中文诗歌——都围绕同一主题。然后我计算了每一层汇集隐藏状态的两两余弦相似性,生成了六条曲线:
EN fact: "The process of photosynthesis converts light energy into chemical energy, which is stored in glucose molecules."
Chinese fact (translated): "光合作用将光能转化为化学能,储存在葡萄糖分子中。"
EN poem: "At dusk, the moon pours silver on the tide, and the wind carries a quiet song."
ZH poem (translated): "黄昏时,月亮把银辉洒在潮汐上,风里带着一首安静的歌。"
相同语言、不同内容:EN fact ↔ EN poem、ZH fact ↔ ZH poem
跨语言、相同内容:EN fact ↔ ZH fact、EN poem ↔ ZH poem
跨语言、不同内容:EN fact ↔ ZH poem、EN poem ↔ ZH fact
各层的原始余弦相似性。所有成对在前几层快速收敛。有趣的发散发生在中期到后期栈。
原始绘图已经讲述了一个故事。所有六对成对从中等相似性开始(嵌入层处 0.4–0.6),然后在约第 5 层快速收敛至接近 1.0。贯穿中栈,它们保持高值但开始分离。蓝线(EN poem ↔ ZH poem:不同语言、相同内容)从约第 15 层开始高于红线(EN fact ↔ EN poem:相同语言、不同内容)。模型的内部表示更关注你在说什么,而非你用什么语言说。
聚合数据:
跨语言、相同内容:0.920 平均相似性
相同语言、不同内容:0.882
跨语言、不同内容:0.835
但原始余弦相似性被一个大的共享分量主导——给定层的每个隐藏状态大致位于空间的同一区域(文献中充分记录的"超锥"效应)。为了更清晰地看到结构,我应用了逐层中心化:在每一层减去所有四个输入的均值向量,然后在计算余弦相似性前重新归一化。这去除了"我在第 N 层"的成分,只揭示表示之间的差异。
中心化余弦相似性。移除共享分量后,组织变得鲜明。
现在神经结构毫无歧义。三个阶段:
编码(第 0–5 层)。剧烈波动。模型在做大量工作以归一化根本不同的表面形式。语言身份占主导——相同语言对(红色、棕色)比跨语言对更相似。模型知道它在读英文对比中文,这反映在其表示中。
推理(约第 10–50 层)。蓝线(EN poem ↔ ZH poem)和橙线(EN fact ↔ ZH fact)占主导。这些是跨语言相同内容对。模型已收敛到内容身份远比语言身份重要的表示。相同语言不同内容对(红色、棕色)与跨语言相同内容对呈负相关,所以模型在积极分离"你说了什么"和"你用什么语言说的"。这正是第一部分假设的格式不可知推理空间。
解码(约第 55–64 层)。一切坍缩并重新分化。模型准备发出令牌,需要承诺于特定的语言和格式。跨语言相似性急剧下降。表示再次变为表面特定的。
这是三阶段架构,在单次前向传递中直接可见。编码区域很窄,仅几层。推理区域相当宽广,是 Transformer 栈的大部分。解码区域是一切解开回为语言特定令牌预测的地方。
更重要的是对这篇文章而言:推理区域几乎完美地映射到 RYS 热图显示改进的地方。可以有利地复制的层是模型在其通用内部语言中思考的层。无法复制的层(热图中的蓝色墙)是编码和解码边界。这不是巧合。如果一个层在格式不可知空间中运作,其输入和输出分布足够相似,你可以循环回来而不会出现灾难性的分布失配。如果一个层在做格式特定的工作,循环回来意味着将解码表示馈入期望抽象表示的层,反之亦然。
神经结构预测热图。让我们看看它们。
我会在方法论之前向你展示数据,因为热图就是重点(而且看起来很酷,对吧?)
设置与第一部分相同:对于每个有效的 $(i, j)$ 对,复制第 $i$ 至 $j-1$ 层,运行数学和 EQ 探针,记录相对于未修改模型的增量。红色表示改进。蓝色表示退化。
Qwen3.5-27B 综合(数学 + EQ)增量。最优区域清晰地位于栈的中间。
数学增量。宽泛的中栈提升,边缘处有清晰的衰减。
EQ 增量。结构更明确——有用区域更紧凑且边界更清晰。
特征非常明显:即使在现代 27B 模型上,Transformer 栈的中间也包含可以有利地重新遍历的块。边界与 Qwen2-72B 不同(如预期,因架构和训练不同),但通用原则成立:中栈存在相干电路,运行它们两次使模型明显更好。
以下是单块赢家:
最好的单个块 (24, 35) 增加了 11 层(开销 +17%),显著提升了数学和情商能力。但注意最佳的情商配置更紧凑(仅在 (29, 34) 处有 5 层),以不到一半的开销获得了接近的综合分数。这暗示了我们稍后要探讨的内容:效率前沿奖励精度而非规模。
在第 1 部分中,我展示了重复单个层几乎没有帮助。关键发现之一是中间层充当电路——多层单元需要作为一个整体执行。复制七步方案中的一个步骤并不能获得太多收益。
但"几乎从不"在这句话中承担了很大的分量。有了更强大的模型和更多计算,我想知道是否存在任何单层重复可以可靠地移动指针,以及当你多次重复单个层时配置图的样子。
所以我运行了一个 repeat-x8 扫描:对于 64 层堆栈中的每一层,尝试重复 2×、3×、4×,一直到 8×。这是 64 × 7 = 448 个配置,针对相同的数学和情商探针进行评分。
EQ delta for single-layer repeats (x2 through x8). The x-axis is the layer index; y-axis is the repeat count.
Math delta for the same sweep. Note how different the landscape looks.
该扫描的基线分数:
两件事脱颖而出。首先,单层重复可以改进模型——layer10_x3 以最少的开销获得了扎实的数学提升。其次,配置图是不对称的:数学可以显著改进,而情商收益很小且不稳定。最佳的情商重复实际上会损害数学。
在单块结果之后,下一个显而易见的问题是:如果我重复一个块两次呢?如果你组合多个块呢?也许一个块提升数学,另一个块提升情商,两者结合可以同时实现两者。
暴力穷举是无望的。即使只有两个块,组合空间也会爆炸。所以我使用了波束搜索:从最好的单个块开始,然后通过尝试所有可能的第二个块贪心地扩展,保留最佳候选项,再次扩展。(这当然包括多次重复同一个块,这是一个备受要求的功能。)
波束搜索参数:
Beam width: 24 (keep the 24 best candidates at each depth)
Starting depth: 3 (begin with the top 3 single-block results)
Completed depths: 3, 4, 5, 6
Candidates evaluated: 3,024
Stopping criterion: 14-hour compute budget exhausted
Max extra layers: capped at 56 (to prevent absurd configurations where the model is more duplicate than original)
每个候选都被完整评估:加载重新分层的模型,运行两个探针集,记录分数。这个阶段没有代理预测——这些都是实测的。
波束搜索的最佳候选:
波束搜索确实找到了比单块搜索更强的绝对改进。开销 ≤20% 的最佳候选组合了两个块(一个在中堆栈,一个更高),获得了 +0.2210 的综合改进,超过了最佳单块的 +0.2104,同时使用更少的开销(12.5% vs 17.19%)。
但波束搜索也暴露了成本问题。最佳整体候选使用了四个组合块,开销为 +48.44%,相比两块版本的改进只是微乎其微。收益是真实的,但呈次线性:你不会从四个块中获得四倍的收益。这些电路相互作用,并非总是建设性的。有些组合相互抵消。其他则相互干扰。
教训:组合有效,但不是累加的。每个额外块的收益都比前一个少,而开销线性增长。对于实际部署,你需要最少数量的块,使你超过你关心的性能阈值。
波束搜索有效但昂贵。每次评估都意味着加载重新分层的模型并运行两个探针集,这每个配置需要数分钟。在 3,024 个候选中,这已经逼近单个一夜之间运行的极限。
为了更广泛地探索空间,我训练了一个代理模型:一个廉价的预测器,估计一个配置的表现如何,这样我们可以对数百万候选进行排列,只对最有希望的候选进行基准测试。
这个想法很简单。我们已经从完整扫描、波束搜索和重复扫描中获得了数千个测量的 $(i, j)$ 结果。每个测量行都是一个训练示例:配置参数进去,数学改进和情商改进出来。在这些对上训练一个快速模型,并用它来评分我们没有测量过的配置。
我使用了 XGBoost(梯度提升树),这很完美:训练快速,预测快速,很好地处理了描述层配置的结构化表格特征。
Total measured rows: 4,643
Train/holdout split: 4,411 train / 232 holdout (5%)
Features: encoded from the configuration spec (which layers are repeated, how many times, block boundaries, etc.)
Holdout validation (Spearman rank correlation):
综合指标上 0.93+ 的 Spearman 相关性意味着代理模型在排列配置时非常出色——这正是我们需要的。它不必预测确切的分数;它只需要知道配置 A 可能比配置 B 更好。数学相关性较低(0.79),这是合理的:数学性能有更多噪声,取决于块边界的更微妙特性。
有了训练好的代理模型,我生成了 2,000,000 个候选配置——跨越单块、多块组合、稀疏重复和各种奇异排列。代理模型在几分钟内对所有这些进行了评分。
应用大小和合理性过滤后:
Candidates scored: 2,000,000
Accepted after filters: 430,464
Top candidates fully benchmarked: 100
随后测量的最高代理排列候选:
Config: sparse repeat motif around layers 19/43/51
Extra layers: +3 (+4.69%)
这很有趣——仅有三个单独层的稀疏重复,不是连续块,但仍然以不到 5% 的开销产生有意义的改进。代理模型找到了波束搜索不会找到的东西:一个正是因为最小化而表现良好的配置。
重要警告:代理模型仅用于排列。下面比较表中的每个数字都来自实际测量的运行,不是代理预测。
到此为止,所有搜索——完整扫描、波束、重复、代理——都使用了原始的小探针集:16 个数学问题和 16 个情商场景。这些是为了速度而设计的,它们达到了这个目的。但 16 个问题太少了,无法做出最终声明。幸运或不幸的问题抽样可能会改变排列。
对于最终比较,我构建了更大的验证集:
Math120: 120 questions with a deliberate mix of difficulty types:
60 square root questions
30 multiplication questions
30 cube root questions
这比原始的 16 更平衡,原始的 16 大量倾向于立方根。不同的操作会对模型的数值直觉的不同方面施加压力,更大的样本量可以平滑噪声。
EQ140: 139 first-pass EQ-Bench scenarios (the file says 140, but one was filtered during preprocessing — a reminder that data is always messier than you'd like). These span a wider range of social situations, emotional states, and complexity levels than the original 16.
从这一点开始的工作流程是:
使用小探针进行快速搜索(完整扫描、波束、重复、代理)。
列出每种方法的最佳候选。
在 Math120 + EQ140 上重新测量所有内容。
仅比较重新测量的结果。
这意味着搜索阶段和验证阶段使用不同的数据集。小探针找到了候选;大探针对它们进行了判断。这与使用你从未训练过的验证集的逻辑相同,以及原始 RYS-XLarge 结果可信的原因相同,因为我从未对排行榜基准进行优化。
对于最终比较,我取了每种方法系列的最佳 100 个候选:
Full scan (contiguous single blocks): 100
Beam search (multi-block compositions): 100
Repeat-x8 (single-layer repeats): 97 (a few duds fell below threshold)
Surrogate-measured (top surrogate picks, fully benchmarked): 100
这是 397 个配置,都在共享的 Math120 + EQ140 验证集上重新测量。然后我计算了 Pareto 前沿:一组配置的集合,其中没有其他配置既更好又更小。
在所有那些工程之后——波束搜索、代理模型、200 万候选、更大的验证集——Pareto 前沿有四个点。所有四个都来自连续块系列:
这对我来说是关键结果:在用我所有的搜索方法攻击问题之后,中堆栈中的干净连续块仍然主导大小/性能前沿。
注:单独重复第 33 层既是一个块,也是单个层的重复,但说它是一个块能让故事更清楚,可以吧?
看看这个进展过程。单独添加第 33 层以较低的成本(增加 1.5% 的计算量)获得大部分 EQ 提升(+0.0945)。扩展到第 31–33 层会增加一些收益。一直扩展到 26–33 层会获得最佳的绝对分数,但边际收益明显递减。在计算开销增加 10 倍的情况下,EQ 增量几乎从 +0.0945 移动到 +0.1009。
这正是电路假设所预测的。在第 30–34 层附近的某个地方存在一个执行完整推理操作的核心计算单元。复制它给模型第二次通过该操作的机会。让块更大能捕获一些邻近的上下文,这在边际上有帮助,但核心电路是小型且定义明确的。
值得注意的是帕累托前沿缺少的东西:多块束搜索组合和异常替代选择。它们可以产生强大的原始分数,但开销比简单的连续块要高,而获得的好处相同。复杂性在效率前沿不值得。话虽如此,这可能对模型扩展和持续微调非常出色。你已经通过添加正确类型的层来准备模型优化"思考",我认为这是一个适合 Frontier Labs 尝试的模型(如果不是,至少用一些 Nvidia 装备赞助我)。
分析完成后,我构建了 RYS 变体并将其上传到 HuggingFace。这些使用上表中的帕累托最优配置。
S 适用于想要以近乎零开销获得最大 EQ 提升的人。用 M 和 L 进行试验以找到你偏好的最佳性能和成本平衡。XL 适用于有计算资源且想要最强绝对分数的场景。
这些是常规的 HuggingFace 权重,但我将与 TurboDerp 合作构建具有基于指针的层复制的 Exllama v3 模型:重复的层与其原始层共享权重。参数本身不会消耗额外的 VRAM——你只需为额外前向传递的计算时间和 KV 缓存付出额外代价。这意味着你可以在运行基础模型的相同硬件上运行 RYS-Qwen3.5-27B!敬请期待……
如第 1 部分所讨论的那样,我认为交接点(模型循环回到早期层的地方)是残余低效率的主要来源。针对仅那些交接层的 LoRA 微调应该进一步提高性能,而不会将基于指针的复制转换为真实副本。我自己还没有做这个,但如果 Qwen2-72B 模式成立,社区会从这里继续。
扫描管道、探测数据集和模型构建脚本可在以下位置获得:
Scanner:$(i, j)$ 扫描管道,包括数学和 EQ 探测评估装置
Probes:本工作中使用的所有数据集(math_16、math_120、EQ_16、EQ_140)
Beam search:多块组合搜索
Surrogate:XGBoost 训练、候选生成和 top-k 基准测试管道
Model builder:给定配置规范从任何 HuggingFace 模型生成 RYS 变体的脚本
Heatmap generation:脑扫描绘图代码
核心依赖是用于量化推理的 ExLlamaV3。大部分扫描是用 FP8 量化模型完成的,这些模型很好地适配了我的 Hopper 系统上的 192GB HBM3。对于原始的 Qwen2-72B 工作,我在双 4090 GPU 上使用了 ExLlamaV2——管道在消费级硬件上也能工作,只是需要更长时间。
对于 Qwen3.5-27B 具体而言:
如果你想要低开销和可靠的收益,中栈单个连续块仍然是最好的第一步。(33, 34) 以几乎零开销获得大部分收益。
稀疏单层重复是真实且有用的低成本替代方案,特别是对于数学密集型工作负载。
组合许多主题可以产生强大的原始分数,但开销快速增加,交互作用呈非线性。
帕累托前沿是清晰的。一旦考虑到规模,连续块占据主导地位。
更广泛地说,这项工作证实了第 1 部分的建议:Transformer 推理被组织成离散的功能电路,这种组织是一个通用属性,不是一个模型或一代模型的人工制品。电路存在于 Qwen3.5-27B 中,就像在 Qwen2-72B、Llama-3-70B 和 Phi-3 中一样。边界不同。原理不变。
该方法与微调正交,与量化正交,与你正在进行的任何提示工程正交。这是免费午餐,或者至少是一个非常便宜的小食。模型通过更长时间地思考,使用它已有的推理电路而变得更聪明。
更多架构已在开发中。Hopper 仍在处理 MiniMax M2.5。敬请关注!
@article{ng2026rysii,
title = {LLM Neuroanatomy II: Modern LLM Hacking and hints of a Universal Language?},
author = {Ng, David Noel},
year = {2026},
month = {March},
url = {https://dnhkng.github.io/posts/rys-ii/}
}
订阅我关于 AI 硬件、生物物理学或随机优化技巧的下一篇文章,直接送至你的收件箱。