资讯动态

Meta广告排序实战:多阶段序列模型与LLM扩展定律的工程启示

发布时间:2026/8/9 16:22:38 来源:尧图企业网站定制
如果你正在处理海量用户行为数据并且想知道如何从这些看似杂乱的时间序列里预测下一个点击、购买或转化那么 Meta 在广告排序中应用的多阶段序列模型以及它背后与 LLM 相似的扩展定律是一个绕不开的实战案例。这不仅仅是学术论文里的概念而是直接影响着每天数十亿次广告展示效果的核心工程实践。很多人一听到“序列模型”就想到 RNN、LSTM但在 Meta 这种体量的场景下问题要复杂得多用户行为序列长、噪声大、目标稀疏比如最终转化事件很少而且需要在极短的延迟内完成预测。更关键的是随着模型和数据规模的扩大性能提升的规律是什么是否像训练大语言模型LLM一样也存在一个可预测的“扩展定律”这篇文章不会复述论文而是从一个工程落地的视角拆解这套多阶段序列模型的核心思路、实现要点以及最重要的——如何借鉴 LLM 的扩展定律思想来规划和评估你自己序列模型的迭代路径。无论你是算法工程师、数据科学家还是负责广告、推荐系统的技术负责人这里面的设计权衡和规模化管理经验都值得一看。1. 先拆解问题为什么广告排序需要“多阶段”序列模型单看“用户序列”和“广告排序”这两个词似乎用个时序模型就能解决。但在真实的生产环境里直接用一个庞大的端到端模型处理所有信息既不现实也不高效。Meta 采用多阶段架构根本上是工程和效果权衡的结果。1.1 核心挑战从稀疏信号到实时决策想象一下你要为一个用户决定展示哪条广告。你拥有他过去一段时间内的点击、浏览、搜索、加购等行为序列。这个序列可能长达几百甚至上千个事件但真正能明确指向“会点击某个广告”的信号却非常稀疏。同时你需要在毫秒级时间内从上百万的广告候选集中做出选择。这里有几个无法回避的矛盾计算复杂度与延迟的矛盾用最复杂的模型处理最长的序列和最全的候选集延迟必然超标。信号稀疏与模型容量的矛盾简单模型抓不住长序列中的微弱模式复杂模型又容易过拟合噪声。特征实时性与系统稳定性的矛盾用户最新的一次点击是否要立刻更新序列特征如何保证更新的实时性和服务的一致性多阶段模型本质上是一种“分而治之”的策略把“大海捞针”的问题拆解成“先圈定海域再精准打捞”的流水线。1.2 典型的多阶段架构拆解虽然 Meta 的具体架构细节属于内部工程但业界通用的模式可以概括为以下几个阶段其思想是相通的召回阶段Retrieval/Candidate Generation目标从百万级广告库中快速筛选出数百或数千个相关候选。序列使用方式粗粒度、高效率。通常不会使用完整的原始序列。而是将用户序列通过轻量级模型如双塔模型编码成一个固定的“用户向量”同时每个广告也有一个“广告向量”。通过向量近似检索如 ANN快速找出 top-K 候选。这里的序列信息被高度压缩和概括。粗排阶段Pre-ranking/Coarse Ranking目标对召回阶段的数百个候选进行初步打分进一步筛选出几十个最有希望的。序列使用方式中等粒度、平衡效率。可能会引入比召回阶段更丰富的序列特征例如用户最近 N 个行为的聚合统计特征如点击品类分布、平均停留时长或者使用轻量级的序列模型如浅层 Transformer对短序列进行建模。模型复杂度高于召回但远低于精排。精排阶段Ranking目标对粗排输出的几十个候选进行精准打分和排序决定最终展示顺序。序列使用方式细粒度、高精度。这是序列模型发挥核心作用的地方。模型可以获取相对完整的用户行为序列经过截断或采样并结合当前候选广告的上下文信息进行精细的交叉注意力计算。模型结构最复杂通常是深层的 Transformer 或它的工业变体。重排/混排阶段Re-ranking目标在精排结果的基础上考虑业务规则、多样性、新鲜度等非点击率目标进行最终微调。序列使用方式策略性使用。可能不仅考虑用户自身序列还会考虑本次展示会话内的序列以避免重复推荐。注意不要试图用一个模型解决所有问题。多阶段的核心思想是让合适的模型做合适的事。召回追求快和全精排追求准和细。在设计你自己的系统时首先要明确每个阶段要解决的核心子问题是什么。2. 用户序列如何建模从特征工程到端到端学习有了多阶段的框架接下来就是核心问题如何把用户的一串行为[view_A, click_B, search_C, ...]变成模型可以理解并有效利用的信息2.1 传统特征工程方法可控但表达能力有限在深度学习普及之前以及在一些对实时性要求极高的场景特征工程仍然是主流。统计特征这是最常用的。例如用户过去1天/7天/30天的点击总数、点击率、对特定品类的偏好强度、最后一次行为的时间间隔等。这些特征稳定、可解释但无法捕捉复杂的序列模式。序列嵌入池化先将每个行为事件如商品ID、品类ID通过 Embedding 层映射为向量然后对一段时间内的所有行为向量进行池化操作如 Sum Pooling, Mean Pooling, Weighted Sum。这种方法比统计特征能保留更多信息但丢失了顺序信息。Session 划分将长序列按时间间隔如30分钟切分成多个 Session分别提取 Session 级别的特征再聚合。这比处理整个长序列更灵活。何时用当你的数据量不大、序列长度相对固定且较短、或者对模型推断速度有极端要求时特征工程仍然是可靠的选择。它也是构建基线模型Baseline的快速手段。2.2 深度学习序列模型从 RNN 到 Transformer为了捕捉序列中的长期依赖和复杂模式深度学习模型是更优解。RNN/LSTM/GRU经典的序列模型能处理变长序列但难以并行训练且对超长序列的记忆能力会衰减。在广告排序场景用户序列可能非常长直接使用 RNN 族模型挑战较大。Transformer目前的主流选择。其核心是自注意力机制可以并行计算并能建模序列中任意两个位置的关系。优势强大的表达能力尤其适合捕捉用户兴趣的转移和演变。挑战计算复杂度与序列长度的平方成正比O(n²)。对于超长序列如1000个事件直接使用全量 Transformer 计算开销巨大。2.3 工业级实践对 Transformer 的改造Meta 等大厂不会直接使用标准的 Transformer而是会进行大量工程优化序列长度处理截断只保留最近 N 个行为如最近的100个。这是最简单有效的方法假设近期行为影响最大。采样从长序列中随机或有策略地采样出 M 个行为如采样50个。可以保留更长期的信息但可能丢失连续性。层次化建模先对短序列如每次会话用 Transformer 编码得到会话向量再将多个会话向量作为新序列输入给另一个模型。这是处理超长序列的常用技巧。特征交叉在精排阶段不仅要建模用户序列更重要的是建模“用户序列-候选广告”的交叉特征。这通常通过 Transformer 的Cross-Attention机制实现。用户序列作为 Query候选广告的特征作为 Key 和 Value让模型去关注序列中与当前广告最相关的部分。实时更新用户的序列是动态变化的。工业系统通常采用“近实时更新”策略。用户产生新行为后通过流处理系统如 Flink快速更新用户特征向量或序列索引在下次请求时就能生效。但这要求特征服务具备高吞吐和低延迟的能力。我的建议是先从截断或采样的 Transformer 开始实验。选择一个合理的序列长度如50或100搭建一个精排模型。验证序列模型相比静态特征模型带来的提升。这是从0到1的关键一步。3. 从 LLM 扩展定律中获得的启示规模化的指导原则这是本文最值得深入思考的部分。我们训练模型时常凭感觉增加数据、放大模型但效果提升是否线性成本增加是否值得LLM 领域著名的Scaling Laws扩展定律给了我们一个量化分析的框架。Meta 将类似思想应用于广告排序模型揭示了模型性能与规模之间的规律。3.1 什么是 LLM 的扩展定律简单说扩展定律描述了语言模型的性能通常用验证集损失表示与三个关键规模因素之间的幂律关系模型参数量N训练数据量D计算量C其核心发现是在数据充足、模型未过拟合的情况下性能随着规模扩大而可预测地提升。这改变了“盲目试错”的研发模式使得团队可以更有信心地进行资源规划和技术选型。3.2 如何映射到广告排序序列模型广告排序模型的最终目标是提升线上业务指标如点击率CTR、转化率CVR、收入RPM。我们可以借鉴扩展定律的思想寻找我们场景下的“规模”变量和“性能”变量。规模变量Scaling Factors模型容量不仅仅是参数量还包括 Transformer 的层数深度、隐藏层维度宽度、注意力头数。对于序列模型序列最大长度L也是一个极其关键的规模变量。训练数据量用于训练的用户-广告交互日志的数量和质量。注意这里的数据量不是简单的条数而是独立用户或独立会话的规模以及序列的丰富程度。特征丰富度使用的特征类型和维度。引入更多侧信息的特征如用户画像、广告素材特征、上下文特征也是一种“数据”层面的扩展。计算预算训练所用的 GPU 时数或 TPU 时数。性能变量Performance Metric离线指标验证集上的 LogLoss、AUC、GAUC 等。线上指标A/B Test 中的 CTR、CVR、RPM 提升。3.3 实践中的扩展规律观察根据公开研究和工程经验在广告排序场景中通常可以观察到以下规律性能随模型容量和序列长度增加而提升但存在收益递减点初期增加模型层数或序列长度离线 AUC 会有显著提升。但当模型复杂到一定程度或序列长度超过真实用户兴趣的有效窗口后提升会变得非常缓慢甚至因过拟合而下降。你需要找到自己业务场景下的“甜蜜点”。数据量的扩展至关重要且可能比模型容量更有效在模型结构合理的前提下增加高质量、多样化的训练数据往往是提升效果最稳定、最可持续的途径。这要求有强大的数据管道和负样本采样策略。计算量并非越大越好需要高效利用盲目增加训练轮数或使用超大 batch size可能会浪费计算资源。更聪明的做法是使用自适应优化器、学习率 warmup 和衰减以及混合精度训练让固定的计算预算产生更好的效果。一个实用的扩展分析框架 当你计划升级排序模型时可以尝试设计一个小的“扩展实验”固定数据和特征逐步增大模型容量如 2层-4层-8层 Transformer记录离线 AUC 和训练时间。固定模型逐步增加训练数据量如 1周数据-1月数据-3月数据记录指标变化。将结果绘制在双对数坐标轴上观察是否存在近似的幂律关系。这能帮你预测如果想将 AUC 提升 0.001大概需要增加多少资源。核心洞见扩展定律的价值不在于那个精确的公式而在于它提供了一种系统化的思维方式。它告诉我们要有规划地探索规模维度用数据驱动决策而不是靠直觉“调大试试”。这对于管理大型机器学习项目的资源分配至关重要。4. 构建你自己的多阶段序列模型从实验到生产的路径理解了原理和规律我们来看如何动手实现。这个过程可以分为离线实验和在线部署两大环节。4.1 离线实验与模型开发数据准备与样本构建正样本用户点击或转化了广告的日志。负样本这是关键。不能只用展示未点击的样本因为广告系统本身是有偏的。常用方法包括曝光未点击最直接但存在选择偏差系统之前展示的已经是它认为好的。全局随机负采样从全量广告库中随机抽取作为负样本有助于模型了解全局分布。Batch 内负采样在同一个训练 batch 内将其他样本的广告作为当前样本的负例效率高。序列构建为每个训练样本关联该用户在此次交互之前的一段行为序列。注意严格防止数据穿越必须使用时间戳确保序列信息只来自“过去”。模型结构选型与实现精排模型建议以Transformer Encoder为基础进行改造。可以使用 Hugging Face 或 TensorFlow 的现成模块快速搭建。输入层将用户行为序列中的每个事件商品ID、类型、时间差等进行 Embedding 和拼接形成序列矩阵[seq_len, feature_dim]。序列建模层将序列矩阵输入 Transformer Encoder得到每个行为位置的增强表示。兴趣提取层对 Transformer 的输出进行处理得到代表用户当前兴趣的单一向量。常用方法有取最后一个位置的输出假设最后的行为最重要。加权求和如 Target Attention让候选广告与序列每个位置做注意力加权聚合序列信息。这是更主流的方法。输出层将用户兴趣向量与候选广告向量、以及其他上下文特征拼接通过多层全连接网络输出最终的点击率预估值。训练技巧损失函数二分类交叉熵Log Loss。优化器Adam 或 AdamW。正则化Dropout 在 Transformer 各层之间和全连接层中使用非常有效。Early Stopping 根据验证集 Loss 来防止过拟合。评估指标首要看AUC同时关注GAUC按用户分组计算的 AUC更能反映个性化排序能力和LogLoss。4.2 在线服务与部署考量离线 AUC 高不代表线上有效。线上部署要考虑更多工程约束。模型轻量化与加速模型蒸馏用大模型教师模型的输出指导一个小模型学生模型的训练让小模型逼近大模型的效果。量化将模型权重从 FP32 转换为 INT8 甚至更低精度大幅减少模型体积和加速推断。TensorRT、OpenVINO 等工具对此支持很好。剪枝移除模型中不重要的权重或神经元。序列长度优化线上服务时对序列进行动态截断或采样确保绝大多数请求的序列长度在一个可控范围内避免长尾请求拖慢整体延迟。特征服务用户序列特征需要实时或近实时更新。这通常需要一个独立的特征存储系统如 Redis、Cassandra 或专用的特征平台由流计算作业实时写入用户的最新行为。模型服务时通过用户 ID 从特征服务中拉取最新的序列 ID 列表再进一步查询 Embedding 等服务组装成模型输入。这个过程要追求极致的低延迟。A/B 测试与迭代新模型必须通过严格的A/B 实验才能全量上线。实验要观察核心业务指标CTRCVRRPM和系统指标延迟CPU/内存使用率。建立自动化的模型训练-评估-部署流水线MLOps是持续迭代的基石。5. 避坑指南实战中常见的陷阱与排查思路即使理论清晰代码跑通在真实场景中依然会踩坑。下面是一些高频问题点。5.1 离线指标上涨线上效果不变甚至下降这是最令人头疼的问题。排查顺序如下检查数据穿越这是头号杀手。确保训练样本中的特征尤其是用户序列在时间上严格早于标签发生时间。一个检查方法是用“未来”的数据做特征在离线环境下也能得到虚假的高指标。检查线上-离线特征一致性离线训练时特征是怎么生成的线上服务时是不是同一个逻辑特别是涉及实时更新的序列特征两者的更新频率和逻辑必须完全对齐。建议对线上请求进行采样将特征落盘与训练样本进行对比。检查样本分布线上服务的流量分布和训练数据的分布是否一致例如新用户、冷门广告在训练数据中可能占比很少模型对其预测不准。可以分析模型在不同用户分群或广告分群上的表现。评估指标是否片面离线只看了 AUC但线上业务可能更关注 Top-1 的准确性或者需要兼顾多样性。GAUC 和 NDCG 等指标可能更有参考性。5.2 模型服务延迟过高序列模型尤其是带长序列的 Transformer推断延迟是主要瓶颈。定位瓶颈用性能剖析工具如 TensorFlow Profiler, PyTorch Profiler分析推断过程中时间是耗在模型计算上还是特征获取、数据预处理上。优化序列长度分析线上真实用户序列的长度分布。可能 95% 的序列长度都小于 50那么为 1000 的长度设计模型就是浪费。根据分布确定一个合理的截断长度如覆盖 90% 请求的长度。使用更高效的注意力机制标准 Transformer 的自注意力是 O(n²)。可以考虑使用Linear Attention、Reformer等近似注意力机制它们能降低长序列的计算复杂度。硬件与推理引擎优化使用 TensorRT、ONNX Runtime 等针对特定硬件如 NVIDIA GPU优化的推理引擎并进行图优化、算子融合等。5.3 长期迭代中的效果停滞模型迭代几次后发现效果提升越来越难。回归扩展定律分析检查是否在模型容量、数据量、序列长度等维度上遇到了瓶颈。尝试开辟新的“扩展维度”例如引入全新的特征类型如多模态的广告素材特征、更细粒度的用户行为如页面滚动、鼠标停留。重新审视负样本负样本的质量极大影响模型对正样本的区分能力。尝试更复杂的负采样策略如“困难负样本挖掘”。尝试新的模型结构Transformer 是主流但并非唯一。可以探索结合了序列建模和动态兴趣网络的混合结构如DINDeep Interest Network、DIENDeep Interest Evolution Network等它们在某些场景下对兴趣演化建模更有效。考虑多任务学习不仅预测点击率CTR同时预测转化率CVR、观看时长等。多个任务共享序列建模层利用任务间的相关性进行联合训练可能带来泛化能力的提升。最后想说的是构建一个工业级的广告排序序列模型是一个融合了算法创新、数据工程和系统优化的复杂工程。不要期望一蹴而就。最稳妥的路径是先从一个小而简单的序列模型开始在离线环境验证其价值然后解决线上服务的关键问题特征一致性和延迟接着通过 A/B 实验获得正向反馈最后再借鉴扩展定律的思想系统化地规划模型的规模化演进。在这个过程中对业务场景的深刻理解往往比追求最前沿的模型结构更重要。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价