
如果你在广告技术领域工作或者对推荐系统、大模型LLM的工程化应用感兴趣那么最近Meta的一篇技术论文《Multi-stage Sequential Ranking Models for Large-Scale Ads Recommendation》绝对值得你花时间研究。这篇论文揭示了一个核心矛盾在拥有数十亿用户、每天处理万亿级请求的超大规模广告系统中如何平衡模型的“大”与“快”Meta的答案是放弃单一“巨无霸”模型转向一个精心设计的多阶段序列模型架构。这不仅仅是Meta的内部技术分享它更像是一份工业级推荐系统的“架构蓝图”。它清晰地回答了为什么ChatGPT、GPT-4这类千亿参数的大模型无法直接“塞”进一个需要毫秒级响应的在线广告系统。更关键的是它提出了一种将LLM领域著名的“扩展定律”Scaling Law思想巧妙地“降维”应用到传统推荐排序任务中的方法论。很多人以为推荐系统的前沿就是不断堆叠参数、用更大的模型。但Meta的实践告诉我们真正的挑战在于工程架构。一个模型再聪明如果无法在1毫秒内完成推理对在线业务就是无效的。本文将为你深入拆解Meta这套多阶段序列模型的核心思想、技术细节和工程启示。你会看到它如何通过“分而治之”的策略将用户长达1000个行为的超长序列信息高效地转化为精准的广告点击率CTR预测。读完本文你将获得对工业级推荐系统架构的深度认知理解为什么“多阶段”是超大规模系统的必然选择。序列建模的实战思路掌握如何将用户历史行为序列有效地编码并用于排序。LLM扩展定律的跨界启发学习如何将大模型的研究范式数据、模型规模、计算应用于传统机器学习任务。可借鉴的工程方案了解模型蒸馏、级联推理、特征工程等关键技术的具体实现。1. 核心问题为什么广告排序不能直接用一个“大模型”在讨论解决方案之前我们必须先理解问题本身。想象一下Meta的广告系统面临的挑战规模恐怖数十亿日活用户每个用户有成千上万条历史行为点击、点赞、分享、观看时长等。实时性要求极致从用户刷新信息流到系统筛选出数百个候选广告、完成排序并返回结果整个流程必须在几十到一百毫秒内完成。目标复杂不仅要预测用户是否会点击CTR还要兼顾广告主的出价、用户体验避免过度推送、平台长期生态等。此时如果你说“我们用最新的千亿参数LLM来做排序吧”这个想法会立刻在工程上碰壁推理延迟无法接受即使是最优化的LLM推理引擎处理一个样本也需要数百毫秒到数秒。这与在线服务的毫秒级SLA服务等级协议相差几个数量级。计算成本天文数字每天数万亿次的推理请求如果每次都用千亿模型所需的GPU算力成本将是任何公司都无法承受的。长序列处理效率低用户的长期兴趣蕴含在长达数百甚至上千的行为序列中。让大模型从头到尾处理如此长的原始序列计算效率极低。因此Meta的论文开篇就定下了基调我们不能用一个模型解决所有问题必须进行任务分解和架构分层。这就是“多阶段”思想的起源。2. 多阶段排序架构总览分而治之的艺术Meta提出的架构是一个经典的多阶段排序Multi-stage Ranking管道但其核心创新在于每个阶段内部模型的设计尤其是对用户行为序列的建模方式。整个流程可以概括为以下四个阶段召回 (Recall) - 粗排 (Coarse Ranking) - 精排 (Fine Ranking) - 重排/混排 (Re-ranking/Blending)让我们用一个比喻来理解就像一场大型招聘。召回从数亿份简历广告库中快速筛选出几千份可能合适的基于用户画像、兴趣标签等简单规则。粗排用一套标准化的笔试题目轻量级模型从几千份中选出几百份得分较高的。精排对几百份简历进行深度面试复杂模型详细评估其与岗位的匹配度给出精确的优先级排序。重排HR综合考虑笔试面试分数、团队多样性、薪资预算等因素做出最终录用名单。Meta论文的重点在于改进了“粗排”和“精排”这两个阶段的“面试官”模型让他们能更好地理解应聘者用户的长期履历行为序列。3. 基石用户行为序列的表示与建模这是整个系统的“数据燃料”。用户的行为序列例如[点击了A广告 观看了B视频10秒 忽略了C帖子 分享了D文章...]是预测其未来行为最宝贵的信号。3.1 序列的构造序列中的每个行为都是一个多元组通常包含Item ID被交互对象的唯一标识广告ID、帖子ID、视频ID。交互类型点击、点赞、评论、分享、观看时长等。时间戳行为发生的时间。对象特征交互对象本身的特征如广告类别、创作者信息、文本嵌入向量等。这些原始行为经过处理后会形成一个固定长度或动态长度的序列作为模型的输入。3.2 序列建模的演进从Pooling到Transformer历史均值Historical Avg最简单的方法将用户过去对某类广告的CTR取平均。丢失了所有序列信息和上下文。Pooling池化将序列中所有Item的特征向量通过平均池化Mean Pooling或注意力池化Attentive Pooling聚合成一个固定的用户兴趣向量。这是工业界长期的主流方法但它将序列压扁成了一个向量失去了时序和位置信息。循环神经网络RNN/LSTM能捕捉时序依赖但难以并行训练且对长序列的记忆能力有限。Transformer当前的主流选择。通过自注意力机制可以并行处理整个序列并建模任意两个行为之间的依赖关系。这正是Meta在精排阶段采用的核心技术。4. 核心创新级联的序列建模与蒸馏Meta架构的精髓在于它设计了一个级联Cascading的序列建模流程并在阶段间使用了知识蒸馏Knowledge Distillation。4.1 粗排阶段高效序列编码器粗排模型需要处理几百到几千个候选广告必须非常快。因此它不能像精排模型那样对每个候选广告都重新计算一遍完整的用户序列注意力。解决方案粗排模型使用一个轻量级的用户序列编码器例如一个浅层Transformer或高效的注意力变体预先将用户的长序列如1000个行为编码成一个或多个固定的上下文向量Context Vector。这个编码过程只做一次与候选广告无关。编码得到的上下文向量代表了用户的通用兴趣状态。在评估每个候选广告时粗排模型只需要将广告的特征向量与这个预计算的上下文向量进行简单的交互如点积或浅层MLP即可得到分数。这极大地减少了计算量。# 伪代码示意粗排阶段的序列编码与打分 import torch import torch.nn as nn class CoarseRankingModel(nn.Module): def __init__(self, user_seq_encoder, item_encoder, scoring_mlp): super().__init__() self.user_seq_encoder user_seq_encoder # 轻量级序列编码器 self.item_encoder item_encoder # 广告特征编码器 self.scoring_mlp scoring_mlp # 打分网络 def forward(self, user_behavior_sequence, candidate_ad_features): user_behavior_sequence: [batch_size, seq_len, feature_dim] candidate_ad_features: [batch_size, num_candidates, feature_dim] # 步骤1预计算用户上下文向量 (与候选广告无关) user_context self.user_seq_encoder(user_behavior_sequence) # [batch_size, context_dim] # 步骤2编码候选广告 candidate_embeddings self.item_encoder(candidate_ad_features) # [batch_size, num_candidates, emb_dim] # 步骤3高效交互与打分 # 将用户上下文广播与每个候选广告嵌入进行拼接或交互 user_context_expanded user_context.unsqueeze(1).expand(-1, candidate_embeddings.size(1), -1) combined torch.cat([user_context_expanded, candidate_embeddings], dim-1) scores self.scoring_mlp(combined).squeeze(-1) # [batch_size, num_candidates] return scores4.2 精排阶段精准的Target-Attention通过粗排筛选后只剩下几百个最相关的候选广告。精排模型可以“奢侈”一点使用更复杂、更精准的模型。解决方案精排模型采用“Target-Attention”或“Candidate-Attention”机制。这意味着对于每一个待评分的候选广告模型都会重新计算用户序列中所有行为与该候选广告的相关性注意力。核心思想用户历史行为的重要性是动态的取决于当前在看什么广告。例如当评估一个汽车广告时用户过去点击汽车文章的行为权重应该提高而当评估一个化妆品广告时则是美妆相关行为的权重提高。实现这通常通过一个Transformer Decoder-like的结构实现其中候选广告的特征作为“Query”用户行为序列作为“Key”和“Value”。# 伪代码示意精排阶段的Target-Attention机制 class FineRankingModel(nn.Module): def __init__(self, behavior_encoder, target_attention_layer, final_mlp): super().__init__() self.behavior_encoder behavior_encoder # 行为基础编码器 self.target_attention target_attention_layer # 目标注意力层 self.final_mlp final_mlp def forward(self, user_behavior_sequence, candidate_ad_feature): user_behavior_sequence: [batch_size, seq_len, feature_dim] candidate_ad_feature: [batch_size, feature_dim] # 一次只评估一个候选 # 步骤1编码用户行为序列 behavior_embeddings self.behavior_encoder(user_behavior_sequence) # [batch_size, seq_len, hidden_dim] # 步骤2以候选广告为Query计算对序列的注意力 # candidate_ad_feature 作为 Query context_vector, attention_weights self.target_attention( querycandidate_ad_feature.unsqueeze(1), # [batch_size, 1, hidden_dim] keybehavior_embeddings, valuebehavior_embeddings ) # context_vector: [batch_size, 1, hidden_dim] # 步骤3综合所有信息进行最终预测 combined torch.cat([context_vector.squeeze(1), candidate_ad_feature], dim-1) score self.final_mlp(combined) # [batch_size, 1] return score, attention_weights # 还可以返回注意力权重用于分析这种设计的优势精度极高因为它为每个候选广告都进行了个性化的序列重编码。但缺点是计算成本大只能用于最终少量候选的排序。4.3 桥梁知识蒸馏Knowledge Distillation那么如何让速度快但精度稍低的粗排模型尽可能做出和精排模型一样的判断呢答案是蒸馏。过程使用训练好的、复杂的精排模型Teacher Model对大量的训练样本进行预测产生“软标签”Soft Labels例如CTR的概率分布。然后用这些软标签而非原始硬标签来训练轻量级的粗排模型Student Model。作用软标签包含了Teacher Model学到的更丰富的知识例如不同类别之间的相对关系、不确定性等能帮助Student Model在更简单的架构下逼近Teacher Model的性能。这保证了粗排阶段筛选出的候选集质量足够高为精排阶段打下良好基础。5. 从LLM扩展定律中获得的启示论文标题中提到了“LLM式扩展定律”。这是什么意思在LLM领域扩展定律Scaling Law指出模型性能如损失可预测地随着模型参数量N、训练数据量D、计算量C的增大而提升。Meta将这一思想借鉴到了广告排序模型中并进行了验证数据扩展他们发现使用更长的用户行为序列如从100个行为增加到1000个相当于增加了“数据上下文”能显著提升模型性能。这类似于给LLM更长的上下文窗口。模型扩展在精排阶段增加Transformer的层数、注意力头数、隐藏层维度即增大模型容量在计算资源允许的范围内能带来稳定的收益。架构扩展整个多阶段管道本身也是一种“扩展”。通过级联更强大、更专注的模型粗排-精排-重排从系统层面实现了性能的跃升。关键结论在推荐系统领域同样存在可预测的扩展规律。持续增加高质量的数据更丰富、更长的序列、在关键节点使用容量更大的模型、以及设计更优的级联架构是提升系统效果的三条明确路径。6. 工程实现与挑战将这样的理论架构落地到Meta级别的系统中面临巨大工程挑战6.1 特征平台与序列服务实时特征用户最新的一个行为发生后需要在毫秒级内更新其特征并流入序列供下一次请求使用。这需要强大的实时流处理平台如Flink。序列存储与读取存储和快速读取数亿用户长达1000条的原始行为序列对存储系统的吞吐和延迟是巨大考验。通常采用高性能的KV存储如Redis集群或自研的序列数据库。6.2 模型训练与部署分布式训练千亿级别的参数、TB级别的训练数据必须依赖大规模分布式训练框架如PyTorch DDP, DeepSpeed。在线推理优化模型压缩对精排模型进行剪枝、量化以降低推理延迟。硬件加速使用GPU、TPU或专用AI芯片进行推理。服务化将粗排、精排模型部署为高可用的微服务通过高效的RPC框架如gRPC进行调用。6.3 系统一致性线上线下一致性确保训练时用的特征处理逻辑如序列拼接、归一化与在线推理时完全一致否则会导致严重的性能下降。这需要严格的特征管道和版本管理。7. 总结与对开发者的启示Meta的多阶段序列排序模型为工业级推荐系统提供了一个清晰而强大的范式。它告诉我们没有银弹在超大规模场景下单一模型无法解决所有问题。分层处理、各司其职的架构思维至关重要。序列就是金矿用户行为序列是推荐系统最核心的资产。如何高效、智能地编码和利用长序列是模型进化的主战场。从简单的Pooling到Target-Attention的演进是精度提升的关键。蒸馏是效率的催化剂知识蒸馏是连接复杂模型与轻量级模型、平衡效果与效率的桥梁是现代机器学习系统不可或缺的技术。借鉴LLM范式推荐系统可以从LLM的成功经验中汲取营养如扩展定律。关注数据量、模型规模和架构创新对性能的系统性影响。对于正在构建或优化推荐系统的团队可以采取以下实践路径初级阶段确保你的系统拥有一个可靠的多阶段管道召回-粗排-精排。即使粗排和精排开始时用的是简单模型如LR、FM这个架构也能为未来升级奠定基础。进阶阶段在精排阶段引入基于Transformer的序列建模。可以从相对较短的序列如50-100开始使用Target-Attention机制。重点关注特征工程和序列构建的质量。高级阶段实施知识蒸馏用精排模型提升粗排模型的效果。探索更长的行为序列数百至上千并优化其存储和编码效率。在粗排阶段引入轻量级序列编码器告别简单的Pooling方法。系统性地进行扩展实验增加数据、增大模型、优化架构并观察性能的规律性变化。这项研究最终指向一个未来推荐系统与大语言模型的技术栈正在融合。理解序列、注意力、蒸馏和扩展定律将成为下一代推荐算法工程师和架构师的必备技能。Meta的这份蓝图已经为我们指明了方向。