<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Transformer | Yadong's Blog</title><link>https://dingyadong.top/tags/transformer/</link><atom:link href="https://dingyadong.top/tags/transformer/index.xml" rel="self" type="application/rss+xml"/><description>Transformer</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 22:00:00 +0800</lastBuildDate><image><url>https://dingyadong.top/media/icon.svg</url><title>Transformer</title><link>https://dingyadong.top/tags/transformer/</link></image><item><title>视频号推荐超长序列技术演进：从端到端到 Cross-Mask Transformer</title><link>https://dingyadong.top/posts/015_weixin_channel_ultralong_seq/</link><pubDate>Mon, 13 Apr 2026 22:00:00 +0800</pubDate><guid>https://dingyadong.top/posts/015_weixin_channel_ultralong_seq/</guid><description>
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;本文基于微信视频号技术团队于 2026 年 3 月发布的技术分享《视频号推荐超长序列技术演进》整理而成。这是视频号推荐技术公众号的第一期内容，系统性地回顾了视频号从 2022 年至 2025 年在超长用户行为序列建模上的探索历程，覆盖工程优化、稀疏感知结构、多域暴力建模三大阶段。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="0-为什么超长序列是推荐系统最重要的-scaling-方向"&gt;0. 为什么超长序列是推荐系统最重要的 Scaling 方向&lt;/h2&gt;
&lt;p&gt;用户行为序列提供了对用户兴趣最直接、最明确的描述，是工业推荐模型中最重要的特征来源。&lt;strong&gt;对序列长度的扩展，是推荐模型最清晰的 Scaling 方向之一。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;早期行业普遍采用以 &lt;strong&gt;SIM / TWIN&lt;/strong&gt; 为代表的两阶段范式：先用轻量的 GSU（General Search Unit）从超长序列中检索出最相关的 Top-K，再用精细的 ESU（Exact Search Unit）做精确建模。这套范式在算力约束下取得了巨大成功。&lt;/p&gt;
&lt;p&gt;然而，两阶段范式存在固有缺陷：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GSU 与 ESU 的表征一致性天然存在 gap&lt;/strong&gt;，两个模块的优化目标并不完全对齐&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;剪枝丢失信息&lt;/strong&gt;：GSU 的检索本质上是一次有损压缩，重要的长尾兴趣信号可能被过滤掉&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;视频号推荐技术团队从 &lt;strong&gt;2022 年&lt;/strong&gt;开始选择另一条技术路线：&lt;strong&gt;全序列端到端建模&lt;/strong&gt;，在这个过程中积累了大量宝贵经验。&lt;/p&gt;
&lt;h3 id="四阶段演进脉络"&gt;四阶段演进脉络&lt;/h3&gt;
&lt;div class="mermaid-wrapper"&gt;
&lt;div class="mermaid" style="background: transparent;"&gt;
timeline
title 视频号超长序列技术演进（2022-2025）
2022 : SIM 两阶段建模
: 行业验证的基础范式
2022-2023 : 端到端全序列建模
: 工程攻坚 + 联训策略
2023-2024 : 轻量型序列结构
: 稀疏感知 Efficient Transformer
2024-2025 : 暴力型序列结构
: Cross-Mask Transformer 多域感知
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;值得注意的是：文中涵盖的时间跨度非常长，早期方案是在 A100/H20 供应有限的算力约束下设计的折中方案。随着算力丰富，后期暴力方案逐步替代早期方案，但&lt;strong&gt;在算力受限的场景下，早期方案仍具有重要参考价值&lt;/strong&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="1-端到端全序列建模打通数据与计算链路"&gt;1. 端到端全序列建模：打通数据与计算链路&lt;/h2&gt;
&lt;p&gt;端到端长序列的核心思路是：将万级长度的完整用户行为序列直接引入计算图，以候选视频为 Query 对整个序列做 Target Attention（TA）。挑战主要来自&lt;strong&gt;算力、显存、通信、数据链路&lt;/strong&gt;四个层面。&lt;/p&gt;
&lt;h3 id="11-工程优化让万级序列跑起来"&gt;1.1 工程优化：让万级序列跑起来&lt;/h3&gt;
&lt;h4 id="数据链路优化"&gt;数据链路优化&lt;/h4&gt;
&lt;p&gt;万级序列使单条样本体积急剧膨胀。关键洞察：&lt;strong&gt;同一用户相邻时刻的序列快照，绝大部分内容相同，仅头尾少量数据变化&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;基于此，设计了&lt;strong&gt;内容哈希分块存储方案&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;按视频 ID 哈希值切分序列为若干块&lt;/li&gt;
&lt;li&gt;相同内容的块跨请求复用&lt;/li&gt;
&lt;li&gt;配合增量写入 + 按需读取，大幅降低存储和带宽开销&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="卡间通信优化"&gt;卡间通信优化&lt;/h4&gt;
&lt;p&gt;在 GPU 同步训练架构下，每步都需跨机交换 embedding 参数，而万级序列使得每条样本包含数万条 feed，跨机通信量随序列长度线性增长。&lt;/p&gt;
&lt;p&gt;两层优化策略：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;通用通信优化&lt;/strong&gt;：推荐场景下不同用户消费内容高度重叠，利用机内 NVLink 高带宽先完成机内特征去重，再跨机传输，并将相同维度 embedding 合并通信（减少碎片化小包）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;针对 TA 结构的分布式 Attention&lt;/strong&gt;：TA 结构下，序列内部元素无需相互交互，各卡可独立计算局部 attention 后合并结果：&lt;/p&gt;
&lt;div class="mermaid-wrapper"&gt;
&lt;div class="mermaid" style="background: transparent;"&gt;
graph LR
Q["候选 Q\n(较小)"] --&gt;|"分发到各卡"| GPU1 &amp; GPU2 &amp; GPU3
GPU1 --&gt;|"本地 KV 计算局部 attention"| Pool1["局部 Pooling"]
GPU2 --&gt;|"本地 KV 计算局部 attention"| Pool2["局部 Pooling"]
GPU3 --&gt;|"本地 KV 计算局部 attention"| Pool3["局部 Pooling"]
Pool1 &amp; Pool2 &amp; Pool3 --&gt;|"合并结果向量"| Output["最终输出"]
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;这种设计使得&lt;strong&gt;跨机通信量不再由序列长度主导&lt;/strong&gt;，在万级序列长度下可大幅降低训练成本。&lt;/p&gt;
&lt;h4 id="显存优化"&gt;显存优化&lt;/h4&gt;
&lt;p&gt;标准做法中，TA 计算需要 lookup 出序列中每个元素的 embedding，组装成 &lt;code&gt;[B, L, D]&lt;/code&gt; 的 KV 矩阵，显存开销随序列长度线性增长。&lt;/p&gt;
&lt;p&gt;解决方案：&lt;strong&gt;低显存 TA 算子&lt;/strong&gt;，将 KV embedding 的 lookup 和 attention 计算合并为一个算子，&amp;ldquo;边查边算&amp;rdquo;，不再取出完整 KV 矩阵。&lt;/p&gt;
&lt;h3 id="12-端到端与-sim-联训用-1k-逼近长序列收益"&gt;1.2 端到端与 SIM 联训：用 1K 逼近长序列收益&lt;/h3&gt;
&lt;p&gt;实验中发现了一个关键现象：&lt;strong&gt;在端到端建模下，虽然序列输入很大，但实际激活的 key 数量非常少&lt;/strong&gt;（采用 element-wise ReLU 激活函数，activation score &amp;gt; 0 才被激活）。有相当比例的样本，激活数量甚至小于 SIM GSU 设置的检索数量。&lt;/p&gt;
&lt;p&gt;这意味着：&lt;strong&gt;端到端长序列的收益逻辑，并不主要来自序列更长带来的信息增量，而更可能来自端到端训练带来的表征质量提升。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;基于这一洞察，设计了联训方案：&lt;/p&gt;
&lt;div class="mermaid-wrapper"&gt;
&lt;div class="mermaid" style="background: transparent;"&gt;
graph TB
subgraph 共享层
Emb["底层 Embedding 表征\n(共享参数)"]
end
subgraph SIM路径
Emb --&gt; GSU["GSU 检索 5K"]
GSU --&gt; ESU["ESU 精确建模"]
end
subgraph 端到端路径
Emb --&gt; Full["端到端全序列 TA\n(1K 长度)"]
end
ESU &amp; Full --&gt; Output["模型主体"]
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;实验结论&lt;/strong&gt;：在 5K 长度 SIM 序列的基础上，引入 1K 长度的端到端全序列，即可取得绝大部分更长全序列的收益。这在算力资源受限时是 ROI 极高的方案。&lt;/p&gt;
&lt;h3 id="13-user-level-样本组织"&gt;1.3 User Level 样本组织&lt;/h3&gt;
&lt;p&gt;端到端长序列的计算成本主要集中在 user 侧（序列 IO、多特征 embedding 获取、复杂序列建模），自然想到对同一用户的多个样本进行 user-level 聚合以复用 user 侧计算。&lt;/p&gt;
&lt;p&gt;然而，在充分优化的 pointwise 数据流基础上进行聚合，往往引入巨大的 UAUC 折损（完播目标 UAUC 折损 0.3%），这是一个巨大的障碍。后续在第 3.3.2 节会详细介绍最终攻克 user level 数据流的方案。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="2-轻量型序列结构稀疏感知-efficient-transformer"&gt;2. 轻量型序列结构：稀疏感知 Efficient Transformer&lt;/h2&gt;
&lt;p&gt;在端到端长序列的基础上，进一步尝试引入 Transformer 结构来捕捉推荐场景的高阶信息。然而，实验显示&lt;strong&gt;在推荐场景直接上标准 Transformer 的 ROI 并不高&lt;/strong&gt;：平方计算开销高，相比简单 TA 增益有限。&lt;/p&gt;
&lt;p&gt;问题在于：如何对长序列 Transformer 降本增效？&lt;/p&gt;
&lt;p&gt;将推荐场景的 Transformer 结构分解为两个子问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;候选与序列间交互&lt;/strong&gt;（Candidate-Sequence Interaction）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;序列内部元素交互&lt;/strong&gt;（Intra-Sequence Element Interaction）&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="21-候选与序列间交互"&gt;2.1 候选与序列间交互&lt;/h3&gt;
&lt;p&gt;探索了两种交叉模式：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;模式&lt;/th&gt;
&lt;th&gt;结构&lt;/th&gt;
&lt;th&gt;实验结论&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;双向交叉&lt;/td&gt;
&lt;td&gt;序列→候选（attention）+ 候选→序列（concat + DNN）&lt;/td&gt;
&lt;td&gt;成本较高&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;单向交叉&lt;/td&gt;
&lt;td&gt;仅序列→候选（attention）&lt;/td&gt;
&lt;td&gt;与双向效果相近，成本更低&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;实验显示序列→候选的交叉重要性占主导地位&lt;/strong&gt;，最终采用单向感知结构（与 STCA 类似），在视频号多个场景均体现出良好的通用性。&lt;/p&gt;
&lt;h3 id="22-序列内部元素交互三种稀疏感知"&gt;2.2 序列内部元素交互：三种稀疏感知&lt;/h3&gt;
&lt;p&gt;通过分析短视频场景行为序列上的 Transformer attention 规律，发现每个序列元素有三种典型的感知倾向：&lt;/p&gt;
&lt;div class="mermaid-wrapper"&gt;
&lt;div class="mermaid" style="background: transparent;"&gt;
graph LR
subgraph "序列元素的感知模式"
Item["序列元素 i"] --&gt;|"感知相似 (2.2.1)"| Similar["embedding 相似的视频\n(同质内容)"]
Item --&gt;|"感知相关 (2.2.2)"| Related["聚类层面相关的视频\n(搭配兴趣)"]
Item --&gt;|"感知近邻 (2.2.3)"| Neighbor["时序上的前序邻居\n(即时上下文)"]
end
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 id="221-感知相似"&gt;2.2.1 感知相似&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;目标&lt;/strong&gt;：对于序列中每个元素，检索出底层 embedding 相似的视频，提取用户在相似视频上的高阶序列信息。&lt;/p&gt;
&lt;p&gt;朴素方案（Top-k 相似视频做 Transformer）存在问题：由于 top-k 集合内视频相似度过高，attention 产生 &lt;strong&gt;over-smooth&lt;/strong&gt; 问题，各 token 表征趋于一致，丧失区分度。&lt;/p&gt;
&lt;p&gt;最终方案：&lt;strong&gt;Top-k All-concat DNN + 余弦相似度压缩&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;关键技巧：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;利用高相似度序列的&lt;strong&gt;低秩性质&lt;/strong&gt;，将各视频 embedding 映射到以候选视频为轴的一维子空间&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;&amp;lt;cosine_similarity, side_info&amp;gt;&lt;/code&gt; 序列逼近原始序列信息，大幅压缩 DNN 输入维度（信息损失很小）&lt;/li&gt;
&lt;li&gt;按 &lt;code&gt;cos_sim&lt;/code&gt; 对序列排序，使 DNN 输入结构化，提升训练效果&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="222-感知相关"&gt;2.2.2 感知相关&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;相关 vs 相似&lt;/strong&gt;：相似是直接的 embedding 相近，而相关是&lt;strong&gt;簇层面的相似&lt;/strong&gt;——两个视频属于不同兴趣簇，但这些簇之间经常共现（例如&amp;quot;搭配&amp;quot;关系）。&lt;/p&gt;
&lt;p&gt;建模方案：&lt;strong&gt;基于 attention 的隐式聚类（参考 Set Transformer）&lt;/strong&gt;&lt;/p&gt;
&lt;div class="mermaid-wrapper"&gt;
&lt;div class="mermaid" style="background: transparent;"&gt;
graph LR
Seq["原始序列"] --&gt;|"全局 Query 做 Cross-Attention"| Cluster["兴趣聚类中心\n(隐式聚类)"]
Cluster --&gt;|"Self-Attention\n建模聚类中心间相似度"| ClusterSA["聚类间相关性"]
ClusterSA --&gt;|"以原序列为 Q\n做 Cross-Attention"| Output["还原到原序列空间"]
Seq --&gt;|"作为 Query"| Output
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 id="223-感知近邻"&gt;2.2.3 感知近邻&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;目标&lt;/strong&gt;：刻画用户和环境的即时状态，每个 item 感知其前序近邻上下文。&lt;/p&gt;
&lt;p&gt;简单的 sliding window SA 有收益但提升不够大，需要强化近邻上下文的&lt;strong&gt;捕捉方式&lt;/strong&gt;和&lt;strong&gt;利用方式&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;上下文捕捉&lt;/strong&gt;：在近邻窗口内显式聚合并构造多维 context feature，包含：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;视频 id、作者、虚拟类目等基础特征&lt;/li&gt;
&lt;li&gt;时间窗内的统计特征（平均长度、平均播放时长、完播次数、快划次数、时间差等）&lt;/li&gt;
&lt;li&gt;多个不同宽度的窗口并行，捕捉多尺度上下文信息&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;可解释性验证&lt;/strong&gt;：实验表明，用户在&amp;quot;当前视频和历史视频上的 label 一致率&amp;quot;随视频相似度和上下文相似度的共同提升而显著提升，证明 context feature 捕捉到了真实的兴趣信号。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;上下文利用&lt;/strong&gt;：在 TA 中显式引入视频间的 context 相似度来微调 attention score：&lt;/p&gt;
$$\text{TA score}' = \alpha \cdot \text{Sim}(q, k) + (1-\alpha) \cdot \text{ContextSim}(c_q, c_k)$$&lt;p&gt;&lt;strong&gt;核心 insight&lt;/strong&gt;：用户对目标视频展示兴趣，不但依赖是否交互过类似视频，&lt;strong&gt;还依赖两个视频的上下文是否一致&lt;/strong&gt;。只有视频内容和上下文环境同时匹配，才是高置信度的兴趣信号。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="3-暴力型序列结构cross-mask-transformer-多域感知"&gt;3. 暴力型序列结构：Cross-Mask Transformer 多域感知&lt;/h2&gt;
&lt;p&gt;轻量型结构取得了显著效果，但为什么&lt;strong&gt;理论上能力完备的标准 Transformer 在推荐场景表现不及预期&lt;/strong&gt;，而各类先验设计的稀疏感知结构却相对有效？&lt;/p&gt;
&lt;h3 id="31-推荐与文本任务的本质差异"&gt;3.1 推荐与文本任务的本质差异&lt;/h3&gt;
&lt;p&gt;通过深入分析，发现二者在两个维度存在显著差异：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;差异 1：输入形式&lt;/strong&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;任务&lt;/th&gt;
&lt;th&gt;序列形式&lt;/th&gt;
&lt;th&gt;特征类型&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;NLP（文本）&lt;/td&gt;
&lt;td&gt;1D 序列&lt;/td&gt;
&lt;td&gt;单一 token&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;推荐&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2D 序列&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;多域异构特征（id、作者、类目、行为等）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;标准 Transformer 处理推荐序列时，通常在 attention 前对多特征做 pre-merge（拼接+投影），这个过程导致&lt;strong&gt;信息混杂&lt;/strong&gt;，且序列特征间的高阶交叉结构缺失。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;差异 2：任务性质&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;NLP 任务需要捕捉语法关系和语义逻辑，训练目标的&lt;strong&gt;牵引能力强&lt;/strong&gt;，MHA 有足够的梯度信号自发分离出有意义的 head。&lt;/p&gt;
&lt;p&gt;推荐任务需要捕捉&lt;strong&gt;稀疏的高阶 pattern&lt;/strong&gt;（如&amp;quot;完播过同作者视频的用户对该作者的新视频也感兴趣&amp;quot;），目标的牵引能力弱，MHA 很难自动学到所需的细粒度 pattern。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;实验验证&lt;/strong&gt;：显式添加一个 action mask head（只关注完播行为的子序列），比增加同等数量的标准 head 效果更好，说明标准 MHA 在弱信号下无法自动学到这类 pattern。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="32-从-1d-到-2dcross-mask-transformer"&gt;3.2 从 1D 到 2D：Cross-Mask Transformer&lt;/h3&gt;
&lt;p&gt;针对上述问题，放弃 pre-merge，设计了专为多域序列优化的 &lt;strong&gt;Cross-Mask Transformer&lt;/strong&gt;，通过 &lt;strong&gt;Masking&lt;/strong&gt; 和 &lt;strong&gt;Crossing&lt;/strong&gt; 两种机制实现域内交叉和域间交叉。&lt;/p&gt;
&lt;h4 id="2d-序列的两种交叉类型"&gt;2D 序列的两种交叉类型&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 特征域 1 特征域 2 特征域 3
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;item_1 [ id_1 ][ cat_1 ][ act_1 ] ← 横向：域间交叉
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;item_2 [ id_2 ][ cat_2 ][ act_2 ]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;item_3 [ id_3 ][ cat_3 ][ act_3 ] ↕ 纵向：域内交叉
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;域内交叉（Intra-Domain）&lt;/strong&gt;：单个域内序列元素之间的交叉，挖掘与该域绑定的稀疏高阶特征（如&amp;quot;只看完播视频中的同作者 pattern&amp;quot;）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;域间交叉（Inter-Domain）&lt;/strong&gt;：序列版本的特征交叉，不只是单个元素特征间的交叉，还考虑序列的整体性。&lt;/p&gt;
&lt;h4 id="masking-机制"&gt;Masking 机制&lt;/h4&gt;
&lt;p&gt;定义两种 mask：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Vertical Mask&lt;/strong&gt; $M_v^f$：在 attention map 的行方向上，筛选满足特征域 $f$ 条件的视频（如&amp;quot;action=完播&amp;quot;的行）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Horizontal Mask&lt;/strong&gt; $M_h^f$：在 embedding 维度上，从 concat 特征中提取特征域 $f$ 对应的 embedding&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="crossing-机制"&gt;Crossing 机制&lt;/h4&gt;
&lt;p&gt;三步操作实现域内高阶交叉：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;QK 交叉&lt;/strong&gt;：对每个特征域 $f$，用 $M_h^f$ 提取出 Q 和 K，计算域内的 attention map $A^f$&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Attention Map Masking&lt;/strong&gt;：对 $A^f$ 施加 $M_v^f$，只保留满足条件的元素交叉&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;V 交叉&lt;/strong&gt;：用 $M_h^f$ 提取出 V，与 masked $A^f$ 相乘得到域内交叉结果&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;最终实现了 $Q^f$、$K^f$、$V^f$ 之间的高阶交叉：&lt;/p&gt;
$$\text{Output}^f = \text{softmax}\left(\frac{Q^f (K^f)^T}{\sqrt{d}} \odot M_v^f\right) V^f$$&lt;h4 id="整体结构"&gt;整体结构&lt;/h4&gt;
&lt;div class="mermaid-wrapper"&gt;
&lt;div class="mermaid" style="background: transparent;"&gt;
graph TB
subgraph 输入
Seq["序列 embedding\n每行=一个视频的多特征concat"]
Cand["候选 embedding"]
end
subgraph "Cross-Mask Transformer"
subgraph "一阶交叉（TA）"
TA["无参 Target Attention\n(候选→序列)"]
end
subgraph "域内交叉（SA）"
SA1["Vertical Mask SA\n特征域1: 视频id (全mask)"]
SA2["Vertical Mask SA\n特征域2: 完播action mask"]
SA3["Multi-window context SA"]
end
subgraph "二阶交叉（MHA）"
MHA["含参 MHA\n(TA结果 + SA结果)"]
end
end
Seq &amp; Cand --&gt; TA
Seq --&gt; SA1 &amp; SA2 &amp; SA3
TA &amp; SA1 &amp; SA2 &amp; SA3 --&gt; MHA
MHA --&gt;|"concat压缩"| Final["返回模型主体"]
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="33-工业落地三层优化让暴力结构可行"&gt;3.3 工业落地：三层优化让暴力结构可行&lt;/h3&gt;
&lt;h4 id="331-计算与显存优化"&gt;3.3.1 计算与显存优化&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;计算共享&lt;/strong&gt;：多个 attention head 共享底层 attention map，对同一 attention map 施加不同的 mask，5 个 attention head 实际只需计算 2 套 attention map，大幅降低计算量。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;稀疏化交叉&lt;/strong&gt;：通过参数 $\lambda_{f_i, f_j}$ 标记哪些特征域间的交叉是重要的（不是所有两两交叉都保留）。实践中保留的关键交叉：视频id、multi-window context feature、完播行为、互动行为。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;零梯度外推&lt;/strong&gt;：Cross-Mask Transformer 在基线 TA 的基础上新增，二者的视频表征处于同一语义空间。因此让 TA 产生梯度训练底层 embedding，Cross-Mask Transformer 关闭对底层的梯度，转化为&lt;strong&gt;纯前向过程&lt;/strong&gt;，消除多套大尺寸梯度矩阵。这个设计有很好的物理含义，且在效果几乎不折损的情况下显著降低训练开销。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;零显存计算&lt;/strong&gt;：参考 FlashAttention 的分块计算思路，通过分块方式减少 HBM 通信，将计算尽量放在访问速度极快的 SRAM 中完成。&lt;/p&gt;
&lt;h4 id="332-user-level-数据流"&gt;3.3.2 User Level 数据流&lt;/h4&gt;
&lt;p&gt;经过深入分析，样本聚合的折损主要来自三个因素：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;折损来源&lt;/th&gt;
&lt;th&gt;原因&lt;/th&gt;
&lt;th&gt;视频号特殊性&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;样本延迟增大&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;listwise 数据流天然有更大的延迟&lt;/td&gt;
&lt;td&gt;视频号一刷曝光量约 12 个视频，高于行业均值，延迟问题更严重&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;长尾样本丢弃&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;超长视频样本回流慢，通常被丢弃&lt;/td&gt;
&lt;td&gt;导致学到的分布有偏，长视频被低估&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;训练更新次数减少&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;user level 聚合导致 user 子图更新次数减少&lt;/td&gt;
&lt;td&gt;折损最大的因素&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;解决方案 1 - 多时间窗口&lt;/strong&gt;：将固定条数窗口改为 10 分钟时间窗口，更灵活地平衡聚合程度与实时性。这同时自然解决了长尾丢弃问题（先回流前序视频，等待长视频回流）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案 2 - 随机延迟消除数据穿越&lt;/strong&gt;：10 分钟窗口导致播放时长 &amp;gt; 10min 的样本不会出现在同一刷中，回流顺序隐式泄露 label 信息。解决方法：针对 &amp;gt; 90s 的视频引入随机延迟：&lt;/p&gt;
$$t \sim \mathcal{U}(\min(\text{视频长度}, 10\text{min}), 20\text{min})$$&lt;p&gt;&lt;strong&gt;解决方案 3 - ListCE Loss&lt;/strong&gt;：相比 pointwise loss，listwise loss 直接优化分类面，优化效率更高，且形式更匹配 user level 聚合样本：&lt;/p&gt;
$$\mathcal{L}_{\text{ListCE}} = -\sum_i y_i \log \frac{\exp(f_i)}{\sum_j \exp(f_j)}$$&lt;p&gt;值得一提：&lt;strong&gt;ListCE 不但能提升 UAUC，还能同等程度提升 AUC&lt;/strong&gt;，说明并非 hack 了指标，而是真实地学到了更好的表征。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解决方案 4 - Muon 优化器&lt;/strong&gt;：Muon 优化器对 dense 参数梯度做主成分均衡——对梯度 $G = U\Sigma V^T$ 做 SVD，新梯度为 $UV^T$，缺秩梯度强制变换为满秩状态，大幅提升 one-epoch 数据流下的单步迭代效率。&lt;/p&gt;
&lt;p&gt;实践中遇到训练不稳定（NaN）问题：精排模型参数形态差异巨大，Muon 的梯度 RMS 与参数尺寸相关，导致大小参数更新幅度差距悬殊。解决方案：将原生缩放因子调整为与尺寸无关的常数，配合 Adam 热启 → Muon 接棒的训练策略。&lt;/p&gt;
&lt;h4 id="333-工程部署"&gt;3.3.3 工程部署&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;混合精度&lt;/strong&gt;：bf16/fp32 混合精度降低推理开销，提升 QPM&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多域算子&lt;/strong&gt;：实现了计算共享 + 分块运算的 cross-mask transformer 专用算子&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Muon 算子优化&lt;/strong&gt;：将 Muon 的梯度计算分配到不同 GPU，避免多卡对 dense 梯度的重复计算&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="4-实验收益总结"&gt;4. 实验收益总结&lt;/h2&gt;
&lt;h3 id="端到端序列"&gt;端到端序列&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;优化方向&lt;/th&gt;
&lt;th&gt;主要收益&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;工程优化（数据链路 + 分布式 attention + 低显存算子）&lt;/td&gt;
&lt;td&gt;使万级序列端到端训练成为可能&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;端到端 + SIM 联训（1K 端到端 + 5K SIM）&lt;/td&gt;
&lt;td&gt;以极低成本逼近长序列效果&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;粗排引入端到端序列 Scaling&lt;/td&gt;
&lt;td&gt;持续取得收益（粗排无 SIM 基线）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;注：早期精排端到端序列 scaling 收益微弱，推测是在已有 SIM 的基础上，原有结构无法从更长序列中提取差异化信息。直到引入 Cross-Mask Transformer 后才打开局面。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="轻量型结构"&gt;轻量型结构&lt;/h3&gt;
&lt;p&gt;稀疏感知结构（相似感知、相关感知、近邻感知）在视频号多个场景均取得收益，其中相似感知和近邻感知各场景普遍有效，相关感知在部分场景有效。&lt;/p&gt;
&lt;h3 id="暴力型结构"&gt;暴力型结构&lt;/h3&gt;
&lt;p&gt;Cross-Mask Transformer 在&lt;strong&gt;短视频场景和红点场景&lt;/strong&gt;取得显著收益，商业化场景效果不显著。&lt;/p&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;采用 Cross-Mask Transformer 替换原结构后，精排端到端序列的 Scaling 效率显著提升，证明&lt;strong&gt;差异化的结构设计是打开序列 Scaling 空间的关键&lt;/strong&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="5-核心洞察与经验总结"&gt;5. 核心洞察与经验总结&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;1. 端到端训练的收益逻辑不只是&amp;quot;序列更长&amp;quot;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;端到端建模的核心价值在于提升表征质量，而非单纯的信息输入增量。这解释了为什么 1K 端到端序列 + 5K SIM 联训就能逼近更长全序列的效果。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 推荐场景的 Transformer 不能照搬 NLP 范式&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;推荐序列是 2D 多域序列，目标牵引能力弱，需要专门设计域内交叉和域间交叉结构，不能期望标准 MHA 自动学到稀疏高阶 pattern。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 上下文（Context）是兴趣信号的重要修正项&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;用户的兴趣是情境依赖的。只有视频内容和上下文环境同时匹配，才是高置信度的兴趣信号。Multi-window context feature 提供了可解释且有效的上下文建模方式。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. 工业落地需要系统性优化&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;暴力结构落地不只是&amp;quot;把 Transformer 堆上去&amp;quot;，需要从模型设计（零梯度外推）、算子（零显存计算、计算共享）、数据流（多时间窗口、随机延迟、ListCE）、优化器（Muon）各层面协同优化，才能在可接受的成本下发挥模型的理论能力。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. Scaling 的前提是差异化建模&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在已有 SIM 序列的基础上，简单拉长端到端序列并不能带来持续收益。需要设计与 SIM 差异化的建模方式（如 Cross-Mask Transformer 的多域感知），才能打开 Scaling 空间。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="参考资料"&gt;参考资料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
（HSTU，Meta AI）&lt;/li&gt;
&lt;li&gt;
（Meta AI）&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>NormFormer：用额外归一化改进 Transformer 预训练</title><link>https://dingyadong.top/posts/014_normformer_paper_review/</link><pubDate>Thu, 09 Apr 2026 02:30:00 +0800</pubDate><guid>https://dingyadong.top/posts/014_normformer_paper_review/</guid><description>
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;本文是关于 Meta AI 论文《NormFormer: Improved Transformer Pretraining with Extra Normalization》（
）的深度精读笔记。这篇论文通过在 Transformer 架构中添加三处额外的归一化操作，有效缓解了 Pre-LN 架构中各层梯度分布不均的问题，在几乎不增加计算成本的前提下，显著提升了语言模型的预训练效率和下游任务表现。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="1-引言transformer-归一化问题的前世今生"&gt;1. 引言：Transformer 归一化问题的前世今生&lt;/h2&gt;
&lt;h3 id="11-从-post-ln-到-pre-ln-的演进"&gt;1.1 从 Post-LN 到 Pre-LN 的演进&lt;/h3&gt;
&lt;p&gt;自 Vaswani 等人在 2017 年提出 Transformer 架构以来，&lt;strong&gt;层归一化（Layer Normalization）&lt;/strong&gt; 就是其中不可或缺的核心组件。归一化层的放置位置虽然看似只是一个微小的工程决策，但实际上对模型的训练稳定性、收敛速度和最终性能有着深远的影响。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;原始 Transformer 采用 Post-LN 架构&lt;/strong&gt;，即将 LayerNorm 放在残差连接之后：&lt;/p&gt;
$$\text{PostLN}(x) = \text{LayerNorm}(x + \text{Sublayer}(x))$$&lt;p&gt;这一设计在 Transformer 的早期应用中被广泛使用，但随着模型规模的不断增大，研究者们逐渐发现了它的致命缺陷：&lt;strong&gt;后层参数的梯度范数远大于早层，导致梯度爆炸于深层，梯度消失于早层&lt;/strong&gt;。这意味着在反向传播过程中，靠近输入端的层几乎无法获得有效的梯度信号，导致训练极度不稳定。&lt;/p&gt;
&lt;p&gt;为了缓解这个问题，&lt;strong&gt;Pre-LN 架构&lt;/strong&gt; 应运而生，即将 LayerNorm 移到子层的输入端：&lt;/p&gt;
$$\text{PreLN}(x) = x + \text{Sublayer}(\text{LayerNorm}(x))$$&lt;p&gt;Pre-LN 架构被 GPT-2、GPT-3 等里程碑模型所采用，成为大语言模型预训练的事实标准。它显著改善了训练稳定性，使得大规模模型的训练成为可能。&lt;strong&gt;问题解决了吗？答案是否定的。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="12-pre-ln-的隐患反向失配与梯度失衡"&gt;1.2 Pre-LN 的隐患：反向失配与梯度失衡&lt;/h3&gt;
&lt;p&gt;Xiong 等人在 2020 年的研究中首次系统性地揭示了 Post-LN 的梯度问题。然而，NormFormer 的作者们进一步发现，Pre-LN 虽然解决了 Post-LN 的训练不稳定问题，但实际上引入了&lt;strong&gt;方向相反的梯度失配&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Post-LN&lt;/strong&gt;：后层梯度 &amp;raquo; 早层梯度（梯度消失）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pre-LN&lt;/strong&gt;：早层梯度 &amp;raquo; 后层梯度（反向失配）&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="为什么梯度不均衡很糟糕"&gt;为什么梯度不均衡很糟糕？&lt;/h4&gt;
&lt;p&gt;用一个工厂流水线的类比来理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;梯度 = 改进信号&lt;/strong&gt;，梯度大的层在训练中改变快，梯度小的层改变慢&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;早层是上游&lt;/strong&gt;，负责提取基础特征。如果上游改进太频繁（梯度过大），下游来不及适应，导致训练不稳定&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;后层是下游&lt;/strong&gt;，负责学习任务特定的高级表示。如果下游改进太慢（梯度不足），即使获得好的基础特征，也无法有效地组织成好的上层表示&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;梯度分布不均 = 各层学习效率不同 = 整体训练收敛慢、最终性能不佳&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在 Pre-LN 架构中，这种现象体现为：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;早期层过度更新&lt;/strong&gt;：由于梯度过大，早期层的参数在训练初期可能剧烈波动，导致学到的特征不够稳定。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;后期层更新不足&lt;/strong&gt;：深层网络中最靠近输出的层本应承担最重要的任务特定表示学习，但它们接收到的梯度信号却相对不足，导致学习速度缓慢。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;关键观察&lt;/strong&gt;：论文通过可视化展示了这一现象：&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Figure 3: Average L1 norm of gradients across layers"
srcset="https://dingyadong.top/posts/014_normformer_paper_review/figure3_hu_912365e85f7a846.webp 320w, https://dingyadong.top/posts/014_normformer_paper_review/figure3_hu_b53a7587722dff7c.webp 480w, https://dingyadong.top/posts/014_normformer_paper_review/figure3_hu_1d8372aa986662be.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://dingyadong.top/posts/014_normformer_paper_review/figure3_hu_912365e85f7a846.webp"
width="760"
height="240"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Pre-LN 的梯度分布呈现明显的递减趋势，与 Post-LN 的递增趋势恰好相反。但&lt;strong&gt;两种趋势都是问题&lt;/strong&gt;——因为两者都导致梯度分布不均。&lt;/p&gt;
&lt;h3 id="13-梯度分布可视化问题的直观表现"&gt;1.3 梯度分布可视化：问题的直观表现&lt;/h3&gt;
&lt;p&gt;为了更直观地理解三种架构的梯度分布差异，我们用下面的图示展示各层的梯度范数变化：&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="梯度流向图：Post-LN vs Pre-LN vs NormFormer"
srcset="https://dingyadong.top/posts/014_normformer_paper_review/gradient-flow_hu_2888b64f237160ca.webp 320w, https://dingyadong.top/posts/014_normformer_paper_review/gradient-flow_hu_c541fc62113dabc4.webp 480w, https://dingyadong.top/posts/014_normformer_paper_review/gradient-flow_hu_f61a535502b159fd.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://dingyadong.top/posts/014_normformer_paper_review/gradient-flow_hu_2888b64f237160ca.webp"
width="760"
height="472"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;图的含义&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;x 轴&lt;/strong&gt;：网络的第几层（从 1 到 12）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;y 轴&lt;/strong&gt;：该层参数的梯度 L1 范数（梯度大小）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;红线（Post-LN）&lt;/strong&gt;：梯度从浅层的很小逐渐增大到深层，形成&amp;quot;阶梯上升&amp;quot;。这导致&lt;strong&gt;深层参数更新剧烈，早层参数更新缓慢&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;蓝线（Pre-LN）&lt;/strong&gt;：梯度从浅层的很大逐渐减小到深层，形成&amp;quot;阶梯下降&amp;quot;。这导致&lt;strong&gt;早层参数更新剧烈，深层参数更新缓慢&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;绿线（NormFormer）&lt;/strong&gt;：梯度在各层基本保持一致的水平，形成&amp;quot;平坦&amp;quot;的分布。这导致&lt;strong&gt;各层参数更新速度均衡&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这张图直观地说明了为什么 NormFormer 能提升训练效率：通过在三个精心选择的位置添加归一化操作，它实现了&lt;strong&gt;梯度在各层的均衡分布&lt;/strong&gt;，使得每一层都能以相近的速率学习，从而提高了整个网络的训练效率。&lt;/p&gt;
&lt;h3 id="14-研究动机能否让梯度在所有层间均衡分布"&gt;1.4 研究动机：能否让梯度在所有层间均衡分布？&lt;/h3&gt;
&lt;p&gt;面对这一发现，NormFormer 论文提出了一个自然而直接的研究问题：&lt;strong&gt;能否通过在 Transformer 的关键位置添加额外的归一化操作，使得各层的梯度范数趋于均衡？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个问题的提出源于一个简单但深刻的直觉：&lt;strong&gt;归一化操作本质上是对激活值进行重新缩放（rescaling），它天然具备调节梯度流动幅度的能力&lt;/strong&gt;。如果我们能在正确的位置插入归一化层，就有可能同时解决 Pre-LN 的早层梯度过大和后层梯度过小的问题。&lt;/p&gt;
&lt;p&gt;在接下来的章节中，我们将看到 NormFormer 如何通过三处精心设计的改进，实现这一目标。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="2-核心方案三处改进与架构演进"&gt;2. 核心方案：三处改进与架构演进&lt;/h2&gt;
&lt;p&gt;NormFormer 的核心思想可以用一句话概括：&lt;strong&gt;在 Pre-LN Transformer 的基础上，在三个关键位置添加额外的归一化操作，通过精心的梯度控制实现各层学习效率的均衡化&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这三个操作分别是：Post-Attention LayerNorm（注意力后归一化）、HeadScale（注意力头缩放）和 FFN Mid-LayerNorm（前馈网络中间归一化）。它们的协同作用可以用下式表示：&lt;/p&gt;
$$x_{l+1}^{\text{NormFormer}} = \text{NormFFN}(\text{NormScaledMHA}(x_l))$$&lt;p&gt;在深入讲解具体的改进点之前，我们先给出 NormFormer、Pre-LN 和 Post-LN 三种架构的全景对比，帮助读者快速理解各架构的特点。&lt;/p&gt;
&lt;h3 id="20-架构总览"&gt;2.0 架构总览&lt;/h3&gt;
&lt;h4 id="三种架构的特性对比"&gt;三种架构的特性对比&lt;/h4&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Figure 1: NormFormer、Pre-LN 与 Post-LN 架构对比"
srcset="https://dingyadong.top/posts/014_normformer_paper_review/figure1_hu_65b7e3867928d564.webp 320w, https://dingyadong.top/posts/014_normformer_paper_review/figure1_hu_907d3f8b57aa34db.webp 480w, https://dingyadong.top/posts/014_normformer_paper_review/figure1_hu_1b4a0d45be0471f7.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://dingyadong.top/posts/014_normformer_paper_review/figure1_hu_65b7e3867928d564.webp"
width="760"
height="429"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;特性&lt;/th&gt;
&lt;th&gt;Post-LN&lt;/th&gt;
&lt;th&gt;Pre-LN&lt;/th&gt;
&lt;th&gt;NormFormer&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;归一化位置&lt;/td&gt;
&lt;td&gt;残差连接之后&lt;/td&gt;
&lt;td&gt;子层之前&lt;/td&gt;
&lt;td&gt;多点分布式&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;训练稳定性&lt;/td&gt;
&lt;td&gt;差（需精细 warmup）&lt;/td&gt;
&lt;td&gt;好&lt;/td&gt;
&lt;td&gt;更好（支持更高学习率）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;梯度分布&lt;/td&gt;
&lt;td&gt;后层 &amp;raquo; 早层&lt;/td&gt;
&lt;td&gt;早层 &amp;raquo; 后层&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;各层趋于均衡&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;头级控制&lt;/td&gt;
&lt;td&gt;无&lt;/td&gt;
&lt;td&gt;无&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;有（HeadScale）&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FFN 内部归一化&lt;/td&gt;
&lt;td&gt;无&lt;/td&gt;
&lt;td&gt;无&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;有&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;额外参数量&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;基准&lt;/td&gt;
&lt;td&gt;+0.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;额外训练开销&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;基准&lt;/td&gt;
&lt;td&gt;+2~6%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;关键观察&lt;/strong&gt;：NormFormer 的核心创新在于&lt;strong&gt;在三个精心选择的位置添加归一化操作&lt;/strong&gt;，以极小的代价（0.4% 参数 + 2~6% 计算）实现了梯度分布的均衡化。这种&amp;quot;微创手术&amp;quot;式的改进策略在理论上可以解决 Pre-LN 的梯度失衡问题，同时保留其训练稳定性优势。&lt;/p&gt;
&lt;h4 id="三处改进的位置总览"&gt;三处改进的位置总览&lt;/h4&gt;
&lt;p&gt;NormFormer 的三个改进分别位于 Transformer 块中的不同位置：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Post-Attention LayerNorm&lt;/strong&gt;：在多头注意力输出后、残差连接前&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HeadScale&lt;/strong&gt;：在多头注意力的拼接（concat）操作前，对每个头乘以可学习标量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FFN Mid-LayerNorm&lt;/strong&gt;：在前馈网络的激活函数后、第二个线性层前&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;我们将逐个讲解每个改进的工作原理、消融验证数据和实际贡献度。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="21-改进点-apost-attention-layernorm"&gt;2.1 改进点 A：Post-Attention LayerNorm&lt;/h3&gt;
&lt;h4 id="工作机制"&gt;工作机制&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;核心设计：&lt;/strong&gt; 在多头注意力的输出后、残差连接前，添加一个额外的 LayerNorm。&lt;/p&gt;
&lt;p&gt;标准 Pre-LN 的注意力子层为：&lt;/p&gt;
$$\text{PreLN-MHA}(x) = x + \text{MHA}(\text{LN}(x))$$&lt;p&gt;NormFormer 将其修改为：&lt;/p&gt;
$$\text{NormScaledMHA}(x) = x + \text{LN}(\text{HeadScaleMHA}(\text{LN}(x)))$$&lt;p&gt;这里外层的 $\text{LN}(\cdot)$ 包裹注意力输出。这个额外的归一化层起到了&lt;strong&gt;下缩放（downscaling）&lt;/strong&gt; 的作用：论文发现训练完成后，所有层的 Post-Attention LN 的缩放参数（gamma）都低于 1，这意味着它在系统性地降低注意力输出的幅度。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;为什么这很重要？&lt;/strong&gt; 在标准 Pre-LN 中，注意力层的输出直接通过残差连接加到主干上。如果注意力输出的幅度过大，会导致残差分支主导信号传播，破坏信息在不同层之间的平衡传递。通过添加这一归一化层，NormFormer 能够自适应地控制每一层注意力输出的贡献幅度。&lt;/p&gt;
&lt;h4 id="原理图和实现"&gt;原理图和实现&lt;/h4&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Post-Attention LayerNorm 原理"
srcset="https://dingyadong.top/posts/014_normformer_paper_review/post-attn-ln_hu_650e3dadc91fdb23.webp 320w, https://dingyadong.top/posts/014_normformer_paper_review/post-attn-ln_hu_3e2e0622ec83e258.webp 480w, https://dingyadong.top/posts/014_normformer_paper_review/post-attn-ln_hu_61aad4458c295a8d.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://dingyadong.top/posts/014_normformer_paper_review/post-attn-ln_hu_650e3dadc91fdb23.webp"
width="760"
height="379"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;简洁实现示例（PyTorch）：&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;attn_output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;attention&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;layer_norm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;attn_output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;post_attn_layer_norm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;attn_output&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 新增&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;attn_output&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="消融实验数据"&gt;消融实验数据&lt;/h4&gt;
&lt;p&gt;在 125M 模型上的消融结果：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;配置&lt;/th&gt;
&lt;th&gt;PPL&lt;/th&gt;
&lt;th&gt;相比完整 NormFormer 的变化&lt;/th&gt;
&lt;th&gt;贡献度&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;完整 NormFormer&lt;/td&gt;
&lt;td&gt;15.88&lt;/td&gt;
&lt;td&gt;基准&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;移除 Post-Attn LN&lt;/td&gt;
&lt;td&gt;15.92&lt;/td&gt;
&lt;td&gt;+0.04&lt;/td&gt;
&lt;td&gt;最小&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;贡献度评估&lt;/strong&gt;：Post-Attn LN 的单独贡献最小（+0.04 PPL 退化），但作为整体方案的补充，它有助于进一步稳定梯度流。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="22-改进点-bheadscale"&gt;2.2 改进点 B：HeadScale&lt;/h3&gt;
&lt;h4 id="工作机制-1"&gt;工作机制&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;核心设计：&lt;/strong&gt; 在多头注意力的拼接（concat）操作前，对每个注意力头的输出乘以一个独立的可学习标量参数。&lt;/p&gt;
&lt;p&gt;传统的多头注意力将所有头的输出直接拼接后通过输出投影矩阵：&lt;/p&gt;
$$\text{MHA}(Q, K, V) = \text{Concat}(h_1, h_2, ..., h_n) W^O$$&lt;p&gt;NormFormer 引入了 HeadScale 机制：&lt;/p&gt;
$$\text{HeadScaleMHA}(Q, K, V) = \text{Concat}(\gamma_1 \cdot h_1, \gamma_2 \cdot h_2, ..., \gamma_n \cdot h_n) W^O$$&lt;p&gt;其中 $\gamma_i$ 为可学习的标量参数，&lt;strong&gt;初始化为 1&lt;/strong&gt;，确保训练初期与标准多头注意力完全一致。&lt;/p&gt;
&lt;h4 id="原理图和关键发现"&gt;原理图和关键发现&lt;/h4&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="HeadScale 原理：逐头缩放"
srcset="https://dingyadong.top/posts/014_normformer_paper_review/headscale_hu_2ef1e535a2f9325f.webp 320w, https://dingyadong.top/posts/014_normformer_paper_review/headscale_hu_a4d052439fea2345.webp 480w, https://dingyadong.top/posts/014_normformer_paper_review/headscale_hu_3b50bc676d871011.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://dingyadong.top/posts/014_normformer_paper_review/headscale_hu_2ef1e535a2f9325f.webp"
width="760"
height="432"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;关键发现：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;头级权重差异化&lt;/strong&gt;：训练后的 $\gamma_i$ 值变化较大，不同头获得了不同的缩放权重，这表明模型学会了&lt;strong&gt;动态调整不同注意力头的重要性&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;无单调性约束&lt;/strong&gt;：$\gamma_i$ 与层深度之间没有明显的单调关系，说明 HeadScale 不是简单地对深层或浅层进行统一调节，而是在细粒度上优化每个头的贡献。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;最大贡献度&lt;/strong&gt;：在消融实验中，&lt;strong&gt;HeadScale 是三个操作中贡献最大的&lt;/strong&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="实现示例"&gt;实现示例&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;head_scales&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;nn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Parameter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ones&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num_heads&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="c1"&gt;# 初始化为1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;scaled_heads&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;head_scales&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;heads&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num_heads&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;attn_output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scaled_heads&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;W_o&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="消融实验数据-1"&gt;消融实验数据&lt;/h4&gt;
&lt;p&gt;在 125M 模型上的消融结果：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;配置&lt;/th&gt;
&lt;th&gt;PPL&lt;/th&gt;
&lt;th&gt;相比完整 NormFormer 的变化&lt;/th&gt;
&lt;th&gt;相对贡献度&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;完整 NormFormer&lt;/td&gt;
&lt;td&gt;15.88&lt;/td&gt;
&lt;td&gt;基准&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;移除 HeadScale&lt;/td&gt;
&lt;td&gt;16.22&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.34&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;69% 的总改进&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;贡献度评估&lt;/strong&gt;：HeadScale 是三个改进点中&lt;strong&gt;贡献最大的&lt;/strong&gt;，单独贡献占总改进（0.49 PPL 相比基线）的约 69%。（注：三个改进的占比之和超过 100% 是因为存在协同效应，详见第 2.5 节）这表明对注意力头进行差异化加权是 NormFormer 最核心的创新。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;与注意力头剪枝的联系&lt;/strong&gt;：HeadScale 的思想与注意力头剪枝（Head Pruning）有一定的联系。Chen 等人在 2021 年的工作中使用类似的头级缩放进行模型压缩，而 NormFormer 将这一思想用于改进训练过程，目标不同但技术路线相似。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="23-改进点-cffn-mid-layernorm"&gt;2.3 改进点 C：FFN Mid-LayerNorm&lt;/h3&gt;
&lt;h4 id="工作机制-2"&gt;工作机制&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;核心设计：&lt;/strong&gt; 在前馈网络（FFN）的第一个线性变换之后、激活函数之后，添加一个 LayerNorm。&lt;/p&gt;
&lt;p&gt;标准 FFN 的计算流程为：&lt;/p&gt;
$$\text{FFN}(x) = \sigma(x W_1 + b_1) W_2 + b_2$$&lt;p&gt;NormFormer 将其修改为：&lt;/p&gt;
$$\text{NormFFN}(x) = x + \underbrace{\text{LN}_{\text{mid}}}_{\text{新增}}(\sigma(\underbrace{\text{LN}_{\text{pre}}}_{\text{原有Pre-LN}}(x) \cdot W_1 + b_1)) \cdot W_2 + b_2$$&lt;p&gt;其中 $\text{LN}_{\text{pre}}$ 是 Pre-LN 架构原有的归一化，而 $\text{LN}_{\text{mid}}$ 是 NormFormer 新增的 FFN 中间归一化——它位于激活函数 $\sigma(\cdot)$ 之后、第二个线性变换 $W_2$ 之前。&lt;/p&gt;
&lt;h4 id="关键机制自适应梯度抑制"&gt;关键机制：自适应梯度抑制&lt;/h4&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="FFN Mid-LayerNorm 原理：自适应梯度控制"
srcset="https://dingyadong.top/posts/014_normformer_paper_review/ffn-mid-ln_hu_e49f003a6922a098.webp 320w, https://dingyadong.top/posts/014_normformer_paper_review/ffn-mid-ln_hu_bf2c4151f3fd0dca.webp 480w, https://dingyadong.top/posts/014_normformer_paper_review/ffn-mid-ln_hu_d3dd635843edcfa8.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://dingyadong.top/posts/014_normformer_paper_review/ffn-mid-ln_hu_e49f003a6922a098.webp"
width="760"
height="541"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;这是解决梯度失配的核心机制。&lt;/strong&gt; 论文的 Figure 4 &amp;amp; 5 展示了一个极为重要的发现：&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Figure 4 &amp;amp; 5: Scaling parameters and learning rate stability"
srcset="https://dingyadong.top/posts/014_normformer_paper_review/figure4_5_hu_2839d97f2aa297f7.webp 320w, https://dingyadong.top/posts/014_normformer_paper_review/figure4_5_hu_486bd82faad645a6.webp 480w, https://dingyadong.top/posts/014_normformer_paper_review/figure4_5_hu_9c7ac67978c723e9.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://dingyadong.top/posts/014_normformer_paper_review/figure4_5_hu_2839d97f2aa297f7.webp"
width="760"
height="249"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;早期层的 FFN LN gamma 参数系统性地小于后期层的&lt;/strong&gt;。这意味着 FFN Mid-LayerNorm 自适应地减小了早期层全连接层输入的幅度，从而有效降低了早期层的梯度，缓解了 Pre-LN 固有的&amp;quot;早层梯度过大&amp;quot;问题。这种设计妙处在于：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;无需显式约束 gamma 值&lt;/li&gt;
&lt;li&gt;模型在训练过程中&lt;strong&gt;自动学习&lt;/strong&gt;最优的梯度分配方案&lt;/li&gt;
&lt;li&gt;早层自然获得较小的 gamma（抑制梯度），后层获得较大的 gamma（放大梯度）&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="数学直觉"&gt;数学直觉&lt;/h4&gt;
&lt;p&gt;归一化操作通过将激活值映射到零均值、单位方差的分布来工作。当早期层的 FFN 中间激活值幅度较大时，归一化层通过较小的 gamma 参数对其进行压缩，相当于在反向传播时减小了通过这些层的梯度流。这种自适应机制使得模型能够自动学习到最优的梯度分配方案。&lt;/p&gt;
&lt;h4 id="实现示例-1"&gt;实现示例&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 原始 FFN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;activation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;W1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;W2&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# NormFormer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;activation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;W1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ffn_layer_norm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 新增&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;W2&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="消融实验数据-2"&gt;消融实验数据&lt;/h4&gt;
&lt;p&gt;在 125M 模型上的消融结果：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;配置&lt;/th&gt;
&lt;th&gt;PPL&lt;/th&gt;
&lt;th&gt;相比完整 NormFormer 的变化&lt;/th&gt;
&lt;th&gt;相对贡献度&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;完整 NormFormer&lt;/td&gt;
&lt;td&gt;15.88&lt;/td&gt;
&lt;td&gt;基准&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;移除 FFN-LN&lt;/td&gt;
&lt;td&gt;16.14&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.26&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;53% 的总改进&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;贡献度评估&lt;/strong&gt;：FFN-LN 是&lt;strong&gt;第二大贡献者&lt;/strong&gt;，单独贡献占总改进的约 53%。这验证了前馈网络内部归一化对梯度均衡的重要性，是仅次于 HeadScale 的核心创新。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="24-可选改进resscale"&gt;2.4 可选改进：ResScale&lt;/h3&gt;
&lt;p&gt;除了上述三个核心操作外，NormFormer 还提出了一个&lt;strong&gt;可选的&lt;/strong&gt; ResScale 操作：&lt;/p&gt;
$$\text{ResScale}(x) = \lambda_{\text{resid}} \odot x + \text{Sublayer}(\text{LayerNorm}(x))$$&lt;p&gt;其中 $\lambda_{\text{resid}}$ 是可学习的逐维度缩放参数，用于调节残差连接中主干信号和子层输出的相对权重。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;重要警告：&lt;/strong&gt; 论文实验表明，ResScale 仅在小模型（125M、355M 参数）上有效，&lt;strong&gt;在 1.3B 及以上规模的模型上反而会导致性能下降&lt;/strong&gt;。因此，对于当前主流的大规模预训练场景，&lt;strong&gt;不建议使用 ResScale&lt;/strong&gt;。这一发现也提醒我们，并非所有的归一化/缩放操作都是&amp;quot;越多越好&amp;quot;的——过度参数化在大模型上可能导致优化困难。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="25-三大改进的协同效应"&gt;2.5 三大改进的协同效应&lt;/h3&gt;
&lt;p&gt;前四个小节分别介绍了三个改进点的单独贡献，现在我们看它们是如何协同工作的。&lt;/p&gt;
&lt;h4 id="完整消融实验对比"&gt;完整消融实验对比&lt;/h4&gt;
&lt;p&gt;论文在 &lt;strong&gt;125M 模型&lt;/strong&gt;上进行了系统性消融。注意：此规模下的&amp;quot;完整 NormFormer&amp;quot;包含 ResScale（因为 ResScale 仅在小模型上有正收益），而对于 1.3B 及以上的模型，推荐配置不包含 ResScale：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;配置&lt;/th&gt;
&lt;th&gt;PPL&lt;/th&gt;
&lt;th&gt;相比完整模型的变化&lt;/th&gt;
&lt;th&gt;单独贡献度&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;完整 NormFormer（含 ResScale）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;15.88&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;基准&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;移除 Post-Attn LN&lt;/td&gt;
&lt;td&gt;15.92&lt;/td&gt;
&lt;td&gt;+0.04&lt;/td&gt;
&lt;td&gt;最小&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;移除 FFN-LN&lt;/td&gt;
&lt;td&gt;16.14&lt;/td&gt;
&lt;td&gt;+0.26&lt;/td&gt;
&lt;td&gt;第二大&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;移除 ResScale&lt;/td&gt;
&lt;td&gt;16.20&lt;/td&gt;
&lt;td&gt;+0.32&lt;/td&gt;
&lt;td&gt;中等&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;移除 HeadScale&lt;/td&gt;
&lt;td&gt;16.22&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.34&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;最大&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;增加 QKV 上的 3 个额外 LN&lt;/td&gt;
&lt;td&gt;15.88&lt;/td&gt;
&lt;td&gt;+0.00&lt;/td&gt;
&lt;td&gt;无收益&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;基线 Pre-LN&lt;/td&gt;
&lt;td&gt;16.37&lt;/td&gt;
&lt;td&gt;+0.49&lt;/td&gt;
&lt;td&gt;相比 Pre-LN 的总改进&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="消融实验贡献度分析"
srcset="https://dingyadong.top/posts/014_normformer_paper_review/ablation-contrib_hu_d5e98c5e7407aaa4.webp 320w, https://dingyadong.top/posts/014_normformer_paper_review/ablation-contrib_hu_cd5bf144d73ca05f.webp 480w, https://dingyadong.top/posts/014_normformer_paper_review/ablation-contrib_hu_7c23cca21b5bc352.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://dingyadong.top/posts/014_normformer_paper_review/ablation-contrib_hu_d5e98c5e7407aaa4.webp"
width="760"
height="433"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 id="关键结论"&gt;关键结论&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;HeadScale 是绝对核心&lt;/strong&gt;（+0.34 PPL，占总改进 69%）：注意力头的差异化加权是 NormFormer 最具影响力的创新。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;FFN-LN 是第二支柱&lt;/strong&gt;（+0.26 PPL，占总改进 53%）：前馈网络内部的自适应梯度抑制对整体改进也至关重要。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Post-Attn LN 是补充设计&lt;/strong&gt;（+0.04 PPL，占总改进 8%）：单独看贡献最小，但与其他改进配合使用时能进一步稳定梯度流。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;三个改进的互补性&lt;/strong&gt;：总改进 0.49 PPL ≈ HeadScale(0.34) + FFN-LN(0.26) - 重叠。这说明三个改进虽然作用机制不同（头级权重、梯度抑制、层级下缩放），但它们的效果有部分叠加，共同作用于梯度分布均衡化。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="反面教训更多归一化不一定更好"&gt;反面教训：更多归一化不一定更好&lt;/h4&gt;
&lt;p&gt;论文还测试了一个反例：在 QKV 投影上额外添加 3 个 LayerNorm——这看似应该进一步改进梯度分布，但实际结果是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;困惑度无任何改进（+0.00 PPL）&lt;/li&gt;
&lt;li&gt;训练速度反而降低 5%&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;启示&lt;/strong&gt;：NormFormer 选择的三个位置（Post-Attn、HeadScale、FFN Mid）是经过精心设计的，不是简单的&amp;quot;到处加 LN&amp;quot;。随意添加更多归一化操作反而会浪费计算资源，甚至破坏优化过程。&lt;/p&gt;
&lt;h4 id="小模型-vs-大模型的推荐配置"&gt;小模型 vs 大模型的推荐配置&lt;/h4&gt;
&lt;p&gt;基于消融实验的结果，我们给出不同规模模型的推荐配置：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;模型规模&lt;/th&gt;
&lt;th&gt;推荐配置&lt;/th&gt;
&lt;th&gt;预期改进&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;125M-355M&lt;/td&gt;
&lt;td&gt;Post-Attn LN + HeadScale + FFN-LN + ResScale&lt;/td&gt;
&lt;td&gt;最大&lt;/td&gt;
&lt;td&gt;ResScale 在小模型上有正贡献&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1.3B+&lt;/td&gt;
&lt;td&gt;Post-Attn LN + HeadScale + FFN-LN&lt;/td&gt;
&lt;td&gt;稳定&lt;/td&gt;
&lt;td&gt;不使用 ResScale，避免大模型优化困难&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="3-实验结果深度分析"&gt;3. 实验结果深度分析&lt;/h2&gt;
&lt;p&gt;NormFormer 论文的实验设计非常全面，涵盖了因果语言模型（CLM）、掩码语言模型（MLM）、零样本评估、消融实验等多个维度。下面我们逐一分析关键实验结果。&lt;/p&gt;
&lt;h3 id="31-学习率搜索挑战-gpt-3-的默认设置"&gt;3.1 学习率搜索：挑战 GPT-3 的默认设置&lt;/h3&gt;
&lt;p&gt;在正式实验之前，论文做了一项非常有价值的预实验：系统性的学习率搜索。结果出人意料地发现，在他们的数据集上，&lt;strong&gt;最优学习率比 GPT-3 论文建议的值高出 3-5 倍&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;模型规模&lt;/th&gt;
&lt;th&gt;GPT-3 建议学习率&lt;/th&gt;
&lt;th&gt;实际最优学习率&lt;/th&gt;
&lt;th&gt;倍数&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;125M&lt;/td&gt;
&lt;td&gt;6e-4&lt;/td&gt;
&lt;td&gt;3e-3&lt;/td&gt;
&lt;td&gt;5x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;355M&lt;/td&gt;
&lt;td&gt;3e-4&lt;/td&gt;
&lt;td&gt;1e-3&lt;/td&gt;
&lt;td&gt;3.3x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1.3B&lt;/td&gt;
&lt;td&gt;2e-4&lt;/td&gt;
&lt;td&gt;6e-4&lt;/td&gt;
&lt;td&gt;3x&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id="为什么-normformer-能支持更高的学习率"&gt;为什么 NormFormer 能支持更高的学习率？&lt;/h4&gt;
&lt;p&gt;这个现象与我们在改进点 C（FFN Mid-LayerNorm）讨论的梯度缩放密切相关。通过在 FFN 第一个线性层后添加 LayerNorm，NormFormer 实现了&lt;strong&gt;分层的梯度缩放&lt;/strong&gt; — 前馈网络内部的特征被重新归一化，避免了极端的激活值。这种分层缩放机制使得早层的梯度幅度自动降低，即使在&lt;strong&gt;更高的学习率下，参数更新也不会过于剧烈&lt;/strong&gt;，从而显著提升了训练稳定性。&lt;/p&gt;
&lt;h4 id="工程启示"&gt;工程启示&lt;/h4&gt;
&lt;p&gt;这一发现本身就具有独立的工程价值——&lt;strong&gt;针对自己的数据集进行学习率搜索可能带来显著的性能提升&lt;/strong&gt;，不要盲目套用论文中的超参数。论文使用这些优化后的基线作为对比对象，确保了实验结果的公平性和说服力。&lt;/p&gt;
&lt;h3 id="32-因果语言模型稳定且一致的困惑度改进"&gt;3.2 因果语言模型：稳定且一致的困惑度改进&lt;/h3&gt;
&lt;p&gt;在因果语言模型（Causal Language Model）预训练任务上，NormFormer 在所有模型规模上都取得了一致的困惑度（Perplexity）改进：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;模型&lt;/th&gt;
&lt;th&gt;参数量&lt;/th&gt;
&lt;th&gt;基线 PPL&lt;/th&gt;
&lt;th&gt;NormFormer PPL&lt;/th&gt;
&lt;th&gt;改进幅度&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;125M&lt;/td&gt;
&lt;td&gt;124.5M&lt;/td&gt;
&lt;td&gt;21.09&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;20.11&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;-0.98&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1.3B&lt;/td&gt;
&lt;td&gt;1313.5M&lt;/td&gt;
&lt;td&gt;12.21&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;11.94&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;-0.27&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2.7B&lt;/td&gt;
&lt;td&gt;2649.5M&lt;/td&gt;
&lt;td&gt;10.92&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;10.55&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;-0.37&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id="核心发现"&gt;核心发现&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;1. 训练加速效果显著。&lt;/strong&gt; NormFormer-1.3B 达到基线相同困惑度的速度&lt;strong&gt;快了 24%&lt;/strong&gt;。也就是说，使用 NormFormer，你只需要原来 76% 的训练时间就能获得相同质量的模型。对于动辄需要数千 GPU 小时的大规模预训练来说，24% 的训练时间节省意味着巨大的计算成本削减。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;与改进点的关联&lt;/strong&gt;：这个加速来自于梯度均衡带来的&lt;strong&gt;更高的单步训练效率&lt;/strong&gt; — 梯度分布均匀意味着每一层都在以最优速率学习，没有某些层学得太快而其他层跟不上的浪费。这正是改进点 B（HeadScale）和改进点 C（FFN-LN）共同实现的梯度重均衡的直接体现。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 大模型训练稳定性提升。&lt;/strong&gt; 这可能是 NormFormer 最引人注目的工程价值：&lt;strong&gt;基线 2.7B 模型在 6e-4 学习率下训练发散（完全失败），而 NormFormer-2.7B 在相同学习率下可以稳定训练并取得最佳性能&lt;/strong&gt;。这意味着 NormFormer 显著拓宽了大模型可用学习率的范围，降低了超参数调优的难度。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;与改进点的关联&lt;/strong&gt;：这与改进点 B（HeadScale）的头级权重调整密切相关 — 通过对注意力头进行细粒度控制，NormFormer 抑制了某些头过度主导信号的现象。在大模型中，这种头间差异往往更加突出，因此 HeadScale 的稳定化效果在大模型上更加显著。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 困惑度改进随模型规模变化。&lt;/strong&gt; 125M 模型上的绝对改进最大（-0.98），而大模型上的绝对改进较小。但考虑到大模型本身的困惑度已经很低（基数效应），相对改进幅度仍然有意义。更重要的是，&lt;strong&gt;训练加速和稳定性提升在大模型上同样甚至更加显著&lt;/strong&gt;。&lt;/p&gt;
&lt;h4 id="总结"&gt;总结&lt;/h4&gt;
&lt;p&gt;因果语言模型的实验充分验证了 NormFormer 的核心改进在实践中的效果：梯度均衡带来的训练加速，头级控制带来的稳定性提升，使得 NormFormer 成为一个具有重大工程价值的改进方案。&lt;/p&gt;
&lt;h3 id="33-零样本任务评估无需微调即见效果"&gt;3.3 零样本任务评估：无需微调即见效果&lt;/h3&gt;
&lt;p&gt;NormFormer 在零样本（Zero-Shot）任务评估中展现了明显的优势，直接反映了预训练质量的提升：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;任务&lt;/th&gt;
&lt;th&gt;基线-1.3B&lt;/th&gt;
&lt;th&gt;NormFormer-1.3B&lt;/th&gt;
&lt;th&gt;基线-2.7B&lt;/th&gt;
&lt;th&gt;NormFormer-2.7B&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;HellaSwag&lt;/td&gt;
&lt;td&gt;58.5&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;60.5&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WinoGrande&lt;/td&gt;
&lt;td&gt;76.8&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;77.5&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;平均（多任务）&lt;/td&gt;
&lt;td&gt;63.6&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;64.7&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;66.3&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;68.7&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;关键发现：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NormFormer-125M 达到 GPT-3 Large（1.3B 参数）零样本性能的速度&lt;strong&gt;快了 60%&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;在 2.7B 规模上，平均零样本准确率从 66.3% 提升到 68.7%（+2.4 个百分点）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="34-掩码语言模型glue-基准全面提升"&gt;3.4 掩码语言模型：GLUE 基准全面提升&lt;/h3&gt;
&lt;p&gt;论文在掩码语言模型（Masked Language Model）上的实验验证了 NormFormer 对编码器型模型（BERT 类）同样有效。在 GLUE 基准的&lt;strong&gt;所有 7 个任务上都取得了改进&lt;/strong&gt;：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;GLUE 任务&lt;/th&gt;
&lt;th&gt;基线&lt;/th&gt;
&lt;th&gt;NormFormer&lt;/th&gt;
&lt;th&gt;提升&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CoLA&lt;/td&gt;
&lt;td&gt;74.3&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;82.6&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+8.3&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MNLI&lt;/td&gt;
&lt;td&gt;85.9&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;86.3&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+0.4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MRPC&lt;/td&gt;
&lt;td&gt;84.6&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;86.0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+1.4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QNLI&lt;/td&gt;
&lt;td&gt;91.6&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;91.9&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+0.3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QQP&lt;/td&gt;
&lt;td&gt;90.7&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;91.3&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+0.6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RTE&lt;/td&gt;
&lt;td&gt;66.4&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;67.9&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+1.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SST-2&lt;/td&gt;
&lt;td&gt;92.9&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;93.8&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+0.9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;平均&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;83.77&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;85.69&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+1.92&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;最令人印象深刻的是 CoLA 任务上的 +8.3 提升&lt;/strong&gt;（从 74.3 到 82.6），说明 NormFormer 对语法特征学习的显著帮助。GLUE 平均分提升接近 2 个百分点，MLM 困惑度从 3.42 降低到 3.31，展现了强大的通用性。&lt;/p&gt;
&lt;h3 id="35-消融实验各组件贡献量化"&gt;3.5 消融实验：各组件贡献量化&lt;/h3&gt;
&lt;p&gt;在第 2 部分，我们已经讨论了 NormFormer 的三个核心改进点（HeadScale、Post-Attn LN、FFN-LN）。这里提供完整的消融实验细节，量化每个组件的具体贡献。论文在 &lt;strong&gt;125M 小模型&lt;/strong&gt;（470 V100 GPU 小时）上进行了系统性消融。注意：此规模下的&amp;quot;完整 NormFormer&amp;quot;包含 ResScale（因为 ResScale 仅在小模型上有正收益），而对于 1.3B 及以上的模型，推荐配置不包含 ResScale：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;配置&lt;/th&gt;
&lt;th&gt;Perplexity&lt;/th&gt;
&lt;th&gt;相比完整模型的退化&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;完整 NormFormer + ResScale&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;15.88&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;基准&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;移除 Post-Attn LN&lt;/td&gt;
&lt;td&gt;15.92&lt;/td&gt;
&lt;td&gt;+0.04&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;移除 FFN LN&lt;/td&gt;
&lt;td&gt;16.14&lt;/td&gt;
&lt;td&gt;+0.26&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;移除 ResScale&lt;/td&gt;
&lt;td&gt;16.20&lt;/td&gt;
&lt;td&gt;+0.32&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;移除 HeadScale&lt;/td&gt;
&lt;td&gt;16.22&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.34（影响最大）&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;增加 3 个额外 LN（QKV 上）&lt;/td&gt;
&lt;td&gt;15.88&lt;/td&gt;
&lt;td&gt;+0.00（无额外收益）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;基线 Pre-LN&lt;/td&gt;
&lt;td&gt;16.37&lt;/td&gt;
&lt;td&gt;+0.49&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;关键结论：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;HeadScale 贡献最大&lt;/strong&gt;（移除后退化 +0.34），说明注意力头的差异化加权是 NormFormer 最核心的创新。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FFN LN 贡献第二&lt;/strong&gt;（+0.26），验证了前馈网络内部归一化对梯度均衡的重要性。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Post-Attn LN 贡献最小&lt;/strong&gt;（+0.04），但仍有正面效果。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;更多归一化并不总是更好&lt;/strong&gt;：在 QKV 投影上额外添加 3 个 LN 没有带来任何性能提升，反而使训练速度降低 5%。这证明了 NormFormer 选择的三个位置是经过精心设计的，不是简单的&amp;quot;到处加 LN&amp;quot;。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="36-超参数鲁棒性验证"&gt;3.6 超参数鲁棒性验证&lt;/h3&gt;
&lt;p&gt;NormFormer 的另一个重要优势是其对超参数设置的鲁棒性。论文在 125M 模型上测试了多种超参数组合：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;学习率&lt;/th&gt;
&lt;th&gt;配置&lt;/th&gt;
&lt;th&gt;基线 PPL&lt;/th&gt;
&lt;th&gt;NormFormer PPL&lt;/th&gt;
&lt;th&gt;差值&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0.001&lt;/td&gt;
&lt;td&gt;默认&lt;/td&gt;
&lt;td&gt;16.80&lt;/td&gt;
&lt;td&gt;16.33&lt;/td&gt;
&lt;td&gt;-0.47&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0.003&lt;/td&gt;
&lt;td&gt;默认&lt;/td&gt;
&lt;td&gt;16.37&lt;/td&gt;
&lt;td&gt;15.88&lt;/td&gt;
&lt;td&gt;-0.49&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0.003&lt;/td&gt;
&lt;td&gt;更长 warmup&lt;/td&gt;
&lt;td&gt;16.50&lt;/td&gt;
&lt;td&gt;16.06&lt;/td&gt;
&lt;td&gt;-0.44&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0.003&lt;/td&gt;
&lt;td&gt;GPT-3 设置&lt;/td&gt;
&lt;td&gt;16.29&lt;/td&gt;
&lt;td&gt;15.88&lt;/td&gt;
&lt;td&gt;-0.41&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;NormFormer 在所有超参数配置下都一致优于基线&lt;/strong&gt;，改进幅度在 0.41-0.49 之间波动，方差极小。这意味着使用 NormFormer 不需要额外的超参数调优工作——只要基线能跑，NormFormer 就能带来稳定的改进。&lt;/p&gt;
&lt;h3 id="37-wikitext-103-验证"&gt;3.7 Wikitext-103 验证&lt;/h3&gt;
&lt;p&gt;论文还在 Wikitext-103 数据集上进行了验证：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;模型&lt;/th&gt;
&lt;th&gt;最终 Perplexity&lt;/th&gt;
&lt;th&gt;达到基线 PPL 所需步数&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;基线&lt;/td&gt;
&lt;td&gt;18.70&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NormFormer&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;18.65&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;70%&lt;/strong&gt;（节省 30% 训练时间）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;NormFormer 仅需 70% 的训练步数就达到了基线的最终性能。虽然后 30% 的训练中 NormFormer 的改进趋于饱和，但论文指出这可能通过进一步的训练策略调优来改善。&lt;/p&gt;
&lt;h3 id="38-计算开销分析"&gt;3.8 计算开销分析&lt;/h3&gt;
&lt;p&gt;NormFormer 的工程吸引力在于其极低的额外开销：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;指标&lt;/th&gt;
&lt;th&gt;数值&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;额外参数量&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.4%&lt;/strong&gt;（不足 0.07% 实际额外参数）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;额外内存开销&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+2~6%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;单步训练时间增加&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+2~6%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;推理开销&lt;/td&gt;
&lt;td&gt;接近零&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这些数字意味着，NormFormer 实质上是一个&amp;quot;免费的改进&amp;quot;——用不到 6% 的额外计算成本，换取 24% 的训练加速和可量化的性能提升。从性价比角度看，这非常划算。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="4-工程应用与落地分析"&gt;4. 工程应用与落地分析&lt;/h2&gt;
&lt;h3 id="41-实现极度简单"&gt;4.1 实现极度简单&lt;/h3&gt;
&lt;p&gt;NormFormer 的工程实现可以说是所有 Transformer 改进方案中最简单的之一。只需要在现有 Pre-LN Transformer 代码中做三处修改：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;修改一：在 MultiHeadAttention 输出后添加 LayerNorm&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 原始 Pre-LN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;attn_output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;attention&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;layer_norm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;attn_output&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# NormFormer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;attn_output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;attention&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;layer_norm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;attn_output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;post_attn_layer_norm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;attn_output&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 新增&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;attn_output&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;修改二：在 MHA concat 前对每个 head 乘以可学习标量&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 原始 MHA&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;attn_output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;heads&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;W_o&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# NormFormer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;head_scales&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;nn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Parameter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ones&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num_heads&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="c1"&gt;# 初始化为1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;scaled_heads&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;head_scales&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;heads&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num_heads&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;attn_output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scaled_heads&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;W_o&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;修改三：在 FFN 第一个线性层后添加 LayerNorm&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 原始 FFN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;activation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;W1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;W2&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# NormFormer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;activation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;W1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ffn_layer_norm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 新增&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt; &lt;span class="n"&gt;W2&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;在 fairseq 框架中，这三个修改对应三个简单的命令行参数：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;fairseq-train ... --scale-attn --scale-fc --scale-heads
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="42-与主流框架的兼容性"&gt;4.2 与主流框架的兼容性&lt;/h3&gt;
&lt;p&gt;NormFormer 的设计具有极强的框架兼容性：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;与 PyTorch 原生 Transformer 兼容：&lt;/strong&gt; NormFormer 的三处修改都是在现有层之间插入标准的 LayerNorm 或可学习参数，不改变任何现有层的接口或行为。这意味着它可以无缝集成到任何基于 PyTorch 的 Transformer 实现中。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;与 HuggingFace Transformers 兼容：&lt;/strong&gt; 只需继承现有的注意力层和前馈网络层，在对应位置添加归一化操作即可。不需要修改分词器、数据加载器或训练循环。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;与分布式训练框架兼容：&lt;/strong&gt; NormFormer 添加的归一化层和可学习参数都是标准的 PyTorch 模块，完全兼容 DeepSpeed、Megatron-LM、FSDP 等主流分布式训练框架。归一化操作的计算和通信开销极小，不会成为分布式训练的瓶颈。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;与不同归一化方式兼容：&lt;/strong&gt; 虽然论文使用 LayerNorm 进行实验，但其设计思想对 RMSNorm（LLaMA 系列使用的归一化方式）同样适用。可以将 NormFormer 中的 LayerNorm 替换为 RMSNorm，在保持核心优势的同时获得 RMSNorm 的计算效率优势。&lt;/p&gt;
&lt;h3 id="43-实际部署场景与建议"&gt;4.3 实际部署场景与建议&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;场景一：从头预训练大语言模型&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这是 NormFormer 最适用的场景。如果你的团队正在从头训练一个数十亿参数的语言模型，添加 NormFormer 可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;节省约 24% 的训练时间（以达到同等困惑度为标准）&lt;/li&gt;
&lt;li&gt;支持使用更高的学习率而不发散，降低超参数调优成本&lt;/li&gt;
&lt;li&gt;以不到 6% 的额外计算开销换取稳定的性能提升&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;场景二：中等规模模型的快速迭代&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;对于 125M-1B 参数规模的模型，NormFormer 的收益更加明显。在这个规模上，可以同时使用 ResScale 获得最大收益。特别适合需要快速迭代模型架构和训练策略的研究场景。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;场景三：训练稳定性要求高的场景&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;如果你的训练任务容易出现发散（例如使用较大的学习率、较长的上下文、较大的 batch size），NormFormer 可以显著提升训练的鲁棒性。2.7B 模型在高学习率下的稳定训练就是一个很好的例证。&lt;/p&gt;
&lt;h3 id="44-不适用场景"&gt;4.4 不适用场景&lt;/h3&gt;
&lt;p&gt;也需要诚实地指出 NormFormer 可能不太适用的场景：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;已有预训练好的模型进行微调：&lt;/strong&gt; NormFormer 的收益主要体现在预训练阶段。如果你只是微调一个现有模型，添加 NormFormer 需要重新预训练，成本远大于收益。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;极大规模模型（&amp;gt;10B）：&lt;/strong&gt; 论文最大的实验只到 2.7B，对于更大规模模型的效果尚未被验证。虽然理论上应该同样有效，但缺乏实证支持。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;推理优化敏感的场景：&lt;/strong&gt; 虽然 NormFormer 的额外推理开销极小，但在对推理延迟有极致要求的场景下（例如实时搜索排序），任何额外的计算都需要审慎评估。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="45-成本收益分析"&gt;4.5 成本收益分析&lt;/h3&gt;
&lt;p&gt;让我们做一个简单的成本收益计算。假设你正在训练一个 1.3B 参数的语言模型：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;成本（额外开销）：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;训练速度降低约 4%（1.3B 规模的典型值）&lt;/li&gt;
&lt;li&gt;如果原始训练需要 10000 GPU 小时，NormFormer 版本需要约 10400 GPU 小时&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;收益：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;达到相同困惑度仅需 7600 GPU 小时（节省 24%）&lt;/li&gt;
&lt;li&gt;最终困惑度从 12.21 降低到 11.94&lt;/li&gt;
&lt;li&gt;零样本平均准确率从 63.6% 提升到 64.7%&lt;/li&gt;
&lt;li&gt;更强的训练稳定性，降低训练失败的风险&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;净收益：&lt;/strong&gt; 即使考虑单步训练时间的增加，要达到基线相同性能仍然可以节省约 20% 的总训练时间。如果以固定的计算预算训练到收敛，则获得更好的最终性能。NormFormer 都是一个值得采纳的改进。&lt;/p&gt;
&lt;h3 id="46-与后续工作的关系"&gt;4.6 与后续工作的关系&lt;/h3&gt;
&lt;p&gt;NormFormer 发表于 2021 年底，此后 Transformer 归一化领域继续涌现了许多重要工作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;RMSNorm&lt;/strong&gt;（Root Mean Square Layer Normalization）：去掉了 LayerNorm 中的均值中心化步骤，计算效率更高。被 LLaMA 系列广泛采用。NormFormer 的设计理念可以与 RMSNorm 无缝结合。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;QK-Norm&lt;/strong&gt;：对注意力中的 Query 和 Key 进行归一化，防止注意力得分过大。与 NormFormer 的 HeadScale 有互补作用。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HybridNorm（2025）&lt;/strong&gt;：探索了在同一模型中混合使用 Pre-LN 和 Post-LN 的可能性，进一步细化了归一化位置的选择。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;nGPT（2024）&lt;/strong&gt;：提出了基于单位超球面上表示学习的归一化方案，代表了归一化研究的新方向。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些后续工作并没有否定 NormFormer 的价值，反而证明了&amp;quot;在 Transformer 中优化归一化策略&amp;quot;这一研究方向的重要性。NormFormer 作为这一领域的先驱工作之一，为后续研究奠定了重要的理论和实验基础。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="5-总结与展望"&gt;5. 总结与展望&lt;/h2&gt;
&lt;h3 id="51-核心贡献回顾"&gt;5.1 核心贡献回顾&lt;/h3&gt;
&lt;p&gt;NormFormer 论文的核心贡献可以用三句话概括：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;发现了问题：&lt;/strong&gt; 系统性地揭示了 Pre-LN Transformer 中各层梯度分布不均的问题——早期层梯度过大、后期层梯度不足。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;提出了方案：&lt;/strong&gt; 通过在三个精心选择的位置（注意力输出后、注意力头拼接前、FFN 中间层）添加归一化操作，有效缓解了梯度失配。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证了效果：&lt;/strong&gt; 在多种任务（CLM、MLM、零样本）和多种规模（125M-2.7B）上，以不到 6% 的额外计算成本换取了 24% 的训练加速和一致的性能提升。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="52-对工程实践的启示"&gt;5.2 对工程实践的启示&lt;/h3&gt;
&lt;p&gt;NormFormer 给我们的最大启示不仅仅是&amp;quot;加几个 LayerNorm&amp;quot;这么简单，而是：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;启示一：小改进，大回报。&lt;/strong&gt; 在深度学习研究中，并非所有有价值的工作都需要颠覆性的架构创新。有时候，对现有架构的精细分析和微小调整就能带来显著的实际收益。NormFormer 的三处修改总共只增加了 0.4% 的参数量，却换来了 24% 的训练加速——这种高性价比的改进在工业界尤其受欢迎。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;启示二：梯度分析是优化训练的利器。&lt;/strong&gt; NormFormer 的整个工作建立在对梯度分布的细致观察之上。通过可视化和分析各层的梯度范数，研究者找到了问题所在，并据此设计了针对性的解决方案。这提醒我们，在训练大模型时，不要只盯着损失曲线，还应该关注梯度的层间分布。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;启示三：不是所有改进都能无限叠加。&lt;/strong&gt; 消融实验表明，在三个位置之外继续添加归一化层不仅没有收益，反而降低了训练速度。ResScale 在大模型上甚至有害。这告诉我们，模型改进需要有度，过度设计反而可能适得其反。&lt;/p&gt;
&lt;h3 id="53-未来展望"&gt;5.3 未来展望&lt;/h3&gt;
&lt;p&gt;尽管 NormFormer 已经展示了令人信服的实验结果，但仍有一些开放的研究方向值得探索：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;超大规模验证：&lt;/strong&gt; 论文最大的实验只到 2.7B 参数，NormFormer 在 10B、100B 甚至更大规模模型上的表现如何？是否存在新的问题或需要调整的地方？&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;与新型归一化的结合：&lt;/strong&gt; 将 NormFormer 的设计理念与 RMSNorm、QK-Norm 等新技术结合，是否能获得更大的收益？&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多模态扩展：&lt;/strong&gt; NormFormer 目前主要在语言模型上验证，在视觉 Transformer（ViT）、多模态模型（如 Flamingo、GPT-4V）中是否同样有效？&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自适应归一化：&lt;/strong&gt; 能否设计一种机制，让模型在训练过程中自动决定在哪些位置需要额外的归一化，而不是人工预设固定位置？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;总而言之，NormFormer 是一项兼具理论深度和工程价值的优秀工作。它用最简洁的方式解决了一个被忽视但重要的问题，为大规模 Transformer 预训练提供了一个即插即用的改进方案。对于正在从事大模型预训练的团队来说，NormFormer 值得认真评估和尝试。&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;&lt;strong&gt;参考文献：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Shleifer, S., Weston, J., &amp;amp; Ott, M. (2021). NormFormer: Improved Transformer Pretraining with Extra Normalization.
&lt;/li&gt;
&lt;li&gt;Xiong, R., et al. (2020). On Layer Normalization in the Transformer Architecture. ICML 2020.&lt;/li&gt;
&lt;li&gt;Vaswani, A., et al. (2017). Attention Is All You Need. NeurIPS 2017.&lt;/li&gt;
&lt;li&gt;Zhang, B., &amp;amp; Sennrich, R. (2019). Root Mean Square Layer Normalization. NeurIPS 2019.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;</description></item><item><title>SORT：面向工业级推荐系统的系统优化排序 Transformer</title><link>https://dingyadong.top/posts/011_sort_paper_review/</link><pubDate>Wed, 01 Apr 2026 12:00:00 +0800</pubDate><guid>https://dingyadong.top/posts/011_sort_paper_review/</guid><description>
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;本文是关于 AliExpress 团队论文《SORT: A Systematically Optimized Ranking Transformer for Industrial-scale Recommenders》（
）的深度精读笔记。本文将从问题定义、架构设计、系统优化到实验分析，全方位剖析 SORT 如何将 Transformer 成功落地到工业级推荐排序场景。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="1-引言transformer-进军推荐排序的最后一公里"&gt;1. 引言：Transformer 进军推荐排序的&amp;quot;最后一公里&amp;quot;&lt;/h2&gt;
&lt;p&gt;Transformer 架构凭借其卓越的可扩展性（Scalability），在大语言模型（LLM）领域取得了令人瞩目的成就。从 GPT 到 LLaMA，从 BERT 到 T5，统一的 Transformer 架构不断刷新各项基准。这种成功的核心在于一个简洁而强大的范式：&lt;strong&gt;通过增加模型参数和训练数据，性能可以持续提升（Scaling Law）&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;然而在推荐系统的排序（Ranking）阶段，主流模型仍然是 DIN、DIEN、DeepFM、DCN 等&lt;strong&gt;专用架构（Task-specific Architectures）&lt;/strong&gt;。这些模型虽然在各自的场景中表现优异，但存在一个根本性问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;架构碎片化&lt;/strong&gt;：不同的特征交互方式需要不同的模型设计，难以统一&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可扩展性差&lt;/strong&gt;：增加参数量往往不能带来持续的性能提升，甚至可能导致过拟合&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工程维护成本高&lt;/strong&gt;：每种模型都需要独立的优化和维护&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一个自然的问题是：&lt;strong&gt;能否像 LLM 一样，用统一的 Transformer 架构来构建推荐排序模型？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;近年来，已有一些先驱性的工作开始探索这个方向：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;HSTU&lt;/strong&gt;（Meta, 2024）：提出了层级化序列转导单元，验证了推荐系统中的 Scaling Law&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OneTrans&lt;/strong&gt;（2024）：尝试将 Transformer 应用于排序场景&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GPSD&lt;/strong&gt;（Meta, 2025）：通过生成式预训练解决判别式推荐模型的过拟合问题&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但这些工作要么聚焦于召回/检索阶段，要么在工业级排序场景中的落地效果有限。&lt;strong&gt;SORT（Systematically Optimized Ranking Transformer）&lt;/strong&gt; 正是在这一背景下提出的——它系统性地解决了 Transformer 在工业级排序模型中面临的一系列挑战，并在 AliExpress 的真实业务场景中取得了显著收益。&lt;/p&gt;
&lt;div class="mermaid-wrapper"&gt;
&lt;div class="mermaid" style="background: transparent;"&gt;
graph LR
A1["DIN&lt;br/&gt;目标注意力"] &amp; A2["DIEN&lt;br/&gt;兴趣演化"] &amp; A3["DeepFM&lt;br/&gt;特征交叉"] &amp; A4["DCN&lt;br/&gt;交叉网络"]
A4 --&gt;|"架构碎片化&lt;br/&gt;可扩展性差"| B1
B1["HSTU&lt;br/&gt;Meta 2024"] &amp; B2["OneTrans&lt;br/&gt;2024"] &amp; B3["GPSD&lt;br/&gt;Meta 2025"]
B3 --&gt;|"系统性优化"| C1
C1["统一架构"] &amp; C2["系统优化&lt;br/&gt;稀疏注意力+MoE"] &amp; C3["工业落地"]
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;图 1：推荐排序模型的演进路径。&lt;/strong&gt; 从传统的专用架构（DIN、DeepFM 等），经过 Transformer 的初步探索（HSTU、OneTrans、GPSD），到 SORT 实现统一的工业级排序 Transformer。传统范式面临架构碎片化和可扩展性差的问题——每种特征交互方式都需要定制化的模型设计（如 DIN 的目标注意力、DeepFM 的二阶交叉、DCN 的显式交叉网络），导致工程维护成本高且难以通过简单增加参数来提升性能。过渡阶段的探索工作（HSTU 聚焦召回、GPSD 专注预训练框架、OneTrans 初步尝试排序）虽然各有突破，但尚未形成完整的工业级排序解决方案。SORT 通过系统性优化，首次在工业级排序场景中成功落地统一的 Transformer 架构，标志着推荐排序从&amp;quot;专用模型&amp;quot;向&amp;quot;统一基础模型&amp;quot;的范式转变。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="2-核心问题高特征稀疏性-vs-低标签密度"&gt;2. 核心问题：高特征稀疏性 vs 低标签密度&lt;/h2&gt;
&lt;p&gt;在深入 SORT 的技术细节之前，我们需要理解一个根本性问题：&lt;strong&gt;为什么 Transformer 在推荐排序中不能像在 NLP 中那样直接 Scale Up？&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="21-语言模型-vs-推荐模型的关键差异"&gt;2.1 语言模型 vs 推荐模型的关键差异&lt;/h3&gt;
&lt;p&gt;论文清晰地指出了两个领域之间的核心矛盾：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;维度&lt;/th&gt;
&lt;th&gt;语言模型 (LLM)&lt;/th&gt;
&lt;th&gt;推荐排序模型&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;词表规模&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;BPE 子词分词，词表约 32K-128K&lt;/td&gt;
&lt;td&gt;十亿级物品 ID 词表&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;特征稀疏性&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;低（子词复用率高）&lt;/td&gt;
&lt;td&gt;极高（长尾物品大量存在）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;标签密度&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;高（每个位置都有来自完整词表的监督信号）&lt;/td&gt;
&lt;td&gt;极低（仅目标物品有二值标签 0/1）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;训练信号&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;丰富（next-token prediction 提供密集梯度）&lt;/td&gt;
&lt;td&gt;稀疏（只有点击/未点击的二值反馈）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;过拟合风险&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;相对较低&lt;/td&gt;
&lt;td&gt;极高&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;用一句话概括这个矛盾&lt;/strong&gt;：推荐排序模型需要用&lt;strong&gt;极度稀疏的二值标签&lt;/strong&gt;来正则化&lt;strong&gt;海量的参数空间&lt;/strong&gt;（特别是十亿级的 Embedding 表），这导致了严重的过拟合问题。&lt;/p&gt;
&lt;h3 id="22-具体表现"&gt;2.2 具体表现&lt;/h3&gt;
&lt;p&gt;这个矛盾在实践中有以下具体表现：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Embedding 表过拟合&lt;/strong&gt;：十亿级物品 ID 的 Embedding 参数极其庞大，但大量长尾物品只有极少的训练样本，导致对应的 Embedding 向量无法被充分学习&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模型容量与数据量不匹配&lt;/strong&gt;：增加 Transformer 层数和参数量时，模型的泛化差距（Generalization Gap）迅速扩大&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;训练不稳定&lt;/strong&gt;：大规模稀疏特征的梯度更新存在高方差，容易导致训练发散&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="23-sort-的系统性应对策略"&gt;2.3 SORT 的系统性应对策略&lt;/h3&gt;
&lt;p&gt;面对上述挑战，SORT 并没有采取单一的解决方案，而是提出了一套&lt;strong&gt;系统性的互补优化&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="mermaid-wrapper"&gt;
&lt;div class="mermaid" style="background: transparent;"&gt;
graph LR
Problem["核心矛盾&lt;br/&gt;高特征稀疏性&lt;br/&gt;× 低标签密度"]
S1["① 请求中心样本 → 效率↑"]
S2["② 特殊 Token → 训练稳定"]
S3["③ 稀疏注意力+裁剪 → O(n)"]
S4["④ DeepSeek MoE → 容量↑"]
S5["⑤ 预训练+冻结 → 过拟合↓"]
S6["⑥ QKNorm+门控 → 大规模"]
Problem --&gt; S1
Problem --&gt; S2
Problem --&gt; S3
Problem --&gt; S4
Problem --&gt; S5
Problem --&gt; S6
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;图 2：SORT 针对核心矛盾的系统性解决方案。&lt;/strong&gt; 面对高特征稀疏性和低标签密度的根本矛盾，SORT 提出了六个互补的优化方向，每个方向解决一个具体维度的问题：请求中心样本组织从数据层面减少冗余计算，提升训练效率；特殊 Token（BOS/SEP）从注意力分布层面稳定训练过程，防止注意力权重的异常分配；稀疏注意力和查询裁剪从计算复杂度层面将二次复杂度降至线性，并引入有益的时间衰减归纳偏置；DeepSeek MoE FFN 从模型容量层面在不增加激活计算量的前提下大幅扩展参数空间；生成式预训练加嵌入冻结策略从优化目标层面根本性地解决稀疏参数的过拟合问题；QKNorm 和门控注意力从数值稳定性层面保障大规模训练的收敛。这六个优化并非孤立存在，而是形成了一个有机整体——它们分别作用于数据、注意力、复杂度、容量、正则化和稳定性六个维度，共同构成了 SORT 的技术护城河。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="3-sort-架构详解"&gt;3. SORT 架构详解&lt;/h2&gt;
&lt;h3 id="31-请求中心的样本组织request-centric-sample-organization"&gt;3.1 请求中心的样本组织（Request-Centric Sample Organization）&lt;/h3&gt;
&lt;h4 id="传统方法的问题"&gt;传统方法的问题&lt;/h4&gt;
&lt;p&gt;在传统的排序模型训练中，对于用户的一次请求（Request），系统会返回 $N$ 个候选物品，然后为每个候选物品生成一个独立的训练样本。这意味着：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;同一个用户的历史行为序列被重复编码 $N$ 次&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;同一个用户画像（User Profile）被重复处理 $N$ 次&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;计算资源严重浪费&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="sort-的解决方案"&gt;SORT 的解决方案&lt;/h4&gt;
&lt;p&gt;SORT 将样本组织方式从&amp;quot;物品中心&amp;quot;改为**&amp;ldquo;请求中心&amp;rdquo;**：&lt;/p&gt;
$$S = \langle H, U, C \rangle$$&lt;p&gt;其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;$H$ = 用户历史行为序列（User History）&lt;/li&gt;
&lt;li&gt;$U$ = 用户画像（User Profile）&lt;/li&gt;
&lt;li&gt;$C$ = 候选物品集合（Candidate Set，包含该请求中的所有候选物品）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种组织方式的核心优势：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;一次前向传播处理所有候选物品&lt;/strong&gt;：用户序列和画像只需编码一次&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;计算成本按候选数量摊销&lt;/strong&gt;：N 个候选物品共享上下文计算&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;天然支持候选间信息交互&lt;/strong&gt;：候选物品之间可以通过注意力机制进行比较&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="mermaid-wrapper"&gt;
&lt;div class="mermaid" style="background: transparent;"&gt;
graph LR
R1["传统：请求 N 个候选"] --&gt; S["传统：N 条样本&lt;br/&gt;每条 = History+Profile+Item"]
S --&gt; F["传统：N 次前向传播&lt;br/&gt;⚠️ History 重复编码 N 次"]
R2["SORT：请求 N 个候选"] --&gt; US["SORT：1 条样本&lt;br/&gt;S = ⟨H, U, C₁...Cₙ⟩"]
US --&gt; FF["SORT：1 次前向传播&lt;br/&gt;✅ History 仅编码 1 次"]
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;图 3：传统物品中心 vs SORT 请求中心的样本组织对比。&lt;/strong&gt; 传统方法对每个候选物品生成独立样本，用户历史和画像被冗余编码 N 次，计算浪费严重。SORT 将一次请求中的所有候选物品打包为统一样本，通过单次前向传播同时处理所有候选，用户上下文仅编码一次。这不仅大幅降低了计算成本，还使候选物品之间能够通过注意力机制进行信息交互，为后续的排序决策提供了更丰富的比较信号。在实际工业场景中，一次请求通常包含数十到数百个候选物品，因此这种改进带来的效率提升非常显著。&lt;/p&gt;
&lt;h3 id="32-分词模块tokenization"&gt;3.2 分词模块（Tokenization）&lt;/h3&gt;
&lt;p&gt;SORT 的分词模块将异构的推荐特征统一映射为 Token 序列，具体设计如下：&lt;/p&gt;
&lt;h4 id="token-类型"&gt;Token 类型&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Token 类型&lt;/th&gt;
&lt;th&gt;来源&lt;/th&gt;
&lt;th&gt;数量&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;BOS Token&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;特殊标记&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;序列起始标记，充当&amp;quot;注意力汇聚点&amp;quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;History Token&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;用户历史行为&lt;/td&gt;
&lt;td&gt;$L_h$&lt;/td&gt;
&lt;td&gt;每个历史交互物品生成一个 Token&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Profile Token&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;用户画像&lt;/td&gt;
&lt;td&gt;$L_u$&lt;/td&gt;
&lt;td&gt;用户画像特征映射为多个 Token&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SEP Token&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;特殊标记&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;分隔用户上下文和候选物品&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Candidate Token&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;候选物品&lt;/td&gt;
&lt;td&gt;$N_c$&lt;/td&gt;
&lt;td&gt;每个候选物品生成一个 Token&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id="bos-token-的关键作用注意力汇聚attention-sink"&gt;BOS Token 的关键作用——注意力汇聚（Attention Sink）&lt;/h4&gt;
&lt;p&gt;在 Transformer 中，一个广泛观察到的现象是：&lt;strong&gt;模型倾向于将大量注意力分数分配给序列的第一个 Token&lt;/strong&gt;，即便该 Token 本身没有实际语义。这种现象被称为 &lt;strong&gt;&amp;ldquo;注意力汇聚（Attention Sink）&amp;rdquo;&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;SORT 显式引入 BOS Token 来承担这一角色：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;吸收冗余注意力分数&lt;/strong&gt;：防止无关 Token 之间产生不合理的高注意力权重&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;稳定注意力分布&lt;/strong&gt;：使模型能更准确地分配注意力给真正重要的 Token&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;实验验证&lt;/strong&gt;：引入特殊 Token（BOS + SEP）带来了 &lt;strong&gt;+0.33pt CTR-AUC&lt;/strong&gt; 的提升&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="token-生成过程"&gt;Token 生成过程&lt;/h4&gt;
&lt;p&gt;每个 Token 的生成方式如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;类别特征&lt;/strong&gt;：通过 Embedding 查表获取向量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数值特征&lt;/strong&gt;：通过线性变换映射为向量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多特征融合&lt;/strong&gt;：同一 Token 的多个特征向量通过&lt;strong&gt;求和（Sum Pooling）&lt;/strong&gt; 融合为最终的 Token 表示&lt;/li&gt;
&lt;/ol&gt;
$$\text{Token}_i = \sum_{f \in \text{Features}_i} \text{Embed}(f)$$&lt;h3 id="33-多头注意力mha优化"&gt;3.3 多头注意力（MHA）优化&lt;/h3&gt;
&lt;p&gt;SORT 在标准多头注意力的基础上进行了三项关键优化：&lt;/p&gt;
&lt;h4 id="331-rope-相对位置编码rotary-position-embedding"&gt;3.3.1 RoPE 相对位置编码（Rotary Position Embedding）&lt;/h4&gt;
&lt;p&gt;传统的绝对位置编码（如正弦编码或可学习编码）在处理变长序列时存在局限性。SORT 采用 &lt;strong&gt;RoPE&lt;/strong&gt; 作为位置编码方案：&lt;/p&gt;
$$\text{RoPE}(x, \text{pos}) = x \cdot \cos(\text{pos} \cdot \theta) + \text{rotate}(x) \cdot \sin(\text{pos} \cdot \theta)$$&lt;p&gt;&lt;strong&gt;对候选物品的特殊处理&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;所有候选物品使用&lt;strong&gt;相同的位置 ID&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;通过&lt;strong&gt;对角掩码（Diagonal Mask）&lt;/strong&gt; 确保候选物品之间的独立性&lt;/li&gt;
&lt;li&gt;这意味着每个候选物品&amp;quot;站在同一个位置&amp;quot;观察用户历史，保证了排序的公平性&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="332-qknorm训练稳定性的保障"&gt;3.3.2 QKNorm——训练稳定性的保障&lt;/h4&gt;
&lt;p&gt;在大规模训练中，Query 和 Key 向量的内积可能产生极大的数值，导致 Softmax 的梯度消失。SORT 引入 &lt;strong&gt;QKNorm&lt;/strong&gt;：&lt;/p&gt;
$$\text{Attention}(Q, K, V) = \text{Softmax}\left(\frac{\text{Norm}(Q) \cdot \text{Norm}(K)^T}{\sqrt{d_k}}\right) V$$&lt;p&gt;对 Query 和 Key 在投影后分别进行 LayerNorm，确保注意力分数的数值范围稳定。&lt;/p&gt;
&lt;h4 id="333-门控注意力gated-attention"&gt;3.3.3 门控注意力（Gated Attention）&lt;/h4&gt;
&lt;p&gt;在标准缩放点积注意力的基础上，SORT 添加了一个&lt;strong&gt;门控机制&lt;/strong&gt;：&lt;/p&gt;
$$\text{GatedAttn}(Q, K, V) = \sigma(G) \odot \text{Softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) V$$&lt;p&gt;其中 $\sigma(G)$ 是一个可学习的门控向量，用于控制每个注意力头的信息流。这种门控机制允许模型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自适应地调节不同注意力头的贡献&lt;/li&gt;
&lt;li&gt;在训练早期抑制不稳定的注意力模式&lt;/li&gt;
&lt;li&gt;提供更细粒度的信息流控制&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="34-稀疏注意力机制sparse-attention"&gt;3.4 稀疏注意力机制（Sparse Attention）&lt;/h3&gt;
&lt;h4 id="动机"&gt;动机&lt;/h4&gt;
&lt;p&gt;标准因果注意力的复杂度为 $\mathcal{O}(L^2)$，对于长用户行为序列（L 可达数千）来说，计算和内存成本都不可接受。&lt;/p&gt;
&lt;h4 id="设计"&gt;设计&lt;/h4&gt;
&lt;p&gt;SORT 采用**分区稀疏注意力（Partitioned Sparse Attention）**策略：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;历史行为序列&lt;/strong&gt;：采用&lt;strong&gt;局部注意力窗口（Local Attention Window）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;每个 Token 只关注其前方窗口大小 $w$ 内的 Token&lt;/li&gt;
&lt;li&gt;时间复杂度从 $\mathcal{O}(L^2)$ 降至 $\mathcal{O}(L \cdot w)$，即&lt;strong&gt;线性复杂度&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;最优窗口大小为 &lt;strong&gt;256&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;候选物品&lt;/strong&gt;：保留&lt;strong&gt;标准因果注意力&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;候选物品需要关注完整的用户上下文&lt;/li&gt;
&lt;li&gt;候选物品数量相对较少，不会成为瓶颈&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="关键发现"&gt;关键发现&lt;/h4&gt;
&lt;p&gt;论文中一个令人意外的发现是：&lt;strong&gt;局部注意力窗口 256 的效果甚至超过了标准因果注意力（即完整的全局注意力）&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这一现象的直觉解释是：推荐场景中用户的近期行为比远期行为对当前兴趣更为重要，局部注意力天然契合了这种时间局部性。更深入的分析见第 7.1 节的讨论。&lt;/p&gt;
&lt;h3 id="35-查询裁剪query-pruning"&gt;3.5 查询裁剪（Query Pruning）&lt;/h3&gt;
&lt;h4 id="核心思想"&gt;核心思想&lt;/h4&gt;
&lt;p&gt;查询裁剪是 SORT 中一个非常巧妙的设计。其核心思想是：&lt;strong&gt;在 Transformer 的深层，距离候选物品较远的历史 Token 的 Query 向量对最终预测的贡献越来越小，可以安全地裁剪掉。&lt;/strong&gt;&lt;/p&gt;
&lt;h4 id="实现方式"&gt;实现方式&lt;/h4&gt;
&lt;p&gt;SORT 采用&lt;strong&gt;逐层递进式裁剪&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在浅层（靠近输入）：保留所有 Token 的 Query&lt;/li&gt;
&lt;li&gt;在深层（靠近输出）：逐步裁剪距离候选物品远的 Query Token&lt;/li&gt;
&lt;li&gt;在最终层：仅保留 &lt;strong&gt;≤128 个非候选 Token&lt;/strong&gt; 的 Query&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;重要区别&lt;/strong&gt;：被裁剪的是 &lt;strong&gt;Query&lt;/strong&gt;，而非 Key 和 Value。这意味着：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;被裁剪的 Token 仍然作为 Key 和 Value 参与注意力计算&lt;/li&gt;
&lt;li&gt;其他 Token（特别是候选物品）仍然可以&amp;quot;看到&amp;quot;被裁剪 Token 的信息&lt;/li&gt;
&lt;li&gt;但被裁剪的 Token 本身不再主动&amp;quot;查询&amp;quot;其他 Token&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="效果"&gt;效果&lt;/h4&gt;
&lt;p&gt;查询裁剪带来了双重收益：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;计算成本减半&lt;/strong&gt;：几乎将 FLOPs 降低了 50%&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;性能反而提升&lt;/strong&gt;：带来了 &lt;strong&gt;+0.26pt CTR-AUC&lt;/strong&gt; 的增益&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;性能提升的原因在于查询裁剪隐式地引入了&lt;strong&gt;时间衰减归纳偏置（Temporal Decay Inductive Bias）&lt;/strong&gt;——在推荐系统中，这是一个非常合理的先验：用户的近期行为比远期行为对当前兴趣的预测更为重要。&lt;/p&gt;
&lt;div class="mermaid-wrapper"&gt;
&lt;div class="mermaid" style="background: transparent;"&gt;
graph LR
H["输入: H₁, H₂, ..., Hₙ&lt;br/&gt;(History)"]
C["输入: C₁, C₂, ..., Cₘ&lt;br/&gt;(Candidates)"]
L1["浅层 1-4&lt;br/&gt;全量 Q/K/V + 局部窗口 w=256"]
L2["中间层 5-8&lt;br/&gt;裁剪远距 History Q, 保留 K/V"]
L3["深层 9-12&lt;br/&gt;≤128 History Q + 全量 Candidate"]
O["输出: Candidate 隐层 → FFN&lt;br/&gt;→ CTR/CVR 预测"]
H --&gt; L1
C --&gt; L1
L1 --&gt; L2 --&gt; L3
L3 --&gt; O
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;图 4：SORT 的稀疏注意力与查询裁剪机制。&lt;/strong&gt; 在浅层，所有 Token 保留完整的 Query/Key/Value 进行局部注意力计算（窗口大小 256）；随着层数加深，距离候选物品较远的历史 Token 的 Query 被逐步裁剪，但其 Key 和 Value 仍然保留，确保候选物品可以访问完整的历史信息；在最深层，仅保留不超过 128 个历史 Token 的 Query 和所有候选 Token，最终通过候选 Token 的隐层输出进行 CTR/CVR 预测。这种设计将计算成本降低约 50%，同时通过引入时间衰减归纳偏置反而提升了模型性能。&lt;/p&gt;
&lt;h3 id="36-deepseek-moe-ffn"&gt;3.6 DeepSeek MoE FFN&lt;/h3&gt;
&lt;h4 id="为什么需要-moe"&gt;为什么需要 MoE？&lt;/h4&gt;
&lt;p&gt;标准 Transformer 的 FFN 层采用稠密计算，所有参数对每个 Token 都会被激活。在推荐排序模型中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不同类型的用户行为（浏览、点击、收藏、购买）可能需要不同的特征变换&lt;/li&gt;
&lt;li&gt;不同类别的物品可能需要不同的处理方式&lt;/li&gt;
&lt;li&gt;稠密 FFN 难以同时满足这些多样化的需求&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;MoE（Mixture of Experts）&lt;/strong&gt; 通过引入多个&amp;quot;专家&amp;quot;网络并动态路由，可以在不成比例增加计算量的前提下大幅扩大模型容量。&lt;/p&gt;
&lt;h4 id="sort-的-moe-选择deepseek-moe"&gt;SORT 的 MoE 选择：DeepSeek MoE&lt;/h4&gt;
&lt;p&gt;SORT 比较了两种 MoE 方案：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;维度&lt;/th&gt;
&lt;th&gt;Switch MoE&lt;/th&gt;
&lt;th&gt;DeepSeek MoE&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;路由方式&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Top-K 路由&lt;/td&gt;
&lt;td&gt;细粒度路由&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;负载均衡&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;需要调整辅助损失超参&lt;/td&gt;
&lt;td&gt;无需辅助负载均衡损失&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;性能&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;基线&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;略优于 Switch MoE&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;工程复杂度&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;需要仔细调参&lt;/td&gt;
&lt;td&gt;开箱即用&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;最终 SORT 选择了 DeepSeek MoE，关键超参数：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;稀疏率&lt;/strong&gt;：$1/8$（每个 Token 激活 $1/8$ 的专家参数）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;性能收益&lt;/strong&gt;：+0.19pt CTR-AUC&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;核心优势&lt;/strong&gt;：无需额外的辅助损失函数调参，工程实现更简洁&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="moe-稀疏率的影响"&gt;MoE 稀疏率的影响&lt;/h4&gt;
&lt;p&gt;论文通过消融实验探索了不同稀疏率的效果：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;稀疏率&lt;/th&gt;
&lt;th&gt;含义&lt;/th&gt;
&lt;th&gt;性能趋势&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1/1（无 MoE）&lt;/td&gt;
&lt;td&gt;全稠密 FFN&lt;/td&gt;
&lt;td&gt;基线&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1/2&lt;/td&gt;
&lt;td&gt;激活一半专家&lt;/td&gt;
&lt;td&gt;有一定提升&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1/4&lt;/td&gt;
&lt;td&gt;激活 1/4 专家&lt;/td&gt;
&lt;td&gt;继续提升&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;1/8&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;激活 1/8 专家&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;最优&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1/16&lt;/td&gt;
&lt;td&gt;激活 1/16 专家&lt;/td&gt;
&lt;td&gt;开始下降&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;最优稀疏率为 $1/8$，这意味着 SORT 能够以 $1/8$ 的激活计算量获得与完整稠密模型相当甚至更优的效果。过低的稀疏率（如 1/16）可能由于每个专家接收到的训练信号不足而导致性能退化。&lt;/p&gt;
&lt;h3 id="37-生成式预训练与嵌入冻结generative-pretraining--embedding-freeze"&gt;3.7 生成式预训练与嵌入冻结（Generative Pretraining + Embedding Freeze）&lt;/h3&gt;
&lt;h4 id="这是解决过拟合的关键"&gt;这是解决过拟合的关键&lt;/h4&gt;
&lt;p&gt;前面提到，推荐排序模型的核心矛盾在于用稀疏的二值标签训练庞大的 Embedding 表。SORT 借鉴了 GPSD 框架的思路，但有自己独特的处理方式。&lt;/p&gt;
&lt;h4 id="两阶段策略"&gt;两阶段策略&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;阶段一：生成式预训练（Generative Pretraining）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在用户行为序列上进行 &lt;strong&gt;next-item prediction&lt;/strong&gt; 任务&lt;/li&gt;
&lt;li&gt;使用 &lt;strong&gt;Sampled Softmax&lt;/strong&gt; 作为损失函数&lt;/li&gt;
&lt;li&gt;预训练的目标是学习高质量的&lt;strong&gt;物品 Embedding 表&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;关键设计：&lt;strong&gt;不使用用户 ID 特征&lt;/strong&gt;，仅通过历史行为序列和画像来表征用户&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;阶段二：判别式训练（Discriminative Training）+ 嵌入冻结&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;将预训练好的物品 Embedding 表迁移到排序模型&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;冻结 Embedding 表&lt;/strong&gt;，不在排序训练中更新&lt;/li&gt;
&lt;li&gt;仅训练 Transformer 的稠密参数&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="冻结策略的关键性"&gt;冻结策略的关键性&lt;/h4&gt;
&lt;p&gt;论文通过消融实验揭示了一个极其重要的发现：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;策略&lt;/th&gt;
&lt;th&gt;CTR-AUC 变化&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;无预训练（基线）&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;仅转移预训练 Embedding&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-0.13pt&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;反而下降！&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;转移 + &lt;strong&gt;冻结&lt;/strong&gt; Embedding&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+2.81pt&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;显著提升&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;为什么&amp;quot;仅转移不冻结&amp;quot;反而有害？&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;预训练的 Embedding 在判别式训练中会被大量负样本的梯度&amp;quot;冲刷&amp;quot;&lt;/li&gt;
&lt;li&gt;失去了预训练阶段通过密集生成式信号学到的高质量表示&lt;/li&gt;
&lt;li&gt;相当于预训练的效果被&amp;quot;遗忘&amp;quot;了&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;为什么&amp;quot;冻结&amp;quot;如此有效？&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;保护了预训练 Embedding 的质量不被稀疏标签破坏&lt;/li&gt;
&lt;li&gt;大幅减少了可训练参数量（Embedding 表通常占总参数量的 90%+）&lt;/li&gt;
&lt;li&gt;使模型能进行&lt;strong&gt;多轮次训练（Multi-epoch）&lt;/strong&gt; 而不过拟合&lt;/li&gt;
&lt;li&gt;将优化重心聚焦于稠密的 Transformer 参数&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="mermaid-wrapper"&gt;
&lt;div class="mermaid" style="background: transparent;"&gt;
graph LR
A["Stage1: 行为序列"] --&gt; B["Stage1: Transformer Decoder"] --&gt; C["Stage1: Next-Item Prediction"]
C --&gt;|"密集信号"| D["Stage1: 预训练 Embedding"]
D --&gt;|"复制 + 冻结 ❄️"| G
F["Stage2: 请求样本 ⟨H,U,C⟩"] --&gt; G["Stage2: Token化 🔒"]
G --&gt; H["Stage2: SORT Transformer 🔥"] --&gt; I["Stage2: FFN → CTR/CVR"]
I --&gt; R["转移+冻结: +2.81pt ✅"]
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;图 5：SORT 的生成式预训练与嵌入冻结策略。&lt;/strong&gt; 第一阶段通过 next-item prediction 任务预训练物品 Embedding 表，利用 Sampled Softmax 提供的密集训练信号充分学习每个物品的表示。第二阶段将预训练好的 Embedding 表迁移到排序模型中并&lt;strong&gt;冻结&lt;/strong&gt;，只训练 Transformer 的稠密参数。消融实验表明，仅转移不冻结反而导致性能下降 0.13pt（预训练效果被稀疏标签&amp;quot;冲刷&amp;quot;），而转移加冻结策略带来了高达 2.81pt 的 CTR-AUC 提升。冻结策略的成功本质上是将&amp;quot;稀疏特征学习&amp;quot;和&amp;quot;稠密特征交叉&amp;quot;解耦为两个独立的优化目标，各自用最合适的任务和训练方式来学习。&lt;/p&gt;
&lt;h3 id="38-排序头与损失函数"&gt;3.8 排序头与损失函数&lt;/h3&gt;
&lt;p&gt;SORT 的最终预测通过以下方式完成：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;提取候选 Token 的隐层输出&lt;/strong&gt;：取 Transformer 最后一层中每个候选 Token 对应的隐状态向量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;排序头 FFN&lt;/strong&gt;：一个两层的前馈网络
&lt;ul&gt;
&lt;li&gt;隐藏层 + ReLU 激活&lt;/li&gt;
&lt;li&gt;输出层 + Sigmoid 激活&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多目标预测&lt;/strong&gt;：同时预估多个目标
&lt;ul&gt;
&lt;li&gt;点击率（CTR）&lt;/li&gt;
&lt;li&gt;加购率（Add-to-Cart Rate）&lt;/li&gt;
&lt;li&gt;购买率（CVR）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;损失函数&lt;/strong&gt;：加权二值交叉熵（Weighted Binary Cross-Entropy）&lt;/li&gt;
&lt;/ol&gt;
$$\mathcal{L} = \sum_{t \in \{\text{click, cart, purchase}\}} w_t \cdot \text{BCE}(\hat{y}_t, y_t)$$&lt;hr&gt;
&lt;h2 id="4-系统优化从算法到工程的全链路"&gt;4. 系统优化：从算法到工程的全链路&lt;/h2&gt;
&lt;p&gt;一个好的模型设计如果不能在工程上高效实现，就无法在工业场景中落地。SORT 在训练和推理两端都进行了深度优化。&lt;/p&gt;
&lt;h3 id="41-训练系统优化"&gt;4.1 训练系统优化&lt;/h3&gt;
&lt;h4 id="mfu-从-13-到-22-的飞跃"&gt;MFU 从 13% 到 22% 的飞跃&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;MFU（Model FLOPs Utilization）&lt;/strong&gt; 衡量的是模型训练时对硬件计算能力的实际利用率。SORT 将 MFU 从 13% 提升到 &lt;strong&gt;22%&lt;/strong&gt;，主要通过以下手段：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;（1）稀疏模块优化：多进程组通信（MPGC）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;推荐模型的 Embedding 表分布在多个 GPU 上，每次前向传播都需要大量的跨 GPU 通信。SORT 开发了 &lt;strong&gt;MPGC（Multi-Process Group Communication）&lt;/strong&gt; 机制：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;动态调度多个特征 Embedding 的跨进程组通信&lt;/li&gt;
&lt;li&gt;将通信与计算&lt;strong&gt;流水线化&lt;/strong&gt;，隐藏通信延迟&lt;/li&gt;
&lt;li&gt;不同特征组的通信可以并行执行&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;（2）稠密模块优化：高效稀疏注意力算子&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;SORT 开发了通用的稀疏注意力 GPU 算子：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;采用&lt;strong&gt;分块计算（Tiled Computation）&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;掩码预加载与验证&lt;/strong&gt;：跳过完全被掩码的块，避免无效计算&lt;/li&gt;
&lt;li&gt;结合&lt;strong&gt;混合精度训练（BF16）&lt;/strong&gt; 和&lt;strong&gt;梯度累积&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;优化内存访问模式，提升 GPU 利用率&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="训练优化效果汇总"&gt;训练优化效果汇总&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;优化手段&lt;/th&gt;
&lt;th&gt;提升&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;MPGC 通信优化&lt;/td&gt;
&lt;td&gt;通信延迟隐藏&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;稀疏注意力算子&lt;/td&gt;
&lt;td&gt;注意力计算效率↑&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;混合精度训练&lt;/td&gt;
&lt;td&gt;内存占用↓，计算速度↑&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;梯度累积&lt;/td&gt;
&lt;td&gt;大 batch size 支持&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;综合 MFU&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;13% → 22%（+69%）&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="42-推理系统优化"&gt;4.2 推理系统优化&lt;/h3&gt;
&lt;h4 id="从动态图到静态图"&gt;从动态图到静态图&lt;/h4&gt;
&lt;p&gt;SORT 使用 &lt;strong&gt;torch.export&lt;/strong&gt; 和 &lt;strong&gt;AOTInductor&lt;/strong&gt; 将 PyTorch 的动态计算图转换为静态图，获得编译器级别的优化。&lt;/p&gt;
&lt;h4 id="核心推理优化"&gt;核心推理优化&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;（1）稀疏掩码注意力核（Sparse Masked Attention Kernel）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;针对 SORT 的稀疏注意力模式，开发了高性能的 GPU 推理核：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;吞吐量提升 &lt;strong&gt;+16.7%&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;延迟降低 &lt;strong&gt;-24.4%&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;（2）算子融合（Operator Fusion）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;合并自注意力中的多个线性层计算：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;将 Q/K/V 的投影融合为单次矩阵乘法&lt;/li&gt;
&lt;li&gt;吞吐量提升 &lt;strong&gt;+10.9%&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;延迟降低 &lt;strong&gt;-6.3%&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;（3）通用优化&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;半精度推理（FP16/BF16）&lt;/strong&gt;：在不损失精度的前提下加速计算&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;KV Cache&lt;/strong&gt;：缓存历史 Token 的 Key 和 Value，避免重复计算&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多上下文多流执行（Multi-Context Multi-Stream）&lt;/strong&gt;：充分利用 GPU 的并行能力&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="推理优化效果汇总"&gt;推理优化效果汇总&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;优化手段&lt;/th&gt;
&lt;th&gt;吞吐量提升&lt;/th&gt;
&lt;th&gt;延迟降低&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;稀疏注意力核&lt;/td&gt;
&lt;td&gt;+16.7%&lt;/td&gt;
&lt;td&gt;-24.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;算子融合&lt;/td&gt;
&lt;td&gt;+10.9%&lt;/td&gt;
&lt;td&gt;-6.3%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;通用优化&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;综合效果&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+29.4%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-29.3%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="5-实验分析"&gt;5. 实验分析&lt;/h2&gt;
&lt;h3 id="51-离线实验"&gt;5.1 离线实验&lt;/h3&gt;
&lt;h4 id="基准模型对比"&gt;基准模型对比&lt;/h4&gt;
&lt;p&gt;SORT 与多个基准模型在相同数据集上进行了公平对比：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;模型&lt;/th&gt;
&lt;th&gt;规模&lt;/th&gt;
&lt;th&gt;FLOPs&lt;/th&gt;
&lt;th&gt;CTR-AUC 差异（vs Std Trans）&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Standard Transformer&lt;/td&gt;
&lt;td&gt;Base&lt;/td&gt;
&lt;td&gt;43G&lt;/td&gt;
&lt;td&gt;基线&lt;/td&gt;
&lt;td&gt;标准因果 Transformer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HSTU&lt;/td&gt;
&lt;td&gt;Base&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;-0.18pt&lt;/td&gt;
&lt;td&gt;Meta 的层级化序列转导&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OneTrans&lt;/td&gt;
&lt;td&gt;Base&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;+0.20pt&lt;/td&gt;
&lt;td&gt;Transformer 排序方案&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SORT（Base）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Base&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;24G&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.41pt&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;FLOPs 仅为标准的 56%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Standard Transformer&lt;/td&gt;
&lt;td&gt;Large&lt;/td&gt;
&lt;td&gt;322G&lt;/td&gt;
&lt;td&gt;基线&lt;/td&gt;
&lt;td&gt;大规模标准 Transformer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SORT（Large 144M）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Large&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;188G&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.51pt&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;FLOPs 仅为标准的 58%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;关键发现&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在 Base 规模下，SORT 以&lt;strong&gt;仅 56% 的 FLOPs（24G vs 43G）&lt;/strong&gt; 超越标准 Transformer &lt;strong&gt;0.41pt&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;相比 HSTU 和 OneTrans，SORT 分别领先 &lt;strong&gt;0.59pt&lt;/strong&gt;（0.41-(-0.18)）和 &lt;strong&gt;0.21pt&lt;/strong&gt;（0.41-0.20）&lt;/li&gt;
&lt;li&gt;扩展到 Large 规模（144M 参数）后，SORT 以 58% 的 FLOPs（188G vs 322G）领先标准 Transformer &lt;strong&gt;0.51pt&lt;/strong&gt;，验证了可扩展性&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="各组件贡献消融实验"&gt;各组件贡献（消融实验）&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;技术组件&lt;/th&gt;
&lt;th&gt;CTR-AUC 增益&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;特殊 Token（BOS + SEP）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.33pt&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;注意力汇聚，稳定注意力分布&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;查询裁剪（Query Pruning）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.26pt&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;计算减半，引入时间衰减偏置&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;门控注意力（Attention Gate）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.21pt&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;自适应调节注意力头贡献&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek MoE&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.19pt&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;扩大容量，不增计算&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QKNorm&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.12pt&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;稳定大规模训练&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;局部注意力（Local Attention）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+0.10pt&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;线性复杂度 + 隐式正则化&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;所有技术叠加&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&amp;gt; 各项之和&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;协同效应显著&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;值得注意的是，各项技术叠加后产生了显著的&lt;strong&gt;协同效应&lt;/strong&gt;——综合提升大于各项单独贡献之和。这说明这些优化并非孤立存在，而是在不同维度上互相增强：例如，局部注意力减少了注意力范围中的噪声，使得特殊 Token 的汇聚效果更加聚焦；查询裁剪与 MoE 的组合则在保持低计算量的同时维持了高模型容量。&lt;/p&gt;
&lt;h4 id="可扩展性分析"&gt;可扩展性分析&lt;/h4&gt;
&lt;p&gt;SORT 在三个维度上验证了可扩展性：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;扩展维度&lt;/th&gt;
&lt;th&gt;方式&lt;/th&gt;
&lt;th&gt;效果&lt;/th&gt;
&lt;th&gt;有效性排序&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;数据扩展&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;增加训练轮次（Multi-epoch）&lt;/td&gt;
&lt;td&gt;最显著提升&lt;/td&gt;
&lt;td&gt;🥇 最有效&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;序列长度&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;256 → 4096&lt;/td&gt;
&lt;td&gt;持续提升&lt;/td&gt;
&lt;td&gt;🥈 次有效&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;模型规模&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;增加参数量&lt;/td&gt;
&lt;td&gt;稳定提升&lt;/td&gt;
&lt;td&gt;🥉 第三&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;数据扩展最为有效&lt;/strong&gt;这一发现值得注意——得益于冻结 Embedding 策略，SORT 可以进行多轮次训练而不过拟合，这在传统排序模型中是难以实现的。&lt;/p&gt;
&lt;h4 id="特征工程兼容性"&gt;特征工程兼容性&lt;/h4&gt;
&lt;p&gt;SORT 并非要取代特征工程，而是与其互补：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;特征集&lt;/th&gt;
&lt;th&gt;CTR-AUC 增益&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;基础特征（ID + 属性）&lt;/td&gt;
&lt;td&gt;基线&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;+ 多模态特征&lt;/td&gt;
&lt;td&gt;+0.36%&lt;/td&gt;
&lt;td&gt;图像、文本等&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;+ 用户-物品交叉特征&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+1.03%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;最显著提升&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;全特征集&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;CTR +1.27%, CVR +1.74%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;综合提升&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;用户-物品交叉特征带来了最显著的提升，说明 Transformer 的注意力机制虽然擅长自动学习特征交互，但&lt;strong&gt;精心设计的交叉特征仍然能提供额外的先验知识&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="52-在线-ab-测试"&gt;5.2 在线 A/B 测试&lt;/h3&gt;
&lt;p&gt;SORT 在 AliExpress 的三个核心场景进行了为期一个月的在线 A/B 测试：&lt;/p&gt;
&lt;h4 id="总体业务指标"&gt;总体业务指标&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;指标&lt;/th&gt;
&lt;th&gt;平均提升&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;订单数&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+6.35%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;买家数&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+5.97%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GMV（成交总额）&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+5.47%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;推理延迟&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-44.67%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;推理吞吐量&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+121.33%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 id="分场景详细结果"&gt;分场景详细结果&lt;/h4&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;场景&lt;/th&gt;
&lt;th&gt;订单数&lt;/th&gt;
&lt;th&gt;买家数&lt;/th&gt;
&lt;th&gt;GMV&lt;/th&gt;
&lt;th&gt;延迟&lt;/th&gt;
&lt;th&gt;吞吐量&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;首页（Homepage）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+4.13%&lt;/td&gt;
&lt;td&gt;+4.26%&lt;/td&gt;
&lt;td&gt;+6.60%&lt;/td&gt;
&lt;td&gt;-58%&lt;/td&gt;
&lt;td&gt;+36%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;购物车（Cart）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;+3.50%&lt;/td&gt;
&lt;td&gt;+3.75%&lt;/td&gt;
&lt;td&gt;+3.69%&lt;/td&gt;
&lt;td&gt;-37%&lt;/td&gt;
&lt;td&gt;+169%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;支付后（Post-Pay）&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+11.43%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+9.91%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;+6.12%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;-39%&lt;/td&gt;
&lt;td&gt;+159%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;关键观察&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;支付后场景订单提升最显著&lt;/strong&gt;（+11.43%）：可能因为该场景的用户购买意向已经明确，SORT 的精准排序能力带来更大的边际收益&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;首页场景延迟优化最佳&lt;/strong&gt;（-58%）：首页是流量最大的入口，延迟优化带来的用户体验提升尤为关键&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;系统效率全面提升&lt;/strong&gt;：平均延迟下降 44.67%、吞吐量提升 121.33%，不仅是模型效果更好，而且更快更省资源&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="6-方法论对比sort-vs-同期方案"&gt;6. 方法论对比：SORT vs 同期方案&lt;/h2&gt;
&lt;h3 id="61-多维度对比表"&gt;6.1 多维度对比表&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;对比维度&lt;/th&gt;
&lt;th&gt;SORT&lt;/th&gt;
&lt;th&gt;HSTU (Meta)&lt;/th&gt;
&lt;th&gt;OneTrans&lt;/th&gt;
&lt;th&gt;标准 Transformer&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;目标场景&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;排序（Ranking）&lt;/td&gt;
&lt;td&gt;召回 + 排序&lt;/td&gt;
&lt;td&gt;排序&lt;/td&gt;
&lt;td&gt;通用&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;样本组织&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;请求中心&lt;/td&gt;
&lt;td&gt;序列化&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;独立样本&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;注意力机制&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;局部稀疏 + 查询裁剪&lt;/td&gt;
&lt;td&gt;门控注意力（无 MLP）&lt;/td&gt;
&lt;td&gt;标准因果&lt;/td&gt;
&lt;td&gt;标准因果&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;位置编码&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;RoPE + 对角掩码&lt;/td&gt;
&lt;td&gt;相对偏差&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;绝对/相对&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;FFN 设计&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;DeepSeek MoE（1/8 稀疏）&lt;/td&gt;
&lt;td&gt;无独立 FFN&lt;/td&gt;
&lt;td&gt;标准 FFN&lt;/td&gt;
&lt;td&gt;标准 FFN&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;预训练策略&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;生成式预训练 + 嵌入冻结&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;训练稳定性&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;QKNorm + 门控&lt;/td&gt;
&lt;td&gt;门控&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;无特殊处理&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;序列长度&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;256-4K（局部注意力）&lt;/td&gt;
&lt;td&gt;超长序列&lt;/td&gt;
&lt;td&gt;中等&lt;/td&gt;
&lt;td&gt;受限于 O(L²)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;工业验证&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AliExpress 全场景&lt;/td&gt;
&lt;td&gt;Meta 内部&lt;/td&gt;
&lt;td&gt;有限&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="62-sort-的优势"&gt;6.2 SORT 的优势&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;系统性优化&lt;/strong&gt;：不是单点突破，而是从分词、注意力、FFN、预训练到系统工程的全链路优化&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工程友好&lt;/strong&gt;：DeepSeek MoE 无需调辅助损失、查询裁剪实现简单、推理优化降低部署成本&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;效率突出&lt;/strong&gt;：以 58% 的 FLOPs 超越标准 Transformer，推理延迟降低 44.67%&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可扩展性强&lt;/strong&gt;：在数据、模型、序列长度三个维度上均展现持续提升&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特征兼容&lt;/strong&gt;：不排斥传统特征工程，与交叉特征、多模态特征互补&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;业务收益显著&lt;/strong&gt;：在线 A/B 测试订单 +6.35%，GMV +5.47%&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="63-sort-的潜在不足"&gt;6.3 SORT 的潜在不足&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;两阶段训练流程&lt;/strong&gt;：生成式预训练 + 判别式训练增加了训练管线的复杂度&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;预训练依赖&lt;/strong&gt;：如果物品分布频繁变化，预训练 Embedding 的时效性可能成为问题&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;冻结策略的刚性&lt;/strong&gt;：完全冻结 Embedding 可能无法适应动态变化的物品语义&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MoE 的工程挑战&lt;/strong&gt;：稀疏 MoE 在分布式训练和推理中的负载均衡仍需关注&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;场景泛化性&lt;/strong&gt;：目前仅在电商场景验证，在视频、社交等推荐场景的效果有待检验&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;冷启动问题&lt;/strong&gt;：新物品没有预训练 Embedding，冷启动场景的处理方式论文未详细讨论&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="64-hstu-的优势与不足"&gt;6.4 HSTU 的优势与不足&lt;/h3&gt;
&lt;p&gt;作为 SORT 最重要的对比方法，HSTU 值得单独分析：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HSTU 的优势&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;架构极简&lt;/strong&gt;：完全移除 MLP 层，将注意力与前馈融合为单一操作，减少了超参数调优空间&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;超长序列支持&lt;/strong&gt;：针对推荐场景的极长用户行为序列（$10^5$ 量级）进行了专门优化，在长序列场景下有天然优势&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;万亿参数验证&lt;/strong&gt;：首次在推荐系统中验证了 Scaling Law 的存在，为后续工作（包括 SORT）奠定了理论基础&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;HSTU 的不足&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;排序场景适配不足&lt;/strong&gt;：HSTU 最初为召回/检索设计，在排序场景中直接应用效果不如 SORT（-0.59pt CTR-AUC）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模型容量受限&lt;/strong&gt;：移除 MLP 后，模型的非线性变换能力下降，难以通过 MoE 等方式灵活扩展容量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;缺乏预训练策略&lt;/strong&gt;：没有针对稀疏特征过拟合提出系统性的预训练和冻结方案，限制了在高特征稀疏场景下的表现&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="65-hstu-vs-sort-的设计哲学对比"&gt;6.5 HSTU vs SORT 的设计哲学对比&lt;/h3&gt;
&lt;p&gt;HSTU 和 SORT 是目前工业级 Transformer 推荐模型的两个代表性工作，它们的设计哲学有明显差异：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;设计哲学&lt;/th&gt;
&lt;th&gt;HSTU&lt;/th&gt;
&lt;th&gt;SORT&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;核心理念&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;极简主义——去掉 MLP，融合注意力与前馈&lt;/td&gt;
&lt;td&gt;系统优化——保留标准组件但逐一优化&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MLP 处理&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;完全移除，用门控融合替代&lt;/td&gt;
&lt;td&gt;保留并升级为 MoE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;复杂度控制&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;通过简化架构降低 FLOPs&lt;/td&gt;
&lt;td&gt;通过稀疏注意力 + 查询裁剪&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;过拟合应对&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;主要通过架构简化&lt;/td&gt;
&lt;td&gt;生成式预训练 + 嵌入冻结&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;落地路径&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;需要深度定制&lt;/td&gt;
&lt;td&gt;更接近标准 Transformer，迁移成本低&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="7-深入讨论"&gt;7. 深入讨论&lt;/h2&gt;
&lt;h3 id="71-为什么局部注意力比全局注意力更好"&gt;7.1 为什么局部注意力比全局注意力更好？&lt;/h3&gt;
&lt;p&gt;这是论文中最反直觉的发现之一——按直觉，&amp;ldquo;看到更多信息&amp;quot;应该总是更好的，但实验结果表明窗口大小 256 的局部注意力甚至超越了完整的全局因果注意力。我们从多个角度深入分析这一现象：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;推荐场景的时间局部性&lt;/strong&gt;：与自然语言不同，推荐场景中的用户行为序列具有强烈的时间衰减特性。用户一周前浏览的商品类别可能与当前兴趣完全无关。全局注意力会将有限的注意力容量&amp;quot;浪费&amp;quot;在这些过时的信息上，而局部注意力强制模型聚焦于最相关的近期行为&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;隐式正则化与过拟合缓解&lt;/strong&gt;：在高特征稀疏性的推荐场景中，全局注意力提供了更大的参数自由度，但这反而加剧了过拟合风险。局部注意力通过限制感受野，引入了一种结构化的正则化约束——它减少了模型可以&amp;quot;记忆&amp;quot;的训练样本模式，迫使模型学习更泛化的特征&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;梯度质量与优化效率&lt;/strong&gt;：全局注意力中，远距离 Token 对的梯度信号通常较弱且噪声较大（因为远距离行为的相关性本身就低）。这些低质量梯度会干扰有效的参数更新。局部注意力过滤掉了这些噪声梯度源，使每次参数更新都更加精准&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;与查询裁剪的层级协同&lt;/strong&gt;：局部注意力在&amp;quot;水平方向&amp;quot;限制了每层的感受野，查询裁剪在&amp;quot;垂直方向&amp;rdquo;（跨层）逐步收缩活跃的 Token 数量。两者共同构成了一个&amp;quot;由近到远、由多到少&amp;quot;的层级化信息访问模式，这与推荐系统中&amp;quot;近期行为重要性递减&amp;quot;的直觉完美契合&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;计算效率的连锁效应&lt;/strong&gt;：局部注意力将复杂度降至线性后，省下的计算资源可以用于增加模型层数或训练更多轮次，间接提升了模型性能&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="72-冻结-embedding-的理论解释"&gt;7.2 冻结 Embedding 的理论解释&lt;/h3&gt;
&lt;p&gt;冻结策略的成功可以从&lt;strong&gt;优化景观（Optimization Landscape）&lt;/strong&gt; 的角度理解：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;参数空间解耦&lt;/strong&gt;：将&amp;quot;学习物品表示&amp;quot;和&amp;quot;学习排序决策&amp;quot;解耦为两个独立的优化问题&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;降维效果&lt;/strong&gt;：冻结 Embedding 后，可训练参数量大幅减少（通常减少 90%+），优化景观变得更加平滑&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;正则化效果&lt;/strong&gt;：冻结相当于一种极强的正则化——强制模型在预训练给定的特征空间中学习排序&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="73-moe-在推荐排序中的前景"&gt;7.3 MoE 在推荐排序中的前景&lt;/h3&gt;
&lt;p&gt;SORT 首次在工业级排序模型中成功应用了 MoE，这为推荐系统的模型设计打开了新的方向：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;容量扩展&lt;/strong&gt;：MoE 允许在固定计算预算下大幅扩展模型参数量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;专业化分工&lt;/strong&gt;：不同专家可以自然地学习处理不同类型的用户行为或物品类别&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;与推荐场景的天然契合&lt;/strong&gt;：推荐数据的异构性（多种行为类型、多种物品类别）天然适合专家路由机制&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="8-总结与展望"&gt;8. 总结与展望&lt;/h2&gt;
&lt;h3 id="81-核心贡献总结"&gt;8.1 核心贡献总结&lt;/h3&gt;
&lt;p&gt;SORT 的核心贡献可以归纳为以下几点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;问题诊断&lt;/strong&gt;：系统性地识别了 Transformer 应用于工业级排序的核心矛盾——高特征稀疏性与低标签密度&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;架构创新&lt;/strong&gt;：提出了一套互补的优化方案（请求中心组织、稀疏注意力、查询裁剪、MoE FFN、生成式预训练+冻结），形成有机整体&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;系统工程&lt;/strong&gt;：从训练端（MFU 13%→22%）到推理端（延迟 -44.67%，吞吐量 +121.33%）的全链路优化&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;业务验证&lt;/strong&gt;：在 AliExpress 多场景 A/B 测试中取得订单 +6.35%、GMV +5.47% 的显著收益&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="82-对行业的启示"&gt;8.2 对行业的启示&lt;/h3&gt;
&lt;p&gt;SORT 的成功给推荐系统领域带来了几个重要启示：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;统一架构是可行的&lt;/strong&gt;：不需要为每个特征交互方式设计专用模块，Transformer 的注意力机制可以自动学习&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;预训练是关键&lt;/strong&gt;：生成式预训练 + 冻结策略为解决推荐模型的过拟合提供了一条可行路径&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;系统优化与算法创新同等重要&lt;/strong&gt;：好的算法如果不能高效部署，就无法产生业务价值&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特征工程仍有价值&lt;/strong&gt;：Transformer 并非完全取代特征工程，而是与之互补&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="83-未来展望"&gt;8.3 未来展望&lt;/h3&gt;
&lt;p&gt;基于 SORT 的工作，推荐排序 Transformer 的未来发展方向可能包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;统一召回与排序&lt;/strong&gt;：用同一个 Transformer 模型同时处理召回和排序，进一步简化系统架构&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;在线学习与预训练的融合&lt;/strong&gt;：探索如何在不断变化的数据流中持续更新预训练 Embedding&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;更高效的 MoE 方案&lt;/strong&gt;：探索更细粒度的专家路由策略，进一步提升模型容量与计算效率的比值&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跨场景迁移&lt;/strong&gt;：将 SORT 的框架迁移到视频推荐、社交推荐等其他场景&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多模态融合&lt;/strong&gt;：更深层次地融合文本、图像、视频等多模态物品特征&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="参考文献"&gt;参考文献&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;SORT: A Systematically Optimized Ranking Transformer for Industrial-scale Recommenders.
&lt;/li&gt;
&lt;li&gt;Actions Speak Louder than Words: Trillion-Parameter Sequential Transducers for Generative Recommendations (HSTU).
&lt;/li&gt;
&lt;li&gt;Scaling Transformers for Discriminative Recommendation via Generative Pretraining (GPSD).
&lt;/li&gt;
&lt;li&gt;DeepSeek-V2: A Strong, Economical, and Efficient Mixture-of-Experts Language Model.
&lt;/li&gt;
&lt;li&gt;RoFormer: Enhanced Transformer with Rotary Position Embedding (RoPE).
&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>美团推荐大模型 MTFM (Meituan Foundation Model) 深度硬核解析：跨场景推荐的终极答案？</title><link>https://dingyadong.top/posts/010_mtfm_meituan_foundation_model/</link><pubDate>Wed, 25 Mar 2026 20:00:00 +0800</pubDate><guid>https://dingyadong.top/posts/010_mtfm_meituan_foundation_model/</guid><description>&lt;h2 id="1-导言推荐系统的大模型时代与多场景之痛"&gt;1. 导言：推荐系统的“大模型”时代与多场景之痛&lt;/h2&gt;
&lt;p&gt;在过去几年里，大语言模型（Large Language Models, LLMs）的飞速发展，彻底重塑了人工智能的版图。从单模态的文本生成到多模态的图文视频理解，基座模型（Foundation Models, FMs）以其统一的架构和惊人的“涌现能力”（Emergent Abilities），证明了 Scaling Laws（缩放定律）的伟大力量。而在推荐系统（Recommender Systems, RecSys）领域，工业界也逐渐开始验证 Scaling Laws，尝试通过增加模型参数量和训练数据量来打破业务指标的天花板。&lt;/p&gt;
&lt;p&gt;然而，传统的推荐系统往往被局限在“单一场景”（Single-scenario）的孤岛中。例如，在外卖平台中，“美食推荐”、“商家推荐”、“神抢手（券包推荐）”等场景各自拥有独立的模型和特征体系。这种孤岛模式严重限制了推荐模型吸收全局数据的能力，使得 Scaling Laws 的潜力难以被完全释放。受到多模态大模型的启发，美团的技术团队提出：&lt;strong&gt;推荐大模型的下一个突破口，在于跨越场景的异构性，建立一个统一的、无需严格对齐的底层基础模型。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这便是本文要深度剖析的主角——发表于 2025 年的重磅工业级论文 &lt;strong&gt;《MTFM: A Scalable and Alignment-free Foundation Model for Industrial Recommendation in Meituan》&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这篇论文不仅仅是一个模型结构的创新，它更是一整套从数据组织、网络架构到系统算子级优化的“全栈式”工业级解决方案。为了让你彻底读懂这篇论文，本文将以超过两万字的篇幅，从最基础的背景出发，一层一层地剥开 MTFM 的技术内核，带你领略美团在推荐大模型领域的顶级工程与算法实践。&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id="11-推荐大模型必须具备的三个核心属性"&gt;1.1 推荐大模型必须具备的三个核心属性&lt;/h3&gt;
&lt;p&gt;在探讨 MTFM 之前，我们需要先思考一个问题：一个真正意义上的“推荐基础模型”（Recommendation Foundation Model），到底应该长什么样？美团的团队在论文中给出了三个核心定义：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;可扩展性（Scalability）&lt;/strong&gt;：模型必须能够随着参数量和数据量的增加，带来稳定、可预测的性能提升。这要求模型摒弃过去那种基于专家经验手工设计的复杂特征交叉结构（如 DCN、DeepFM 等），转而采用类似 Transformer 的深度自注意力机制，让模型自己去学习普适的行为规律。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可延展性（Extensibility）&lt;/strong&gt;：模型必须能够无缝地适应任意数量的现有场景，或者以极低的成本接入未来的新场景。这意味着模型不能依赖于固定的特征输入模板，必须能够处理不同场景下高度异构的特征空间。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;高效性（Efficiency）&lt;/strong&gt;：工业级推荐系统每天需要处理数百亿次的请求和海量的曝光日志。框架必须在训练和推理阶段都保持极低的计算开销，否则庞大的算力成本将使得模型在现实中根本无法落地。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="12-传统多场景推荐msr模型的困境"&gt;1.2 传统多场景推荐（MSR）模型的困境&lt;/h3&gt;
&lt;p&gt;在 MTFM 出现之前，工业界处理多场景推荐（Multi-Scenario Recommendation, MSR）主要遵循一种 &lt;strong&gt;“先对齐，后分解”（Harmonize-then-decompose）&lt;/strong&gt; 的范式。&lt;/p&gt;
&lt;p&gt;经典的代表作包括阿里的 STAR（Star Topology Adaptive Recommender）、M3OE 等。这些模型通常的做法是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;在数据端&lt;/strong&gt;：将多个场景的数据强行拼接到一起，使用一个固定的特征模板（Fixed Template）。如果某个场景缺少某些特征（例如商家推荐场景没有菜品口味标签），就用 Padding（如零值或默认值）来填充；如果某些异构特征无法对齐，干脆直接丢弃。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;在模型端&lt;/strong&gt;：通过 MoE（Mixture of Experts）或星型拓扑结构，将模型参数解耦为“领域无关”（Domain-invariant）的共享参数和“领域特定”（Domain-specific）的独有参数。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;然而，这种范式在面对真实的超级工业生态时，暴露出三大致命弱点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;延展性的僵局（Rigidity in Extensibility）&lt;/strong&gt;：在美团这样的超级平台上，不同场景的特征模式（Feature Schemas）差异极大。强迫成百上千的异构特征去适配一个固定的模板，不仅容易出错，而且会导致严重的信息丢失。大量的 Padding 操作不仅浪费了存储，还引入了噪音。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;架构缺乏可扩展性（Lack of Architectural Scalability）&lt;/strong&gt;：无论是 STAR 还是各类复杂的 MoE 结构，本质上仍然是基于专家启发式规则（Expert Heuristics）手工打造的“定制化”网络。这种高度定制化的网络结构，很难像纯粹的 Transformer 那样，享受到简单堆叠层数带来的 Scaling Laws 红利。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;高昂的计算成本（Prohibitive Computational Costs）&lt;/strong&gt;：在传统范式下，训练成本随着数据量的增加呈线性甚至超线性增长。将海量的多场景数据简单粗暴地融合在一起训练，会导致算力开销呈指数级爆炸，在经济上完全不可行。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;面对这些痛点，MTFM 给出的答案是：&lt;strong&gt;抛弃对齐（Alignment-free），万物皆 Token（Heterogeneous Tokenization），并引入混合目标注意力机制（Hybrid Target Attention）和极致的系统级优化。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="2-核心思想与方法论摒弃对齐拥抱异构"&gt;2. 核心思想与方法论：摒弃“对齐”，拥抱“异构”&lt;/h2&gt;
&lt;p&gt;在自然语言处理领域，无论是英文、中文还是代码，都可以通过 Tokenizer（如 BPE、TikToken）统一转化为 Token 序列。MTFM 敏锐地捕捉到了这一点，将其引入到推荐系统中，提出了 &lt;strong&gt;异构 Token 化（Heterogeneous Tokenization）&lt;/strong&gt; 的概念。&lt;/p&gt;
&lt;h3 id="21-从特征模板到异构-token-序列"&gt;2.1 从特征模板到异构 Token 序列&lt;/h3&gt;
&lt;p&gt;在传统的深度学习推荐模型（DLRM）中，输入通常是一个超大的稀疏向量或稠密 Embedding 的拼接：
&lt;code&gt;[User_Emb, Item_Emb, Context_Emb, Cross_Emb, ...]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;这种结构要求每一条样本都必须具有相同的维度和特征组合。而在 MTFM 中，输入不再是一个固定长度的向量，而是一个 &lt;strong&gt;变长的异构 Token 序列（Variable-length Sequence of Heterogeneous Tokens）&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;具体来说，MTFM 将推荐系统中的所有特征抽象为三类核心 Token：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;H-token (Historical tokens)&lt;/strong&gt;：代表用户的长期历史交互行为序列。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;R-token (Real-time tokens)&lt;/strong&gt;：代表用户近期的、实时的跨场景交互行为序列。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;T-token (Target tokens)&lt;/strong&gt;：代表当前正在被请求或曝光的目标候选项（Candidate Items）及其对应的上下文和交叉特征。&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="211-h-token-与-r-token-的生成"&gt;2.1.1 H-token 与 R-token 的生成&lt;/h4&gt;
&lt;p&gt;以用户的历史行为序列 \(\{H_i\}\) 为例。序列中的每一个交互商品（Item） \(h_{ij}\) 都对应一个 H-token。由于不同历史序列中包含的特征维度可能不同，MTFM 为不同的历史序列分配了不同的 MLP（多层感知机）作为专属的 Tokenizer。&lt;/p&gt;
&lt;p&gt;将原始特征经过 Embedding 层映射后，通过对应的 MLP 投影到一个统一的维度 \(d_{model}\)：&lt;/p&gt;
$$
\mathbf{h}_{ij} = \text{MLP}_i(\text{Emb}(h_{ij}))
$$&lt;p&gt;随后，MTFM 将所有历史序列中的 Item Token 按照时间戳（Chronological order）进行排序，形成一个统一的 Embedding 矩阵：&lt;/p&gt;
$$
\mathbf{H} \in \mathbb{R}^{L_H \times d_{model}}
$$&lt;p&gt;其中 \(L_H\) 是所有历史序列中 Item 的总数。&lt;/p&gt;
&lt;p&gt;同理，用户的实时序列特征也被转化为 R-token 矩阵：&lt;/p&gt;
$$
\mathbf{R} \in \mathbb{R}^{L_R \times d_{model}}
$$&lt;h4 id="212-t-token-的生成"&gt;2.1.2 T-token 的生成&lt;/h4&gt;
&lt;p&gt;对于当前曝光的候选目标，MTFM 将用户画像特征（User Profile, \(U^s\)）、场景特定的交叉特征（Cross Features, \(C_i^s\)）以及目标物品特征（Item Features, \(I_i^s\)）进行拼接，并通过该场景特定的 MLP 进行降维投影：&lt;/p&gt;
$$
\mathbf{t}_i^s = \text{MLP}_s(\text{Emb}(U^s) \| \text{Emb}(C_i^s) \| \text{Emb}(I_i^s))
$$&lt;p&gt;这里 \(\|\) 表示列拼接（Column concatenation）。所有场景下的曝光行为最终被转化为 T-token 矩阵：&lt;/p&gt;
$$
\mathbf{T} \in \mathbb{R}^{L_T \times d_{model}}
$$&lt;p&gt;其中 \(L_T\) 是所有场景下曝光样本的总数。&lt;/p&gt;
&lt;h4 id="213-统一序列表示"&gt;2.1.3 统一序列表示&lt;/h4&gt;
&lt;p&gt;最终，所有的 H-token、R-token 和 T-token 会在行方向（Row concatenation）上进行拼接，形成输入到 Transformer 骨干网络的初始 Embedding 矩阵：&lt;/p&gt;
$$
\mathbf{X}^{(0)} = (\mathbf{H}; \mathbf{R}; \mathbf{T}) \in \mathbb{R}^{N \times d_{model}}
$$&lt;p&gt;这里的 \(N = L_H + L_R + L_T\)，即序列的总长度。对于不同的用户，这个 \(N\) 是可变的（Variable-length）。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Figure 1: MTFM H/R/T Token 结构 - 从异构特征到统一序列"
srcset="https://dingyadong.top/posts/010_mtfm_meituan_foundation_model/figure_hrt_tokens_hu_8cc6582177063c86.webp 320w, https://dingyadong.top/posts/010_mtfm_meituan_foundation_model/figure_hrt_tokens_hu_6eed98e8a12ca5e.webp 480w, https://dingyadong.top/posts/010_mtfm_meituan_foundation_model/figure_hrt_tokens_hu_47221da93cb3965b.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://dingyadong.top/posts/010_mtfm_meituan_foundation_model/figure_hrt_tokens_hu_8cc6582177063c86.webp"
width="760"
height="570"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;【深度思考：异构 Token 化的绝妙之处】&lt;/strong&gt;
这种设计彻底打破了传统 DLRM 对特征维度的强绑定。因为所有特征最终都被映射到了统一的 \(d_{model}\) 维度，Transformer 内部的注意力机制根本不需要知道某个 Token 是来自外卖场景还是单车场景，它只需要计算 Token 之间的相关性（Attention Score）。这种“Alignment-free”的特性，使得 MTFM 可以极其轻松地接入任何新的业务场景——只需要为新场景训练一个极小的 \(\text{MLP}_s\) 作为 Tokenizer 即可，骨干网络的参数无需做任何结构性修改。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="3-数据组织革命user-level-多场景样本聚合"&gt;3. 数据组织革命：User-level 多场景样本聚合&lt;/h2&gt;
&lt;p&gt;理解了 Token 化之后，我们面临下一个严峻挑战：计算复杂度。
如果按照传统的“曝光级别”（Impression-level）进行训练，即每一次曝光（一个 User 对应一个 Item）作为一条独立样本，那么对于同一个用户，他极其冗长的历史行为序列（H-token）和实时序列（R-token）会在成百上千条样本中被重复计算。&lt;/p&gt;
&lt;p&gt;在标准的 Transformer 中，自注意力机制的时间复杂度是 \(O(N^2 \cdot d)\)。如果序列长度 \(N\) 达到几千，这种重复计算将带来毁灭性的算力浪费。&lt;/p&gt;
&lt;h3 id="31-继承与超越从-mtgr-到多场景聚合"&gt;3.1 继承与超越：从 MTGR 到多场景聚合&lt;/h3&gt;
&lt;p&gt;为了解决这个问题，MTFM 继承了美团此前在 MTGR（Multi-Task Generative Recommendation）论文中提出的 &lt;strong&gt;用户级（User-level）样本聚合&lt;/strong&gt; 技术，并将其突破性地扩展到了多场景（Multi-scenario）环境。&lt;/p&gt;
&lt;p&gt;在离线训练阶段，MTFM 将某个特定时间窗口内，&lt;strong&gt;同一个用户在所有业务场景下的所有曝光行为&lt;/strong&gt;，全部聚合为一条“超级样本”。&lt;/p&gt;
&lt;p&gt;具体来说，每个用户 \(u\) 对应一条包含海量信息的训练样本 \(\mathbb{D}_u = (X_u, Y_u)\)。
输入特征集 \(X\) 可以表示为：&lt;/p&gt;
$$
X = [ \{H_i\}_{i=1}^{N_H}, \{R_i\}_{i=1}^{N_R}, \{U^s\}_{s=1}^{N_S}, \{\{C_i^s, I_i^s\}_{i=1}^{N_E^s}\}_{s=1}^{N_S} ]
$$&lt;p&gt;标签集 \(Y\) 表示为：&lt;/p&gt;
$$
Y = \{\{Y_i^s\}_{i=1}^{N_E^s}\}_{s=1}^{N_S}
$$&lt;p&gt;参数解释：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;\(N_S\)：业务场景的总数。&lt;/li&gt;
&lt;li&gt;\(N_E^s\)：在场景 \(s\) 下的曝光总数。&lt;/li&gt;
&lt;li&gt;\(H_i, R_i\)：跨场景共享的历史和实时序列。&lt;/li&gt;
&lt;li&gt;\(U^s, C_i^s, I_i^s\)：场景 \(s\) 特有的用户画像、交叉特征和物品特征。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="32-共享与独立解耦特征处理管线"&gt;3.2 共享与独立：解耦特征处理管线&lt;/h3&gt;
&lt;p&gt;由于不同场景的特征模式存在本质上的不兼容（例如外卖场景的标签和打车场景的标签完全不同），MTFM 在数据流水线（Data Pipeline）上做出了精妙的设计：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;场景独立聚合&lt;/strong&gt;：对于场景特定的特征（\(U, C, I\)），首先在各个场景内部按照 User-level 进行聚合。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跨场景拼接&lt;/strong&gt;：将聚合后的各场景特征按照列方向（Column-wise）拼接，形成一个统一的候选目标表征。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;全局特征合并&lt;/strong&gt;：最后，将全场景共享的特征（用户的生命周期历史序列 \(H\) 和实时序列 \(R\)）与上述拼接结果在 User-level 进行合并。&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="mermaid-wrapper"&gt;
&lt;div class="mermaid" style="background: transparent;"&gt;
graph TD
U1[外卖 User特征] &amp; C1[外卖 交叉特征] &amp; I1[外卖 Item特征] --&gt; Agg1[外卖 场景聚合]
U2[优选 User特征] &amp; C2[优选 交叉特征] &amp; I2[优选 Item特征] --&gt; Agg2[优选 场景聚合]
Agg1 &amp; Agg2 --&gt; Concat[T-token 拼接]
H[H-token 长序列] &amp; R[R-token 实时序列] &amp; Concat --&gt; Merge[超级样本构建]
Merge --&gt; MTFM[MTFM 模型]
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;这种设计彻底避免了数据 Pipeline 中的重复计算和冗余存储。在推理阶段（Online Inference），由于各个场景是独立发起请求的，每个场景只需要部署 MTFM 中与自己相关的 &lt;strong&gt;子图（Subgraph）&lt;/strong&gt;。推理请求在 Request-level 进行聚合，子图会自动绕过其他场景专属的 MLP Tokenizer，从而实现极高的推理效率。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="4-网络架构深度剖析混合目标注意力机制-hta"&gt;4. 网络架构深度剖析：混合目标注意力机制 (HTA)&lt;/h2&gt;
&lt;p&gt;如果说异构 Token 化和 User-level 聚合是 MTFM 的数据地基，那么 &lt;strong&gt;混合目标注意力机制（Hybrid Target Attention, HTA）&lt;/strong&gt; 则是其架构上的王冠。&lt;/p&gt;
&lt;p&gt;将推荐系统转化为 Transformer 的序列建模任务后，面临的最大梦魇就是 \(O(N^2)\) 的复杂度。虽然 User-level 聚合消除了冗余计算，但把所有场景的曝光候选物品（T-token）和超长历史序列（H/R-token）拼在一起，序列长度 \(N\) 极容易突破数千甚至上万。&lt;/p&gt;
&lt;p&gt;为了平衡模型的表达能力（Efficacy）和计算效率（Efficiency），MTFM 借鉴了 LLM 领域的稀疏注意力思想，提出了一种由 &lt;strong&gt;全注意力层（Full Attention Layer）&lt;/strong&gt; 和 &lt;strong&gt;目标注意力层（Target Attention Layer）&lt;/strong&gt; 交替堆叠的混合架构。&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Figure 1: MTFM Token Structure with H/R/T Heterogeneous Tokenization"
srcset="https://dingyadong.top/posts/010_mtfm_meituan_foundation_model/figure_hrt_tokens_hu_8cc6582177063c86.webp 320w, https://dingyadong.top/posts/010_mtfm_meituan_foundation_model/figure_hrt_tokens_hu_6eed98e8a12ca5e.webp 480w, https://dingyadong.top/posts/010_mtfm_meituan_foundation_model/figure_hrt_tokens_hu_47221da93cb3965b.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://dingyadong.top/posts/010_mtfm_meituan_foundation_model/figure_hrt_tokens_hu_8cc6582177063c86.webp"
width="760"
height="570"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="41-全注意力层-full-attention-layer-与动态掩码"&gt;4.1 全注意力层 (Full Attention Layer) 与动态掩码&lt;/h3&gt;
&lt;p&gt;在模型由 \(B\) 个堆叠的 Block 组成，为了缓解二次复杂度瓶颈，每个 Block 会包含 1 个全注意力层，以及随后紧跟的 \(K\) 个目标注意力层。&lt;/p&gt;
&lt;p&gt;在全注意力层中，模型计算所有 Token 之间的全局依赖关系。为了进一步降低显存和计算开销，MTFM 采用了 &lt;strong&gt;分组查询注意力（Grouped-Query Attention, GQA）&lt;/strong&gt;。GQA 相比于 Multi-Head Attention (MHA)，多个 Query 共享一组 Key 和 Value，在保持模型效果几乎不变的前提下，大幅减少了 KV Cache 的显存占用。&lt;/p&gt;
&lt;p&gt;全注意力层的数学表达如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;线性映射与分组切分&lt;/strong&gt;：
&lt;/p&gt;
$$
\mathbf{U}^{(l)}, \{\mathbf{Q}^{(l,h)}\}_{h=1}^{H}, \{\mathbf{K}^{(l,g)}, \mathbf{V}^{(l,g)} \}_{g=1}^G = \text{Split}(\phi_1(f_1^{(l)}(\widetilde{\mathbf{X}}^{(l)})))
$$&lt;p&gt;
其中 \(H\) 是 Query 的头数，\(G\) 是 KV 的头数，\(r = H/G\)。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;注意力计算与动态掩码（Dynamic Masking）&lt;/strong&gt;：
&lt;/p&gt;
$$
\mathbf{A}^{(l,h)} = \phi_2(\mathbf{Q}^{(l,h)} \mathbf{K}^{(l,g)T} \odot \mathbf{M}) \mathbf{V}^{(l,g)}
$$&lt;p&gt;
&lt;/p&gt;
$$
\mathbf{A}^{(l)} = \mathbf{A}^{(l,1)} \| \cdots \| \mathbf{A}^{(l,H)}
$$&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;门控层归一化与残差连接&lt;/strong&gt;：
&lt;/p&gt;
$$
\mathbf{X}^{(l+1)} = f_2^{(l)}(\text{GLN}(\mathbf{A}^{(l)}) \odot \mathbf{U}^{(l)}) + \mathbf{X}^{(l)}
$$&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="411-防止信息泄露的动态掩码"&gt;4.1.1 防止信息泄露的动态掩码 \(\mathbf{M}\)&lt;/h4&gt;
&lt;p&gt;在 User-level 聚合中，由于实时序列 \(R\) 和当前曝光目标 \(T\) 在时间上可能存在重叠，如果不加以限制，模型在预测时就会“看到未来”的数据，导致严重的信息泄露（Information Leakage）。&lt;/p&gt;
&lt;p&gt;为此，MTFM 根据时间戳构建了极其严格的动态掩码矩阵 \(\mathbf{M}\)：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;H-tokens 视野&lt;/strong&gt;：H-token 对所有后续 Token 可见，因为它们代表最基础的历史偏好。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;R-tokens 视野&lt;/strong&gt;：R-token 遵循严格的因果掩码（Causal Mask），只能被时间戳晚于自己的 Token 看到。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;T-tokens 视野&lt;/strong&gt;：T-token 之间互相不可见（因为在一次曝光请求中，各个候选 Item 应该是平行的），T-token 只能看到自己以及时间戳早于它的 H 和 R。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Figure 2: Hybrid Target Attention (HTA) Architecture with Full and Target Attention Layers"
srcset="https://dingyadong.top/posts/010_mtfm_meituan_foundation_model/figure_hta_architecture_hu_c0f316c30ea751ac.webp 320w, https://dingyadong.top/posts/010_mtfm_meituan_foundation_model/figure_hta_architecture_hu_37f6e85c79864a9c.webp 480w, https://dingyadong.top/posts/010_mtfm_meituan_foundation_model/figure_hta_architecture_hu_3e310efa3590fc65.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://dingyadong.top/posts/010_mtfm_meituan_foundation_model/figure_hta_architecture_hu_c0f316c30ea751ac.webp"
width="760"
height="646"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id="42-目标注意力层-target-attention-layer极致降本的核心"&gt;4.2 目标注意力层 (Target Attention Layer)：极致降本的核心&lt;/h3&gt;
&lt;p&gt;全注意力层虽然强大，但每一层都做 \(O(N^2)\) 的计算实在是太奢侈了。在推荐系统的预测任务中，我们真正关心的是 &lt;strong&gt;最终目标（T-tokens）&lt;/strong&gt; 的表达，历史序列（H/R-tokens）的作用主要是作为 Context 辅助 T-token 的表征。&lt;/p&gt;
&lt;p&gt;因此，MTFM 在全注意力层之后，级联了 \(K\) 个 &lt;strong&gt;目标注意力层（Target Attention Layer）&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;在 Target Attention Layer 中，&lt;strong&gt;模型只更新 T-token 的 Embedding&lt;/strong&gt;，而 H-token 和 R-token 的 Embedding 直接通过 Shortcut（捷径）连接，原封不动地传递到下一层！&lt;/p&gt;
&lt;p&gt;数学推导如下：&lt;/p&gt;
&lt;p&gt;首先，从归一化的特征矩阵和掩码矩阵中，单独切分出 T-token 对应的部分：&lt;/p&gt;
$$
\widetilde{\mathbf{X}}^{(l)}_T = \widetilde{\mathbf{X}}^{(l)}[L_H+L_R:]
$$$$
\mathbf{M}_T = \mathbf{M}[L_H+L_R:]
$$&lt;p&gt;接下来，只用 T-token 去生成 Query \(\mathbf{Q}_T\)，而 Key \(\mathbf{K}\) 和 Value \(\mathbf{V}\) 依然由全局序列生成：&lt;/p&gt;
$$
\mathbf{U}^{(l)}_T, \{\mathbf{Q}^{(l,h)}_T\}_{h=1}^H = \text{Split}(\phi_1(f_{uq}^{(l)}(\widetilde{\mathbf{X}}_T^{(l)})))
$$$$
\{\mathbf{K}^{(l,g)}, \mathbf{V}^{(l,g)}\}_{g=1}^G = \text{Split}(\phi_1(f_{kv}^{(l)}(\widetilde{\mathbf{X}}^{(l)})))
$$&lt;p&gt;注意力计算只在 T-token 作为 Query 时发生：&lt;/p&gt;
$$
\mathbf{A}^{(l,h)}_T = \phi_2(\mathbf{Q}_T^{(l,h)} \mathbf{K}^{(l,g)T} \odot \mathbf{M}_T) \mathbf{V}^{(l,g)}
$$$$
\mathbf{X}^{(l+1)}_T = f_2^{(l)}(\text{GLN}(\mathbf{A}_T^{(l)}) \odot \mathbf{U}_T^{(l)}) + \mathbf{X}_T^{(l)}
$$&lt;p&gt;最后，将更新后的 T-token 与未更新的 H/R-token 重新拼接，输出给下一层：&lt;/p&gt;
$$
\mathbf{X}^{(l+1)} = (\mathbf{X}^{(l)}[:L_H+L_R]; \mathbf{X}^{(l+1)}_T)
$$&lt;p&gt;&lt;strong&gt;【复杂度革命性降低】&lt;/strong&gt;
在标准的 Transformer 中，一层的复杂度是 \(O(N^2)\)。
在 Target Attention 中，因为 Query 的数量从 \(N\) 骤降到了 \(L_T\)（通常 \(L_T \ll N\)），注意力矩阵的大小从 \(N \times N\) 缩小到了 \(L_T \times N\)。
因此，单个 Target Attention Layer 的复杂度降为 \(O(N \cdot L_T)\)。&lt;/p&gt;
&lt;p&gt;结合 1 层 Full Attention 和 \(K\) 层 Target Attention，一个 Block 的平均复杂度被大幅压缩至：&lt;/p&gt;
$$
O\left(\frac{K \cdot N \cdot L_T + N^2}{K+1}\right)
$$&lt;p&gt;由于 \(L_T\) 远远小于 \(N\)，这一设计让 MTFM 的训练吞吐量（Throughput）直接 &lt;strong&gt;翻倍（2x Speedup）&lt;/strong&gt;，且实验证明模型精度没有任何损失！&lt;/p&gt;
&lt;p&gt;最后，最后一层输出的 T-tokens 会被送入一个 MMoE（Multi-gate Mixture-of-Experts）模块，用于计算多场景下不同目标（如 CTR、CTCVR 等）的最终预估分。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="5-挑战工程极限系统级与算子级极致优化"&gt;5. 挑战工程极限：系统级与算子级极致优化&lt;/h2&gt;
&lt;p&gt;学术界的论文往往止步于漂亮的公式，但工业界的落地必须面对冰冷的硬件指标。为了让 MTFM 在美团这种日均百亿请求级别的场景中真正跑起来，工程团队在系统底层进行了令人叹为观止的深度优化。&lt;/p&gt;
&lt;h3 id="51-离线训练的外科手术"&gt;5.1 离线训练的“外科手术”&lt;/h3&gt;
&lt;h4 id="511-斩断-cpu-gpu-的流水线阻塞-pipeline-stall"&gt;5.1.1 斩断 CPU-GPU 的流水线阻塞 (Pipeline Stall)&lt;/h4&gt;
&lt;p&gt;在 LLM 训练中，所有的文本 Tokenization 都可以在 GPU 上飞速完成，整个训练过程高度端到端。
而在推荐系统中，特征工程极为繁重，大量的稀疏特征查找、拼接、聚合必须在 CPU 上进行。这就导致了 GPU 上计算极快的模型，常常需要停下来“干等” CPU 传输数据。这种 Host（CPU）与 Device（GPU）之间频繁的数据同步和串行依赖，形成了严重的 Pipeline Stall。&lt;/p&gt;
&lt;p&gt;美团团队使用 CUDA Profiler 对框架进行了地毯式排查。优化策略主要有两点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;消除同步点 (Eliminate Synchronization Points)&lt;/strong&gt;：通过精细的流水线编排，让 CPU 的特征处理与 GPU 的前向/反向传播时间互相掩盖（Overlap）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;优化 Device-to-Device (D2D) 拷贝&lt;/strong&gt;：推荐模型中存在大量的张量索引赋值操作。原生的 PyTorch 会触发多次碎片的 D2D 显存拷贝。MTFM 将这些操作合并为单次原子操作（Single Atomic Operations）。
这一套组合拳打下来，训练吞吐量硬生生提升了 &lt;strong&gt;20%&lt;/strong&gt;。&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="512-为动态掩码量身定制-flashattention-2"&gt;5.1.2 为动态掩码量身定制 FlashAttention-2&lt;/h4&gt;
&lt;p&gt;FlashAttention-2 是 Transformer 时代的算力神兵，但它原生只针对标准的因果掩码（Causal Mask）进行了优化。面对 MTFM 中复杂的、针对 H/R/T token 各种定制的“动态非标准稀疏掩码”，FlashAttention-2 经常会因为内存访问不连续而导致效率暴跌。&lt;/p&gt;
&lt;p&gt;为了解决这个问题，美团团队直接手撕底层 Kernel：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;连续对齐内存布局&lt;/strong&gt;：重新构造了掩码的内存布局，满足异步拷贝（Asynchronous Copy）的对齐要求。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;共享内存极限压榨&lt;/strong&gt;：在极其有限的 Shared Memory 中精细设计数据流。前向计算时缓存掩码块，反向传播时让掩码与中间梯度变量实现“分时复用”。
通过将掩码加载延迟完全隐藏在计算流水线中，这一改动彻底释放了 GPU 算力。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="513-triton-算子融合-operator-fusion"&gt;5.1.3 Triton 算子融合 (Operator Fusion)&lt;/h4&gt;
&lt;p&gt;原生的 PyTorch 在计算 GLN（Group Layer Normalization）和构建动态掩码时，采用的是 Gather-Compute-Scatter 的碎片化模式。这会导致频繁的 Kernel Launch 开销和低效的全局内存读写。
MTFM 团队基于 OpenAI 的 Triton 框架，实现了 GLN 和动态掩码的&lt;strong&gt;算子融合&lt;/strong&gt;。通过向量化内存访问（Vectorized Memory Access）提升带宽利用率，并设计了分组并行计算模式，进一步消除了中间结果的反复读写。
&lt;strong&gt;算子层面的优化，为 MTFM 带来了额外的 57% 吞吐量提升！&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="52-在线推理的极限压榨"&gt;5.2 在线推理的“极限压榨”&lt;/h3&gt;
&lt;p&gt;训练阶段可以靠堆卡，但在线推理阶段每一毫秒的延迟都直接影响着用户体验和服务器成本。MTFM 的推理优化同样硬核：&lt;/p&gt;
&lt;h4 id="521-安培架构-24-结构化稀疏-structured-sparsity"&gt;5.2.1 安培架构 2:4 结构化稀疏 (Structured Sparsity)&lt;/h4&gt;
&lt;p&gt;MTFM 创新性地利用了 NVIDIA Ampere 架构 GPU 特有的 Sparse Tensor Cores。
在 HSTU 组件的线性投影层（计算 U, V, Q, K 及 Output）中，团队实施了 &lt;strong&gt;2:4 结构化剪枝（2:4 Structured Pruning）&lt;/strong&gt;。
这意味着在每 4 个连续的权重参数中，强制将 2 个较小的值置为 0。配合专属的硬件指令，这不仅将显存占用直接压缩了 50%，还利用 Sparse Tensor Cores 达到了双倍的理论峰值矩阵乘法吞吐量！
结果是：模型精度不降，吞吐量提升 10%，单次推理延迟下降 0.2ms。&lt;/p&gt;
&lt;h4 id="522-细粒度注意力剪枝-fine-grained-attention-pruning"&gt;5.2.2 细粒度注意力剪枝 (Fine-grained Attention Pruning)&lt;/h4&gt;
&lt;p&gt;动态掩码本质上是一种不规则稀疏矩阵。MTFM 在推理时设计了底层的计算跳过机制（Computation Skipping）。
它不仅能动态剔除因为 Padding 产生的无效计算，还能结合具体的业务先验知识（比如：强制屏蔽 User 特征对 Target 特征的无效注意力权重），在底层 Kernel 计算前就将这些分支剪除，进一步提升了 5% 的吞吐。&lt;/p&gt;
&lt;h4 id="523-场景感知子图部署与-m-falcon"&gt;5.2.3 场景感知子图部署与 M-Falcon&lt;/h4&gt;
&lt;p&gt;这是 MTFM 能在多场景落地的关键一环。
虽然 MTFM 是一个包含所有场景知识的“巨无霸”大模型，但在实际部署到“外卖”或者“优选”的推理机器上时，系统会自动将完整的计算图拆解。&lt;strong&gt;剥离掉与当前场景无关的特征处理分支（Scenario-aware Deployment）&lt;/strong&gt;，消除冗余计算。
同时，结合 BF16 半精度推理以及最新的 &lt;strong&gt;M-Falcon 智能微批处理（Micro-batching）算法&lt;/strong&gt;（通过 KV-Cache 共享进一步压榨 GPU 利用率），MTFM 将在线系统的并发能力推向了极致。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="6-实验验证震撼的业务收益"&gt;6. 实验验证：震撼的业务收益&lt;/h2&gt;
&lt;p&gt;在纸面上吹得再天花乱坠，也不如真实的线上指标来得实在。MTFM 在美团的多个真实核心场景中进行了严苛的 Offline 和 Online 验证。&lt;/p&gt;
&lt;h3 id="61-离线实验全面碾压-baseline"&gt;6.1 离线实验：全面碾压 Baseline&lt;/h3&gt;
&lt;p&gt;在离线评估中，MTFM 与业界顶级的多场景模型（如 STAR、M3OE 等）以及强大的单场景序列模型（如 HSTU、MTGR）进行了对比。&lt;/p&gt;
&lt;p&gt;结果显示，MTFM 在多个场景（如 SQS 神抢手、PHF 拼好饭、FDS 美食推荐等）的多个任务（CTR、CTCVR）上取得了压倒性的胜利：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CTR 任务&lt;/strong&gt;：平均 GAUC（Grouped Area Under the Curve）提升高达 &lt;strong&gt;0.36 pp&lt;/strong&gt;（百分点），在部分场景最高提升达 &lt;strong&gt;0.76 pp&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CTCVR 任务&lt;/strong&gt;：平均 GAUC 提升 &lt;strong&gt;0.29 pp&lt;/strong&gt;，峰值提升 &lt;strong&gt;0.53 pp&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在推荐系统领域，千分之几的 GAUC 提升往往就能带来百万级的收入增长。0.36 pp 的平均提升，是一个堪称“跨代”的巨大突破。这证明了：&lt;strong&gt;让模型看到更多场景的异构数据，通过统一的大模型进行隐式知识迁移，远比在单场景下死磕模型结构要有效得多。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="62-线上-ab-测试真金白银的业务增长"&gt;6.2 线上 A/B 测试：真金白银的业务增长&lt;/h3&gt;
&lt;p&gt;在线上真实流量的 A/B 测试中，MTFM 部署到了美团的“神抢手（SQS）”和“拼好饭（PHF）”等高流量场景。
实验结果令人振奋：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;神抢手（券包推荐）&lt;/strong&gt;：订单量（Orders）飙升 &lt;strong&gt;+2.98%&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;拼好饭（美食推荐）&lt;/strong&gt;：订单量提升 &lt;strong&gt;+1.45%&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种直接拉动核心交易指标的成果，充分证明了 MTFM 框架在工业界超大规模落地中的巨大商业价值。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="7-深度反思与未来展望推荐系统终局之战"&gt;7. 深度反思与未来展望：推荐系统终局之战&lt;/h2&gt;
&lt;p&gt;当我们深入读完这篇长达近万字的顶级工业论文，我们不得不惊叹于美团算法与工程团队的魄力与技术底蕴。MTFM 不仅仅是一篇论文，它是推荐系统发展史上的一个重要缩影。&lt;/p&gt;
&lt;h3 id="71-从领域定制走向通用智能"&gt;7.1 从“领域定制”走向“通用智能”&lt;/h3&gt;
&lt;p&gt;过去十几年，推荐系统的发展史就是一部“特征交叉结构”的发明史。从 FM 到 DeepFM，从 DCN 到 xDeepFM，算法工程师们绞尽脑汁地设计各种网络来捕捉特征交互。在多场景领域，大家又在绞尽脑汁设计各种 MoE、MMoE、PLE 来隔离领域知识。&lt;/p&gt;
&lt;p&gt;而 MTFM 告诉我们：&lt;strong&gt;大道至简&lt;/strong&gt;。
不要再去手工设计复杂的塔结构了，不要再去强行对齐那些根本不属于同一个维度的特征了。把一切都变成 Token，扔进基于 Transformer 的基础模型中，让注意力机制（Attention）去自动学习特征之间的相关性。只要你的数据足够多、参数量足够大（Scaling Laws），基础模型的泛化能力会碾压一切手工设计的启发式规则。&lt;/p&gt;
&lt;h3 id="72-算法与工程的终极交响曲"&gt;7.2 算法与工程的终极交响曲&lt;/h3&gt;
&lt;p&gt;MTFM 的成功，一半归功于算法的洞察，一半归功于工程的极致压榨。
如果没有 User-level 的样本聚合，如果没有 Hybrid Target Attention 对复杂度的降维打击，如果没有 Triton 算子融合和 FlashAttention-2 的魔改，MTFM 根本不可能在成本敏感的工业界存活下来。
这给我们留下了深刻的启示：&lt;strong&gt;未来的推荐大模型工程师，必须是“全栈”的。&lt;/strong&gt; 你不仅要懂算法原理，还要懂 CUDA，懂 GPU 内存层级，懂 Triton 算子开发。算法的创新必须与底层硬件的特性深度绑定（Hardware-aware Co-design），才能爆发出真正的威力。&lt;/p&gt;
&lt;h3 id="73-推荐系统的未来dlrm-的终结"&gt;7.3 推荐系统的未来：DLRM 的终结？&lt;/h3&gt;
&lt;p&gt;随着 MTFM 这样基于纯 Transformer 骨干架构的基础模型在工业界大放异彩，我们不禁要问：传统的 DLRM 时代是否即将落幕？
当特征表征、序列建模、跨场景知识迁移都可以被统一到一个“万物皆 Token”的基础大模型中时，推荐系统正在以肉眼可见的速度向 NLP 的大语言模型（LLM）靠拢。&lt;/p&gt;
&lt;p&gt;或许在不久的将来，美团（甚至整个工业界）的推荐系统，将只剩下一个极其庞大的、不断 Scaling 的统一大模型。它吞噬着来自外卖、单车、优选、酒店等所有场景的数据，像一个无所不知的智慧大脑，为每一个用户提供最精准的个性化服务。&lt;/p&gt;
&lt;p&gt;MTFM，无疑是通向这个终局目标的一座坚实桥梁。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;(全文完)&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="8-附录与深度扩展从理论到代码的终极拆解"&gt;8. 附录与深度扩展：从理论到代码的终极拆解&lt;/h2&gt;
&lt;p&gt;为了让对技术细节有极致追求的读者能够完全吃透 MTFM，我们在本节中增加更为底层的原理论证、伪代码实现以及与业界主流方案的硬核对比。这部分内容将深入到模型结构的神经末梢和 CUDA 算子的内存分配逻辑中。&lt;/p&gt;
&lt;h3 id="81-伪代码实现hybrid-target-attention-hta"&gt;8.1 伪代码实现：Hybrid Target Attention (HTA)&lt;/h3&gt;
&lt;p&gt;前文提到了全注意力层和目标注意力层的数学公式，这里我们将它们转化为更直观的 PyTorch 风格伪代码。这有助于理解 T-token 是如何在 Target Attention Layer 中被单独更新的，以及 Shortcut 的具体运作方式。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;torch&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;torch.nn&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;nn&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;torch.nn.functional&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nn"&gt;F&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MTFM_Block&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Module&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;d_model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n_heads&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;num_target_layers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nb"&gt;super&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;d_model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;d_model&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;num_target_layers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;num_target_layers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 1层 Full Attention Layer (这里用标准的多头注意力替代 GQA 做演示)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;full_attn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;MultiHeadAttention&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d_model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n_heads&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;full_ffn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FeedForward&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d_model&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;full_norm1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;nn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LayerNorm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d_model&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;full_norm2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;nn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LayerNorm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d_model&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# K层 Target Attention Layers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;target_attns&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;nn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ModuleList&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;MultiHeadAttention&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d_model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n_heads&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num_target_layers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;target_ffns&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;nn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ModuleList&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;FeedForward&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d_model&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num_target_layers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;target_norm1s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;nn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ModuleList&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;nn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LayerNorm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d_model&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num_target_layers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;target_norm2s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;nn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ModuleList&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;nn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LayerNorm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d_model&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num_target_layers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;])&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;forward&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;mask&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;L_H&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;L_R&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; x: [Batch_size, N, d_model], N = L_H + L_R + L_T
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; mask: [Batch_size, N, N] 动态掩码矩阵
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt; &amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# ==========================================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 1. Full Attention Layer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# ==========================================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;residual&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;x_norm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;full_norm1&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 全局计算 Q, K, V&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;attn_out&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;full_attn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;x_norm&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;x_norm&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;x_norm&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;mask&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;mask&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;residual&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;attn_out&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;residual&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;x_norm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;full_norm2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ffn_out&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;full_ffn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x_norm&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;residual&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;ffn_out&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# ==========================================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 2. Target Attention Layers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# ==========================================&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 找到 T-token 的起始位置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;context_len&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;L_H&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;L_R&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;num_target_layers&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 将 x 拆分为 Context (H, R) 和 Target (T)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;x_context&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;[:,&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;context_len&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;:]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;x_target&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;[:,&lt;/span&gt; &lt;span class="n"&gt;context_len&lt;/span&gt;&lt;span class="p"&gt;:,&lt;/span&gt; &lt;span class="p"&gt;:]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 切分对应的 Mask&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# Target 只需要看自己和早于它的 Context，因此 mask 的维度是 [Batch_size, L_T, N]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;target_mask&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mask&lt;/span&gt;&lt;span class="p"&gt;[:,&lt;/span&gt; &lt;span class="n"&gt;context_len&lt;/span&gt;&lt;span class="p"&gt;:,&lt;/span&gt; &lt;span class="p"&gt;:]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;residual_target&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x_target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 对整个序列做 Norm 得到 Key 和 Value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;x_norm_full&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;target_norm1s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 只对 Target 做 Norm 得到 Query&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;q_target&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x_norm_full&lt;/span&gt;&lt;span class="p"&gt;[:,&lt;/span&gt; &lt;span class="n"&gt;context_len&lt;/span&gt;&lt;span class="p"&gt;:,&lt;/span&gt; &lt;span class="p"&gt;:]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;k_full&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x_norm_full&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;v_full&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x_norm_full&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 注意力计算：Query 数量大幅减少，只有 L_T 个&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;attn_out_target&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;target_attns&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;q_target&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;k_full&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;v_full&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;mask&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;target_mask&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 更新 Target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;x_target&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;residual_target&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;attn_out_target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# FFN 更新 Target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;residual_target&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;x_target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;x_target_norm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;target_norm2s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="n"&gt;x_target&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;ffn_out_target&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;target_ffns&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="n"&gt;x_target_norm&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;x_target&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;residual_target&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;ffn_out_target&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 将更新后的 Target 和未经修改的 Context 重新拼接，传给下一层！&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 这是极其关键的一步，保证了 Context 表征的不变性与算力的极大节约&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cat&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;x_context&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;x_target&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;dim&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;通过这段伪代码可以非常清晰地看到，&lt;code&gt;q_target&lt;/code&gt; 的维度是 &lt;code&gt;[Batch_size, L_T, d_model]&lt;/code&gt;，而 &lt;code&gt;k_full&lt;/code&gt; 的维度是 &lt;code&gt;[Batch_size, N, d_model]&lt;/code&gt;。矩阵乘法 \(Q \cdot K^T\) 的计算量直接从 \(O(N \times N)\) 暴跌到了 \(O(L_T \times N)\)。在工业界推荐系统中，\(L_H\) 和 \(L_R\)（历史行为）通常长达上千甚至数千，而 \(L_T\)（单次请求的曝光候选）可能只有几十到一两百。这种不对称性正是 Target Attention 能够实现“算力魔法”的物理基础。&lt;/p&gt;
&lt;h3 id="82-动态掩码-dynamic-masking-的拓扑结构解析"&gt;8.2 动态掩码 (Dynamic Masking) 的拓扑结构解析&lt;/h3&gt;
&lt;p&gt;在 MTFM 中，掩码的设计绝非简单的因果下三角（Lower Triangular Causal Mask）。为了防范极其隐蔽的数据穿越（Information Leakage），掩码矩阵 \(\mathbf{M}\) 的内部结构被精心雕琢。&lt;/p&gt;
&lt;p&gt;假设我们有 3 个 H-token (\(H_1, H_2, H_3\))，2 个 R-token (\(R_1, R_2\))，以及 2 个 T-token (\(T_1, T_2\))。
整个序列 \(X = [H_1, H_2, H_3, R_1, R_2, T_1, T_2]\)。&lt;/p&gt;
&lt;p&gt;其可见性矩阵 \(\mathbf{M}\)（1 表示可见，0 表示掩码屏蔽）如下所示：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style="text-align: left"&gt;Query \ Key&lt;/th&gt;
&lt;th style="text-align: center"&gt;H1&lt;/th&gt;
&lt;th style="text-align: center"&gt;H2&lt;/th&gt;
&lt;th style="text-align: center"&gt;H3&lt;/th&gt;
&lt;th style="text-align: center"&gt;R1&lt;/th&gt;
&lt;th style="text-align: center"&gt;R2&lt;/th&gt;
&lt;th style="text-align: center"&gt;T1&lt;/th&gt;
&lt;th style="text-align: center"&gt;T2&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;strong&gt;H1&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;0&lt;/td&gt;
&lt;td style="text-align: center"&gt;0&lt;/td&gt;
&lt;td style="text-align: center"&gt;0&lt;/td&gt;
&lt;td style="text-align: center"&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;strong&gt;H2&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;0&lt;/td&gt;
&lt;td style="text-align: center"&gt;0&lt;/td&gt;
&lt;td style="text-align: center"&gt;0&lt;/td&gt;
&lt;td style="text-align: center"&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;strong&gt;H3&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;0&lt;/td&gt;
&lt;td style="text-align: center"&gt;0&lt;/td&gt;
&lt;td style="text-align: center"&gt;0&lt;/td&gt;
&lt;td style="text-align: center"&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;strong&gt;R1&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;0&lt;/td&gt;
&lt;td style="text-align: center"&gt;0&lt;/td&gt;
&lt;td style="text-align: center"&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;strong&gt;R2&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;0&lt;/td&gt;
&lt;td style="text-align: center"&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;strong&gt;T1&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align: left"&gt;&lt;strong&gt;T2&lt;/strong&gt;&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;td style="text-align: center"&gt;0&lt;/td&gt;
&lt;td style="text-align: center"&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;深度解析&lt;/strong&gt;：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;左上角 3x3 矩阵 (H 对 H)&lt;/strong&gt;：全是 1。H-token 代表长期历史，它们彼此之间没有严格的因果遮蔽需求，采用双向可见（Bidirectional Visibility）以获得更丰富的表征。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;中间 2x2 矩阵 (R 对 R)&lt;/strong&gt;：是一个下三角矩阵。R-token 是近期的实时序列，必须严格遵循时间先后顺序（Causal Mask），防止未来的行为影响对过去状态的推断。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;右下角 2x2 矩阵 (T 对 T)&lt;/strong&gt;：是对角线矩阵。T-token 代表当前的多个候选曝光目标，在同一次打分请求中，它们是相互独立且平行的，绝对不能互相看到对方的特征。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;左下角 (T 对 H, R)&lt;/strong&gt;：全是 1。T-token 必须能够利用所有的历史和实时信息来辅助预测。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;右上角 (H, R 对 T)&lt;/strong&gt;：全是 0。这是为了防止标签泄露（Label Leakage）。如果历史状态能够看到当前的预测目标，模型就会发生作弊现象。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这种不规则的稀疏矩阵结构，正是导致标准 FlashAttention-2 性能下降的罪魁祸首，也是美团团队为什么必须手写 Triton Kernel 和魔改 FlashAttention 的根本原因。&lt;/p&gt;
&lt;h3 id="83-工业界多场景推荐-msr-模型演进编年史"&gt;8.3 工业界多场景推荐 (MSR) 模型演进编年史&lt;/h3&gt;
&lt;p&gt;为了更好地评估 MTFM 的历史地位，我们需要将其放置在整个多场景推荐模型的发展脉络中进行审视。&lt;/p&gt;
&lt;h4 id="阶段一硬共享与完全独立-hard-sharing-vs-fully-independent"&gt;阶段一：硬共享与完全独立 (Hard Sharing vs. Fully Independent)&lt;/h4&gt;
&lt;p&gt;早期，由于算力限制，多场景推荐要么采用一个极其庞大的单一模型（Hard Sharing），底层 Embedding 完全共享，顶层用一个 MLP 强行拟合所有场景；要么就是每个场景维护一个完全独立的模型（Fully Independent）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;痛点&lt;/strong&gt;：Hard Sharing 会导致跷跷板效应（Seesaw Effect），即大场景主导梯度，小场景效果极差；独立模型则无法利用全局数据，导致冷启动场景无法收敛。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="阶段二星型拓扑与-moe-时代-star-m3oe"&gt;阶段二：星型拓扑与 MoE 时代 (STAR, M3OE)&lt;/h4&gt;
&lt;p&gt;以阿里 STAR（2021）为代表的模型开启了参数解耦的时代。STAR 引入了一个共享的中心网络（Center Network）和每个场景特有的网络（Scenario-specific Networks），通过权重相乘或相加来融合。
随后的 M3OE 将 Mixture-of-Experts 引入，设计了复杂的门控网络（Gating Networks）来决定当前样本应该分配给哪些专家（Experts）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;痛点&lt;/strong&gt;：虽然缓解了跷跷板效应，但它们依然要求极度死板的特征对齐。如果场景 A 有 50 个特征，场景 B 有 80 个特征，工程师必须手工把它们对齐到相同的维度。这在特征维度动辄上万的工业界，简直是灾难。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="阶段三基于-transformer-的单场景生成式框架-hstu-mtgr"&gt;阶段三：基于 Transformer 的单场景生成式框架 (HSTU, MTGR)&lt;/h4&gt;
&lt;p&gt;随着生成式推荐（Generative Recommendation）的兴起，阿里提出了 HSTU（2024），美团提出了 MTGR（2025）。它们开始将推荐系统视为序列转换任务，利用 Transformer 来捕捉行为序列中的深层模式。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;痛点&lt;/strong&gt;：这些模型主要还是在单场景下大杀四方，一旦扩展到多场景，巨长无比的序列会导致计算复杂度直接将集群撑爆。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="阶段四foundation-model-时代-mtfm"&gt;阶段四：Foundation Model 时代 (MTFM)&lt;/h4&gt;
&lt;p&gt;MTFM（2025）集大成于一身。它既拥有 Transformer 的无限 Scaling 潜力，又通过异构 Token 化解决了多场景特征对齐的死穴，最后通过 User-level 聚合与 HTA 混合注意力机制，以近乎作弊的方式把时间复杂度给降了下来。&lt;/p&gt;
&lt;h3 id="84-极致算子优化triton-与-flashattention-的魔法"&gt;8.4 极致算子优化：Triton 与 FlashAttention 的魔法&lt;/h3&gt;
&lt;p&gt;我们再来深挖一下论文中提到的 &lt;strong&gt;Triton 算子融合&lt;/strong&gt; 和 &lt;strong&gt;FlashAttention 魔改&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;在 GPU 内存层级中，SRAM（Shared Memory）的速度极快，但容量极小（每块 SM 只有几十到一百多 KB）；HBM（Global Memory）容量大（如 A100 的 80GB），但速度极慢。&lt;/p&gt;
&lt;p&gt;在原生 PyTorch 中，计算 &lt;code&gt;GLN(Group Layer Normalization)&lt;/code&gt; 的流程如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;从 HBM 读取张量 \(X\) 到 SRAM。&lt;/li&gt;
&lt;li&gt;计算均值和方差。&lt;/li&gt;
&lt;li&gt;将均值和方差写回 HBM。&lt;/li&gt;
&lt;li&gt;再次从 HBM 读取 \(X\)、均值、方差。&lt;/li&gt;
&lt;li&gt;进行归一化计算，并乘以缩放参数。&lt;/li&gt;
&lt;li&gt;最终写回 HBM。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;在这个过程中，HBM 的读写（Memory Bound）占据了 90% 以上的时间，GPU 的计算核心（Compute Bound）反而闲得发慌。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MTFM 团队的 Triton 算子融合策略&lt;/strong&gt;：
使用 Triton 编写定制化 Kernel，将上述 6 步合并为 1 步。通过在 SRAM 中保留中间变量，避免了与 HBM 的反复通信。更绝的是，他们将 &lt;strong&gt;动态掩码的生成&lt;/strong&gt; 也融合进了这个 Kernel 中。利用向量化加载（Vectorized Load，如 &lt;code&gt;tl.load(pointer, block_size)&lt;/code&gt;）直接在寄存器层级完成掩码过滤。&lt;/p&gt;
&lt;p&gt;对于 FlashAttention-2，原生版本为了追求极致性能，假定了掩码是极其规律的因果下三角。当遇到 MTFM 这种“左上角全 1、中间下三角、右下角对角线”的奇葩矩阵时，原生的块分片（Block Tiling）策略会失效。
美团团队在修改 FlashAttention 源码时：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;构造连续对齐掩码内存&lt;/strong&gt;：将稀疏掩码在内存中重新排列（Memory Layout Reordering），保证每一次读取都是 128 bytes 连续对齐的，从而激活 GPU 的异步拷贝指令（cp.async）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;精细的数据流策略&lt;/strong&gt;：在 Forward 阶段，将极其微小的掩码块缓存到 Shared Memory 中；在 Backward 阶段，让掩码矩阵与计算梯度的中间变量在时间维度上复用同一块 SRAM 地址（Temporal Multiplexing），硬生生把掩码加载的延迟给掩盖（Overlap）掉了。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这种级别的工程压榨，在推荐系统领域堪称教科书级别的典范。&lt;/p&gt;
&lt;h3 id="85-总结与启示"&gt;8.5 总结与启示&lt;/h3&gt;
&lt;p&gt;MTFM 的横空出世，给所有依然在 DLRM 泥潭中挣扎的算法工程师敲响了警钟：
&lt;strong&gt;不要试图用人工的先验知识，去战胜机器的算力和海量数据。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在推荐系统中，我们花费了无数个日夜去寻找所谓的高价值特征交叉（如性别和价格的交叉、年龄和品类的交叉）。我们发明了 FM、FFM、DeepFM 等无数种结构来拟合这些交叉。但 MTFM 证明了，只要将它们转化为统一的 Token，通过 Transformer 的自注意力机制，模型能够自动在极高维度上完成更深邃、更泛化的特征交叉。&lt;/p&gt;
&lt;p&gt;而在多场景领域，MTFM 的“不妥协”——拒绝特征对齐、拒绝 Padding 填充、直接引入异构 Tokenizer——更是直击工业界痛点。它让推荐系统的架构变得空前干净、整洁。未来接入一个新场景，不需要改动核心骨干网络，只需要训练一个极小的映射 MLP。&lt;/p&gt;
&lt;p&gt;我们有理由相信，MTFM 描绘的正是推荐系统的终极形态之一：&lt;strong&gt;一个无限大的、能够吞噬所有异构特征的、不断 Scaling 的统一基座模型。&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>GPSD：让判别式推荐模型也拥有 Scaling Law 的魔力</title><link>https://dingyadong.top/posts/009_gpsd_paper_review/</link><pubDate>Tue, 24 Mar 2026 10:00:00 +0800</pubDate><guid>https://dingyadong.top/posts/009_gpsd_paper_review/</guid><description>
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;本文是关于最新论文《Scaling Transformers for Discriminative Recommendation via Generative Pretraining》（
）的阅读笔记。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;在大语言模型（LLM）领域，增加参数量和数据量通常能带来性能的对数线性增长，即 &lt;strong&gt;Scaling Law&lt;/strong&gt;。然而在推荐系统领域，特别是用于排序（Ranking）的&lt;strong&gt;判别式模型&lt;/strong&gt;（如 CTR/CVR 预测），这一规律却迟迟没有出现。&lt;/p&gt;
&lt;p&gt;Meta 团队最近提出的 &lt;strong&gt;GPSD (Generative Pretraining for Scalable Discriminative Recommendation)&lt;/strong&gt; 框架，通过引入生成式预训练，成功打破了这一僵局，让判别式推荐模型也能随着参数规模的扩大而变强。本文将从核心问题、方法设计、实验分析、与现有方法对比、优缺点以及工程实践启示等多个角度，对这篇论文进行全面解读。&lt;/p&gt;
&lt;h2 id="1-为什么推荐大模型容易掉点"&gt;1. 为什么推荐大模型容易”掉点”？&lt;/h2&gt;
&lt;h3 id="11-nlp-与推荐系统的数据差异"&gt;1.1 NLP 与推荐系统的数据差异&lt;/h3&gt;
&lt;p&gt;在自然语言处理中，数据是密集的 token 流——词表通常在几万到十几万量级，而且每个 token 在海量文本中都会被反复观测到，天然具备良好的统计充分性。但在推荐系统中，情况截然不同：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;物品空间极度庞大&lt;/strong&gt;：工业级推荐场景下，物品 ID（Item ID）可达数十亿规模，远超 NLP 词表大小。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;用户交互极其稀疏&lt;/strong&gt;：绝大多数用户只消费过全部物品中极小的一部分（通常远低于 0.01%），导致大量 Embedding 参数缺乏有效的梯度更新。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;标签信号分布不均&lt;/strong&gt;：点击率（CTR）通常在个位数百分比，转化率（CVR）更是远低于 1%，正样本极度稀缺。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="12-判别式训练的过拟合困境"&gt;1.2 判别式训练的过拟合困境&lt;/h3&gt;
&lt;p&gt;论文指出，直接在判别式任务（点击/转化预测）上训练大规模 Transformer，会遇到严重的**数据稀疏导致的过拟合（Overfitting）**问题。具体表现为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;稀疏参数（Embedding 表）难以充分训练&lt;/strong&gt;：当物品空间巨大但每个物品的观测样本有限时，Embedding 表中大量参数处于”欠训练”状态，容易记忆噪声而非学习泛化特征。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;泛化误差随模型规模增大而扩大&lt;/strong&gt;：随着模型层数（Dense 参数）增加，模型在训练集上的 loss 持续下降，但验证集上的 loss 却反向增大，泛化差距（Generalization Gap）迅速扩大。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;”越大越差”的逆直觉现象&lt;/strong&gt;：模型参数越多，在测试集上的表现反而可能不如简单的小模型，这与 NLP/CV 领域”越大越好”的经验形成鲜明对比。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="13-过拟合的根源稀疏参数-vs-稠密参数"&gt;1.3 过拟合的根源：稀疏参数 vs 稠密参数&lt;/h3&gt;
&lt;p&gt;论文通过系统性实验，进一步定位了过拟合的根源：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;稀疏参数（Sparse Parameters）&lt;/strong&gt;：主要指 Embedding 表，参数量通常占模型总参数的 90% 以上。由于推荐场景的数据稀疏性，这些参数是过拟合的”重灾区”。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;稠密参数（Dense Parameters）&lt;/strong&gt;：指 Transformer 层中的注意力权重、前馈网络权重等。这些参数被所有样本共享更新，理论上不易过拟合。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关键发现&lt;/strong&gt;：当稀疏参数的质量得到保障后，增加稠密参数反而能带来持续的性能增益——这正是 GPSD 框架的理论基础。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-gpsd生成式预训练的桥接艺术"&gt;2. GPSD：生成式预训练的”桥接”艺术&lt;/h2&gt;
&lt;p&gt;GPSD 框架的核心思想是：&lt;strong&gt;先用生成式任务训练稀疏参数，再在判别式任务中冻结它们。&lt;/strong&gt; 整个流程分为三个清晰的阶段：生成式预训练、桥接迁移、判别式微调。&lt;/p&gt;
&lt;h3 id="21-阶段一生成式预训练-generative-pretraining"&gt;2.1 阶段一：生成式预训练 (Generative Pretraining)&lt;/h3&gt;
&lt;h4 id="211-训练目标"&gt;2.1.1 训练目标&lt;/h4&gt;
&lt;p&gt;生成式预训练阶段采用经典的**自回归（Autoregressive）**范式：给定用户的历史行为序列 $[i_1, i_2, ..., i_{t-1}]$，模型的目标是预测下一个交互物品 $i_t$。这与 GPT 系列模型在文本上的预训练目标本质上是一致的，只是将”预测下一个 token”替换为了”预测下一个 item”。&lt;/p&gt;
&lt;h4 id="212-sampled-softmax-机制"&gt;2.1.2 Sampled Softmax 机制&lt;/h4&gt;
&lt;p&gt;由于物品空间极其庞大（数十亿级别），直接在全量物品上计算 Softmax 是不现实的。GPSD 采用 &lt;strong&gt;Sampled Softmax&lt;/strong&gt; 来解决这一问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;核心思路&lt;/strong&gt;：在每次前向计算时，从全量物品中采样一批负样本（通常数千到数万个），仅在正样本 + 采样负样本构成的子集上计算 Softmax。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关键优势&lt;/strong&gt;：每次训练步骤中，不同的负样本被随机采入，这意味着整个训练过程中，几乎所有物品的 Embedding 都会被频繁地更新到。这与判别式训练中负样本仅来自实际曝光（impression）形成了鲜明对比。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对抗过拟合的效果&lt;/strong&gt;：由于 Sampled Softmax 引入了广泛的随机负采样，大量原本在判别式训练中”沉睡”的 Embedding 得以被激活和优化，从根本上解决了稀疏参数欠训练的问题。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="213-模型架构"&gt;2.1.3 模型架构&lt;/h4&gt;
&lt;p&gt;预训练阶段使用的是标准的 &lt;strong&gt;Transformer Decoder&lt;/strong&gt; 架构：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;输入为用户行为序列的 Embedding 拼接&lt;/li&gt;
&lt;li&gt;使用因果注意力掩码（Causal Attention Mask）确保自回归性质&lt;/li&gt;
&lt;li&gt;输出层通过 Sampled Softmax 映射到物品空间&lt;/li&gt;
&lt;li&gt;位置编码采用可学习的绝对位置编码&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="214-生成式预训练的关键优势"&gt;2.1.4 生成式预训练的关键优势&lt;/h4&gt;
&lt;p&gt;与直接在判别式任务上训练相比，生成式预训练具备以下优势：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;数据利用效率更高&lt;/strong&gt;：每条用户序列可以生成多个训练样本（序列中的每个位置都是一个预测目标），数据利用率远高于判别式训练。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;隐式的负采样覆盖更广&lt;/strong&gt;：Sampled Softmax 机制确保了海量物品的 Embedding 都能得到有效更新。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;语义表示质量更优&lt;/strong&gt;：生成式目标天然鼓励模型学习物品之间的序列依赖关系和语义相似性，产生的 Embedding 包含更丰富的语义信息。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="22-阶段二桥接与冻结-sparse-freeze-strategy"&gt;2.2 阶段二：桥接与冻结 (Sparse Freeze Strategy)&lt;/h3&gt;
&lt;p&gt;这是 GPSD 最关键的创新点。在将模型从生成式任务迁移到判别式任务（如 CTR 预测）时，如果简单地进行全参数微调，稀疏参数的过拟合问题会再次出现。GPSD 采取了**”冻结稀疏参数（Sparse Freeze）”**的桥接策略：&lt;/p&gt;
&lt;h4 id="221-具体操作步骤"&gt;2.2.1 具体操作步骤&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;继承预训练好的 Embedding 参数&lt;/strong&gt;：将生成式预训练阶段学到的所有 Embedding 参数（包括 Item Embedding、Feature Embedding 等）直接迁移到判别式模型中。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;在判别式微调阶段，固定住所有稀疏参数不更新&lt;/strong&gt;：冻结 Embedding 表的梯度，使其在整个微调过程中保持预训练阶段学到的状态。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;仅更新稠密参数&lt;/strong&gt;：只对 Transformer 层、MLP Head、交叉网络等稠密参数进行梯度更新。&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id="222-为什么冻结而非微调"&gt;2.2.2 为什么冻结而非微调？&lt;/h4&gt;
&lt;p&gt;论文通过对比实验系统地回答了这个问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;全参数微调（Full Fine-tune）&lt;/strong&gt;：虽然初始收敛速度更快，但随着训练推进，泛化差距迅速扩大，最终效果反而低于冻结策略。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;稀疏冻结（Sparse Freeze）&lt;/strong&gt;：虽然初始收敛较慢，但泛化差距始终保持在较小水平，最终效果显著优于全参数微调。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;根本原因&lt;/strong&gt;：判别式训练的负样本来自有限的曝光日志，无法为稀疏参数提供足够多样的梯度信号。继续更新稀疏参数反而会”破坏”预训练阶段学到的高质量表示。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="223-冻结策略的数学直觉"&gt;2.2.3 冻结策略的数学直觉&lt;/h4&gt;
&lt;p&gt;从优化理论角度来看，冻结稀疏参数可以理解为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;将高维优化问题分解为两步低维优化&lt;/li&gt;
&lt;li&gt;第一步在”数据丰富”的环境（生成式训练，Sampled Softmax 提供广泛负采样）中优化稀疏参数&lt;/li&gt;
&lt;li&gt;第二步在”数据有限”的环境（判别式训练，仅曝光日志）中优化稠密参数&lt;/li&gt;
&lt;li&gt;通过这种分而治之的策略，避免了在数据有限的环境中同时优化海量参数导致的过拟合&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="23-阶段三判别式微调-discriminative-fine-tuning"&gt;2.3 阶段三：判别式微调 (Discriminative Fine-tuning)&lt;/h3&gt;
&lt;p&gt;在冻结稀疏参数之后，判别式微调阶段的任务是训练稠密参数来适配具体的业务目标（如 CTR 预估、CVR 预估）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;输入&lt;/strong&gt;：候选物品的冻结 Embedding + 用户序列的冻结 Embedding + 上下文特征&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模型结构&lt;/strong&gt;：Transformer 编码器或 MLP 交叉网络（稠密参数可训练）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;输出&lt;/strong&gt;：通过 Sigmoid 得到点击率或转化率的预估值&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;损失函数&lt;/strong&gt;：标准的二元交叉熵（Binary Cross-Entropy）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-架构流程图"&gt;3. 架构流程图&lt;/h2&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Figure 1: GPSD Two-Stage Training Framework"
srcset="https://dingyadong.top/posts/009_gpsd_paper_review/figure_two_stage_training_hu_c54266bf38e0cff8.webp 320w, https://dingyadong.top/posts/009_gpsd_paper_review/figure_two_stage_training_hu_fdbac74ac0214b1b.webp 480w, https://dingyadong.top/posts/009_gpsd_paper_review/figure_two_stage_training_hu_9b0155f9ab4f5676.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://dingyadong.top/posts/009_gpsd_paper_review/figure_two_stage_training_hu_c54266bf38e0cff8.webp"
width="760"
height="475"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id="4-scaling-law-在推荐系统中的分析"&gt;4. Scaling Law 在推荐系统中的分析&lt;/h2&gt;
&lt;h3 id="41-什么是-scaling-law"&gt;4.1 什么是 Scaling Law？&lt;/h3&gt;
&lt;p&gt;Scaling Law 最初由 OpenAI 在 2020 年提出，揭示了语言模型性能与模型参数量、训练数据量、计算量之间的幂律关系。具体来说：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;模型越大，性能越好&lt;/strong&gt;：在充足数据和计算的前提下，增加参数量能带来可预测的性能提升&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;幂律关系&lt;/strong&gt;：性能提升遵循幂律的形式，即损失随参数量增加呈对数线性下降&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="42-推荐系统中-scaling-law-的缺失"&gt;4.2 推荐系统中 Scaling Law 的缺失&lt;/h3&gt;
&lt;p&gt;在 GPSD 之前，推荐系统领域几乎没有观测到类似的 Scaling Law。原因在于：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;传统方法的参数扩展主要集中在 Embedding 表&lt;/strong&gt;：增加 Embedding 维度或增加特征数量带来的收益迅速饱和&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;稠密参数扩展受限于过拟合&lt;/strong&gt;：直接增加 Transformer 层数或宽度会导致泛化性能下降&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;缺乏有效的预训练范式&lt;/strong&gt;：NLP 领域的 Scaling Law 建立在大规模自监督预训练之上，而推荐系统缺乏对应的预训练方法&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="43-gpsd-如何实现推荐系统的-scaling-law"&gt;4.3 GPSD 如何实现推荐系统的 Scaling Law&lt;/h3&gt;
&lt;p&gt;GPSD 的核心贡献之一，是首次在判别式推荐模型中验证了 Scaling Law 的存在：&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt="Figure 2: Scaling Law Demonstration in GPSD"
srcset="https://dingyadong.top/posts/009_gpsd_paper_review/figure_scaling_law_hu_655650387d6b6ac5.webp 320w, https://dingyadong.top/posts/009_gpsd_paper_review/figure_scaling_law_hu_e3e71a78e5905f40.webp 480w, https://dingyadong.top/posts/009_gpsd_paper_review/figure_scaling_law_hu_8866e2ae02b8ee6.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://dingyadong.top/posts/009_gpsd_paper_review/figure_scaling_law_hu_655650387d6b6ac5.webp"
width="760"
height="484"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;实验设置&lt;/strong&gt;：将稠密参数从 13K 逐步扩展到 0.3B（约 2 万倍），观察离线 AUC 指标的变化&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关键结果&lt;/strong&gt;：在使用 GPSD 框架后，AUC 随稠密参数量的增加呈现出平滑的幂律增长曲线&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对照实验&lt;/strong&gt;：不使用 GPSD（直接端到端判别式训练），增加参数量到一定规模后 AUC 开始下降，完全无法观测到 Scaling Law&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="44-scaling-law-成立的前提条件"&gt;4.4 Scaling Law 成立的前提条件&lt;/h3&gt;
&lt;p&gt;GPSD 的实验揭示了推荐系统 Scaling Law 成立的关键前提：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;稀疏参数必须被高质量预训练&lt;/strong&gt;：只有当 Embedding 表具备良好的泛化表示时，增加稠密参数才有意义&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;稀疏参数在微调阶段必须冻结&lt;/strong&gt;：防止判别式训练破坏预训练的表示质量&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;稠密参数是 Scaling 的真正受益者&lt;/strong&gt;：当稀疏参数质量有保障时，增加 Transformer 深度/宽度能够持续提升模型的特征交叉能力&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="5-与其他预训练方法的对比"&gt;5. 与其他预训练方法的对比&lt;/h2&gt;
&lt;p&gt;为了更好地理解 GPSD 的贡献，以下从多个维度将 GPSD 与其他主流推荐预训练方法进行对比：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;维度&lt;/th&gt;
&lt;th&gt;GPSD（本文）&lt;/th&gt;
&lt;th&gt;SASRec / BERT4Rec&lt;/th&gt;
&lt;th&gt;PinnerSage（Pinterest）&lt;/th&gt;
&lt;th&gt;LLM4Rec（基于 LLM）&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;预训练任务&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;自回归生成式（Next Item Prediction + Sampled Softmax）&lt;/td&gt;
&lt;td&gt;自回归 / 掩码语言模型&lt;/td&gt;
&lt;td&gt;基于图的 PinSage Embedding&lt;/td&gt;
&lt;td&gt;直接使用 LLM 文本理解&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;目标下游任务&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;判别式排序（CTR/CVR）&lt;/td&gt;
&lt;td&gt;序列推荐（Top-K 召回）&lt;/td&gt;
&lt;td&gt;召回 / 粗排&lt;/td&gt;
&lt;td&gt;排序 / 会话推荐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;参数迁移策略&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;冻结稀疏参数 + 微调稠密参数&lt;/td&gt;
&lt;td&gt;全参数微调&lt;/td&gt;
&lt;td&gt;仅使用 Embedding，不迁移模型结构&lt;/td&gt;
&lt;td&gt;全参数微调或 LoRA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;是否验证 Scaling Law&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;是（首次在判别式模型验证）&lt;/td&gt;
&lt;td&gt;否&lt;/td&gt;
&lt;td&gt;否&lt;/td&gt;
&lt;td&gt;部分（继承 LLM 的 Scaling 特性）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;工业部署验证&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;是（Meta 线上 A/B 测试）&lt;/td&gt;
&lt;td&gt;学术实验为主&lt;/td&gt;
&lt;td&gt;是（Pinterest 线上部署）&lt;/td&gt;
&lt;td&gt;少量工业验证&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Embedding 覆盖度&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;高（Sampled Softmax 覆盖全量物品）&lt;/td&gt;
&lt;td&gt;低（仅序列内物品参与训练）&lt;/td&gt;
&lt;td&gt;中等（图邻居扩展）&lt;/td&gt;
&lt;td&gt;不涉及（使用文本特征）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;训练效率&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;中等（两阶段训练）&lt;/td&gt;
&lt;td&gt;高（单阶段端到端）&lt;/td&gt;
&lt;td&gt;低（需要构建图）&lt;/td&gt;
&lt;td&gt;低（LLM 训练成本高）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;对比分析要点&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;vs SASRec/BERT4Rec&lt;/strong&gt;：这类方法虽然也采用序列建模，但其预训练和下游任务都聚焦于召回场景，未涉及判别式排序。更重要的是，它们在微调时采用全参数更新，无法避免稀疏参数的过拟合问题。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;vs PinnerSage&lt;/strong&gt;：PinnerSage 通过图神经网络学习物品 Embedding，但仅将 Embedding 作为特征输入下游模型，不涉及模型结构的迁移，因此无法充分利用预训练模型的深层知识。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;vs LLM4Rec&lt;/strong&gt;：基于 LLM 的方法虽然能利用文本语义，但在处理 ID 特征和用户行为建模方面存在天然短板，且部署成本极高。GPSD 直接在推荐原生的 ID 空间中工作，与现有推荐系统架构兼容性更好。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="6-实验结果详细分析"&gt;6. 实验结果详细分析&lt;/h2&gt;
&lt;h3 id="61-离线实验"&gt;6.1 离线实验&lt;/h3&gt;
&lt;p&gt;GPSD 在多个维度上验证了其有效性：&lt;/p&gt;
&lt;h4 id="611-scaling-law-验证"&gt;6.1.1 Scaling Law 验证&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;实验规模&lt;/strong&gt;：稠密参数从 13K 扩展到 0.3B，跨越约 4 个数量级&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;核心发现&lt;/strong&gt;：使用 GPSD 后，AUC 随稠密参数增加呈现平滑的幂律增长，拟合幂律曲线的 R-squared 值极高&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对照组表现&lt;/strong&gt;：不使用 GPSD 的端到端判别式训练，在参数量超过一定阈值后 AUC 显著下降&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="612-泛化差距分析"&gt;6.1.2 泛化差距分析&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GPSD + Sparse Freeze&lt;/strong&gt;：训练 loss 与验证 loss 之间的差距始终保持在较小水平，且不随模型规模增大而显著扩大&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;端到端判别式训练&lt;/strong&gt;：泛化差距随模型规模增大而急剧扩大，表明严重的过拟合&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;全参数微调（不冻结稀疏参数）&lt;/strong&gt;：介于两者之间，但仍然存在明显的过拟合问题&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="613-消融实验"&gt;6.1.3 消融实验&lt;/h4&gt;
&lt;p&gt;论文通过系统的消融实验验证了各组件的贡献：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;移除生成式预训练&lt;/strong&gt;：AUC 显著下降，证明预训练是 Scaling 的必要条件&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;移除稀疏冻结&lt;/strong&gt;：泛化差距迅速扩大，证明冻结策略对于维持预训练质量至关重要&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;仅使用预训练 Embedding 不迁移模型结构&lt;/strong&gt;：AUC 有所提升但幅度有限，说明模型结构的迁移也贡献了一定价值&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="62-线上实验"&gt;6.2 线上实验&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;部署平台&lt;/strong&gt;：Meta 内部的推荐排序系统&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;实验形式&lt;/strong&gt;：标准的 A/B 测试，实验组使用 GPSD 框架训练的模型，对照组使用现有的判别式模型&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;核心指标收益&lt;/strong&gt;：论文报告了在核心业务指标（如点击率、转化率、用户互动时长等）上取得了统计显著的正向收益&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;稳定性&lt;/strong&gt;：线上指标在持续运行期间保持稳定，无退化现象&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="63-训练效率分析"&gt;6.3 训练效率分析&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;预训练开销&lt;/strong&gt;：生成式预训练阶段需要额外的计算资源，但由于可以离线进行且模型收敛较快，总体开销可控&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;微调加速&lt;/strong&gt;：由于冻结了大量稀疏参数（占总参数 90% 以上），判别式微调阶段的梯度计算量和内存占用均大幅减少&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;综合效率&lt;/strong&gt;：两阶段训练的总计算成本与直接端到端训练的大模型相当，但最终效果显著更优&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="7-优缺点分析"&gt;7. 优缺点分析&lt;/h2&gt;
&lt;h3 id="71-优势"&gt;7.1 优势&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;首次在判别式推荐模型中验证 Scaling Law&lt;/strong&gt;：这是该论文最核心的贡献，为推荐系统领域的”大模型化”提供了可行路径和理论支撑。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法设计简洁且工程友好&lt;/strong&gt;：两阶段训练流程清晰，冻结策略实现简单（只需在优化器中排除稀疏参数），不需要对现有推荐系统架构做大幅改动。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;经过工业级验证&lt;/strong&gt;：在 Meta 的真实业务场景中完成了线上 A/B 测试并取得正收益，证明了方法的实用性和可靠性。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;理论洞察深刻&lt;/strong&gt;：系统性地分析了稀疏参数与稠密参数在过拟合中的不同角色，为后续研究提供了清晰的理论框架。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;开源代码&lt;/strong&gt;：作者公开了实现代码，降低了复现和跟进研究的门槛。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="72-不足与局限"&gt;7.2 不足与局限&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;两阶段训练的流程复杂性&lt;/strong&gt;：虽然单看每个阶段都很简单，但两阶段训练意味着需要维护两套训练流水线、两套超参数配置，以及处理阶段之间的模型兼容性问题。在工程实践中，这增加了系统的维护成本。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;冻结策略可能丢失任务特异性信息&lt;/strong&gt;：完全冻结稀疏参数意味着 Embedding 无法适配判别式任务的特定需求。对于某些与生成式预训练分布差异较大的下游任务，这种”一刀切”的冻结可能不是最优选择。论文未探讨部分冻结或渐进解冻等更灵活的策略。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;对预训练数据质量的强依赖&lt;/strong&gt;：稀疏参数的质量完全由预训练阶段决定，如果预训练数据存在偏差（如热门物品过度曝光、冷启动物品缺乏交互），这些偏差会被”冻结”到下游模型中且无法修正。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scaling Law 的验证范围有限&lt;/strong&gt;：实验仅在 Meta 的特定业务场景中验证，是否能推广到其他领域（如电商、短视频、音乐推荐等）尚需进一步证实。同时，论文主要关注了参数量维度的 Scaling，对数据量和计算量维度的 Scaling 关系探讨较少。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="8-工程实践启示"&gt;8. 工程实践启示&lt;/h2&gt;
&lt;h3 id="81-推荐系统工程师的实践建议"&gt;8.1 推荐系统工程师的实践建议&lt;/h3&gt;
&lt;p&gt;基于 GPSD 的核心发现，以下是一些可以在工程实践中借鉴的经验：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;优先投资 Embedding 质量&lt;/strong&gt;：与其盲目增大模型规模，不如先确保 Embedding 表的训练质量。可以考虑在正式的排序模型训练之前，通过对比学习、生成式预训练等手段预热 Embedding。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;分阶段训练的思路值得借鉴&lt;/strong&gt;：即使不完全复制 GPSD 的方案，”将困难的稀疏参数优化和稠密参数优化分开处理”这一思路本身就极具价值，可以在各种变体中灵活应用。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;冻结策略可以渐进式采用&lt;/strong&gt;：在工程实践中，可以先尝试冻结最容易过拟合的低频特征 Embedding，观察效果后再逐步扩大冻结范围。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;监控泛化差距作为模型健康指标&lt;/strong&gt;：论文中使用的泛化差距（训练 loss 与验证 loss 的差距）是一个非常实用的模型健康监控指标，建议在日常模型迭代中持续追踪。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="82-架构设计启示"&gt;8.2 架构设计启示&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;预训练与微调解耦&lt;/strong&gt;：将推荐系统架构设计为支持模块化的预训练和微调，便于独立优化各个组件。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;稀疏参数服务化&lt;/strong&gt;：预训练好的 Embedding 可以作为独立的服务（Embedding Service）对外提供，供多个下游任务共享，降低重复训练的成本。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;动态更新机制&lt;/strong&gt;：考虑设计增量更新机制，在新物品上线时能够快速生成高质量的 Embedding，而不需要重新运行完整的预训练流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="9-未来方向"&gt;9. 未来方向&lt;/h2&gt;
&lt;p&gt;基于 GPSD 的研究成果，以下几个方向值得关注：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;推荐系统基础模型（Foundation Models for RecSys）&lt;/strong&gt;：GPSD 为推荐领域的基础模型奠定了初步基础。未来可以探索更大规模、跨场景、跨平台的预训练，构建真正意义上的推荐基础模型。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;更灵活的参数迁移策略&lt;/strong&gt;：探索部分冻结、渐进解冻、LoRA 适配等更精细的参数迁移方法，在保持预训练质量的同时允许一定程度的任务适配。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多模态预训练&lt;/strong&gt;：将 GPSD 的思路扩展到多模态推荐场景，结合文本、图像、视频等多模态信息进行生成式预训练。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据量与计算量的 Scaling Law&lt;/strong&gt;：GPSD 主要探索了参数量维度的 Scaling，未来可以系统性地研究训练数据量和计算量对推荐模型性能的影响。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;冷启动问题&lt;/strong&gt;：研究如何利用生成式预训练的知识来改善新用户和新物品的冷启动表现。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="总结"&gt;总结&lt;/h2&gt;
&lt;p&gt;GPSD 框架证明了推荐系统也可以像 LLM 一样通过 Scaling Up 变得更聪明。它的核心贡献可以归纳为以下几点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;问题定位精准&lt;/strong&gt;：准确识别出稀疏参数过拟合是阻碍推荐模型 Scaling 的关键瓶颈。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;方法设计精巧&lt;/strong&gt;：通过生成式预训练为 Embedding 表奠定坚实基础，再通过”参数冻结”策略在判别式微调阶段避免过拟合，实现了”分而治之”的优雅解决方案。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;首次验证推荐系统的 Scaling Law&lt;/strong&gt;：在工业级场景中证实了判别式推荐模型也能随着参数规模扩大而持续变强。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工业落地验证&lt;/strong&gt;：在 Meta 的真实业务中完成了线上验证，证明了方法的实用价值。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这一研究为未来推荐领域的”基础大模型（Foundation Models）”提供了关键的路径，也为整个推荐系统社区带来了一个重要的信号：&lt;strong&gt;推荐模型的 Scaling 之路已经打通，关键在于找到正确的预训练和参数迁移策略。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;开源代码&lt;/strong&gt;：
&lt;/p&gt;</description></item><item><title>万亿参数推荐大模型：HSTU 架构如何超越传统 Self-Attention</title><link>https://dingyadong.top/posts/007_hstu_paper_review/</link><pubDate>Fri, 20 Mar 2026 10:00:00 +0800</pubDate><guid>https://dingyadong.top/posts/007_hstu_paper_review/</guid><description>
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;本文是关于 Meta AI 重磅论文《Actions Speak Louder than Words: Trillion-Parameter Sequential Transducers for Generative Recommendations》（&lt;a href="https://arxiv.org/pdf/2402.17152" target="_blank" rel="noopener"&gt;arXiv:2402.17152&lt;/a&gt;）的阅读笔记，重点探讨 HSTU 架构如何改进传统的自注意力机制。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;在自然语言处理（NLP）领域，基于 Transformer 的大模型通过 Scaling Law（缩放定律）展现了令人惊叹的涌现能力。然而在推荐系统领域，传统的深度学习推荐模型（DLRMs）极度依赖人工交叉特征，难以随着计算资源的增加实现模型效果的对数线性增长。&lt;/p&gt;
&lt;p&gt;为了解决这一痛点，Meta AI 提出了**生成式推荐（Generative Recommenders, GRs）**的新范式，并专门为推荐场景设计了 &lt;strong&gt;HSTU（Hierarchical Sequential Transduction Unit）&lt;/strong&gt; 架构。HSTU 成功将千亿级异构特征统一为序列化表达，在训练效率和效果上大幅超越了标准 Transformer，并在工业界验证了万亿参数推荐大模型的 Scaling Law。&lt;/p&gt;
&lt;h2 id="1-传统-transformer-在推荐系统中的水土不服"&gt;1. 传统 Transformer 在推荐系统中的“水土不服”&lt;/h2&gt;
&lt;p&gt;标准 Transformer 架构在处理工业级推荐系统（十亿级动态词表、高达 $10^5$ 的用户交互序列）时，暴露出极端的计算与推理瓶颈：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;计算冗余&lt;/strong&gt;：标准 Transformer 包含多头注意力（MHA）和厚重的点式前馈网络（MLP）。在推荐场景下，极度稀疏的特征并不需要如此厚重的 MLP 来进行特征变换，这会导致巨大的计算浪费。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;时间复杂度爆炸&lt;/strong&gt;：在流式逐样本（Impression-level）训练中，标准 Transformer 的时间复杂度高达 $\mathcal{O}(N^3 d + N^2 d^2)$，根本无法满足在线推理的严苛延迟要求。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="2-hstu-相对于-self-attention-的核心改进"&gt;2. HSTU 相对于 Self-Attention 的核心改进&lt;/h2&gt;
&lt;p&gt;HSTU 对传统的自注意力架构进行了大刀阔斧的重构，专门针对推荐数据的非平稳、极度稀疏特性进行了优化。&lt;/p&gt;
&lt;h3 id="21-彻底抛弃笨重的-mlp-层"&gt;2.1 彻底抛弃笨重的 MLP 层&lt;/h3&gt;
&lt;p&gt;HSTU 最大的架构创新在于&lt;strong&gt;完全移除了传统的 MLP 层&lt;/strong&gt;。它将多头注意力与前馈网络融合，替换为单层线性投影与门控网络。HSTU 巧妙地将计算分为两步：空间聚合（Spatial Aggregation）与点式变换（Pointwise Transformation）。&lt;/p&gt;
&lt;p&gt;为了更直观地理解，我们可以看下面这张 HSTU 的微观结构图：&lt;/p&gt;
&lt;div class="mermaid-wrapper"&gt;
&lt;div class="mermaid" style="background: transparent;"&gt;
graph LR
classDef input fill:#f9f9f9,stroke:#333,stroke-width:2px;
classDef linear fill:#e1f5fe,stroke:#2563eb,stroke-width:1px;
classDef act fill:#fef3c7,stroke:#ea580c,stroke-width:1px;
classDef attention fill:#dcfce7,stroke:#b45309,stroke-width:1px;
classDef output fill:#f0fdf4,stroke:#16a34a,stroke-width:2px;
Input["输入 X"]:::input
Norm1["LayerNorm"]:::linear
Linear1["Linear f1"]:::linear
SiLU1["SiLU φ1"]:::act
Split["Split → U,V,Q,K"]:::linear
%% Spatial Aggregation
Attn["QK^T + Bias"]:::attention
SiLU2["SiLU φ2"]:::act
Mul_V["Score ⊙ V"]:::attention
%% Pointwise Transformation
Norm2["LayerNorm"]:::linear
Mul_U["Norm ⊙ U"]:::linear
Linear2["Linear f2"]:::linear
Output["输出 Y"]:::output
Input --&gt; Norm1 --&gt; Linear1 --&gt; SiLU1 --&gt; Split
Split --&gt;|"Q,K"| Attn --&gt; SiLU2 --&gt; Mul_V
Split --&gt;|"V"| Mul_V
Mul_V --&gt; Norm2 --&gt; Mul_U --&gt; Linear2 --&gt; Output
Split --&gt;|"U"| Mul_U
Input --&gt;|"残差连接"| Output
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;核心计算公式如下：&lt;/strong&gt;&lt;/p&gt;
$$ U(X), V(X), Q(X), K(X) = \text{Split}(\phi_1(f_1(X))) $$&lt;p&gt;
&lt;/p&gt;
$$ A(X)V(X) = \phi_2 \left( Q(X)K(X)^T + r_{p,t}^{ab} \right) V(X) $$&lt;p&gt;
&lt;/p&gt;
$$ Y(X) = f_2(\text{Norm}(A(X)V(X)) \odot U(X)) $$&lt;p&gt;&lt;em&gt;其中，$f_1, f_2$ 为单层线性变换，$\phi_1, \phi_2$ 为 SiLU 激活函数，$r_{p,t}^{ab}$ 为融合了时序和位置的相对偏差。&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;改进收益&lt;/strong&gt;：
通过使用门控逐元素融合输出，HSTU 极大地减少了浮点运算量（FLOPs），并完美契合底层硬件的算子融合（Fused Kernel），极大提升了显存带宽利用率。&lt;/p&gt;
&lt;h3 id="22-生成式训练与时间复杂度骤降"&gt;2.2 生成式训练与时间复杂度骤降&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;为什么标准 Transformer 在推荐系统中复杂度会变成 $\mathcal{O}(N^3)$？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在 NLP 中，Transformer 处理单条长度为 $N$ 的序列，时间复杂度是大家熟知的 $\mathcal{O}(N^2d + Nd^2)$。但在传统的推荐系统（如早期的 SASRec）中，通常采用&lt;strong&gt;流式逐样本（Impression-level）训练&lt;/strong&gt;。
假设用户有历史序列 $[i_1, i_2, \dots, i_N]$，传统框架需要将其拆分为 $N$ 个独立的训练样本：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;样本 1：历史 $[i_1]$，预测 $i_2$&lt;/li&gt;
&lt;li&gt;样本 2：历史 $[i_1, i_2]$，预测 $i_3$&lt;/li&gt;
&lt;li&gt;&amp;hellip;&lt;/li&gt;
&lt;li&gt;样本 $N$：历史 $[i_1, \dots, i_{N-1}]$，预测 $i_N$&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着 Transformer 需要对这 $N$ 个逐渐变长的子序列分别进行前向计算。我们将这 $N$ 个独立样本的计算量累加：
&lt;/p&gt;
$$ \text{Total Complexity} = \sum_{k=1}^{N} \mathcal{O}(k^2d + kd^2) $$&lt;p&gt;
根据求和公式 $\sum_{k=1}^{N} k^2 \approx \frac{N^3}{3}$，总的训练时间复杂度就灾难性地飙升到了 &lt;strong&gt;$\mathcal{O}(N^3d + N^2d^2)$&lt;/strong&gt;。当用户序列 $N=10^4$ 时，计算量呈三次方级数爆炸，完全无法训练。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HSTU 的降维打击：Generative Training&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在训练方式上，HSTU 采用了&lt;strong&gt;生成式训练（Generative Training）&lt;/strong&gt;，彻底摒弃了传统的逐样本拆分。它向 LLM 学习，把整个长度为 $N$ 的用户序列作为一个完整的样本送入模型，配合因果掩码（Causal Mask），在&lt;strong&gt;一次前向传播&lt;/strong&gt;中同时完成对所有历史节点的预测。&lt;/p&gt;
&lt;p&gt;这一改变干掉了那层可怕的 $\sum_{k=1}^{N}$ 循环，成功将训练的时间复杂度指数级降维回了 &lt;strong&gt;$\mathcal{O}(N^2 d + N d^2)$&lt;/strong&gt;。同时，在推理阶段引入了 M-FALCON 微批处理算法，能够全面摊销超长序列的计算成本。&lt;/p&gt;
&lt;h3 id="23-极端的特征序列化丢弃数值特征"&gt;2.3 极端的特征序列化：丢弃数值特征&lt;/h3&gt;
&lt;p&gt;这篇论文中一个非常反直觉但极为有效的操作是：&lt;strong&gt;完全移除传统的数值特征（如历史 CTR 统计）&lt;/strong&gt;。
HSTU 摒弃了 DLRM 复杂的并行特征网络，将用户交互行为（如点击、点赞）与慢变分类特征（如用户画像）按照时间戳合并压缩为&lt;strong&gt;一条主时间序列&lt;/strong&gt;。作者证明了，只要序列模型足够强大，它完全可以直接从极长的原始历史交互中自行捕获这些统计概率，无需人工干预。&lt;/p&gt;
&lt;h2 id="3-架构流程图"&gt;3. 架构流程图&lt;/h2&gt;
&lt;div class="mermaid-wrapper"&gt;
&lt;div class="mermaid" style="background: transparent;"&gt;
graph TD
A[海量异构特征 Categorical &amp; Numerical] --&gt; B[丢弃数值特征 / 保留分类特征]
B --&gt; C[特征序列化与时间轴压缩]
C --&gt; D[合并为统一单时间序列]
D --&gt; E[Generative Training 生成式训练]
E --&gt; F[HSTU 编码器]
F --&gt; G[Pointwise Projection: 线性生成 U,V,Q,K]
G --&gt; H[Spatial Aggregation: 时空注意力与 SiLU 激活]
H --&gt; I[Pointwise Transformation: 门控逐元素融合输出]
I --&gt; J[多任务预测: 排序 Ranking / 召回 Retrieval]
&lt;/div&gt;
&lt;/div&gt;
&lt;h2 id="4-结论与工业界影响"&gt;4. 结论与工业界影响&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;惊人的速度优势&lt;/strong&gt;：在长度为 8192 的长序列上，HSTU 的推理和训练速度比基于 FlashAttention2 的标准 Transformer &lt;strong&gt;快了 5.3 倍到 15.2 倍&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;效果跃升&lt;/strong&gt;：在公开数据集上，HSTU 的 NDCG 指标最高超越基线模型达 &lt;strong&gt;65.8%&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;万亿参数与 Scaling Law 验证&lt;/strong&gt;：包含 1.5 万亿参数的 GRs 模型在十亿级用户的互联网平台上成功落地，线上核心指标提升 12.4%。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;最重要的是，该研究首次在推荐系统领域证实了：&lt;strong&gt;推荐模型的质量随训练算力的增加呈幂律分布（Power-law）&lt;/strong&gt;，跨越了三个数量级（达到 GPT-3 / LLaMA-2 级别的算力），彻底打破了 DLRM 时代的瓶颈，为推荐领域的“基础大模型（Foundation Models）”铺平了道路。&lt;/p&gt;</description></item></channel></rss>