从 GBDT 到多任务集成 DNN 的历程
Aayush Mudgal | 资深机器学习工程师,广告排名转化模型;Han Sun | 资深机器学习工程师,广告排名转化模型;Ke Xu | 资深机器学习工程师,广告排名转化模型;Matt Meng (He Him) | 资深机器学习工程师,广告排名转化模型;Runze Su | 资深机器学习工程师,广告排名转化模型 Jinfeng Zhuang (He Him) | 资深机器学习工程师,广告排名转化模型
在这篇博文中,我们将分享如何利用深度神经网络 (DNN)、多任务学习 (MTL)、最先进的特征交互模块、模型内集成技术和用户序列建模来提高 Pinterest 的转化优化性能。我们还将介绍我们向 GPU 服务的过渡,这对于大规模复杂模型来说是必不可少的。
背景
人们经常来 Pinterest 寻找关于他们接下来的生活或购物想法的灵感。事实上,超过一半的 Pinterest 用户认为 Pinterest 是一个购物的地方(来源:Pinterest 内部数据,2023 年 6 月)。广告和来自企业的其他内容是消费者旅程的重要组成部分,因为它们为发现过程增加了价值。转化优化针对特定的消费者转化操作(而不仅仅是点击)优化推广 Pin 图。广告商可以选择转化作为广告系列目标,并激励人们采取特定行动,例如在线结账、增加注册量或更强大的潜在客户。在这篇博客中,我们将深入探讨我们在机器学习建模方面的一些最新进展,以便将 Pin 图用户与最相关的广告联系起来。
Pinterest 的广告排名系统包含许多标准的推荐系统部分,包括定位、检索、排名、拍卖和分配,因为它需要响应 4.98 亿月活跃用户的操作和表现以及平台上数十亿条内容。排名层侧重于根据用户上下文查找相关的 Pin,因此改进系统的这一部分对用户体验有重大影响。这篇博文将重点介绍我们最近在改进模型方面的改进,这些模型可以根据 Pinterest 上的用户请求预测站外转化。以下是转化优化系统通常如何工作的非常高层次的概述。
图 1:转化优化流程的高层概览(仅用于说明目的)
在深入研究模型演变之前,让我们先来了解一下广告转化预测的独特特征,这与典型的参与度排名问题有很大不同。
标签质量:由于转化事件发生在广告商平台上,标签的质量取决于广告商,因此我们经常处理不准确和异常的转化量。此外,用户匹配和归因过程是概率性的,这进一步在标签中引入了噪音。
数据量和标签稀疏性:转化是更下游的事件,因此本质上比平台上的点击事件稀疏得多。这大大限制了我们可以构建的模型的复杂性。由于标签更稀疏,它还需要更高的流量百分比或更长时间的 A/B 实验才能检测到指标的显著变化,从而减慢迭代速度。
延迟反馈:在现场互动(点击或浏览)发生后,转化会呈现长尾延迟分布,导致训练期间出现假阴性标签。这给模型训练策略带来了挑战,例如模型的更新频率,并使学习模型的校准估计变得复杂。
经典机器学习模型时期
一开始(2018 年),我们的广告排名模型是梯度提升决策树 (GBDT) 的混合体,嵌入为特征转换器,以及逻辑回归模型。这种设计选择使我们能够快速构建高性能模型,以适应当时的数据规模和机器学习堆栈。广告空间(包括广告商、广告组和广告活动)在质量和数量方面都具有非常不同的标签特征,因此在稀疏 ID 空间中进行泛化是首要考虑因素。为了实现这一点,我们将特征哈希技巧运用到逻辑回归层中,以学习 ID 空间信息并控制跨广告商标签影响。
随着产品在数据量不断增加的推动下快速增长,它需要在模型训练和服务方面具有更好的可扩展性,因为以前的设计成为快速系统增长的瓶颈。下一组迭代是从这种 GBDT + 逻辑回归结构过渡到基于深度学习的单一模型,同时通过共同训练多个目标(如点击、良好点击、结帐和添加到购物车转化)来解锁进行多任务学习 (MTL) 的能力。转向 MTL 并利用现场操作有助于提高模型对稀疏任务的鲁棒性,并释放从整体现场和场外体验中学习的能力。到 2020 年,我们过渡到 AutoML(链接),这是通过引入一种自动特征工程方式而从以前的传统机器学习方法中转变而来的。工程师可以致力于开发原始特征,而不是手工制作复杂的特征交互。然而,在这段时间里,我们遇到了巨大的技术债务,因为我们正在快速推进技术进步,通过修补现有系统来带来最快的结果。在 2021-2022 年期间,我们对整个 ML 平台 ( link ) 进行了全面改造,同时利用了扁平化的特征结构并在模型训练器附近采用了更多采样。这种基础设施迁移使我们能够为更广泛的建模理念提供更强大的支撑。接下来,我们将讨论一些最近的架构进步以及帮助支持当今这些模型的经验教训。
现代模型建筑进步
随着 AutoML(自动特征交互)和 MLEnv(统一机器学习引擎)框架的过渡,我们获得了更快的模型架构迭代速度。从那时起,我们不断尝试、迭代,并推出了许多最先进的现代模型架构。以下是我们对架构演进的学习总结。
功能交互模块
现代推荐系统中一个非常重要的组成部分是特征交互学习模块。从 MLP 开始,我们的模型改进沿着以下三个模块进行迭代,详述如下:
图2:不同特征交互模块
DCNv2:
DCNv2,也称为深度和交叉网络版本 2,是在原始 DCN 模型的基础上迈出的一步。它引入了交叉网络和多个深层来捕获显式和隐式特征交叉。使用 DCNv2,显式低阶特征交叉通过具有特征交叉矩阵的低维交叉网络捕获,其他隐式特征交叉在类似于 MLP 层的深度网络中捕获。它优于 MLP 层,但由于引入了交叉网络,因此基础设施成本更高。
变压器:
Transformer最初是为自然语言处理任务而提出的,但在广告领域的特征交叉学习中也显示出巨大的潜力。Transformer 编码器中的自注意力机制将输入映射到 Q(Query)、K(Key) 和 V(Value),其中 Q 和 K 捕获特征交叉并将交叉投射到 V 中。Transformer 通过显著提高模型性能证明了其性能,但它也导致了训练期间的高内存占用和相对较高的延迟。
MaskNet:
MaskNet提出了一种实例引导掩码方法,该方法在 DNN 的特征嵌入层和前馈层中均使用元素乘积。实例引导掩码包含全局上下文信息,这些信息被动态地合并到特征嵌入层和前馈层中以突出显示重要特征。
MaskBlock 是特征交叉学习的模块,由三部分组成:instance-guided mask、前馈层和 normalization 层。通过这个结构,可以扩展标准的 DNN,使其包含可加可乘的交互特征结构。MaskNet 是广告和推荐系统中最受欢迎的模块之一,在特征交叉模块中表现优异。
现代模型多任务和集成学习
近年来,多任务学习 (MTL) 和模型内集成框架一直在推动推荐模型性能的极限。随着许多强大的最先进的特征交互算法(如上文讨论的 transformer 特征交互、masknet 特征交互等),我们将它们的所有功能融为一体,并探索了以下方向
我们引入MTL,利用平台丰富的现场点击等行为,将多个转化目标组合成统一的模型,以增强稀疏转化目标的训练,不仅使各个转化目标受益,还大大降低了模型服务和维护成本,并提高了实验迭代速度。
图3:从单任务到共享多任务模型架构的架构演变
在下一次迭代中,我们让模型更加稳健,并引入了模型内集成技术,即我们分别集成了两个模型主干以进行特征交叉:DCNv2 和 transformer。我们制定了一个经验公式来计算最终的模型预测,同时为每个集成模型保留单独的训练损失和梯度下降。这种精心设计的架构能够从每个模型主干的多样化学习中受益。
图4:以DCNv2和Transformer为特征交互模块的集成模型结构
上述架构显著增加了服务基础设施成本。接下来,我们将特征交互模块与特征处理模块分离,并利用共享的底层架构进行特征处理,同时保持顶层架构分离。这种演变显著降低了模型的基础设施成本,同时在参数调整后保持了相同的性能水平
图 5:在集成特征交互学习之前利用共享特征处理层的模型架构
意识到模型内集成学习的强大功能后,我们希望下一步采用一种有原则的方式来实现这一点。我们采用了深度分层集成网络(DHEN) 框架,该框架具有用户序列和 MaskNet 特征交互。该建模框架可扩展、可优化且可模块化,与之前的每个架构选择相比,实现了最佳的离线和在线模型性能。
图 6:添加 Sequence Transformer 的模型架构
用户序列建模
对用户活动序列进行建模的能力是一种强大的现代建模技术。我们在用户序列建模领域进行了广泛的探索,并将其引入我们的转化排名模型中,显著提高了离线和在线性能。将用户序列纳入转化模型有几个好处:
借助较长的回溯窗口,用户序列可以非常有效地从稀疏数据空间中捕获信息——在我们的特定情况下,即用户和广告交互。与用户参与度优化相比,考虑到其稀疏性和延迟性,它对于广告用户转化优化更加有效。
在转化排名模型中使用用户序列数据进行直接模型训练,可以充分发挥其从用户活动中学习用户兴趣的能力——从与站外转化直接相关的用户站外事件,到代表用户意图的用户站内参与。
用户序列数据的本质部分是其时间信息。将时间维度纳入排名模型,使丰富的特征交互模块能够学习新闻级、季节性和终身用户兴趣变化和模式。这些信息至关重要,是排名模型中用户表示的支柱。
评估结果
结合其他改进(例如为支持高级模型架构而添加的附加功能),我们上述的迭代已经实现了相当数量的离线和在线指标增益,我们总结了如下的相对性能。
GPU 服务
我们的模型集成和特征交互组件取得了重大进展;然而,为这些模型提供服务变得越来越复杂。我们最初使用 CPU 集群来为这些排名模型提供服务,但这限制了我们可以使用的模型容量,同时仍能保持低延迟。为了以最小的成本增量为这些大型模型提供服务,我们还转向使用 GPU 进行在线服务。
CUDA 图表
通过将排名模型迁移到Pinterest 的 MLEnv 和基于 PyTorch 的框架,我们能够轻松利用CUDA 图进行在线服务。传统的 CPU 内核启动方式会在启动之间产生间隙和无意的开销。CUDA 图大大减少了这些间隙,优化了后续执行并最大限度地减少了延迟。使用 CUDA 图确实存在某些限制。例如,网络必须是图安全的。使用 CUDA 图的一个关键条件是内存中的张量形状需要是静态的——具有不同张量维度的动态输入会导致 CUDA 图中的数值错误。我们使用零填充来确保不规则和其他动态形状的张量的特征维度恒定。
混合精度服务
为了进一步降低模型服务的基础设施成本,我们实施了混合精度服务技术。该技术在大型模型训练和推理中非常流行;它融合了 32 位浮点 (FP32) 和 16 位浮点 (FP16) 数据类型的使用。最终结果是减少了内存使用量并提高了模型开发和推理的速度,同时又不影响模型预测的准确性。如需深入了解,请参阅 Nvidia 的博客文章。我们将半精度应用于计算需求高的模块,特别是那些包括特征交叉层、集成层、特征投影层和顺序处理层的模块。
图 7:混合精度包装器与服务模型工件的集成
根据我们的内部测试,利用混合精度服务可增加吞吐量并减少前向计算时间。
结论:
优化转化率带来了独特的挑战,而且处理起来并不容易。我们围绕整合多任务学习、转向模型内集成技术以及利用实时用户操作信号开展的工作极大地改进了广告推荐系统。由于模型容量和基础设施成本之间存在权衡,因此 GPU 服务和优化对于大规模复杂模型来说必不可少。
致谢
这项工作是转化建模团队成员和 Pinterest 多个团队合作的成果。
工程团队:
广告排行:李昆刚、齐萌、梅萌、李银瑞、邵志轩、刘志芳、陈良哲、雷玉林、张奇飞沉
先进技术组:Yi-Ping Hsu、Pong Eksombatchai、Xiangyi Chen
广告 ML 基础设施:Shantam Shorewala、Kartik Kapur、Matthew Jin、Haoyu He、Nuo Dou、Yiran Zhao、Joey Wang、Haoyang Li
用户序列支持:Kangnan Li、Zefan Fu、Kimmie Hua
领导:Ling Leng、Shu Zhu、Jiajing Xu、Xiaofang Chen、Behnam Rezaei
参考
Wang, Zhiqiang, Qingyun She, and Junlin Zhang. “MaskNet: Introducing feature-wise multiplication to CTR ranking models by instance-guided mask.” arXiv preprint arXiv:2102.07619 (2021).
Zhang, Buyun, et al. “DHEN: A deep and hierarchical ensemble network for large-scale click-through rate prediction.” arXiv preprint arXiv:2203.11014 (2022).
Wang, Ruoxi, et al. “Dcn v2: Improved deep & cross network and practical lessons for web-scale learning to rank systems.” Proceedings of the web conference 2021. 2021.
MLEnv: Standardizing ML at Pinterest Under One ML Engine to Accelerate Innovation [Link]
How we use AutoML, Multi-task learning and Multi-tower models for Pinterest Ads [Link]
Feature Hashing Trick: [Link]
CUDA Semantics: [Link]
Mixed Precision Training [Link]