wechat在《Ekko: A Large-Scale Deep Learning Recommender System with Low-Latency Model Update》给出了它们的实时方案:

摘要

深度学习推荐系统(DLRSs)需要在低延迟下更新模型,以便及时为新用户和内容提供服务。然而,现有的DLRSs未能做到这一点。它们通常:在离线状态下训练/验证模型,并将整个模型广播到全局推理集群中。因此,它们会带来显著的模型更新延迟(例如几十分钟),这对服务级别目标(SLOs:Service-Level Objectives)产生了不利影响。

本文介绍了一种名为Ekko的新型DLRS,它能够实现低延迟的模型更新。其设计理念是允许模型更新立即传播到所有推理集群,从而绕过长时间延迟的模型checkpoint、验证和广播。为了实现这一理念:

  • 首先,我们设计了一种高效的点对点模型更新传播算法。该算法利用DLRS模型更新中的稀疏性和时间局部性,以提高模型更新的吞吐量和延迟。
  • 此外,Ekko还配备了一个模型更新调度器,可以在网络繁忙时优先发送对SLOs影响较大的模型更新。
  • 最后,Ekko还包含一个推理模型状态管理器,用于监控推理模型的SLOs,并在检测到对SLOs有害的偏差更新(detrimental biased update)时回滚模型。

评估结果表明,Ekko比最先进的DLRS系统快了几个数量级。Ekko已在生产环境中部署超过一年,每天为超过十亿用户提供服务,并将模型更新延迟从最先进系统的几十分钟减少到2.4秒。

1 引言

深度学习推荐系统(DLRSs)是大型技术组织(如Meta [54]、字节跳动 [23]、谷歌 [15] 和英伟达 [56])中的关键基础设施。DLRS通常包含一组大型参数服务器,这些服务器托管着众多机器学习(ML)模型(例如嵌入表 [10, 26, 54] 和深度神经网络 [18])。参数服务器在地理分布的数据中心中进行复制,以实现容错和与客户端的低延迟通信。每个数据中心都有一组推理服务器,这些服务器从本地参数服务器中拉取模型,并为客户端提供推荐结果。

为了确保能够及时为新用户和内容提供服务,DLRS必须持续更新ML模型:它首先使用训练服务器收集新的训练数据并计算模型梯度,然后通过广域网(WAN)将模型更新传播到模型副本。

大规模的DLRS需要为数十亿用户提供服务 [15, 23, 54],并且必须实现与延迟相关的服务级别目标(SLOs)[49],例如将新创建的内容提供给用户的延迟。为了最好地实现SLOs,DLRS的操作者对实现低延迟模型更新提出了新的需求。这有几个原因:

  • (i)最近的DLRS应用(如YouTube [24] 或 TikTok [8])使用户能够创建大量的短视频、文章和图像。所有这些内容都需要尽快提供给客户端,通常在几分钟甚至几秒钟内;
  • (ii)数据保护法律(如GDPR [60])允许DLRS用户匿名。匿名用户的行为需要在线学习
  • (iii)许多在线ML模型(如强化学习 [74])已被用于生产中以提高推荐质量。这些模型必须在线持续更新以实现最佳性能。

然而,在现有的DLRS中实现低延迟模型更新极为困难。现有系统(如Merlin [56]、TFRA [66]、Check-N-Run [21] 和 BigGraph [39])采用离线方式更新模型:在收集新训练数据后,这些系统离线计算模型梯度,验证模型checkpoint,并将checkpoint广播到所有数据中心。这样的模型更新过程可能需要几分钟甚至几小时 [21]。

另一种方法是使用WAN优化的ML系统 [28] 或联邦学习系统 [37]。这些系统使用本地收集的数据更新副本模型,并延迟同步副本。然而,延迟同步引入了显著的异步性,这通常会对SLOs的实现产生不利影响 [28, 42]。

我们希望探索一种DLRS设计,能够在实现低延迟模型更新的同时不损害SLOs。我们的核心思想是:允许训练服务器在线更新模型(使用梯度),并立即将模型更新传播到所有推理集群。这种设计使我们能够绕过长时间延迟的更新步骤,包括离线训练、模型checkpoint、验证和广播,从而减少模型更新延迟。为了使这一设计可行,我们需要解决几个挑战:

  • (i)如何在带宽有限且网络路径异构的WAN上高效传播大量模型更新 [28];
  • (ii)如何保护SLOs免受网络拥塞的影响,这种拥塞可能会延迟关键更新;
  • (iii)如何保护SLOs免受对模型准确性有害的偏差更新的影响。

本文介绍了Ekko,一种新型的大规模DLRS,能够以低延迟更新全局复制的模型。Ekko的设计做出了以下几个关键贡献:

(1) 高效的点对点模型更新传播

现有的参数服务器通常采用主备数据复制协议[11, 41, 67] 来实现模型更新。然而,在大模型更新的情况下,主备协议由于更新延迟长 [67] 和领导者瓶颈 [2] 而表现出不足的可扩展性。

为了解决这些问题,我们探索了如何实现点对点(P2P)[20] 模型更新传播。我们为地理分布的DLRS设计了一种高效的无日志状态同步算法(见§4)。该算法在DLRS中非常有效,因为模型更新通常集中在热门参数上 [21],并且它只传输模型参数的最新版本(即状态)。Ekko必须允许参数服务器以P2P方式高效发现模型状态的差异。为此,我们设计了:

  • (i)模型更新缓存:使参数服务器能够高效跟踪和比较模型状态;
  • (ii)分片版本:可以显著减少比较模型状态时的网络带宽消耗;
  • (iii)WAN优化的传播拓扑:使参数服务器能够优先选择带宽充足的区域内网络路径,而不是带宽有限的跨区域网络路径。

(2) SLO保护机制

Ekko允许模型更新在没有离线模型验证的情况下到达推理集群。这种设计可能会使SLOs(特别是与推荐结果的新鲜度和质量相关的SLOs)容易受到网络拥塞和偏差更新的影响,这两种情况在生产环境中都可能发生。

为了处理网络拥塞,我们设计了一个SLO感知的模型更新调度器(见§5)。该调度器计算包括:更新新鲜度优先级、更新重要性优先级、模型优先级在内的指标。这些指标预测模型更新对推理SLOs的影响。调度器根据这些指标在线计算每个模型更新的优先级。我们将调度器集成到参数服务器中,而不改变Ekko中P2P模型更新传播的分布式架构。

Ekko通过一种新颖的推理模型状态管理器处理偏差更新。该管理器为每组推理模型创建一个基线模型。该基线模型接收少量用户流量,并作为推理模型的基准。管理器持续监控基线和推理模型的质量相关SLOs。当偏差更新损坏推理模型的状态时,管理器通知见证服务器将模型回滚到健康状态。

我们使用测试床和大规模生产集群对Ekko进行了评估(见§6)。测试床实验结果表明,与最先进的参数服务器(如Adam [11])相比,Ekko将模型更新延迟减少了最多7倍

我们进一步在包含40 TB模型和分布在多个地理区域的4,600多台服务器的大规模生产环境中进行了实验。实验结果表明,Ekko在每秒执行10亿次更新(即212 GB/s)的情况下,传播更新的延迟仅为2.4秒。Ekko仅使用总网络带宽的3.0%进行同步,其余带宽用于训练和推理。这种秒级延迟性能比最先进的DLRS基础设施(如TFRA [66] 和 Check-N-Run [21])实现的分钟级延迟(即5分钟 [69])快了几个数量级。

2 DLRS中的低延迟模型更新

在本节中,我们将介绍DLRS及其更新模型的算法。然后,我们描述那些能够从减少模型更新延迟中受益的服务级别目标(SLOs)。最后,我们讨论实现低延迟模型更新所面临的系统挑战。

2.1 DLRS与模型更新

大多数技术组织采用如图1所示的系统架构来构建DLRS。DLRS通常服务于分布在全球的客户端(1)。为了最小化服务延迟,DLRS模型(例如嵌入表 [10, 26, 54] 和深度神经网络 [18])在多个数据中心中进行地理复制。当客户端的请求到达时,推理服务器从本地参数服务器中拉取模型参数,并基于该模型进行推理以响应请求。

图片名称

图1 一个典型的DLRS架构

数据管道在运行时从客户端收集训练数据(例如新内容和用户活动)。收集到的数据到达数据中心的训练服务器(2)。训练服务器使用优化器 [33] 计算梯度以修正相应的模型。所有更新后的模型(通常有数百到数千个)被持久化为checkpoint(3)。这些checkpoint首先经过验证,只有那些能够改善SLOs的checkpoint才会通过广域网(WAN)传播到面向推理的数据中心的参数服务器(4),从而完成模型更新过程。

在实践中,更新DLRS模型的延迟包括:计算模型更新和将更新传播到全球数据中心的时间。这个延迟定义假设我们已经使用了低延迟的消息队列(例如Kafka [36])来加速训练数据的摄取。最近的DLRS(如NVIDIA Merlin [56] 和 Meta Check-N-Run [21])报告了模型更新的分钟级和小时级延迟。假设我们想要更新一个包含大型嵌入表(通常大小为几TB)的DLRS模型。在这种情况下,将该模型持久化为checkpoint并验证模型可能需要几十分钟。再通过WAN传播该模型还需要十几分钟(假设该WAN提供数Gbps的带宽 [72])

2.2 低延迟模型更新的原因

DLRS需要实现许多服务级别目标(SLOs),这些目标通常与推荐结果的新鲜度和质量相关。以短视频推荐服务(如TikTok)为例,DLRS模型的准确性决定了该服务的质量SLOs,而将新制作的视频快速提供给用户的时间则决定了该服务的新鲜度SLOs。

在实际的DLRS中,我们观察到SLOs通常依赖于完成模型更新的延迟,这使得低延迟模型更新成为一项关键的系统需求。这有以下几个原因:

(1) 短时间内产生的大量新内容
全球DLRS(如YouTube [24]、TikTok [8] 和 Instagram [22])通常服务于数十亿用户,并且允许用户快速创建大量内容。DLRS需要通过低延迟更新模型,快速将这些新内容整合到推荐结果中,否则会影响用户参与度。

(2) 匿名用户的增加
数据保护法律(如GDPR [60])禁止许多DLRS跟踪用户活动。因此,即使这些用户之前使用过相同的服务,DLRS也可能拥有推荐模型未知的匿名用户。因此,DLRS必须快速响应匿名用户的在线活动,以满足他们的推荐需求。这种快速响应依赖于低延迟的模型更新。

(3) 在线推荐模型的增加
DLRS中越来越多的在线机器学习模型(例如使用强化学习 [74] 和持续学习 [69] 的模型)被用于提高推荐质量。这些模型需要从在线用户活动中收集训练数据,因此必须以低延迟持续更新模型参数。

2.3 我们的核心思想及相关挑战

我们希望探索如何在更新DLRS模型时实现低延迟。我们的观察是,更新延迟主要是由于几个离线步骤累积而成的:模型训练、验证和广播。假设我们绕过这些离线步骤,允许更新后的模型直接传播到推理集群,那么我们可以大幅减少更新模型的步骤,从而实现低延迟。然而,要实现这样的设计,我们必须解决以下几个挑战:

(1) 缺乏高效传播大规模模型更新的算法

现实中的DLRS通常拥有大量模型(例如通常有数百到数千个)。它需要在线更新其中许多模型。这些模型包括多阶段推荐管道 [10, 15] 中的模型以及用于A/B测试 [69] 的模型。这些模型通常占用数十TB的内存,并且需要在线完成大规模模型更新(例如每秒数百GB)。

假设我们使用传统的数据复制协议,例如链式复制 [41] 和两阶段提交 [11]。这些协议针对的是通用数据复制,缺乏在带宽有限的网络(即WAN)上协调ML模型更新的机制(这些更新可能对推理SLOs产生不同的影响)。此外,这些传统协议存在领导者瓶颈问题,并且由于异构的WAN路径和网络滞后节点而导致较长的更新延迟。因此,这些协议不适合满足我们的高吞吐量、低延迟需求。另一种选择是使用地理复制协议 [72]。然而,这些协议无法处理训练数据中心中的服务器故障,因此无法满足我们的系统可用性要求。

我们还考虑了网络高效的分布式ML系统,例如Gaia [28] 和 Google Federated [35]。这些系统 [7, 28, 35, 37, 46] 允许模型在每个数据中心中独立训练,从而提高模型更新的吞吐量和延迟。然而,它们延迟同步其状态,因此会导致模型状态过时 [47],这可能对推荐质量产生不利影响。因此,松散同步的分布式ML系统无法满足我们的模型准确性要求。

(2) 缺乏保护SLOs的机制
在DLRS中启用在线模型更新对SLOs提出了挑战。这样的DLRS可能会出现模型更新竞争网络带宽的情况,从而延迟关键更新(例如那些显著影响模型准确性或上线新内容的更新)。尽管有一些系统可以调度模型梯度的发送 [6],但这些系统针对的是训练集群。因此,它们基于梯度 [6, 28] 优先处理模型更新,而缺乏对这些更新如何影响推理模型SLOs的认识。

在线模型更新甚至可能是有害的。由于在线更新通常是基于一小批数据(在短时间内收集的数据:几秒或几分钟)计算的,它们通常包含噪声 [34]。当更新变得特别嘈杂时,它们会对推理SLOs产生不利影响(即降低推理模型的准确性)。为了解决这个问题,

  • 现有的模型服务系统(如Clipper [16] 和 Clockwork [25])使用离线模型验证,这种方法会对长时间(例如几小时)累积的模型更新进行平均
  • 其他模型服务系统(如Google TFRA [66])跟踪推理模型的SLO指标,并在SLOs恶化时重新加载checkpoint

然而,这样的设计在DLRS中实现起来具有挑战性。大型DLRS模型(例如面向推荐的Transformer模型 [18])越来越常见,重新加载这些模型会影响服务的可用性。

3 Ekko系统架构

本文介绍了Ekko,一种能够实现低延迟模型更新的新型DLRS系统。在本节中,我们将描述Ekko的系统模型,并概述其核心创新组件。

3.1 系统模型

Ekko是一个地理分布的DLRS系统。它在中心数据中心更新模型,然后将更新后的模型传播到靠近全球用户(即客户端)的地理分布数据中心。Ekko将模型表示为键值对,并将模型划分为分片(例如在我们的生产环境中有100,000个分片)。它将模型分片存储在键值存储中(在Ekko中称为参数存储)。参数存储通过哈希将键值对分配到分片中。由于模型经常在线整合新项目和特征过期 [32],模型大小可能会随时间变化。

Ekko使用基于软件的路由器将参数请求定向到模型分片。这些路由器将训练数据中心中的参数服务器指定为模型分片的主节点。它们还确保主节点的选择能够平衡参数请求的工作负载。路由器的实现遵循典型的键值存储和数据库 [38]。本文中我们省略了路由器实现的细节。

在路由器中,分片管理器可以处理资源过载、故障域 [55] 和副本集问题 [12]。与传统的分片管理器不同,Ekko的分片管理器实现了几个DLRS特定的优化:

  • (i)为了分摊请求处理开销,Ekko将针对同一模型的并发推理请求进行批处理 [16]。然而,批处理请求可能会查询不同参数服务器上的大量参数(例如数千个),从而导致长尾查询延迟 [19]。为了防止长尾延迟,Ekko限制分配给模型分片的服务器数量;
  • (ii)Ekko支持多个需要性能隔离的DLRS应用程序。它将不同应用程序的分片映射到不同的服务器上,因此一个应用程序的分片请求激增不会影响其他应用程序的分片。

3.2 架构概述

我们在图2中突出了Ekko的创新设计。如图所示,Ekko使参数服务器能够实现高效的点对点(P2P)模型更新( 1 )(见§4)。P2P模型更新算法避免了中心训练数据中心广播更新后的模型,而是利用数据中心内部和跨数据中心的所有网络路径(图中的实线),从而在传播模型更新时实现高吞吐量。在没有中央协调器的情况下,每个数据中心可以独立选择优化同步模型更新的间隔。

图片名称

图2 Ekko架构总览

Ekko支持大规模模型更新的并发传播。这些更新可能会竞争网络资源,从而延迟对SLOs有显著益处的更新。为了解决这个问题,Ekko依赖于一个SLO感知的模型更新调度器( 2 )(见§5.2)。该调度器预测每个模型更新将如何影响推理结果。预测结果有助于计算每个模型更新的优先级。基于优先级,Ekko协调在训练数据中心优先传播哪些模型更新,从而提高推理服务器上SLOs的整体满意度。

Ekko可以保护推理服务器免受有害模型更新的影响。为了实现这一点,它在推理集群中运行一个模型状态管理器( 3 )(见§5.3)。该模型状态管理器监控推理模型的SLO相关指标。如果某个推理模型表现出性能下降(由在线更新引起),管理器会将模型状态回滚到性能更好的状态,从而恢复推理模型的性能

4 高效的点对点模型更新

本节介绍Ekko中高效的点对点(P2P)模型更新机制。为了实现参数服务器中的P2P模型更新,Ekko的设计实现了以下目标:

  • 协调大量参数服务器:Ekko需要协调大量(例如数千个)分布在全球的参数服务器完成模型更新。为了避免网络延迟导致的滞后问题,我们为Ekko中的参数服务器设计了无日志同步机制(§4.3)。
  • 支持大规模模型更新:作为一个共享的DLRS,Ekko需要托管数千个模型。这些模型可以在线生成大量(例如每秒数十亿次)更新。为了支持这一点,Ekko使参数服务器能够通过对等节点高效发现模型更新,并在不过度消耗计算和网络资源的情况下拉取更新(§4.4)。
  • 支持地理分布式部署:Ekko需要支持地理分布式部署,这通常涉及跨WAN的异构网络路径以及服务器/网络故障。为此,Ekko设计了系统机制,以提高在WAN上发送模型更新的吞吐量/延迟,并容忍服务器/网络故障(§4.5)。

接下来,我们将概述P2P模型更新机制,并详细描述其实现。

4.1 模型更新概述

图3展示了Ekko中模型更新涉及的组件和步骤。假设我们需要在两个副本(分别称为副本1和副本2)之间同步一个分片(称为分片1)。与所有其他分片类似,分片1具有:

  • (i)分片知识(shard knowledge),用于总结参数更新;
  • (ii)更新缓存(update cache),用于基于参数版本跟踪最近的模型更新。每个分片还关联一个分片版本,用于指示该分片是否可能有需要同步的参数。

分片知识、更新缓存和分片版本共同加速了参数服务器之间的参数同步。

图片名称

图3 Ekko P2P模型更新总览

为了完成模型更新,副本2从副本1请求最近修改的分片版本( 1 )。副本1收到请求后,返回最近修改的分片版本列表( 2 )。副本2将副本1的所有分片版本与本地分片版本进行比较,然后向副本1发送相关的分片知识( 3 )。最后,副本1将所有更新的参数发送给副本2( 4 )。通过这些步骤,Ekko可以确保模型更新最终以低延迟传播到所有副本(即最终一致性)。

我们发现最终一致性在实际DLRS中是可接受的。尽管DNN副本可能在一个小时间窗口内存在差异,但它们通常表现出接近(甚至完全相同)的推理结果 [11]。这是因为DNN通常使用浮点数表示模型参数,因此即使本地参数值存在微小差异,DNN副本也会做出接近的预测。

4.2 DLRS中的参数版本

为了跟踪模型参数的状态,Ekko为每个键值对(即模型参数的存储格式)分配一个参数版本,定义如下:

定义1(参数版本):参数版本 $ v $ 是一个由时间戳 $ t $ 和唯一标识副本的 $ id $ 组成的对 $ (t, id) $。时间戳 $ t $ 基于现代物理时间源 [14, 43] 提供的时间范围生成。Ekko确保 $ t $ 在每个副本中单调递增,并使用计数器填充物理时间戳,以确保来自单个副本的任何两个更新不会共享相同的时间戳。我们定义参数版本的总序关系:

\[v_1 \geq v_2 \iff (t_1 > t_2) \lor ((t_1 = t_2) \land (id_1 \geq id_2))\]

在冲突解决期间,具有较大参数版本的参数将覆盖另一个参数 [62]。

在Ekko中,值得注意的是,时间戳基于实时时钟而不是逻辑时钟(逻辑时钟通常用于键值存储和存储服务)。我们发现这种设计在分布式DLRS中非常有效,原因如下:DLRS具有嵌入表,其中参数是稀疏更新的。假设主副本中有一个嵌入参数,该参数有大量更新计数,但主副本在失败之前未传播该参数。当主副本恢复时,计数器可能会用较小的更新计数覆盖当前主副本。这种覆盖可能会对推荐质量产生不利影响,因为被覆盖的主副本可能具有更新的参数(由最近收集的训练数据更新),从而产生更好的推荐结果。因此,逻辑计数器不足以解决分布式DLRS中的冲突。

4.3 无日志参数同步

一旦为参数分配了版本号,Ekko需要决定如何同步不同的副本。我们观察到DLRS通常会覆盖参数,只有最后一次写入决定参数的状态。因此,我们决定发送参数的最后一个版本。

Ekko需要决定同步副本的间隔。我们可以使用基于日志的同步算法 [9, 11]:这些算法选择同步间隔,以便模型更新可以以不超过网络中最慢链路带宽的速率发送。然而,这些算法会导致许多网络链路的利用率不足。更重要的是,它会导致滞后问题,从而显著增加同步延迟,使参数服务器在从故障中恢复时更有可能具有过时的状态。因此,我们希望实现参数服务器中的无日志参数同步,以便这些服务器可以根据每个链路的带宽动态选择与对等节点的同步间隔。

参数服务器中的分片知识:我们建议使用分片知识 [50, 51] 来实现无日志参数同步。更正式地说,在每个副本中,其所有分片都维护相应的分片知识。分片知识使用版本向量 [58] 实现,总结了它们学到的参数更新。与分片知识 $ VV_{\text{shard}} $ 关联的分片数据反映了应用来自每个副本 $ r $ 的所有历史参数更新后的空分片状态,其中更新对应的参数版本 $ v \leq VV_{\text{shard}}[r] $。假设在副本 $ r $ 中有一个参数 $ p $ 的更新需要处理。为了维护分片知识,该副本生成一个新的参数版本 $ v_p = (t, id) $ 并设置 $ VV_{\text{shard}}[id] = v_p $。

分片同步过程:为了同步一个分片,副本 $ r $ 将其分片知识 $ VV_{r1} $ 发送到选定的副本 $ s $。副本 $ s $ 记录其当前分片知识 $ VV_s $ —— 即原子地读取 $ VV_s $ 并从其存储中选择所有参数 $ p $,其参数版本 $ v_p = (t_p, id_p) > VV_{r1}[id_p] $ —— 并用 $ VV_s $ 响应 $ r $。然后,$ r $ 根据 $ s $ 的响应原子地应用所有参数更新,并进一步将 $ VV_s $ 与其当前分片知识 $ VV_{r2} $ 合并。

在同步过程中有几个注意事项:(i)当副本 $ r $ 与副本 $ s $ 同步时,$ r $ 可能同时与另一个副本(称为副本 $ k $)进行同步操作。这些操作可能在 $ r $ 完成处理 $ s $ 的响应之前完成。因此,$ VV_{r2} $(即 $ VV_r \cup VV_k $ 的结果)不一定等于 $ VV_{r1} $。(ii)在无故障场景中,同步过程会省略所有被覆盖的参数版本,这些场景中更新参数的请求总是路由到同一个主副本。我们发现这些无故障场景在我们的生产环境中很常见。

4.4 提高同步效率

Ekko必须确保参数同步对参数服务器的性能开销可以忽略不计。否则,同步可能会消耗过多的计算和通信资源,从而影响参数服务器在服务模型推理和训练请求时的性能。接下来,我们将讨论如何通过参数更新缓存(减少计算成本)和分片版本(减少通信成本)来提高参数同步的效率。

4.4.1 参数更新缓存

由于一个分片可能包含大量参数,简单地遍历所有参数来响应同步请求会带来巨大的计算成本。尽管我们可以使用索引来加速参数遍历,但维护这样的索引会消耗大量内存资源,而这些资源在参数服务器上难以提供。

我们设计了参数更新缓存来减少参数同步的计算成本。这种缓存的设计利用了我们在DLRS中经常观察到的稀疏性时间局部性 [21]。与密集的DNN训练系统(每次迭代更新整个模型)不同,DLRS只更新其参数的一个子集(即稀疏性)。例如,在我们的生产DLRS中,每小时只有3.08%的参数被更新。此外,模型更新通常会在一个时间窗口内覆盖某些参数(即时间局部性)。这是因为DLRS通常有热门项目和用户,它们的参数更新在短时间内占主导地位。

具体来说,参数更新缓存包含指向最近更新参数的指针。它利用主导版本向量(Dominator Version Vector,简称DVV)来判断同步请求到达时是否命中缓存。

缓存维护算法:缓存的维护保证两个不变性:(i)对于所有存在于分片中但不在缓存中的参数 $ p_{\text{uncached}} $,满足 $ DVV[id_{p_{\text{uncached}}}] \geq v_{p_{\text{uncached}}} $;(ii)对于所有缓存的参数 $ p_{\text{cached}} $,满足 $ DVV[id_{p_{\text{cached}}}] < v_{p_{\text{cached}}} $。

算法1描述了Ekko中参数更新缓存的维护。维护依赖于估计的更新传播时间 $ D_{\text{prop}} $。考虑更新缓存的函数:

1
UpdateCache
(第1行)。$ t_{\text{pruneto}} $ 是一个时间戳,用于描述 $ DVV_{\text{proposed}} $ —— 一个用于判断是否应修剪参数的版本向量。对于每个修改请求,如果修改参数 $ p $ 的参数版本 $ v_p = (t_p, id_p) $ 大于 $ DVV_{\text{proposed}}[id_p] $,则缓存记录指向该参数的指针(第5行)。否则,缓存将参数版本与 $ DVV $ 合并(第3行)。

图片名称

算法1

考虑修剪参数指针的函数:

1
PruneCache
(第7行)。该函数接收 $ D_{\text{prop}} $,这本质上允许Ekko利用对缓存命中率的在线观察来指导缓存修剪操作。假设我们希望在缓存大小超过限制时修剪参数指针,缓存首先确定 $ DVV’{\text{proposed}} $,它严格主导 $ DVV{\text{proposed}} $(第8行)。然后,缓存移除被 $ DVV’_{\text{proposed}} $ 主导的参数指针(第11行)。最后,缓存通过将 $ DVV $ 与修剪参数版本合并来更新 $ DVV $(第12行)。通过这种方式,Ekko实现了缓存大小的自适应管理,从而减少了其内存占用。

缓存命中分析:我们分析了参数更新何时命中缓存。假设副本 $ s $ 接收到来自副本 $ r $ 的同步请求,副本 $ r $ 持有分片知识 $ VV_r $。如果 $ VV_r $ 主导 $ DVV_s $,则请求命中缓存,其后续操作(例如选择参数)仅涉及缓存中的参数。

Ekko确保更新缓存的使用不会影响无日志参数同步的最终一致性:同步过程需要选择副本 $ s $ 中满足 $ v_p > VV_r[id_p] $ 的参数 $ p $。由于更新缓存保持不变性 $ DVV_s[id_{p_{\text{uncached}}}] \geq v_{p_{\text{uncached}}} $ 且 $ VV_r $ 主导 $ DVV_s $,因此该过程选择的参数集与之前的算法相同。

参数更新缓存在减少选择参数的成本方面特别有效。根据我们生产环境中部署的缓存跟踪数据,99.4%的同步请求可以命中缓存,从而将选择参数的成本降低了99%。

4.4.2 分片版本

我们引入分片版本来减少同步副本时的网络成本。分片版本捕获了副本上分片数据的部分因果关系,并且它们比版本向量小得多。我们可以允许副本维护分片版本列表,每个列表与一个邻居副本相关联。通过这种方式,副本可以通过交换和比较分片版本来识别可能更新的分片。正式地,我们将分片版本定义如下:

定义2(分片版本):分片版本 $ sv = (c, id) $ 是一个由计数器 $ c $ 和标识生成该版本的副本的 $ id $ 组成的对。计数器 $ c $ 在每个副本的每个分片中单调递增。对于同一个分片 $ s $,当且仅当 $ id_1 = id_2 $ 且 $ c_1 \geq c_2 $ 时,$ sv_1 \succeq sv_2 $。

分片版本维护:在初始化时,每个副本为其分片生成分片版本。当训练工作器发出参数更新时,副本会生成一个新的分片版本。由于每个分片都有一个主副本,因此在正常情况下,只有一个副本生成分片版本。

一旦接收到同步请求,响应副本(记为 $ s $)会回复其分片版本 $ sv_s $,同时附带 $ VV_s $ 和更新的参数。一旦请求副本(记为 $ r $)收到此回复,它会以原子方式完成以下操作:(1)将其分片知识 $ VV_r $ 与接收到的 $ VV_s $ 合并(合并结果记为 $ VV’_r $);(2)如果 $ VV’_r = VV_s $,则将其分片版本 $ sv’_r $ 更新为 $ sv_s $;否则,如果 $ VV’_r \neq VV_r $,则生成一个新的分片版本。需要注意的是,当 $ VV_r = VV_s $ 时,为了避免活锁,Ekko会根据确定性规则(例如选择数值较大的分片版本)从 $ s $ 和 $ r $ 中选择一个分片版本。

我们实现了簿记技术 [51],用于维护与不同副本相关联的分片版本列表。通过结合分片版本和簿记技术,Ekko可以有效地减少同步相关的网络流量。例如,在我们的一个生产DLRS中,Ekko在同步过程中过滤掉了98%的分片。

使用分片版本进行同步:我们讨论分片版本如何促进同步。Ekko维护一个不变性:只有当分片知识 $ VV_1 $ 主导 $ VV_2 $ 时,$ sv_1 \succeq sv_2 $ 才成立。因此,只有当 $ sv_r \nsucceq sv_s $ 时,副本 $ r $ 才需要与副本 $ s $ 同步分片。此外,考虑具有相同分片可比分片版本的不同副本,Ekko更倾向于与具有最大分片版本的副本同步,因为较大的分片版本表示参数的最新版本。

4.5 实现细节

WAN优化:Ekko针对地理分布式部署进行了优化,这种部署包括多个数据中心内部网络和一个跨数据中心的广域网(WAN)。为了提高在这种部署下的性能,Ekko采用了WAN优化的模型更新传播策略。该策略为P2P同步构建了一个灵活的通信拓扑。它允许每个数据中心使用Zookeeper [31] 为每个分片选举一个本地领导者。领导者从其他数据中心拉取模型更新,而其他副本则从该领导者拉取更新。通过这种方式,Ekko使得大部分同步流量通过带宽充足的数据中心内部网络,只有少量同步流量通过WAN。需要注意的是,参数同步的实现并不依赖于特定的通信拓扑。Ekko可以使用其他覆盖拓扑来进一步提高同步性能。

故障容忍:Ekko使用请求路由器来容忍故障。路由器决定客户端请求的路由,并通过心跳检测副本的健康状态。如果路由器推测某个副本发生故障(无论是完全故障还是性能下降 [30]),它会阻止客户端(推理服务器和训练服务器)向该副本发送请求。同时,路由器会跟踪集群中副本的分片知识。如果之前被怀疑故障的副本恢复并向路由器发送心跳,路由器将指示该副本与集群中更新充分的副本同步。当同步完成后,路由器会将客户端请求重新定向到该副本。如果某个副本丢失了状态,它将使用新的ID重新加入集群。如果训练服务器在给定时间内无法联系到路由器,它们将停止发送参数更新,从而在网络分区的情况下尽力保护模型参数免受分歧 [5]。


5 SLO保护机制

Ekko允许模型更新直接传播到推理集群中的参数服务器。然而,这为推荐服务的SLOs带来了两个挑战:(i)网络拥塞可能导致关键模型更新被延迟;(ii)基于小批量偏差数据的模型更新可能对推理结果产生不利影响。

本节介绍了保护推理SLOs免受网络拥塞和偏差更新影响的机制。我们首先定义SLOs(见§5.1),然后描述一个SLO感知的模型更新调度器(见§5.2),最后讨论一个处理偏差更新的推理模型状态管理器(见§5.3)。

5.1 DLRS中的SLOs

DLRS有两类主要的SLOs:

  • 新鲜度SLOs:衡量将新内容和用户纳入模型推理的延迟。这对于实时与用户交互的推荐服务(如TikTok和YouTube)至关重要。例如,这些服务通常需要及时捕捉新用户的兴趣,以确保他们有足够的参与度;否则,他们可能会因为失去兴趣而离开推荐应用。提高新鲜度SLOs通常会带来更好的用户体验。此外,新内容将获得更好的曝光,从而确保DLRS的繁荣。
  • 质量SLOs:衡量用户体验和参与度。它们对DLRS的盈利能力有直接影响。例如,这类目标包括观看的视频数量和用户观看时间。

图4描述了推理服务器如何影响新鲜度和质量SLOs。一旦接收到请求,推理服务器会选择相关的用户和项目嵌入,然后聚合这些嵌入并将聚合后的嵌入发送给一个DNN,该DNN返回推荐项目的分数。DLRS最终返回一个按分数排序的项目列表。在这种情况下,新鲜度SLO基于推荐项目的最新时间戳来衡量(理想情况下,该时间戳应尽可能接近当前时间)。质量SLO可以基于项目的观看时间和点击次数来衡量。在实践中,Ekko在线维护大量新鲜度和质量SLOs。这些SLOs的实现由DLRS应用开发者贡献。

图片名称

图4

5.2 SLO感知的模型更新调度器

Ekko通过SLO感知的模型更新调度器及其与P2P模型更新传播的集成,防止新鲜度和质量SLOs受到网络拥塞的影响。

5.2.1 模型更新的SLO感知优先级

Ekko在调度模型更新时计算一组优先级:

更新新鲜度优先级:Ekko计算更新新鲜度优先级 $ p_u $。该优先级基于以下观察设计:如果参数是最近创建的,则具有高优先级;否则,优先级相对较低。这是因为新创建的参数对推理结果的影响比长期服务的参数更大。例如,如果用户的嵌入在推理服务器中不可用,但她的请求已经到达,DLRS将无法回答该请求,从而影响质量SLOs。另一个例子是,如果推理服务器上的嵌入表未包含某个项目,DLRS将不会推荐该项目,从而影响新鲜度SLOs。

更新重要性优先级:Ekko根据梯度 $ g $ 为每个模型更新计算更新重要性优先级 $ p_g $。该优先级最初受到研究的启发,研究表明梯度大小 $ \mid g \mid$ 如何影响DNN的推理结果 [6, 28]。然而,在Ekko中,简单地采用梯度大小是不够的。作为一个共享的DLRS,Ekko在共享网络上复用了来自不同模型的更新。因此,Ekko必须有办法比较具有不同分布的梯度大小。为此,我们定义 $ p_g = \mid g\mid / \bar{\mid g \mid} $,其中 $ g $ 表示梯度的1-范数,$ \bar{\mid g \mid} $ 表示最近模型更新的平均梯度大小。直观地说,该定义对梯度大小进行了归一化,从而使它们具有可比性。

模型优先级:在DLRS中,模型通常以不同的速率接收推理请求,这表明它们在衡量SLOs整体满意度中的重要性不同。为了考虑这一点,Ekko允许处理大多数请求的模型被分配更高的优先级,而很少接收请求的模型优先级较低。为此,我们定义模型优先级为 $ p_m = c_m / \sum_{i=1}^M c_i $,其中 $ c_m $ 是模型 $ m $ 的请求计数,$ \sum_{i=1}^M c_i $ 表示所有 $ M $ 个模型的总请求计数。

优先级组合:我们将上述优先级组合起来,计算模型更新的总体优先级 $ p $:

\[p = (p_g + p_u) \cdot p_m\]

其中,重要性优先级 $ p_g $ 和新鲜度优先级 $ p_u $ 都已归一化,以便可以相加。然后将它们的和乘以模型优先级 $ p_m $。

需要注意的是,Ekko并不要求用户仅使用上述优先级。一些Ekko用户有自定义的优先级定义,包括更新计数、更新间隔和嵌入表中参数的位置。这些自定义优先级针对某些DLRS工作负载 [69],但它们不够通用,无法包含在默认设置中。Ekko通过支持用户定义函数(UDFs)来定义优先级,从而适应这些自定义优先级。

5.2.2 调度器实现

模型更新调度器在每次更新生成时计算其优先级。它需要确保优先级计算的开销可以忽略不计,否则它可能成为模型更新的瓶颈。为了实现这一点,调度器将优先级相关统计信息(例如每个模型 $ m $ 的 $ \bar{\mid g \mid} $ 和 $ p_m $)的维护卸载到一个后台线程中。此外,为了限制内存开销,它使用分位数草图(例如DDSketch [52])计算时间窗口内的第 $ k $ 百分位优先级 $ p_k $,其中 $ k $ 是由算法管理者设置的比率。Ekko使用WebAssembly [27] 执行用户定义的优先级计算,以实现UDFs之间的高效隔离。

将调度器集成到参数服务器中:为了实现优先级调度的承诺,我们必须将调度器集成到已启用无日志P2P同步的参数服务器中。为此,我们为每个参数引入重要版本(记为 $ sigv $),并为每个分片引入重要知识(记为 $ SVV $)。此外,Ekko为每个分片分配一个临时重要参数存储 $ store_{\text{significant}} $ 和相应的临时重要知识 $ T SVV $,以支持带有优先级调度的P2P同步。

算法2描述了带有优先级调度器的无日志P2P同步。假设我们有一个来自副本的模型更新,Ekko计算 $ p $。如果 $ p \geq p_k $,Ekko设置 $ sigv = v $,其中 $ v $ 是该更新的参数版本;否则,$ sigv $ 保持不变。然后,Ekko使用 $ sigv $ 构建 $ SVV_{\text{other}} $ 并调用

1
UPDATESVV
函数(第1行)。如果Ekko在同步中未应用优先级,副本将交换 $ SVV $ 并执行
1
UPDATESVV
函数。在将参数写入持久参数存储时,Ekko通过执行
1
WRITESTOREPARAMETER
函数修剪被覆盖的参数(第4行)。需要注意的是,副本会估计模型更新到达自身所需的时间。因此,当网络拥塞发生时,服务器将出现更新超时。在这种情况下,Ekko使用
1
PRIORITISEDSYNC
函数(第15行)触发同步中的优先级调度器。一旦接收到请求,副本优先返回重要参数存储中的参数。

图片名称

算法2

5.3 推理模型状态管理器

Ekko使用推理模型状态管理器来保护SLOs免受有害模型更新的影响。该管理器监控推理模型的健康状况(即质量SLOs),并根据需求进行低延迟的模型状态回滚。

5.3.1 监控模型健康状况

Ekko基于以下思想监控模型健康状况:对于DLRS应用程序,它为推理模型创建基线模型。基线模型处理少量用户流量(通常小于1%)。它们与在线推理模型不同,因为它们携带延迟的状态。换句话说,它们使用先前的训练样本进行训练,通常比当前推理模型的训练样本早几分钟。

Ekko基于从推理服务器和客户端(例如用户设备)收集的指标来衡量模型健康状况。为了计算这些指标,Ekko定义了自定义的水印和触发器 [3]。其状态管理器仅在确信时(即观察到一段时间的监控数据)发出异常检测事件。需要注意的是,Ekko并不局限于使用特定的异常检测算法。它支持自定义的异常检测算法,例如常用于时间序列数据的算法 [61]。

我们将模型状态(即健康或不健康)的转换建模为复制状态机 [63],并在模型状态管理器中实现。该管理器通过检查与健康状况相关的指标和模型更新延迟,在时间戳 $ t $ 处评估并记录模型健康状况。时间戳 $ t $ 单调递增。管理器判断模型状态是健康、损坏还是不确定。当管理器确信模型状态发生变化(即健康或损坏)时,它会将此信息记录在其复制状态中。如果模型状态已损坏,管理器将客户端请求重定向到其他健康的推理模型,然后启动模型状态回滚。

5.3.2 低延迟模型状态回滚

Ekko使用见证服务器以低延迟回滚损坏的模型状态。见证服务器参与副本同步,但不参与模型训练。与参数服务器不同,见证服务器(i)不会立即将更新的参数刷新到参数存储中,(ii)在同步中不运行优先级调度。具体来说,Ekko将尚未刷新的参数更新插入日志中。日志附带有同步的物理时间戳(记为 $ t $)。如果在短时间内有多个同步操作,Ekko会合并它们的日志以节省空间。

模型状态管理器控制见证服务器启动状态回滚。假设模型状态在时间 $ t $ 处被认为是健康的,见证服务器会找到一个满足以下两个条件的时间戳 $ t_{\text{max}} $:(i)它小于等于 $ t $;(ii)它不在任何发生损坏状态的时间间隔内。然后,见证服务器刷新时间戳小于等于 $ t_{\text{max}} $ 的日志。模型状态管理器记录此 $ t_{\text{max}} $,$ t_{\text{max}} $ 稍后将用于见证服务器以恢复健康的模型状态。通过这种方式,我们可以确保见证服务器上的参数存储 $ store_{\text{healthy}} $ 始终保存健康的模型状态。

回滚过程:图5展示了回滚模型状态的过程。假设发现某个模型已损坏,模型状态管理器首先通知参数服务器停止接受该模型的训练请求( 1 )。然后,它指示参数服务器停止基于优先级的同步,清除其 $ store_{\text{significant}} $,并重置 $ T SVV = SVV $。接着,管理器等待参数服务器和见证服务器上的模型分片收敛。随后,管理器选择见证服务器启动状态回滚( 2 )。我们需要确保恢复的模型分片可以一起使用。因此,管理器仅选择见证服务器上 $ store_{\text{healthy}} $ 中 $ t_{\text{max}} $ 在一个小时间窗口内的分片。

图片名称

图5

一个关键设计是,见证服务器会比较 $ store_{\text{healthy}} $ 和其当前状态以找到状态差异( 3 )。由于更新参数的局部性,这种差异通常很小。因此,我们只需将差异写入参数服务器以恢复状态。我们需要确保写入操作能够成功。因此,写入的参数被分配比参数服务器上当前参数版本更大的参数版本( 4 )。之后,管理器等待参数服务器和见证服务器上的模型分片收敛。最后,Ekko会在恢复的模型上恢复少量流量。当该模型的健康状况指标恢复正常时,管理器通知参数服务器恢复接受请求( 5 )。

需要注意的是,如果见证服务器发生故障,其未刷新的更新日志将被丢弃。这有助于Ekko防止潜在的损坏更新被刷新。如果参数服务器或见证服务器发生故障(或重新加入集群),回滚过程将重新执行。


6 评估

在本节中,我们通过测试床和生产环境实验评估Ekko的以下方面:(i)Ekko的更新延迟及其与数据中心数量的可扩展性(§6.1.1);(ii)Ekko在异构WAN中的更新延迟(§6.1.1);(iii)Ekko中实现的优化的性能分解(§6.1.2);(iv)Ekko在大规模生产DLRS中的实际延迟和可用性(§6.2.1);(v)低延迟模型更新在在线服务中的好处(§6.2.1);(vi)在繁忙网络中使用模型更新调度器的有效性(§6.2.2);(vii)模型损坏时回滚模型的延迟(§6.2.2)。

除非另有说明,更新延迟是指更新提交时间与更新在所有副本中可见时间 [68] 之间的最大时间差(无故障场景)。在所有实验中,我们测量更新延迟并报告所有更新的平均值。

6.1 测试床实验

我们在一个30台服务器的集群中进行测试床实验。每台服务器配备24核CPU、64 GB内存和5 Gbps网络链路。我们将每三台服务器分组为一个数据中心(DC),以模拟多DC场景,最多形成10个DC。我们选择其中一个DC作为训练导向的DC,该DC从一台服务器(充当DLRS客户端)接收模型更新。我们让其他DC作为推理导向的DC,并将它们与训练导向的DC连接。DC间的带宽为4,800 Mbps(除非另有说明),模拟WAN。

我们的测试床实验包括两个工作负载。第一个工作负载训练一个通常用于生产环境的大型排序模型。在此工作负载中,我们选择分片大小为0.4 MB。第二个工作负载使用按时间顺序排序的Criteo Terabyte Click Logs [17] 训练Wide & Deep模型 [10]。我们使用21天的数据日志初始化嵌入表。为了确保实验可重复,我们记录模型更新轨迹并在实验期间重放它们。

6.1.1 更新延迟

我们在同构WAN和异构WAN中评估Ekko的更新延迟。这两种WAN在现实世界中都很常见。第一个基线是Adam [11],它通常用于参数服务器中,通过两阶段提交协议同步模型更新。我们的Adam实现移除了更新广播之间的等待时间,从而提高了网络利用率。第二个基线是Checkpoint-Broadcast,这是DLRS中应用模型更新的事实标准方法 [1, 21]。我们省略了与通用键值存储(如PaxosStore [73] 和 TiKV [29])的实验,这些存储提供写入操作的线性一致性。我们的早期采用结果表明,这些键值存储的写入吞吐量较低,比生产DLRS所需的吞吐量低几个数量级。

为了公平比较,Ekko和基线都使用DRAM进行存储 [57],并采用相同的主节点分配和负载均衡方案。我们进一步确保它们的传播都是网络受限的,并使用相同数量的分片。

同构WAN结果:我们首先在同构WAN中将Ekko与Adam进行比较。我们分别测量了1个DC(3个副本)、5个DC(15个副本)和10个DC(30个副本)的延迟。图6a和图6b显示了结果。可以看出,Ekko在生产环境和Criteo工作负载中的延迟显著低于Adam。具体来说,在运行生产工作负载的10个DC中,Ekko实现了2.6秒的延迟,比Adam的18.8秒延迟低7倍。我们还观察到,随着DC数量的增加,Ekko和Adam之间的性能差距也在扩大。原因是Ekko具有可扩展的P2P同步架构,并针对WAN优化了其传播拓扑。相比之下,Adam依赖主副本发送更新,受限于训练DC中有限的带宽。

图片名称

图6

我们还将Ekko与Checkpoint-Broadcast进行比较。根据我们的实验结果,Checkpoint-Broadcast在WAN中同步4 GB参数需要超过7秒。总参数为113 GB。在10个DC的情况下,训练DC需要向所有其他推理DC发送113×9=1,017 GB的参数。因此,训练DC需要花费超过29分钟完成参数广播(因为WAN的带宽为4,800 Mbps)。这种广播延迟比Ekko实现的秒级延迟(例如2.6秒)高几个数量级。

异构WAN结果:然后我们在异构WAN中评估Ekko和基线。在此WAN中,我们将DC间带宽默认设置为256 Mbps。为了引入异构性,我们选择训练DC与另一个推理DC之间的一个链路,并将其带宽设置为128 Mbps。实验在每个DC中运行3个副本,总共10个DC。如图7a和图7b所示,Ekko在生产环境和Criteo工作负载中都能有效缓解慢速异构链路的影响。它允许副本以独立的速率同步,保持秒级同步延迟。这种低延迟性能显示了Ekko的无日志P2P同步在缓解异构网络路径不利影响方面的有效性。相比之下,Adam在WAN中受到慢速路径的影响,导致在生产工作负载中花费超过150秒同步副本,在Criteo工作负载中花费超过100秒。

图片名称

图7

除了Adam,我们还考虑了其他基于日志的同步方法,例如Multi-Paxos [9]。我们可以让这些方法将一段时间内到达的更新聚合到一个日志条目中,以节省WAN带宽。然而,这些方法仍然受到异构链路的影响。这是因为它们基于网络中最慢的链路选择聚合间隔,导致许多其他链路利用率不足。


6.1.2 性能分解

我们希望了解Ekko同步中各个组件的有效性。因此,我们对生产工作负载(10个DC)进行了性能分解分析。我们首先配置Ekko仅使用分片知识(见§4.3)进行同步。此配置是本实验的基线,相当于最先进的P2P同步技术——版本向量(VV)[50, 51]。

图8显示了结果。仅使用VV时,Ekko需要76.3秒同步所有参数。启用更新缓存(§4.4.1)后,Ekko将延迟减少到27.4秒(即2.8倍加速)。通过分析更新缓存的跟踪数据,我们发现缓存在生产工作负载中实现了100%的命中率。需要注意的是,测试床服务器上每个副本的总内存比生产服务器少10倍,这意味着分片中的参数比实际场景中少。随着分片中参数数量的增加,VV将花费更多时间进行同步,而更新缓存可以保持低延迟。

图8还显示了分片版本(§4.4.2)的效果。通过进一步启用分片版本,Ekko将延迟从27.4秒减少到6.0秒(即4.6倍加速)。这表明跳过未更新的分片可以有效减少同步带来的网络消耗。

图片名称

图8

最后,启用WAN优化(§4.5)后,Ekko将延迟从6.0秒进一步减少到2.6秒(即2.3倍加速)。这表明P2P同步必须考虑WAN中每个链路的可用带宽,否则无法充分发挥其潜力。总之,启用Ekko中的所有组件使P2P同步总共加速了29.3倍(即2.6秒 vs. 76.3秒)。


6.2 生产集群实验

我们已经将Ekko部署到生产中超过一年。生产环境包括分布在6个地理分布式DC中的4,600台服务器。截至2022年,我们已使用Ekko支持多种推荐服务,包括短视频推荐、搜索和广告。每天有超过10亿用户使用这些服务。在本节中,我们报告Ekko在该生产环境中的性能。

6.2.1 模型更新

我们从生产环境中收集跟踪数据,以分析Ekko在更新模型中的性能。生产环境中有数百个DLRS模型(总共40 TB参数或2500亿个键值对)。每个参数分片的大小从0.1 MB到20 MB不等,具体取决于模型大小。Ekko每秒可以执行10亿次更新(即212 GB/s)。

关于延迟性能,Ekko在所有DC中同步参数花费2.4秒,仅在训练DC中花费0.7秒。同步流量仅占总网络流量的3.0%,反映了Ekko作为参数服务器后台同步服务的有效性。Ekko的低延迟、高吞吐量性能并未影响系统可用性。自部署以来,Ekko在参数读写操作中实现了>99.999%的可用性。

更新缓存分析:我们对更新缓存在各种现实推荐服务中的性能特别感兴趣。我们的跟踪数据显示:更新缓存只需缓存0.13%-0.2%的参数,即可实现>99.4%的命中率。这些性能结果验证了更新局部性的广泛存在。事实上,我们的生产推荐服务每小时平均更新3.08%的参数。

我们选择一个更新密集的DLRS模型来揭示最坏情况下的更新局部性。图9显示了480分钟窗口内更新参数的比例。此时间窗口涵盖了我们生产DLRS一天中最繁忙的时间。我们报告了不同时间间隔的比例。在10分钟间隔内,只有4.3%的参数被更新,并且这一比例在480分钟的时间窗口内保持稳定。在60分钟间隔内,我们观察到类似的模式,比例仅略微增加到约10%。实际上,许多其他模型的更新工作负载较少,其更新参数的比例低于此模型。

图片名称

图9

低延迟模型更新的好处:我们希望了解低延迟模型更新是否真的能提高推荐服务的质量。为此,我们在短视频推荐服务 [65] 中进行了为期15天的在线A/B测试 [64]。该服务包括一个多阶段管道 [10, 15]。我们仅在排序阶段进行实验。我们将排序模型分为两组:实验组和对照组。每组接收1%的总流量用于训练和推理。我们通过将实时日志缓存到分布式文件系统中,将用于训练对照组模型的数据(即事件日志)延迟20分钟。

我们的A/B测试结果显示:与对照组相比,实验组在所有推荐视频中新鲜视频(发布在一小时内)的比例增加了3.82%。这意味着系统向实验组用户推荐了更多新鲜视频。此外,实验组用户滑动视频列表的比例减少了1.30%,而浏览视频的总时间增加了1.68%。这意味着实验组用户花费更多时间观看视频,并对推荐视频更感兴趣。

最后,实验组用户点击评论的比例增加了2.17%。这意味着实验组中的用户互动增加。值得注意的是,在现实世界的多阶段DLRS中,1%-3%的改进被认为是显著的 [10, 21, 71]。事实上,自从在DLRS的更多阶段启用低延迟模型更新以来,我们观察到推荐质量的更显著改进。

6.2.2 SLO保护机制

我们还运行A/B测试来评估Ekko的SLO保护机制的有效性。

图片名称

图10

SLO感知的模型更新调度器:我们将排序模型分为实验组(启用优先级调度器)和对照组。每组有1%的训练和推理流量,并部署到专用服务器以避免流量干扰。我们监控反映新鲜度SLOs的指标:推荐结果中新鲜视频(即过去一小时内发布)的数量。为了模拟网络拥塞,我们将模型更新的可用带宽减少了92%。模型更新调度器(i)使用默认的优先级计算规则(定义见§5.2.1),(ii)将百分位优先级 $ k $ 设置为99($ k $ 定义见§5.2.2)。

A/B测试结果显示,在实验组中,Ekko将同步流量减少了92%,并保持重要更新的低延迟。相比之下,对照组在繁忙网络中发送模型更新时无法区分更新。因此,对照组延迟了SLO关键更新,其SLO指标下降了2.32%。这种下降在实践中是显著的,因为该SLO指标是决定DLRS利润的关键因素。

在线模型状态回滚:我们评估在线回滚模型状态的延迟。我们将Ekko与checkpoint恢复方法进行比较。为了公平比较,我们让回滚延迟排除(i)Ekko中收集SLO指标的时间,以及(ii)等待分歧参数收敛的时间。我们部署了5个见证服务器。对于每个见证服务器,我们分配113 GB参数和800 Mbps网络带宽。

在实验过程中,我们通知Ekko的模型状态管理器将DLRS模型的状态回滚到1分钟前的版本。然后,管理器通知所有见证服务器识别过去1分钟内更新的参数。因此,见证服务器只需重新加载当前状态与早期状态之间的差异。因此,整个回滚操作仅需6.4秒即可完成。相比之下,checkpoint恢复方法无法感知模型状态的最近更新。因此,它必须重新加载整个状态,花费1,157秒完成(比Ekko慢180倍)。

7 相关工作

数据复制系统:Ekko中探索的参数同步问题与之前的数据复制工作相关。现有的数据复制系统通常探索如何利用应用程序的特性来提高数据复制的延迟性能 [13, 40, 45, 53]。例如,Egalitarian Paxos [53] 利用了状态机命令的低干扰率,Gemini [40] 利用了混合一致性操作,而COPS [45] 和PNUTS [13] 则利用了互联网服务对宽松一致性的容忍性。与这些系统不同,Ekko利用了DLRS特有的模型更新局部性和最终一致性模型来加速模型参数(而非通用数据)的同步,使Ekko在设计空间中独树一帜。

ML系统中的带宽节省技术:优先处理模型更新的问题与分布式ML系统中的带宽节省技术相关。这些技术通常涉及梯度压缩 [4, 6, 28, 44],在繁忙网络中优先处理大梯度,预期这些大梯度对训练模型的最终准确性有显著影响。与这些技术不同,Ekko针对模型推理场景,人们关心的是众多推理SLO指标,而不仅仅是模型的准确性。因此,Ekko不仅依赖梯度大小,还进一步考虑模型的新鲜度和优先级来调度模型更新。

ML系统中的SLO感知调度:在调度中考虑SLOs的问题在之前的ML系统中已有探索。模型服务系统通常将推理延迟作为主要SLO,以指导与推理相关的计算任务的调度 [16, 25, 70]。模型训练系统,例如Pollux [59] 和KungFu [48],使用ML特定的SLOs(例如训练吞吐量和梯度统计)来决定如何调度训练工作器。与这些系统相比,Ekko关注新鲜度和质量SLOs,并支持在调度模型更新时使用这些SLOs。


8 结论

本文提出了Ekko,一种能够在秒级延迟下更新大规模模型参数的新型DLRS。Ekko具有高效的P2P模型更新算法,能够协调数十亿次模型更新,并将其高效传播到地理分布的数据中心中的副本。此外,它还具备SLO保护机制,能够保护模型状态免受网络拥塞和在线有害模型更新的影响。实验结果表明,Ekko比最先进的DLRS快几个数量级,证明了其新颖设计的有效性。

附录

摘要

观看时间是视频推荐系统中衡量用户满意度的重要指标。然而,将观看时间作为目标变量进行预测常常受到其高度不平衡分布的阻碍,对于较大的目标值观察稀缺,而对于小值样本过多。最先进的观看时间预测模型将连续的观看时间离散化为一组桶,以考虑观看时间的分布。然而,如何从连续的观看时间分布中创建这些离散桶的问题尚未得到充分研究,现有的离散化方法要么存在较大的学习误差(learning error),要么存在较大的恢复误差(restoration error)。为了解决这一挑战,我们提出了一个带有错误自适应离散化(CREAD)的分类-恢复框架,以准确预测观看时间。所提出的框架包含一个离散化模块、一个分类模块和一个恢复模块。它通过多个分类问题来预测观看时间。离散化过程是CREAD框架的关键贡献。我们从理论上分析了离散化对学习误差和恢复误差的影响,然后提出了错误自适应离散化(EAD:error-adaptive discretization)技术,以更好地平衡这两种误差,这比传统的离散化方法实现了更好的性能。我们在公共数据集和工业数据集上进行了详细的离线评估,两者都显示出所提出方法的性能提升。此外,我们已经将我们的框架全面推广到快手应用,这是一个在线视频平台,通过A/B测试,用户的视频观看时间显著增加了0.29%。这些结果突出了CREAD框架在视频推荐系统中预测观看时间的有效性。

1 引言

推荐系统在匹配用户感兴趣的item方面取得了巨大成功(Herlocker 等人,2004)。其中最受欢迎的应用之一是短视频社交媒体(Tang 等人,2017;Wu, Rizoiu, 和 Xie 2018),如 TikTok 和 Instagram Reels,用户屏幕上会出现短视频,而无需任何主动操作,例如点击。因此,传统的指标如点击率不再适用。直观地说,观看时间(watch time)成为衡量用户参与度的关键指标(Covington, Adams, 和 Sargin 2016)。为确保最佳的用户体验,准确预测在线推荐系统中的观看时间至关重要。通过这样做,这些平台可以更好地了解用户偏好,并根据他们的兴趣提供个性化的视频推荐。大量研究(Zhan 等人,2022;Gong 等人,2022;Lin 等人,2022;Wang 等人,2022;Cai 等人,2023;Zhao 等人,2023)致力于开发神经网络模型,并显著提高了传统回归方法的预测准确性。

由于用户观看时间值的连续性和广泛性,观看时间的预测提出了一个回归问题,这增加了对异常值的敏感性和潜在预测偏差。如图1所示,短视频的观看时间分布是右偏的,大量的集中在短时间内:30% 的观看时间在 3 秒内,80% 在 32 秒内。这种分布给早期的观看时间预测尝试(Zhan 等人,2022;Covington, Adams, 和 Sargin 2016)带来了挑战,它们忽视了回归问题的长尾特性,因此对于尾部实例产生了次优结果。此外,在推荐系统中,预测之间的序数关系起着关键作用,以观看时间为视频比较的指标,突出了序数排序的重要性。然而,标准的回归损失如 ℓ1 和 ℓ2 并不考虑排序比较,只关注差异的大小。

图片名称

图1 观看时间的概率密度图

因此,在不平衡的连续标签分布中保持实时推荐系统中的预测准确性和排序效率面临巨大挑战。

为了解决这个问题,我们引入了一个有效的基于分类-恢复(classification-restoration)的框架,用于从现实世界中的不平衡连续目标中学习。该框架包含三个关键组件:

  • 一个有效的离散化:将连续标签转换为序数区间,
  • 一个分类模块:训练多个二元分类器跨越这些段以确保排序准确性,
  • 一个恢复模块:用于根据这些分类器的预测预测观看时间

这种方法的挑战在于从连续分布中创建离散类别的模糊性。这涉及到解决两种误差类型:

  • 与样本桶计数相关的学习误差
  • 影响从离散化预测中估计观看时间的恢复误差

平衡这些误差证明是复杂的;较窄的桶间隔通过降低样本概率降低了学习误差,而较宽的间隔减少了信息并提高了恢复误差。我们检查了离散化对学习和恢复误差的影响,并提出了一种错误自适应离散化(EAD)方法,以在实际分布中协调这些误差。

我们全面的框架,命名为带有 EAD 的 Classification-Restoration(CREAD),提供了一个适用于现有学习方法(如 D2Q)的多功能扩展。

总之,我们的主要贡献是:

  • 我们提出了一个用于学习观看时间的序数信息的通用分类-恢复框架,以及减少分类和恢复误差的训练算法。
  • 我们分析了离散化引入的误差界限,并提出了一种新的离散化方法,根据现实数据集分布平衡学习误差和恢复误差。

现实大规模数据集的离线和在线实验表明,我们的框架与最先进的方法相比取得了竞争性的结果。

2 相关工作

2.1 观看时间预测

观看时间预测的任务是:预测用户在给定用户画像、互动历史和一系列候选短视频的情况下的观看时间。

  • VR:值回归(Value Regression)直接预测观看时间的绝对值,其中学习函数的准确性通过均方误差来评估。
  • WLR:Covington, Adams 和 Sargin (2016) 将观看时间作为样本权重纳入(WLR)印象深刻的视频的逻辑回归中,将直接回归观看时间转化为学习视频点击率的概率。然而,这种假设仅在展示率较低时成立,而不适用于短视频设置中自动播放的视频。
  • D2Q:最近,Zhan 等人(2022)研究了视频推荐中观看时间预测的持续时间偏差(D2Q),通过基于持续时间的分箱数据去除不需要的偏差。尽管他们基于等频的方法去除了偏差,但他们忽略了观看时间不平衡分布对长尾样本的影响,导致与头部样本相比准确性较低。尽管有效,但他们没有利用在离散化过程中丢失的额外桶内信息,而我们在建模过程中施加了一个错误自适应框架

2.2 通过分类进行回归

最近,有一种趋势是将回归问题表述为一组分类问题,这在直接回归上取得了显著改进。第一个相关工作是序数回归(OR: Ordinal Regression)。它最初用于因变量表现出相对排序的分类问题,后来扩展到包括年龄估计(Niu 等人,2016;Beckham 和 Pal,2017)和深度估计(Diaz 和 Marathe,2019)等多个领域。

OR的一个关键问题是:从分布中创建离散类别的模糊性。大多数工作使用固定标准方法,如等宽或等频离散化来划分连续变量,而其他人则手动选择多个阈值(Crammer 和 Singer,2001;Shashua 和 Levin,2002)作为超参数。正如第 4 节所分析的,这些方法引入了较大的离散化误差,特别是当数据遵循不平衡分布时。相比之下,我们的方法通过提出一种自适应离散化方法来最小化总误差,从而缓解了这个问题。

3 方法

记号。设: ${(x_i, y_i)}^N_{i=1}$ 为训练集,

其中:

  • $y_i \in Y \subset \mathbb{R}^+$ :是对应的真实观看时间(ground truth)
  • $x_i \in \mathbb{R}^d$: 表示第 $i$ 个输入,包括与用户相关的特征(如人口统计特征和浏览历史)和与视频相关的特征(如标签和转发计数)。

不失一般性,我们假设:目标变量的值域通过 $T_{\text{max}} \in \mathbb{R}^+$ 来限制。

我们使用 $M-1$ 个阈值 $ \lbrace t_m \rbrace_{m=1}^{M-1} $ 将值域划分为$M$个离散桶 $ D \equiv \lbrace d_m \rbrace^M_{m=1} $,其中:

  • 第 $m$ 个桶 $d_m = [t_{m-1}, t_m)$ 对于 $m = 1, \cdots, M$,并且 $t_0 = 0$,$t_M = T_{\text{max}}$。
  • 设 $\widehat{y}_i$ 表示 $x_i$ 的预测观看时间。

设:

  • $1(\cdot)$ 表示指示函数。

为了简化,当我们不特指某个样本时,我们省略下标 $i$。

3.1 整体框架

CREAD框架,如图2 所示,包括三个模块,即离散化、分类和恢复。以下,我们解释每个组件的设计。

图片名称

图2 CREAD框架

离散化(Discretization)

这个模块是一个独立的预处理模块,与训练和评估过程无关。它根据数据分布获得阈值 ${t_m}{m=1}^{M-1}$,并将目标域 $Y$ 分割成 $M$ 个不重叠的桶 $D \equiv {d_m = [t{m-1}, t_m)}^M_{m=1}$。这些桶用于将观看时间 $y$ 转换为 $m$ 个离散标签:

\[y_m = 1(y > t_m). \quad (1)\]

离散化策略对预测精度至关重要,我们将在第 4.3 节详细讨论。

分类(Classification)

训练 $M$ 个分类器来预测观看时间 $y$ 是否大于第 $m$ 个阈值 $t_m$,即方程 (1) 中的 $y_m$,并输出一系列概率:

\[\widehat{\phi}_m(x_i; \Theta_m) = P(y > t_m | x_i), \quad 1 \leq i \leq N. \quad (2)\]

分类器是具有可学习参数 $\Theta_m$ 的神经网络。我们在第 3.2 节介绍如何训练这些模型。

恢复(Restoration)

给定 $\lbrace \widehat{\phi}m \rbrace^M{m=1}$,我们能够恢复预测的观看时间。恢复基于以下期望的事实:

\[\begin{align} E(y | x_i) & = \int_{t=0}^{t_M} tP(y = t | x_i)dt \\ & = \int_{t=0}^{t_M} P(y > t | x_i)dt \\ & \approx \sum_{m=1}^M P(y > t_m | x_i) (t_m - t_{m-1}). \end{align} \quad (3)\]

根据方程 (2) 中的 $\widehat{\phi}_m$ 的定义,我们可以从这些离散预测 $\widehat{\phi}_m$ 重建预测的观看时间:

\[\widehat{y} = \sum_{m=1}^M \widehat{\phi}_m (t_m - t_{m-1}). \quad (4)\]

3.2 模型训练

这里,我们提供了 $M$ 个分类器训练中的loss函数。损失函数包含三部分,其中:

第一部分是:通过标准分类的cross-entropy loss。

\[L_{ce} = \sum_{m=1}^M -y_m \log(\widehat{\phi}_m) - (1 - y_m) \log(1 - \widehat{\phi}_m). \quad (5)\]

第二部分是:restore loss,以减少方程 (4) 中重建观看时间的误差:

\[L_{restore} = \ell(\widehat{y}, y), \quad (6)\]

其中:

  • $\ell$ 是衡量 $\widehat{y}$ 到 $y$ 偏差的损失函数。

我们发现使用 Huber 损失 (Huber 1992) 作为 $L_{restore}$ 是有益的,这将在第 5.3 节详细分析。

第三部分是:通过序数先验的正则化项。根据定义,$M$ 个分类器的输出 $\lbrace \widehat{\phi}m \rbrace{m=1}^M$ 有一个先验,即 $\widehat{\phi}_m$ 随着 $m$ 的增长而单调递减。因此,我们通过最小化以下正则化项将先验纳入所提出的框架:

\[L_{ord} = \sum_{m=1}^{M-1} \max(\widehat{\phi}_{m+1} - \widehat{\phi}_m, 0). \quad (7)\]

总之,最终的优化目标是:

\[L_{CREAD} = \lambda_{ce}L_{ce} + \lambda_{restore}L_{restore} + \lambda_{ord}L_{ord}, \quad (8)\]

其中:

  • $\lambda_{ce}$、$\lambda_{restore}$ 和 $\lambda_{ord}$ 是超参数。

3.3 离散化的挑战

在 CREAD 框架中,一个关键模块是离散化模块,离散化方法在很大程度上影响最终预测精度。如图3 所示,离散化引入了两种误差:

图片名称

图3 离散化中的两种error

  • 学习误差:由于每个桶中的实例数量是有限的,$M$ 个分类器不能无限精确。随着我们增加桶的数量 $M$,落入每个桶的实例数量减少,从而限制了分类性能
  • 恢复误差:方程 (4) 中的恢复是期望的一个近似函数,省略了每个桶 [$t_{m-1}$, $t_m$] 中的详细概率密度,这也会引入误差。

不幸的是,这两种误差不能同时减少。为了减少学习误差,需要更大的桶宽度,导致更大的恢复误差(见图 3)。现有方法通常使用等宽或等频方法 (Gai 等人,2017) 来启发式地设置离散化集 $D$。我们将在第 4 节展示等宽和等频方法都不能很好地平衡这两种误差,并提出我们的 EAD 方法。

4 在离散化中平衡误差

本节旨在平衡离散化过程中引入的误差。我们首先提供对离散化过程中引入的学习误差和恢复误差的理论分析,然后提出EAD方法来有效平衡这两种误差。

4.1 离散化误差的分解

假设:训练数据集 $\lbrace (x_i, y_i)\rbrace^N_{i=1} \sim \mu(x, y) = \mu(x)\mu(y \mid x)$ 是独立同分布的。设:

  • $p_m(x) = P(y \in d_m \mid x)$: 表示标签 $y$ 属于第 $m$ 个桶 $d_m$ 给定 $x$ 的概率。
  • $v_m(x) = E(y \mid x, y \in d_m)$: 是样本 $x$ 的观看时间的期望值,假设它属于第 $m$ 个桶。
  • $w_m = E_{x \sim \mu(x)}v_m(x)$: 表示区间 $d_m$ 中观看时间的期望值

我们添加帽子上标来表示预测值,例如:

  • $\widehat{p}_m(x)$ 作为 $p_m(x)$ 的预测
  • $\widehat{w}_m$ 作为 $w_m$ 的预测。

然后我们可以将观看时间表示为:

\[\widehat{y} = \sum_m \widehat{p}_m(x) \widehat{w}_m.\]

注意,这种形式等同于方程 (4) 中的累积形式,其中:

\[\widehat{p}_m = \widehat{\phi}_m - \widehat{\phi}_{m-1}\]

现在我们的目标是:估计预测观看时间 $\widehat{y}$ 和真实值 $y$ 之间的误差界限。为了实现这一点,我们首先提供一个误差分解:

引理 4.1。假设 $\widehat{p}_m(x)$ 和 $\widehat{w}_m$ 分别是 $p_m(x)$ 和 $w_m$ 的无偏估计,我们有:

\(E(\widehat{y} - y)^2 = V_p + V_w + V_b + V_y,\) …(9)

其中:

\[V_p = E_x[E_{\widehat{p}}E_{\widehat{w}}\sum_m (\widehat{p}_m(x) - p_m(x)) \widehat{w}_m]^2,\] \[V_w = E_x[E_{\widehat{w}}\sum_m p_m(x) (\widehat{w}_m - w_m)]^2,\]

\(V_b = E_x[\sum_m p_m(x) (w_m - v_m(x))^2],\) \(V_y = E_{x,y}[\sum_m p_m(x)v_m(x) - y]^2.\)

详细证明请参见附录 A。直观上,

  • $V_p$ 由学习误差决定,即 $y$ 落入每个桶的概率 $p_m(x)$。
  • $V_w$ 描述了学习误差对代表性值 $\widehat{w}_m$ 的影响,
  • $V_b$ 是由离散化重建观看时间引起的误差,
  • $V_y$ 是观看时间 $y$ 的内在方差。

两个预测误差 $V_p$ 和 $V_w$ 受到学习算法误差的影响。因此,这两个误差项对应于学习误差。相比之下,$V_b$ 对应于与具体学习算法无关的恢复误差。最后,$V_y$ 与学习或离散化过程无关,后续不再讨论。

4.2 离散化的误差界限

本节分析离散化过程如何影响误差界限。为了理论分析的简便,我们只考虑表格输入的情况,并假设 $\mu(x, y)$ 足够平滑。但我们强调,受理论分析启发的离散化方法在现实世界设置中也将有效。

定理 4.2。假设输入 $x$ 从有限集合 $X$ 中采样。此外,假设 $\widehat{p}_m(x)$,$x \in X$ 和 $\widehat{w}_m$ 从最大似然估计中获得。此外,假设 $\mu(x, y)$ 具有有界的二阶偏导数。那么我们有:

\(V_p \leq V_p \triangleq \frac{C_p |X|}{N} \cdot A_p(D),\) \(V_w \leq V_w \triangleq \frac{C_w}{N} \cdot A_w(D),\) \(V_b \leq V_b \triangleq C_b \cdot A_b(D),\)

其中 $C_p$,$C_w$ 和 $C_b$ 是与离散化 $D$ 无关的常数,$A_p$,$A_w$,$A_b$ 是 $D$ 的函数:

\(A_p(D) = M E_{y \sim {\Psi}} y^2,\) \(A_w(D) = \sum_{m \in M} [\Psi(t_m) - \Psi(t_{m-1})]^2 \cdot \sum_{m \in M} \frac{(t_m - t_{m-1})^2}{\Psi(t_m) - \Psi(t_{m-1})},\) \(A_b(D) = \sum_{m \in M} [\Psi(t_m) - \Psi(t_{m-1})]^2 \cdot \sum_{m \in M} (t_m - t_{m-1})^2,\)

其中 $\Psi$ 是观看时间 $y$ 的累积分布函数(CDF):

\[\Psi(t) \triangleq P\{y \leq t\} = E_x \int_0^t \mu(y|x)dy.\]

证明。见附录 B。

因此,我们发现预测误差受到仅依赖于观看时间分布 $\Psi$ 和离散化 $D$ 的几个函数 $A_p$,$A_w$ 和 $A_b$ 的限制。现在我们提供一些直观的解释。

讨论 不同离散化方法对每个误差项的影响是什么?这里我们主要讨论误差项 $A_w$ 和 $A_b$,因为它们依赖于 $D$ 的分割点 ${t_m}_{m=1}^M$。我们考虑一个在 $[0, 1]$ 上截断的指数分布,即 $\Psi(t) = (1 - e^{-5t})/(1 - e^{-5})$,由 10 个桶离散化。表 1 显示了等宽和等频离散化的不同项。结果表明,等宽方法导致较低的 $A_b$,而等频方法导致较低的 $A_w$。这个结果有一个非常直观的解释,显示了 $A_b$ 和 $A_w$ 的含义:

  • 学习误差:学习误差由 $A_w$ 显示,受每个桶中的样本数量影响。具体来说,$A_w$ 的分母中存在一个 $\Psi(t_m) - \Psi(t_{m-1})$ 项。因此,如果某些桶中的样本很少,相应的概率 $\Psi(t_m) - \Psi(t_{m-1})$ 将很小,导致较大的误差。
  • 恢复误差:$A_b$ 显示恢复误差界限。它包含一个 $t_m - t_{m-1}$ 项作为乘数。当某些 $m$ 的 $t_m - t_{m-1}$ 较大时,误差项将增加,这与较大的桶宽度将导致较大的恢复误差的直觉一致。

图片名称

图4

现在我们再次讨论离散化引入的误差困境:学习误差和恢复误差通常相互矛盾。如果我们要减少学习误差,我们需要增加每个桶中的样本数量,但较大的桶宽度会导致较大的恢复误差。正式地,桶概率 $\Psi(t_m) - \Psi(t_{m-1})$ 通常与桶宽度 $t_m - t_{m-1}$ 正相关。根据上述讨论,我们即将提供 EAD 方法来平衡这两种误差。

4.3 EAD 方法

这里我们主要讨论给定桶的数量 $M$ 时的离散化策略 $D$。我们不讨论 $M$ 的选择,因为它是一个单一变量,可以被视为超参数。根据第 4.2 节,离散化策略 $D$ 需要平衡学习误差 $A_w$ 和恢复误差 $A_b$。因此,EAD 的离散化策略最小化以下目标:

\[\min_D J(D) = A_w(D) + \beta A_b(D),\]

其中:

  • $\beta$ 根据定理 4.2 由 $C_w$,$C_b$ 和 $N$ 确定。

由于 $C_w$ 和 $C_b$ 依赖于数据集的特征,无法从理论上获得,我们将 $\beta$ 视为超参数。

方程 (21) 是一个维度为 $M - 1$ 的优化问题。找到最优离散化策略是具有挑战性的,因为 $M$ 通常是几十或几百。这里我们提出一个更轻量级的方法。

图片名称

图5

我们首先正式表达等宽和等频离散化方法。具体来说,等宽方法写作:

\[t_m = \frac{m}{M} T_{\text{max}},\]

这保证了固定的 $\Delta t_m = \frac{T_{\text{max}}}{M}$,但在长尾桶中导致 $\Delta \Psi(t_m)$ 太小(见图 4(a))。相比之下,等频方法写作:

\[t_m = \Psi^{-1}\left(\frac{m}{M}\right),\]

这保证了固定的 $\Delta \Psi(t_m) = \frac{1}{M}$,但在长尾桶中导致 $\Delta t_m$ 太大(见图 4(b))。

关键是通过以下方式重写方程 (22) 和 (23):

\[t_m = \Psi^{-1}\left(\gamma\left(\frac{m}{M}\right)\right),\]

其中 $\gamma$ 是一个校准函数 $\gamma: [0, 1] \rightarrow [0, 1]$,满足 $\gamma(0) = 0$,$\gamma(1) = 1$。注意,当 $\gamma(z) = \Psi(z T_{\text{max}})$ 时,我们得到方程 (22);而当 $\gamma(z) = z$ 时,我们得到方程 (23)。

因此,方程 (24) 包含了离散化方法的两个极端情况。这启发我们通过适当地选择校准函数 $\gamma$ 在真实分布 $\Psi$ 和均匀分布之间,可以获得任何中间的分桶策略。图 4(c) 显示了校准函数 $\gamma$ 对离散化过程的影响。

根据上述讨论,我们将 $\gamma$ 设置为一组函数 $\gamma(\cdot; \alpha)$,由 $\alpha$ 参数化,然后可以通过网格搜索在方程 (21) 的优化问题下找到最优的 $\gamma$。

作为一个示例,我们使用与第 4.2 节讨论 2 相同的设置,并将 $\gamma$ 设置为 $\gamma(z; \alpha) = \frac{1 - e^{-\alpha z}}{1 - e^{-\alpha}}$,参数 $\alpha$ 从 0 到 5,并设置 $\beta = 50/100/200$。具体来说,$\alpha = 0$ 降级为等频方法,而 $\alpha = 5$ 降级为等宽方法。图 5 显示了在 $\alpha$ 和 $\beta$ 下的目标函数 $J(D)$(方程 (21)),这表明:

  • 超参数 $\beta$ 允许我们灵活地平衡学习误差和恢复误差。
  • 通过将最优的 $\alpha$ 与等频方法($\alpha = 0$)和等宽方法($\alpha = 5$)进行比较,表明通过适当地选择校准函数 $\gamma$,可以找到比传统的等频和等宽方法更合适的分桶策略。

#

https://arxiv.org/pdf/2401.07521

meta在《Understanding Scaling Laws for Recommendation Models》讨论了推荐系统中的scaling law问题。

摘要

规模(scale)一直是提高机器学习性能的主要驱动力,理解规模法则(scaling laws)对于可持续的模型质量性能增长的战略规划、长期资源规划以及开发支持大规模模型的高效系统基础设施至关重要。在本文中,我们研究了DLRM风格的推荐模型的经验规模法则,特别是点击率(CTR)。我们观察到模型质量与模型大小、数据大小和训练所用计算量呈幂律加常数的规模。我们通过比较这些轴上的不同规模方案,对数据、参数和计算三个不同的资源维度的规模效率进行了表征。我们展示了参数规模对于所研究的模型架构已经力不从心,而在出现更高性能的模型架构之前,数据规模是前进的道路。本研究解决的关键研究问题包括:

  • 推荐模型是否如规模法则预测的那样可持续地规模?
  • 我们是否远离规模法则的预测?
  • 规模的极限是什么?
  • 规模法则对长期硬件/系统开发有何影响?

1. 引言

在过去十年中,深度学习总体上,特别是基于深度学习的推荐模型(DLRM),在数据集规模、模型规模和系统资源方面经历了指数级的增长(Elkahky等人,2015年;Covington等人,2016年;Sullivan,2016年;Liu等人,2017年;Yi等人,2018年;Zhou等人,2019年;Zhao等人,2019年;Naumov等人,2020年;Zhao等人,2020年;Lui等人,2021年;Acun等人,2021年;Steck等人,2021年;Lian等人,2021年),将人工智能行业推向了万亿参数时代。实现万亿参数模型需要在人工智能系统基础设施上进行大量投资(Mudigere等人,2022年)。从系统设计的角度来看,主要问题/关注点是:

  • 如何扩展?
  • 哪种扩展方案提供更好的投资回报率(ROI)?
  • 如何战略性地结合不同的扩展方案以提供更好的ROI?

图1显示了在5年时间(2016-2021)内,语言建模任务和DLRMs的模型规模增长了10000倍。这些结果只反映了已发布模型的增长。我们预计DLRMs的增长速度甚至更快。推荐系统是许多互联网公司的主要收入来源。因此,这些模型的细节通常是保密的。最近的研究表明,在仅仅2年多的时间里(2019-2021),Facebook的推荐模型在参数数量上增长了20倍,在训练集大小上增长了2.4倍,系统基础设施增长了2.5-2.9倍(Wu等人,2021年;Mudigere等人,2022年),并且超过50%的数据中心AI训练周期都致力于推荐模型(Acun等人,2021年)。尽管它们很重要,但对于DLRM模型如何扩展,人们的认识有限。识别和理解模型的扩展属性对于设计服务于这些模型的人工智能系统和基础设施至关重要。我们的论文是首次尝试解决这一差距。

图片名称

图1 深度学习总体上,特别是基于深度学习的推荐模型近年来在参数规模上经历了指数级的增长(Sevilla等人,2021年;Mudigere等人,2022年;Lian等人,2021年)。请注意不同领域增长趋势的差异。

最近的工作(Hestness等人,2017年;Kaplan等人,2020年;Hernandez等人,2021年;Henighan等人,2020年;Gordon等人,2021年;Zhai等人,2021年;Brown等人,2020年;Hestness等人,2019年;Prato等人,2021年;Bahri等人,2021年)显示,在包括语言建模、机器翻译、视觉变换器、迁移学习和其他自回归模型在内的广泛领域中,高度可预测的扩展趋势。然而,推荐系统如何扩展尚不清楚

此外,先前的研究在他们的扩展分析中没有包括embedding参数。embedding参数占推荐模型容量的大部分(>90%),因此,研究它们对模型质量性能扩展的影响至关重要。

我们在这项工作中的目标是表征深度学习推荐模型的扩展规律,特别是点击率(CTR)预测模型。CTR模型是推荐系统中最重要的机器学习任务之一,为数十亿用户提供个性化体验。通过研究许多不同模型规模N(跨越三个数量级)、计算预算C(跨越五个数量级)和数据集规模D(跨越三个数量级),我们展示了一个简单的幂律加常数可以解释CTR模型在一个周期内的性能与N、D和C之间的关系。

图11概述了一个典型的DLRM架构。在高层次上,有两个主要组件可以扩展:嵌入表和多层感知器(MLP)。

图片名称

图11 深度学习模型架构的示意图。

  • 嵌入表(embedding table)可以通过垂直扩展(增加每个表的嵌入行数)或水平扩展(扩展嵌入的维度)来扩展。
  • MLP层可以通过加宽或加深层来扩展。

我们研究了在四种扩展方法上的推荐系统的经验扩展规律:扩展嵌入表(垂直和水平)、扩展顶层MLP层(我们称之为总架构层)以及扩展所有MLP层(包括通过增加宽度来扩展密集层、总架构层和密集-稀疏交互层)。

1.1 摘要

我们对CTR预测模型的关键发现如下:

幂律加常数:我们观察到,在训练一个周期后,推荐模型的性能(测试损失)与资源投入遵循幂律加常数关系(αx−β + γ)(见图2)。资源包括数据集大小、模型大小和计算浮点运算量。幂律加常数函数中的常数γ标识了扩展的极限:即我们假设可以无限扩展资源时能达到的最佳水平。表1显示了不同扩展方案和不同资源投入情景下经验收集的α、β和γ值。

图片名称

图2 推荐系统的性能随着数据规模、模型规模以及训练计算量(FLOPs)的增加而呈现出幂律增长加上一个常数的特性:

  • (a) 通过增加多层感知机(MLP)层的宽度来扩展模型规模。
  • (b) 通过增加顶层网络层的宽度来扩展模型规模。
  • (c) 通过增加嵌入表的维度来扩展模型规模。
  • (d) 通过增加嵌入表中的行数来扩展模型规模。

幂律函数的两个阶段:如图3所示,幂律函数可以被一个高回报阶段和随后的低回报/饱和阶段所特征化。收益递减点是过渡发生的地方。如果使用幂律函数来比较两种扩展方案的效率,需要关注幂律函数的指数(β)以及操作阶段。指数较大且衰减更快的幂律函数更适合扩展。然而,处于饱和阶段的操作方案无论其指数如何,都不如非饱和方法。

图片名称

图3 幂律函数特征曲线

性能强烈依赖于数据集大小和计算能力,而与模型参数大小关系较弱:模型性能强烈依赖于训练集中的样本数量(D)和计算浮点运算量(C),而与参数数量(P)关系较弱。

扩展的极限:幂律趋势中的常数(γ)捕获了不可减少的错误。这意味着通过扩展资源(模型参数、数据大小和/或计算浮点运算)到无限大所能达到的最佳归一化测试损失将饱和在0.98。

数据扩展效率:所有扩展方案的数据扩展效率相似(β在[0.09, 0.12]范围内),并且对模型大小不敏感。所有扩展方案都处于高回报阶段。根据图4中显示的幂律指数,可以看出垂直扩展嵌入表(V)比水平扩展嵌入表(H)更好,而水平扩展嵌入表又比顶层MLP层扩展(O)更好,后者又比MLP层扩展(M)在数据扩展效率方面更好。这意味着在固定参数预算下,通过同时扩展数据集大小和模型大小来扩展模型性能,对参数扩展方法有些敏感。

图片名称

图4 不同模型扩展方案中的数据扩展效率。尽管每条线显示了在固定模型规模下的数据扩展趋势,每个图表中的虚线及其对应的方程捕捉了帕累托最优曲线。如图所示,不论扩展方案如何,当模型和数据一起扩展时,所有模型或多或少具有相同的幂律扩展特性(幂指数为-0.1),这意味着所有模型扩展方案中的数据扩展效率是相同的。

计算扩展效率:所有扩展方案的计算扩展效率相似(β在[0.12, 0.15]范围内)。所有扩展方案都处于高回报阶段。根据图5中显示的幂律指数,可以看出MLP扩展比顶层扩展更计算效率高,顶层扩展又略比嵌入维度扩展更计算效率高。

图片名称

图5 计算扩展效率 - 两种视角:(a) 同时扩展计算量(FLOPs)和数据集规模 (b) 同时扩展计算量(FLOPs)和模型规模。

参数扩展效率:不同扩展方案的参数扩展效率不同(α在[0.4, 7.6]范围内)。然而,所有扩展方案都处于饱和阶段(见图6)。对于一个工业级模型,所有参数扩展技术在参数扩展效率方面相似。这意味着在固定数据预算下,通过增加模型中的参数数量来扩展模型性能,对参数扩展方法不敏感。

图片名称

图6 不同参数扩展方案中的参数扩展效率。在所有扩展方案中可见的模式是,准确性与参数规模之间的弱依赖性。

2. 扩展效率

在给定固定预算/资源的情况下,主要问题是哪种扩展方案可以提供更好的投资回报率(ROI)。我们针对三种不同的资源,即数据、参数和计算浮点运算量,对扩展效率进行了表征。我们展示了所有扩展方案在数据扩展和计算扩展效率上都相似,并且仍有改进空间。另一方面,参数扩展效率非常低,因为它已经超出了收益递减点。

2.1 数据扩展效率

为了研究数据扩展效率,我们在广泛范围内(三个数量级)扩展数据集大小,同时保持模型大小不变。从概念上讲,线的斜率捕捉了模型在面对问题时吸收新信息的有效性。结果如图4所示。每个图表捕捉了不同的模型扩展方案(垂直嵌入、水平嵌入、顶层和MLP扩展)。

正如所有扩展策略所示,推荐系统的性能强烈依赖于数据集大小,而与参数/模型大小关系较弱。这是违反直觉且非常有趣的。我们继续看到在过去5年中嵌入表的大小和嵌入表的数量不断增长。这些结果意味着工业级模型在过拟合范围内运行。

虽然图4中的每条线显示了固定模型大小的数据扩展趋势,但每个图表中的虚线捕捉了帕累托前沿线。如图所示,无论扩展方案如何,所有模型都有类似的幂律趋势。这意味着所有模型扩展方案的数据扩展效率相似。

摘要 推荐系统的性能强烈依赖于数据大小,而与参数/模型大小关系较弱。与大规模语言模型(Hestness等人,2017年;Kaplan等人,2020年)相比,其中性能与模型大小强烈相关,推荐系统对模型大小的敏感性较弱,这在设计下一代推荐系统时需要考虑。所有扩展方案的数据扩展效率相似。这意味着所研究的模型以相同的速率从新数据中吸收信息,无论其背后的扩展方案如何。输入粒度/词汇量大小对扩展趋势没有显著影响。

2.2 计算扩展效率

我们的目标是表征捕捉模型质量性能与计算浮点运算量之间关系的线的斜率。从概念上讲,线的斜率捕捉了模型在面对问题时对新计算浮点运算量吸收新信息的速度。在计算效率分析中,我们保持数据(或模型大小)不变,同时扩展模型大小(或数据大小)。当我们扩展模型大小或数据大小时,我们间接地增加了计算浮点运算量。还有另一种方法可以在不改变数据大小或模型大小的情况下扩展计算浮点运算量,那就是训练更长时间的模型。我们留待未来的工作。

图5显示了这种扩展的结果。每个图表捕捉了不同的模型扩展方案(水平嵌入、顶层和MLP扩展。注意我们没有显示垂直扩展的计算扩展,因为增加行数对计算浮点运算量没有任何影响。)如图所示,所有扩展策略中,推荐系统的性能强烈依赖于计算浮点运算量的数量。我们以两种不同的方式呈现相同的结果:(1)通过模型扩展增加计算浮点运算量,同时保持数据大小不变(图5,顶行)。(2)或者,我们通过数据扩展增加计算浮点运算量,同时保持模型大小不变(图5,底行)。

图片名称

图7 何时选择垂直扩展(Vertical Scaling)与水平扩展(Horizontal Scaling)?

图片名称

图8 何时选择顶层网络扩展(Over-arch Scaling)与多层感知机扩展(MLP Scaling)?

图片名称

图9 嵌入维度对表大小的敏感性:每条线展示了不同的垂直扩展因子(VSF)。大的蓝色圆圈显示了每条线的最小损失。然而,曲线的拐点在64处始终如一地出现。

同时扩展计算和数据 图5顶行显示了通过扩展模型大小对性能的计算浮点运算量扩展影响。在每条线内,我们保持数据大小不变,同时通过模型大小扩展增加计算浮点运算量。注意不同扩展方案的幂律方程的幂之间的轻微差异。看来,MLP扩展略优于顶层扩展,顶层扩展又略优于嵌入维度扩展,在相同增加的计算预算下提高模型准确性(0.15对-0.14对-0.12)。此外,如图所示,在固定的计算预算下,更大的数据集大小会带来更好的性能。同时,在固定的准确性目标下,更小的数据集大小更具计算效率。

同时扩展计算和模型大小 图5底行显示了通过扩展数据大小对性能的计算浮点运算量扩展影响。在每条线内,我们保持模型大小不变,同时通过扩展数据集大小增加计算浮点运算量。如图所示,在固定的计算预算下,更大的模型获得更低的性能。同时,在固定的准确性目标下,更小的模型大小更具计算效率。虚线捕捉了在每个计算预算下获得最佳性能的最佳模型大小。图5(a)和(b)基本上是同一组点,从两个不同的视角呈现(一次基于数据集大小对点进行分组,一次基于模型大小进行分组),因此,帕累托最优线(虚线)将是相同的。

摘要 在固定的计算预算下,需要在在更大的数据集大小上训练模型或训练具有更多参数的模型之间做出权衡。我们观察到,在固定的计算预算下,具有更多参数的模型显示出更低/更差的性能,而用更大的数据集大小训练的模型显示出更好的性能。从计算效率的角度来看,我们观察到,在第一个周期,MLP扩展优于顶层扩展,顶层扩展优于水平扩展嵌入表。注意,垂直扩展嵌入表对计算浮点运算量没有任何影响。

3. 敏感性分析

3.1 如何有效地按行数扩展嵌入维度?

图9展示了随着我们在表中增加行数(增加垂直扩展因子)时最佳嵌入维度的变化情况。如图所示,随着垂直扩展因子的增大,最佳嵌入维度趋于变小(对于0.125×和0.25×的垂直扩展因子,256是最佳嵌入维度,而对于0.5×、1×和2×的垂直扩展因子则是128)。然而,最佳性能和最具资源效率的嵌入维度并不一定是相同的。如图所示,曲线的拐点(收益递减点)对于所有表大小在嵌入维度=64左右开始出现。这意味着从资源效率的角度来看,嵌入维度的资源高效设计点对垂直扩展因子的依赖性较弱。这一结果暗示,从资源效率的角度来看,超过64将不会提供高投资回报率。

3.2 训练与测试

如图10所示,训练数据的学习曲线比测试数据的学习曲线更陡峭(-0.20对比-0.12)。两条曲线都捕捉了在相同数据上训练的相同模型的扩展,但在两个不同的数据集上进行了评估。左侧的曲线在训练集的数据点上进行了评估,右侧的模型在测试集上进行了评估。这种差距意味着模型从额外的训练点吸收的信息在预测来自相同分布(训练分布而非测试分布)的数据时更有效,这是意料之中的。

图片名称

图10 training loss与testing loss上的数据扩展效率。请注意训练曲线和测试曲线之间幂律指数的差异。

4. 讨论

特征化不同扩展方案的幂律曲线提供了每种扩展技术的数据效率、参数效率和计算效率的见解。人们可以通过比较它们在三个不同轴(数据、计算、参数)上的幂律曲线,潜在地比较任何成对扩展技术的效率。表2显示了这种比较的结果。如图所示,没有单一的扩展技术在所有扩展效率维度上都脱颖而出。例如,水平嵌入扩展(H)在数据效率方面优于MLP扩展(M),但在计算效率方面则较差。

最近的分析显示,在短短5年多的时间里,工业级推荐模型增长了四个数量级(Mudigere等人,2022年;Lian等人,2021年)。幂律分析支持了过去的趋势。当按幂律趋势近似时,参数扩展的指数幅度最大。然而,工业级推荐模型已经过于庞大且饱和,因此进一步的参数增长不会从资源效率的角度提供高投资回报率。

与此同时,数据扩展和计算扩展仍然处于高收益递减的范围内。这意味着在更好的模型架构出现之前,应该将数据扩展视为一流的扩展方法。话虽如此,我们应该意识到,由于数据保留的限制,数据扩展从长远来看(以原始形式)并不是一种可持续的方法。

为了克服这一点,我们需要考虑替代方案。以下是一些建议,其中一些我们将作为下一步探索:(1) 记录更多数据,特别是通过记录更多负样本和减少正样本下采样;(2) 探索使用历史数据作为教师模型来训练模型,以合成从历史数据中学习到的有价值信息,供更近期的模型使用;(3) 水平扩展数据量而不是垂直扩展,即增加更多特征而不是增加更多行。

扩展法则也可以用来指导长期硬件开发。硬件设计通常提前3-5年开始,依靠对未来3-5年模型增长的准确预测。我们的分析表明,展望未来,硬件不需要增长来支持更大的模型。相反,我们需要设计硬件/系统来支持使用更大的数据集进行训练。

另一个关键的收获是,幂律加常数方程中的常数在0.98(以归一化熵度量的损失)处有界。这个常数捕获了在无限扩展极限下模型的准确性,可以用作衡量工业级模型与无限极限的距离的指南。在NLP领域的先前分析表明,模型架构的创新(例如,从LSTM过渡到Transformer)可以改善幂律的系数(即α.x−β + γ中的α),并向下移动曲线,但它们对幂律的指数(β)几乎没有影响(Hestness等人,2017年;Brown等人,2020年)。这表明模型架构探索是性能增长的短期解决方案。长期解决方案将需要改善幂律趋势的指数。至今,是什么控制了幂律的斜率仍然是一个开放的研究问题。幂律曲线的斜率似乎对每个领域都是独特的,与模型架构无关(Hestness等人,2017年;2019年)。先前的分析表明,改善数据分布可以改善幂律的指数(Bahri等人,2021年)。最近的工作表明,通过有效的数据修剪,我们可以打败幂律并实现指数级扩展(Sorscher等人,2022年)。

https://arxiv.org/pdf/2208.08489

kuaishou在《Conditional Quantile Estimation for Uncertain Watch Time in Short-Video Recommendation》提出了CQE预估模型。

摘要

准确预测观看时间(watch time)对于优化短视频平台的推荐和用户体验至关重要。然而,现有方法通常估计单一的平均观看时间(average watch time),往往无法捕捉用户参与模式固有的不确定性和多样性。在本文中,我们提出了条件分位数估计(Conditional Quantile Estimation, CQE)框架来模拟观看时间的全部条件分布。利用分位数回归,CQE为每对用户-视频对表征复杂的观看时间分布,提供了一种灵活全面的了解用户行为的方法。我们进一步设计了多种策略来结合分位数估计,以适应不同的推荐场景和用户偏好。大量的离线实验和在线A/B测试证明了CQE在观看时间预测和用户参与建模方面的优越性。特别是,CQE在一个服务数亿日活跃用户的短视频平台上的在线部署,已经产生了关键评估指标的显著改进,包括活跃天数、活跃用户数、参与持续时间和视频观看次数。这些结果突出了我们提出的方法在增强用户体验和短视频推荐系统整体性能方面的实际影响。代码将在发表后发布。

1 引言

在线视频平台的快速增长彻底改变了用户消费数字内容的方式,短视频已成为最受欢迎的格式之一[3, 9, 10, 23]。推荐系统在这些平台中扮演着至关重要的角色,通过提供个性化的内容推荐来增强用户参与度和满意度。与传统的推荐问题(例如,电子商务和新闻推荐)不同,在短视频推荐中,衡量用户兴趣和参与度的关键指标是观看时间,它全面反映了用户的偏好和参与度。因此,准确预测观看时间对于优化推荐策略和改善用户体验至关重要。

然而,由于用户行为固有的不确定性和异质性,预测观看时间仍然是一个具有挑战性的任务。在现实世界场景中,通常不可能在相同条件下获得同一用户-视频对的多次观看时间观察,因为用户很少在完全相同的情境下多次观看同一视频。这一限制使我们无法直接从数据中估计真实的条件观看时间分布。

现有方法[16, 20–22]通常专注于预测观看时间的单点估计(例如,均值或中位数),忽视了观看时间分布的复杂性和多样性。这些方法未能充分捕捉不同用户-视频对之间的行为差异,导致推荐性能受限。使用单一平均值来表征这些复杂分布模式的不足,突出了对观看时间的全部条件分布进行建模的必要性。

图片名称

图1 条件观看时间分布和一些个性化推荐策略的示意图。

  • 图(a) CQE模型为不同的用户-视频对预测的条件观看时间分布,展示了用户参与模式的异质性和复杂性。
  • 图(b) 保守估计策略在预期观看时间相似时优先选择具有较高下分位数的视频,以提高用户满意度。
  • 图(c) 动态分位数组合策略适应用户流失风险和视频新颖性,对高流失风险用户或不熟悉的视频使用较低分位数,对低流失风险用户或熟悉的视频使用较高分位数。
  • 图(d) 期望估计策略通过考虑整个观看时间分布,提供全局优化视角。

为了应对这些挑战,我们提出了条件分位数估计(Conditional Quantile Estimation, CQE)框架,该框架学习预测给定用户-视频对及其相关上下文,观看时间的条件分布。如图2所示,CQE利用分位数回归技术估计观看时间分布的多个分位数,提供了一个全面了解潜在用户参与模式的视角。如图1(a)所示,我们的CQE模型预测的不同用户-视频对的条件观看时间分布,在形状、峰值位置和离散水平上表现出显著的多样性。这种异质性反映了用户偏好和参与在不同情境下固有的不确定性和可变性。

图片名称

图2 提出的条件分位数估计(CQE)模型及其训练损失的示意图。

  • 图2左侧:CQE模型架构,它以用户、视频和上下文特征为输入,并输出观看时间的多个分位数估计。
  • 图2右侧:用于模型训练的PinBall loss函数,展示了其对于不同分位数水平($\tau$)的不对称性质,允许模型在整个分布中学习到稳健的分位数估计。

建模观看时间的条件分布对于理解用户参与模式、以及设计有效的推荐策略至关重要。通过考虑观看时间分布的详细特征,我们可以深入了解不同用户群体的多样化观看行为。这种细粒度的理解使我们能够为不同情境和用户偏好量身定制推荐策略。

基于CQE模型,我们设计了三种主要的推荐策略。

  • 保守估计策略(图1(b)):通过在预期观看时间(expected watch times)相似时选择具有较高下分位数(lower quantiles)的视频,优先考虑用户满意度,减少用户参与度下降的风险。
  • 动态分位数组合策略(图1(c)):根据用户流失风险和视频新颖性等因素调整分位数的选择。
    • 对于高流失风险用户或新颖视频,它更多地赋予低分位数权重,确保令人满意的体验,
    • 对于低流失风险用户或熟悉视频,则更多地赋予高分位数权重,可能提供更具吸引力的推荐。
  • 期望估计策略(图1(d)):提供了一个全局优化视角,旨在考虑整个观看时间分布,最大化整体用户参与度。这些策略的多样性使我们的推荐系统能够适应不同的场景和用户需求,提高个性化推荐和用户体验的质量。

本文的主要贡献如下:

  • 我们提出了CQE框架,采用分位数回归技术模拟短视频推荐中观看时间的条件分布,为捕捉用户行为的不确定性提供了一种有原则的方法。
  • 我们设计了多种策略来结合CQE的分位数估计,适应不同的推荐场景和用户偏好,增强了推荐系统的个性化和多样性。
  • 我们进行了广泛的离线实验和在线A/B测试,证明了CQE在观看时间预测和用户参与建模方面的优越性,显著提升了关键评估指标,包括活跃天数、活跃用户数、参与持续时间和视频观看次数。

2 相关工作

2.1 视频推荐和观看时间预测

视频推荐系统已经发展到满足个性化内容传递的日益增长的需求。随着YouTube和TikTok等在线视频平台的出现,准确推荐视频非常重要,因为它对用户留存和满意度有着重大影响[3, 9, 10, 16, 23]。 在视频推荐系统的领域中,准确预估在观看时间上的用户参与度是一个关键挑战。观看时间作为衡量用户对推荐视频兴趣和参与度的关键指标。

  • 最初的研究[2]集中在增强YouTube平台的视频推荐,引入了加权逻辑回归(WLR)技术来预测观看时间。这种方法自此被认为是该领域的先进方法。然而,WLR的适用性并不直接适用于全屏视频推荐系统,并且可能会遇到由于其加权计算系统而产生的显著偏差问题。
  • D2Q[20]通过实施后门调整和在不同持续时间组下建模观看时间分位数来减轻持续时间偏差。
  • $D^2Co$[21]通过使用纠正持续时间偏差和嘈杂观看的模型来解决视频推荐观看时间的偏差问题,提供更准确的用户兴趣度量。
  • DVR[22]引入了一种称为WTG(观看时间增益)的新指标,并使用对抗学习来学习无偏的用户偏好。我们的方法可以无缝集成到各种持续时间去偏差方法中,从而显著提高它们的预测准确性。
  • TPM[8]将任务分解成一系列以树状结构排列的相互连接的分类问题。尽管TPM考虑了观看时间的变异性,但它没有像我们的方法那样捕捉到观看时间分布的全部范围。

观看时间预测任务还面临物理时长偏差(duration bias)的关键问题[8, 20–22]。这种偏差表明,用户更愿意花更多时间观看更长物理时间的视频(longer-duration videos),这使得平均观看时间偏向更长的内容。这种偏好使得在预测用户参与度时,比起更短的替代品,更复杂的任务变得更加复杂。我们的方法可以无缝集成到大多数持续时间去偏差方法中,显著提高它们的预测能力,如表3所示。

表3

2.2 分位数回归(Quantile Regression)

分位数回归是一种在统计学、计量经济学和生态学中广泛使用的回归分析类型[7]。与传统的均值/线性回归(专注于估计平均结果)不同,分位数回归(Quantile Regression)旨在估计随机变量的条件中位数和其他分位数。这一灵活的特性提供了对变量分布效应的更全面理解,这些效应可能是均值回归可能忽视的[1, 18, 19]。在机器学习的背景下,分位数回归已经超越了线性模型。

  • 代表性方法[13, 14, 17]将分位数回归整合到神经网络中,提供了在非线性和高维环境中预测条件分位数的手段。
  • QRF[11]进一步在随机森林中部署分位数回归,进一步展示了其适应性和在不同模型中增强预测能力。

本文提出的解决方案旨在将分位数回归的原则整合到视频推荐系统的领域。通过使这种统计方法适应观看时间的不确定性和可变性,我们提出了一种新颖的应用,增强了推荐系统的预测性能。这一进步促进了对用户参与度的更细致的理解,朝着更个性化和令人满意的用户体验发展。

3 方法

3.1 问题阐述

在视频推荐系统中,我们的主要目标是预测用户参与度,通常以观看时间来衡量。设:

  • $(u, v)$ 表示在上下文c下的一对用户-视频。
  • $ \phi(u, v, c) $,定义一个特征映射函数,它提取一个 $ n $ 维特征向量 $ x \in \mathbb{R}^n $。这个向量包含了用户特征、视频属性、上下文信息和历史交互数据。
  • $ W $ 为表示观看时间的随机变量

我们的目标是:估计给定输入特征下,$W$的概率分布:

\[P(W | x) = P(W | \phi(u, v, c))\]

…(1)

与传统方法[2, 16, 20–22]不同,这些方法专注于估计单一的点(例如,期望观看时间 $ E[W \mid x] $),我们的目标是表征整个条件分布。这使我们能够捕捉用户参与模式固有的不确定性和可变性,提供对潜在用户行为更全面的理解。

3.2 条件分位数估计模型

为了捕捉观看时间的全部分布,我们提出了条件分位数估计(Conditional Quantile Estimation, CQE)模型。如图2的左半部分所示,这种方法允许我们同时估计观看时间分布的多个分位数,提供对潜在用户参与的更全面视图。

设:

  • $ {\tau_1, \tau_2, …, \tau_N} $ 是一组预先定义的 $ N $ 个分位数水平,其中 $ \tau_i = \frac{i}{N+1} $。

我们的CQE模型旨在估计给定输入特征 $ x $ 的每个分位数水平对应的观看时间值 $ {t_{\tau_1}, t_{\tau_2}, …, t_{\tau_N}} $:

\[\{t_{\tau_1}, t_{\tau_2}, ..., t_{\tau_N}\} = \psi(x; \theta)\]

…(2)

其中:

  • $ \psi(\cdot) $ 是一个由 $ \theta $ 参数化的神经网络。

为确保分位数估计的单调性,我们实现了以下架构:

\[h = f(x; \theta_f) \\ d = \text{ReLU}(g(h; \theta_g)) \\ t_{\tau_i} = \sum_{j=1}^{i} d_j, \quad \text{对于} \ i = 1, ..., N\]

…(3)

这里:

  • $ f(\cdot) $ 和 $ g(\cdot) $ 是神经网络组件,
  • $ h $ 是中间隐藏表示,
  • $ d $ 是一个非负元素向量。

最终的分位数估计 $ t_{\tau_i} $ 通过累积求和获得,自然地强制执行排序约束:

\[t_{\tau_1} \leq t_{\tau_2} \leq ... \leq t_{\tau_N}\]

这种公式允许我们的模型捕捉输入特征和观看时间分位数之间的复杂非线性关系,同时保持分位数函数的单调性属性。

为了清晰概述我们的CQE方法,我们在算法1中展示了算法伪代码。

图片名称

算法1

CQE模型的计算复杂度与传统的点估计方法相当,仅因估计多个分位数而略有增加。在大规模推荐系统中,去重用户(unique user)和item的数量经常达到数亿甚至数十亿。这些用户和item通常由高维嵌入表示,这些嵌入使用它们各自的ID检索。相比之下,有效估计所需的分位数数量通常在100左右。因此,CQE的额外计算成本与处理大量特征所需的大量计算相比可以忽略不计。

3.3 训练目标

为了有效地训练我们的CQE模型,我们采用了适合分位数回归任务的PinPall loss函数。对于单一分位数水平 $ \tau $,PinPall loss定义为:

\[L_\tau(y, t_\tau) = \begin{cases} \tau (y - t_\tau) & \text{if } y \geq t_\tau \\ (1 - \tau) (t_\tau - y) & \text{otherwise} \end{cases}\]

…(4)

其中:

  • $ y $ 是实际观看时间
  • $ t_\tau $ 是预测的第 $ \tau $ 个分位数。

正如图2的右半部分所示,PinBall loss函数具有几个关键属性:

  • 不对称性:loss围绕真实值$y$是不对称的,不对称的程度由 $ \tau $ 决定。
  • 线性:loss随着预测值和实际值之间的距离线性增加,但在 $ y $ 的两侧斜率不同。
  • 分位数特定的惩罚:对于 $ \tau > 0.5 $,过高估计比过低估计受到更重的惩罚,反之亦然 $ \tau < 0.5 $。

这些属性使得PinBall loss特别适合分位数估计。对于我们的多分位数模型,我们聚合了所有分位数水平上的PinBall loss:

\[L_{QR} = \sum_{i=1}^{N} L_{\tau_i}(y, t_{\tau_i})\]

…(5)

这个聚合的损失函数鼓励模型在整个分布中学习准确的分位数估计,捕捉每对用户-视频的潜在观看时间的全谱(full spectrum)。

3.4 推理策略(Inference)

一旦我们训练了CQE模型来估计观看时间分布的多个分位数,我们就可以采用不同的推理策略。我们提出了三种主要方法:保守估计、动态分位数组合和条件期望。每种策略都提供了不同的优势,并适用于特定的推荐场景。

3.4.1 保守估计(Conservative Estimation)

在用户满意度至关重要且高估成本较高的环境中,我们采用保守估计(CSE)策略。这种方法侧重于观看时间分布的下分位数,以确保令人满意的用户体验。

如图1(b)所示,当预期观看时间相似时,我们通过选择具有较高下分位数的视频来优先考虑用户满意度。这种策略有助于降低用户因过于乐观的推荐而失望的风险。

正式地,我们选择一个较低的分位数 $ \tau_{\text{low}} $(例如 $ \tau_{\text{low}} = 0.25 $),并使用其对应的观看时间预测:

\[\widehat{y}_{\text{CSE}} = t_{\tau_{\text{low}}}\]

这种策略有助于降低用户因过于乐观的推荐而失望的风险,因为实际观看时间很可能超过这个保守估计。

3.4.2 动态分位数组合(Dynamic Quantile Combination)

为了适应不断变化的用户偏好和内容特征,我们提出了一种动态分位数组合(DQC)策略。这种方法根据上下文因素结合不同分位数的预测。

如图1(c)所示,DQC策略根据用户的流失风险和视频新颖性调整分位数的选择。

  • 对于高流失风险用户或新颖视频,它更多地赋予低分位数权重,确保令人满意的体验,
  • 对于低流失风险用户或熟悉的视频,则更多地赋予高分位数权重,可能提供更具吸引力的推荐。

这种动态方法允许系统根据用户当前状态和内容熟悉度,在安全推荐和可能更具回报的推荐之间进行平衡。

设 $ k \in [0, 1] $ 为上下文依赖的混合参数。我们计算最终预测为:

\[\widehat{y}_{\text{DQC}} = k \cdot t_{\tau_{\text{low}}} + (1 - k) \cdot t_{\tau_{\text{high}}}\]

…(7)

其中:

  • $ t_{\tau_{\text{low}}} $ 和 $ t_{\tau_{\text{high}}} $ 分别代表保守和乐观的分位数预测。

混合参数$k$可以根据用户风险档案、视频新颖性或平台目标等因素进行调整。例如,对于新用户或新颖内容,我们可能使用较高的 $ k $(倾向于保守估计),对于老用户或熟悉的内容类型,则使用较低的 $ k $。

3.4.3 条件期望

在我们旨在优化预期观看时间的场景中,我们采用条件期望策略。这种方法通过在预测的分位数之间进行插值来估计平均观看时间。

如图1(d)所示,条件期望估计(CDE)策略提供了一个全局优化视角,旨在通过考虑整个观看时间分布来最大化整体用户参与度

如图2左半部分所示,这些输出的观看时间值示例化了观看时间的分布。为了通过条件期望恢复平均估计,我们面临没有两个连续分位数之间 $ \tau \in (\tau_i, \tau_{i+1}) $ 的输出值的挑战。为了解决这一信息缺失问题,我们使用插值方法来近似条件分布。

我们采用连续分位数之间的线性插值,因此 $ \tau_i $ 和 $ \tau_{i+1} $ 之间的预期观看时间变为 $ (t_{\tau_i} + t_{\tau_{i+1}}) / 2(N + 1) $。对于两个端点,我们假设 $ t_0 = t_{\tau_1} $ 和 $ t_1 = t_{\tau_N} $。然后,我们可以近似整体观看时间的期望为:

\[\widehat{y}_{\text{CDE}} = \frac{1}{2(N + 1)} \left[(t_{\tau_1} + t_{\tau_1}) + (t_{\tau_1} + t_{\tau_2}) + (t_{\tau_2} + t_{\tau_3}) + \ldots + (t_{\tau_{N-2}} + t_{\tau_{N-1}}) + (t_{\tau_{N-1}} + t_{\tau_N}) + (t_{\tau_N} + t_{\tau_N})\right] \\ = \frac{1}{N + 1} \left(\sum_{i=1}^{N} t_{\tau_i} + \frac{t_{\tau_1} + t_{\tau_N}}{2}\right)\]

…(8)

从理论上讲,这种期望通常提供最准确的预测,并且在 $ N \to \infty $ 时将实现最优预测。实证上,我们将在第4.2节的实验分析中验证其优越性。然而,我们提醒读者,这种策略可能不适用于用户对不良推荐不宽容的场景,或者推荐系统需要动态控制的场景

每种推理策略都提供了独特的好处,允许推荐系统适应不同的目标和用户环境。通过利用我们的CQE模型提供的丰富信息,我们可以做出更明智和灵活的推荐决策。

4 实验和结果

在这一部分,我们通过在线A/B测试和离线实验,全面评估了我们提出的条件分位数估计(Conditional Quantile Estimation, CQE)框架。我们的实验设计旨在解决几个相互关联的研究问题:

  • RQ1: 不同的CQE策略在现实世界场景中的表现如何?
  • RQ2: CQE与最先进的方法在观看时间预测和用户兴趣建模方面的比较如何?
  • RQ3: 分位数数量对CQE性能的影响是什么?

通过探讨这些问题,我们希望提供CQE能力的全面视图,它的实际影响,以及它在不同推荐情境中的泛化潜力。

4.1 在线实验(RQ1)

为了验证我们条件分位数估计(CQE)框架在现实世界中的影响,我们在拥有数亿用户的短视频平台上进行了广泛的在线A/B测试。这些实验使我们能够在拥有庞大用户基础的实时环境中,评估所有三种CQE策略的实际有效性。

4.1.1 实验设置

用户被随机分配到对照组和实验组,确保实验组至少分配到每日用户流量的10%,以确保统计显著性。每次在线A/B测试运行时间超过一周,为数据收集和可靠结果分析提供了充足的时间。

推荐系统采用两阶段流程:候选检索后跟排序。我们将CQE模型整合到排序阶段,以预测观看时间,这是推荐过程中的关键组成部分。

我们使用四个关键指标评估推荐系统的性能:

  • 每用户平均观看时间:这个核心指标通过量化用户观看推荐视频的平均时间,直接衡量用户参与度。
  • 总播放次数:这个指标统计所有用户的累计视频播放次数,反映用户与推荐内容的交互频率。
  • 每用户活跃天数:这个指标衡量用户与平台交互的天数,表明用户留存情况。
  • 每日活跃用户数:这个指标表示与平台交互的独特用户数量,反映系统维持和增长其用户群的能力。

4.2 离线实验(RQ2 和 RQ3)

虽然我们的在线A/B测试展示了CQE在现实世界场景中的实际影响,但离线实验允许我们对我们的方法进行更受控和详细的分析。我们的离线实验专注于两个密切相关的任务:观看时间预测和用户兴趣预测。这两项任务共同为评估CQE框架在推荐系统中的有效性提供了全面视角。

观看时间预测直接捕获用户与内容的互动持续时间,这是用户参与度的关键指标。然而,仅预测观看时间可能无法完全捕捉用户兴趣。因此,我们引入了用户兴趣预测任务,它结合观看时间和视频时长,提供对用户兴趣更微妙的度量。这两项任务相辅相成:观看时间预测提供直接的行为预测,而用户兴趣预测帮助我们理解这些行为背后的动机。

4.2.1 观看时间预测

在这个任务中,我们的主要目标是准确预测用户观看时间的持续时间

数据集

遵循TPM[8],我们使用了两个公共数据集:

  • Kuaishou(收集自快手App1)和CIKM16(来自CIKM16杯2)进行我们的实验。虽然CIKM16主要是一个电子商务搜索查询数据集,但我们包括它是为了展示我们的CQE方法在不同推荐情境下的潜在泛化能力。电子商务页面停留时间的预测在模拟用户参与持续时间方面与视频观看时间预测有相似之处,尽管我们承认内容类型和用户行为模式存在差异。在CIKM16数据集中,会话中的每个项目被用作输入的单一特征。

  • Kuaishou数据集包含7,176个用户、10,728个项目和12,530,806次展示;CIKM16数据集包含310,302个会话和122,991个项目,每个会话的平均长度为3.981。

指标。我们使用两个指标来评估模型的性能:平均绝对误差(MAE)和XAUC[20]。

  • MAE:这是评估回归准确性的典型测量方法。表示预测值为 $ \widehat{y} $,真实观看时间为 $ y $,MAE 定义为:
\[\text{MAE} = \frac{1}{N} \sum_{i=1}^{N} \| \widehat{y}_i - y \|\]

…(9)

  • XAUC:评估两个样本的预测是否与它们的真实观看时间顺序相同。它与推荐系统的排序性质很好地对齐。在实践中,预测的相对顺序通常比它们的绝对值更重要,这使得XAUC与我们的研究目标特别相关。它帮助我们评估CQE能否有效捕捉不同内容项目中用户参与度的微妙差异。

基线

为了比较,我们选择了四种最先进的观看时间预测方法,包括WLR(加权逻辑回归)[2]、D2Q(持续时间去混杂分位数)[20]、OR(序数回归)[12]和TPM(基于树的渐进回归模型)[8]。前三种方法是确定性的,而后者引入了不确定性因素,提供了均值和方差的估计。

4.2.2 用户兴趣预测

这个任务结合观看时间和视频时长,提供了一个更全面的用户兴趣指标。通过这样做,我们不仅考虑用户观看视频的时间长度,还考虑这个时间与视频总长度的关系,从而更准确地反映用户真正的兴趣水平。遵循D2Co[21],具体来说,我们定义给定用户-视频对 $(u, v)$ 的用户兴趣为:

\[x = \begin{cases} 1, & \text{if } (d \leq 18s \text{ and } w = d) \text{ or } (d > 18s \text{ and } w > 18s); \\ 0, & \text{otherwise}; \end{cases}\]

…(10)

其中:

  • $ d $ 是视频时长,
  • $ w $ 是观看时间。

我们采用了与D2Co相同的训练配置,并使用了经典的深度推荐模型DeepFM [5]和最先进的推荐模型AutoInt [15]作为我们的底层推荐模型。

数据集。遵循D2Co,我们利用了两个公开可用的真实世界数据集:WeChat3和KuaiRand4。这些数据集来源于著名的短视频平台,即微信看一看和快手。微信数据集包含20,000个用户、96,418个项目、7,310,108次互动。该数据集通过2021年微信大数据挑战赛提供,涵盖了为期两周的微信看一看日志。KuaiRand数据集是新发布的一款来自快手的顺序推荐数据集。如[4]所建议,我们在本研究中使用了其中一个子集KuaiRand-pure。它包含26,988个用户、6,598个项目和1,266,560次互动。

指标。GAUC(Group Area Under Curve)[24]和nDCG@k(排名前k的归一化折扣累积增益)[6]被用作推荐性能的评估指标。

  • GAUC:这个指标是通过在不同用户组之间加权平均ROC曲线下面积(AUC)来计算的,反映了模型对项目进行准确排名的能力。
  • nDCG@k:这个指标基于item的相关性和它们在前k名的位置来衡量推荐列表的增益,提供了对推荐列表顶部item及其排序质量的洞察。

基线。我们使用了D2Co中定义的加权二元交叉熵损失和均方误差损失(MSE)作为我们的基线。二元交叉熵损失定义为

\[L_{CE} = -r \log[\sigma(f(x))] - (1 - r) \log[1 - \sigma(f(x))]\]

其中:

  • $ \sigma $ 是Sigmoid函数,
  • $ r $ 是用户兴趣,由PCR、WTG [22]或D2Co [21]定义。

遵循D2Co,在PCR和WTG中,我们将观看时间少于5秒的所有样本在计算标签值后视为0值。这有助于去除观看时间的噪声。

**默认情况下,我们将:

  • 分位数的数量 $ N $ 设置为100。
  • $ \tau_{\text{low}} $ 的值从0.2、0.25和0.3中经验性选择。
  • 同样,$ \tau_{\text{high}} $ 的值从0.6、0.7和0.8中经验性选择。

4.2.3 实验结果。

我们总结结果如下:

CQE、CDE与其他方法的比较:我们比较了不同方法在观看时间预测任务中的表现,结果列在表4中。TPM和CQECDE在MAE和XAUC指标上都优于其他方法,从而突显了将不确定性纳入模型的重要性。此外,我们的方法在两个指标上与TPM相比表现出更优越的性能,从而强调了采用分位数建模技术的优越性。此外,MAE和XAUC指标之间的一致行为也验证了观看时间估计作为排名指标的可行性。至于用户兴趣预测任务,我们在不同的框架(DeepFM和AutoInt)和各种标签设计(PCR、WTG和D2Co)之间进行比较,结果列在表3中,我们提出的CQECDE在所有情况下一贯优于替代方案,表明CQECDE的鲁棒性和有效性。在优化框架方面,CE通常比MSE表现更好,表明将序数分类信息作为指导的正确性。而且CQECDE可以在所有用户兴趣度量设计(PCR、WTG和D2Co)上改善CE,这意味着所提出的框架可以推广到不同的标签设置。

CQE、CDE中超参数的影响:为了更好地研究提出的CQE框架的特性,我们进一步对分位数数量 $ N $ 进行消融研究,将其值从1变化到500。从理论上讲,更大的 $ N $ 生成更精确的真实期望近似,从而通常实现更好的推荐性能。这归因于更多分位数产生的分布更接近实际分布。在观看时间预测任务的背景下,如图4所示,模型性能随着预测分位数的增加而提高。相反,对于用户兴趣预测任务,观察到(如图5所示)当分位数数量少于10时模型性能相对较弱。超过10之后,结果在0.663左右波动。有趣的是,与观看时间预测任务不同,更多的分位数并不一定带来更好的结果。这种差异表明训练目标与测试集中定义的用户兴趣标签之间存在差距。总的来说,在条件期望策略下增加 $ N $ 可能会提高预测准确性。

总结来说,我们的离线实验通过这两项互补的任务全面展示了CQE方法在预测用户行为和兴趣方面的优越性。观看时间预测任务验证了CQE在直接行为预测方面的准确性,而用户兴趣预测任务进一步证明了CQE有效捕捉更复杂用户偏好的能力。这些任务的结合不仅验证了我们方法的有效性,还突出了CQE框架在解决推荐系统中不同但相关挑战的灵活性和适应性。

#

https://arxiv.org/pdf/2407.12223

huawei团队在《FinalMLP: An Enhanced Two-Stream MLP Model for CTR Prediction》提出了一种FinalMLP方法。

摘要

点击率(CTR)预测是在线广告和推荐系统中的一项基本任务。多层感知器(MLP)作为许多深度CTR预测模型的核心组件,已被广泛认识到,单独使用一个vanilla MLP网络在学习乘法特征交叉方面是低效的。因此,许多双流交叉模型(例如DeepFM和DCN)通过将MLP网络与另一个专用网络集成,以增强CTR预测能力。由于MLP流(MLP stream)隐式地学习特征交叉,现有研究主要集中在增强补充流(complementary stream)中的显式特征交叉。相比之下,我们的实证研究表明,一个经过良好调整的双流MLP模型,简单地结合两个MLP,甚至可以实现令人惊讶的良好性能,这在现有工作中从未被报道过。基于这一观察,我们进一步提出了特征门控(feature gating)和交叉聚合层(interaction aggregation layers),这些层可以轻松地插入以构建增强的双流MLP模型,即FinalMLP。这样,它不仅支持差异化的特征输入,而且有效地融合了两个流之间的流级交互(stream-level interactions)。我们在四个开放基准数据集上的评估结果以及我们工业系统中的在线A/B测试表明,FinalMLP比许多复杂的双流CTR模型具有更好的性能。我们的源代码将在 https://reczoo.github.io/FinalMLP 上提供。

1.引言

点击率(CTR)预测是在线广告和推荐系统(Cheng et al. 2016; He et al. 2014)中的一项基本任务。CTR预测的准确性不仅直接影响用户参与度,而且显著影响商业提供商的收入。CTR预测的一个关键挑战在于学习特征之间的复杂关系,以便模型在罕见特征交叉的情况下仍然能够很好地泛化。多层感知器(MLP),作为深度学习中强大且多功能的组件,已经成为各种CTR预测模型(Zhu et al. 2021)的核心构建块。尽管理论上MLP被认为是通用逼近器,但实践中广泛认识到应用vanilla MLP网络学习乘法特征交叉(例如点积)是低效的(Wang et al. 2017, 2021; Rendle et al. 2020)

为了增强学习显式特征交叉(二阶或三阶特征)的能力,提出了多种特征交叉网络。典型的例子包括因子分解机(FM)(Rendle 2010)、交叉网络(Wang et al. 2017)、压缩交互网络(CIN)(Lian et al. 2018)、基于自注意力的交互(Song et al. 2019)、自适应因子分解网络(AFN)(Cheng, Shen, and Huang 2020)等。这些网络引入了学习特征交叉的归纳偏差,但根据我们在表3中的实验,它们失去了MLP的表达能力。因此,双流CTR预测模型已被广泛采用,如DeepFM(Guo et al. 2017)、DCN(Wang et al. 2017)、xDeepFM(Lian et al. 2018)和AutoInt+(Song et al. 2019),它们将MLP网络和专用特征交叉网络集成在一起,以增强CTR预测。具体来说,MLP流隐式地学习特征交叉,而另一流则以补充方式增强显式特征交叉。由于它们的有效性,双流模型已成为工业部署(Zhang et al. 2021)的流行选择。

尽管许多现有研究已经验证了双流模型相对于单个MLP模型的有效性,但没有一项研究报告了与简单并行组合两个MLP网络的双流MLP模型(称为DualMLP)的性能比较。因此,我们的工作首次努力描述DualMLP的性能。我们在开放基准数据集上的实证研究表明,尽管DualMLP简单,但可以实现令人惊讶的良好性能,这与许多精心设计的双流模型相当甚至更好(见我们的实验)。这一观察激发了我们研究这样一个双流MLP模型的潜力,并进一步将其扩展为CTR预测的简单而强大的模型。

事实上,双流模型可以被视为两个并行网络的集成。这些双流模型的一个优势是每个流可以从不同的角度学习特征交叉,从而互补以实现更好的性能。例如:

  • Wide&Deep(Cheng et al. 2016)和DeepFM(Guo et al. 2017)提出使用一个流来捕获低阶特征交叉,另一个流来学习高阶特征交叉。
  • DCN(Wang et al. 2017)和AutoInt+(Song et al. 2019)主张在两个流中分别学习显式特征交叉和隐式特征交叉。
  • xDeepFM(Lian et al. 2018)进一步从向量级和位级角度增强特征交叉学习。这些先前的结果验证了两个网络流的差异化(或多样性)对双流模型的有效性有重大影响。

与现有的依靠设计不同网络结构(例如,CrossNet(Wang et al. 2017)和CIN(Lian et al. 2018))以实现流差异化的双流模型相比,DualMLP的局限性在于两个流都是简单的MLP网络。我们的初步实验还表明,通过为两个MLP调整不同的网络大小(即,层数或单元数),DualMLP可以实现更好的性能。这一结果促使我们进一步探索如何扩大两个流的差异化,以改善作为基础模型的DualMLP。此外,现有的双流模型通常通过求和或连接的方式结合两个流,这可能浪费了对高级(即,流级)特征交叉进行建模的机会。如何更好地融合流输出成为另一个值得进一步探索的研究问题。

为了解决这些问题,在本文中,我们构建了一个增强的双流MLP模型,即FinalMLP,它在两个MLP模块网络上集成了特征门控和交叉聚合层。更具体地说,我们提出了一个流特定的特征门控层(stream-specific feature gating layer),允许获得基于门控的特征重要性权重进行软特征选择(soft feature selection)。也就是说,特征门控可以通过基于可学习参数、用户特征或item特征的条件来从不同视角计算,分别产生全局、user-specific或item-specific的特征重要性权重。通过灵活选择不同的门控条件特征,我们能够为每个流派生出流特定的特征,从而增强两个流的互补特征交叉学习的差异化特征输入。为了融合流输出与流级特征交叉,我们提出了一个基于二阶双线性融合(Lin, RoyChowdhury, 和 Maji 2015; Li et al. 2017)的交叉聚合层。为了降低计算复杂性,我们进一步将计算分解为k个子组,从而实现高效的多头双线性融合。特征门控和交叉聚合层都可以轻松地插入到现有的双流模型中。

我们的实验结果在四个开放基准数据集上显示,FinalMLP优于现有的双流模型,并达到了新的最先进性能。此外,我们通过离线评估和在线A/B测试在工业环境中验证了其有效性,其中FinalMLP也显示出比部署的基线显著的性能提升。我们设想,简单而有效的FinalMLP模型可以作为未来双流CTR模型发展的新强基线。本文的主要贡献总结如下:

  • 据我们所知,这是第一个实证研究双流MLP模型惊人有效性的工作,这可能与文献中的普遍观点相反。
  • 我们提出了FinalMLP,这是一个具有可插拔特征门控和交叉聚合层的增强型双流MLP模型。
  • 我们在基准数据集上进行了离线实验,并在生产系统中进行了在线A/B测试,以验证FinalMLP的有效性。

2.背景和相关工作

在这一部分,我们简要回顾了CTR预测的框架和代表性的双流模型。

2.1 双流CTR模型的框架

我们在图1(b)中展示了双流CTR模型的框架,它包括以下关键组件。

图片名称

图1 (a) 流特定特征选择的示意图。 (b) 双流CTR模型的通用框架。 (c) 多头双线性融合。

2.1.1 特征嵌入

嵌入是将高维和稀疏的原始特征映射到密集数值表示的常用方法。具体来说,假设原始输入特征是$x = {x_1, \cdots, x_M}$,有M个特征字段,其中:$x_i$是第i个字段的特征。一般来说,$x_i$可以是分类的、多值的或数值特征。每个都可以相应地转换为嵌入向量。感兴趣的读者可以参考(Zhu et al. 2021)以获取有关特征嵌入方法的更多细节。然后,这些特征嵌入将被连接并输入到下一层。

2.1.2 特征选择

特征选择是双流CTR模型框架中的一个可选层。在实践中,特征选择通常通过离线统计分析或通过差异比较的模型训练来执行(Pechuan, Ponce, 和 de Lourdes Mart ´ ´ınez-Villasenor ˜ 2016)。与硬特征选择不同,这项工作中,我们专注于通过特征门控机制进行软特征选择(Huang, Zhang, 和 Zhang 2019; Guan et al. 2021),其目的是获得特征重要性权重,以帮助放大重要特征,同时抑制噪声特征。在这项工作中,我们研究了流特定的特征门控,以实现差异化的流输入。

2.1.3 双流特征交叉

双流CTR模型的关键特点是:采用两个并行网络从不同视角学习特征交叉。基本上,每个流可以采用任何类型的特征交叉网络(例如,FM(Rendle 2010)、CrossNet(Wang et al. 2017)和MLP)。现有工作通常将两种不同的网络结构应用于两个流,以学习互补的特征交叉(例如,显式与隐式,位级与向量级)。在这项工作中,我们首次尝试使用两个MLP网络作为两个流。

2.1.4 流级融合

流级融合是必要的,以融合两个流的输出以获得最终预测的点击概率$\widehat{y}$。假设$o_1$和$o_2$作为两个输出表示,可以表示为:

\[\widehat{y} = σ(w^T F(o_1, o_2))\]

其中:

  • F:表示融合操作,通常设置为求和或连接(concatenation)。
  • w:表示在必要时将输出维度映射到1的线性函数。
  • σ:是sigmoid函数。

现有工作只对流输出进行一阶线性组合,因此无法挖掘流级特征交叉。在这项工作中,我们探索了二阶双线性函数用于流级交叉聚合。

2.1.5 代表性的双流CTR模型

我们总结了一些代表性的双流模型,这些模型涵盖了CTR预测研究的广泛领域:

  • Wide&Deep:Wide&Deep(Cheng et al. 2016)是一个经典的双流特征交叉学习框架,结合了广义线性模型(宽流)和MLP网络(深流)。
  • DeepFM:DeepFM(Guo et al. 2017)通过将wide流替换为FM来扩展Wide&Deep,以显式学习二阶特征交叉。
  • DCN:在DCN(Wang et al. 2017)中,提出了一个交叉网络作为一条流,以显式方式执行高阶特征交叉,而另一条MLP流隐式学习特征交叉。
  • xDeepFM:xDeepFM(Lian et al. 2018)采用压缩交互网络(CIN)以向量级方式捕获高阶特征交叉,并也采用MLP作为另一条流来学习位级特征交叉。
  • AutoInt+:AutoInt(Song et al. 2019)应用自注意力网络来学习高阶特征交叉。AutoInt+将AutoInt和MLP作为两个互补的流集成。
  • AFN+:AFN(Cheng, Shen, 和 Huang 2020)利用对数变换层来学习自适应阶数特征交叉。AFN+以双流方式将AFN与MLP结合。
  • DeepIM:在DeepIM(Yu et al. 2020)中,提出了一个交互机(IM)模块,以高效计算高阶特征交叉。它在两个流中分别使用IM和MLP。
  • MaskNet:在MaskNet(Wang, She, 和 Zhang 2021)中,提出了一个MaskBlock,通过结合层归一化、实例引导掩码和前馈层。并行的MaskNet是一个双流模型,它并行使用两个MaskBlocks。
  • DCN-V2:DCN-V2(Wang et al. 2021)通过更具表现力的交叉网络改进DCN,以更好地捕获显式特征交叉。它在并行版本中仍然使用MLP作为另一条流。
  • EDCN:EDCN(Chen et al. 2021)不是一个严格的双流模型,因为它提出了一个桥接模块和一个调节模块来桥接两个流的隐藏层之间的信息融合。然而,其操作限制了每个流具有相同大小的隐藏层和单元,降低了灵活性。

3.我们的模型

在这一部分,我们首先介绍简单的双流MLP基础模型,DualMLP。然后,我们描述两个可插拔模块,特征门控和交叉聚合层,这些模块构成了我们增强的模型,FinalMLP。

3.1 双流MLP模型

尽管简单,据我们所知,双流MLP模型以前没有被先前的工作报道过。因此,我们首次尝试研究这样一个模型用于CTR预测,称为DualMLP,它简单地将两个独立的MLP网络作为两个流组合起来。 具体来说,双流MLP模型可以表述如下:

\[o_1 = MLP_1(h_1), \\ o_2 = MLP_2(h_2),\]

其中:

  • $MLP_1$和$MLP_2$:是两个MLP网络。两个MLP的大小(关于隐藏层和单元)可以根据数据进行不同的设置。
  • $h_1$和$h_2$:表示特征输入
  • $o_1$和$o_2$:分别是两个流的输出表示

在大多数先前的工作(Wang et al. 2017; Guo et al. 2017; Cheng, Shen, 和 Huang 2020)中,特征输入$h_1$和$h_2$通常设置为相同的,即特征嵌入e的连接(可选地与一些池化操作一起),即,

\[h_1 = h_2 = e\]

同时,流输出通常通过简单的操作(如求和和连接)进行融合,忽略了流级交互。下面,我们将介绍两个可以分别插入到输入和输出中的模块,以增强双流MLP模型。

3.2 Stream-Specific特征选择

许多现有的研究(Guo et al. 2017; Lian et al. 2018; Wang et al. 2017; Song et al. 2019)强调了结合两种不同特征交叉网络(例如,隐式与显式,低阶与高阶,位级与向量级)的有效性,以实现准确的CTR预测。我们的目标不是设计专门的网络结构,而是通过流特定的特征选择来扩大两个流之间的差异,从而产生差异化的特征输入

受MMOE(Ma et al. 2018)中使用的门控机制的启发,我们提出了一个流特定的特征门控模块来软选择流特定的特征,即,为每个流不同地重新加权特征输入。在MMOE中,门控权重是根据特定任务的特征来重新加权专家输出的。同样,我们通过基于可学习参数、用户特征或item特征的条件来从不同视角进行特征门控,分别产生全局、user-specific或item-specific的特征重要性权重。

具体来说,我们通过上下文感知的特征门控层进行流特定的特征选择,如下所示。

\[g_1 = Gate_1(x_1), \quad g_2 = Gate_2(x_2), \\ h_1 = 2\sigma(g_1) \odot e, \quad h_2 = 2 \sigma(g_2) \odot e,\]

…(3)(4)

其中:

  • $Gate_i$:表示基于MLP的gating network
  • $x_i$:stream-specific的条件特征输入
  • $g_i$:逐元素门控权重输出
  • $\odot$: 逐元素乘(element-wise produc)

注意,从user/item特征集或将其设置为可学习参数中选择$x_i$是灵活的。通过使用sigmoid函数σ和一个乘数2将它们转换为[0, 2]范围内的值,平均值为1,我们可以获得特征重要性权重。给定连接的特征嵌入e,我们可以通过逐元素乘积⊙获得加权特征输出$h_1$和$h_2$。

我们的特征门控模块允许通过从不同视角设置条件特征$x_i$来为两个流制作差异化的特征输入。例如,图1(a)展示了一个关于user-和item-specific特征门控的案例,它分别从用户和item的视角调节每个流。这减少了两个相似MLP流之间的“同质”学习,并能够实现更互补的特征交叉学习。

3.3 Stream-Level交叉聚合

3.3.1 双线性融合(Bilinear Fusion)

如前所述,现有工作大多采用求和或concatenation作为fusion layer,但这些操作未能捕捉流级特征交叉。受计算机视觉领域广泛研究的bilinear pooling启发(Lin, RoyChowdhury, 和 Maji 2015; Li et al. 2017),我们提出了一个双线性交叉聚合层(bilinear interaction aggregation layer)来使用流级特征交叉来对流输出进行融合。如图1(c)所示,预测的点击概率公式如下。

\[\widehat{y} = \sigma(b + w_1^T o_1 + w_2^T o_2 + o_1^T W_3 o_2),\]

…(5)

其中:

  • $ b \in \mathbb{R}, w_1 \in \mathbb{R}^{d_1 \times 1}, w_2 \in \mathbb{R}^{d_2 \times 1}, W_3 \in \mathbb{R}^{d_1 \times d_2} $:是可学习的权重。
  • $d_1$和$d_2$: 分别表示 $ o_1 $ 和 $ o_2 $ 的维度。
  • $o_1^T W_3 o_2 $:是双线性项(bilinear item), 模拟了$o_1$和$o_2$之间的二阶交互。特别是,当$W_3$是一个单位矩阵时,该项模拟了点积。当将 $ W_3 $ 设置为零矩阵时,它退化为传统的连接融合与线性层,即 $ b + [w_1, w_2]^T [o_1, o_2]$

有趣的是,双线性融合与常用的FM模型也有联系。具体来说,FM通过以下方式为CTR预测对一个m维输入特征向量x(通过一位/多位特征编码和连接)进行二阶特征交叉建模:

\[\hat{y} = \sigma(b + w^Tx + x^T_{\text{upper}} P P^T)x\]

…(6)

其中:

  • $ b \in \mathbb{R}, w \in \mathbb{R}^{m \times 1}, P \in \mathbb{R}^{m \times d} $ 是可学习的权重,其中 $ d \ll m $,upper选择矩阵的严格上三角部分(Rendle 2010)。

正如我们所看到的,当$o_1=o_2$时,FM是双线性融合的一种特殊形式。

然而,当$o_1$和$o_2$是高维时,计算方程(5)的参数密集且计算成本高。例如,要融合两个1000维的输出,$ W_3 \in \mathbb{R}^{1000 \times 1000} $ 占用了100万个参数,其计算变得昂贵。为了降低计算复杂性,我们在下文中引入了我们的扩展多头双线性融合。

3.3.2 多头双线性融合(multi-head bilinear fusion)

多头注意力(multi-head attention)因其能够将来自不同的表征子空间的相同注意力池化(attention pooling)的知识进行组合,非常受欢迎。它在最近大获成功的transformer模型中带来了计算量的减少和一致的性能提升(Vaswani et al. 2017)。受其成功的启发,我们将双线性融合扩展到multi-head版本。具体来说,我们不是直接计算方程(5)中的bilinear项,而是将 $ o_1 $ 和 $ o_2 $ 分别分割成k个子空间:

\[o_1 = [o_{11}, \cdots, o_{1k}], \\ o_2 = [o_{21}, ..., o_{2k}],\]

其中:

  • k 是一个超参数
  • $ o_{ij} $ 表示第i个输出向量的第j个子空间表示(i ∈ {1, 2})。

类似于多头注意力,我们在每个子空间中执行双线性融合(bilinear fusion),将 $ o_{1j} $ 和 $ o_{2j} $ 配对为一组。然后,我们通过求和池化聚合子空间计算,得到最终预测的点击概率:

\[\hat{y} = \sigma(\sum_{j=1}^{k} BF(o_{1j}, o_{2j})),\]

其中:

  • BF 表示方程(5)中不带 sigmoid 激活的双线性融合。

通过与多头注意力相同的子空间计算,我们理论上可以通过 k 的因子减少双线性融合的参数数量和计算复杂性,即从 $ O(d_1d_2) $ 减少到 $ O(\frac{d_1d_2}{k}) $。特别是,当设置 $ k = d_1 = d_2 $ 时,它退化为逐元素乘积融合。如果 $k = 1$,则等于原始的双线性融合。 选择合适的k实现多头学习,以便模型可能获得更好的性能。在实践中,k 个子空间的多头融合在 GPU 中并行计算,这进一步提高了效率。

最后,我们的流特定特征门控和流级交互聚合模块可以插入,以产生增强的双流 MLP 模型,FinalMLP。

3.3.3 模型训练

为了训练 FinalMLP,我们应用广泛使用的二元交叉熵损失:

\[L = -\frac{1}{N} \sum_{y} y \log(\hat{y}) + (1 - y) \log(1 - \hat{y})\]

其中:

  • y 和 $ \hat{y} $ 分别表示来自总共 N 个样本中的每个样本的真实标签和估计的点击概率。

4.实验

4.1 实验设置

数据集

我们使用四个开放基准数据集进行实验,包括 Criteo、Avazu、MovieLens 和 Frappe。我们重用(Cheng, Shen, 和 Huang 2020)预处理的数据,并遵循相同的数据分割和预处理设置。表1总结了数据集的统计信息。

评估指标

我们采用AUC作为CTR预测中最广泛使用的评估指标之一。此外,AUC提高0.1个百分点被认为是CTR预测中的显著改进(Cheng et al. 2016; Cheng, Shen, 和 Huang 2020; Wang et al. 2021)。

基线

首先,我们研究以下单一流显式特征交叉网络。

  • 一阶:逻辑回归(LR)(Richardson, Dominowska, 和 Ragno 2007)。
  • 二阶:FM(Rendle 2010)、AFM(Xiao et al. 2017)、FFM(Juan et al. 2016)、FwFM(Pan et al. 2018)和FmFM(Sun et al. 2021)。
  • 三阶:HOFM (3rd)(Blondel et al. 2016)、CrossNet (2L)(Wang et al. 2017)、CrossNetV2 (2L)(Wang et al. 2021)和CIN (2L)(Lian et al. 2018)。我们特别将最大阶数设置为“3rd”或将交互层数设置为“2L”,以获得三阶特征交叉。
  • 更高阶:CrossNet(Wang et al. 2017)、CrossNetV2(Wang et al. 2021)、CIN(Lian et al. 2018)、AutoInt(Song et al. 2019)、FiGNN(Li et al. 2019)、AFN(Cheng, Shen, 和 Huang 2020)和SAM(Cheng 和 Xue 2021),这些模型自动学习高阶特征交叉。

然后,我们研究相关工作部分介绍的一系列代表性双流CTR模型。

4.2 实现

我们重用基线模型,并基于FuxiCTR(Zhu et al. 2021),一个开源的CTR预测库,实现我们的模型。我们的评估遵循与AFN(Cheng, Shen, 和 Huang 2020)相同的实验设置,将嵌入维度设置为10,批量大小设置为4096,默认MLP大小设置为[400, 400, 400]。对于DualMLP和FinalMLP,我们将两个MLP调整为1到3层,以增强流多样性。我们将学习率设置为1e-3或5e-4。我们通过广泛的网格搜索(平均每模型约30次运行)调整所有研究模型的所有其他超参数(例如,嵌入正则化和dropout率)。我们注意到,通过优化的FuxiCTR实现和充分的超参数调整,我们获得了比(Cheng, Shen, 和 Huang 2020)报告的更好的模型性能。因此,我们报告自己的实验结果,而不是重用他们的数据,以便进行公平比较。为了促进可重复的研究,我们开源了FinalMLP和所有使用的基线代码和运行日志。

MLP与显式特征交叉

尽管特征交叉网络已被广泛研究,但MLP与精心设计的特征交叉网络之间缺乏比较。以前的工作提出了许多显式特征交叉网络,例如交叉网络(Wang et al. 2017)、CIN(Lian et al. 2018)、AutoInt(Song et al. 2019)和AFN(Cheng, Shen, 和 Huang 2020),以克服MLP在学习高阶特征交叉方面的局限性。然而,这些研究中的大多数未能直接将显式特征交叉网络与单独的MLP(即DNN或YouTubeDNN(Covington, Adams, 和 Sargin 2016))进行比较,而只是评估了双流模型变体(例如DCN、xDeepFM和AutoInt+)与MLP的有效性。在这项工作中,我们在表3中进行了这样的比较。我们列举了用于一阶、二阶、三阶和更高阶特征交叉的代表性方法。令人惊讶的是,我们观察到MLP可以与精心设计的特征交叉网络并驾齐驱甚至表现更好。例如,MLP在Criteo、MovieLens和Frappe上实现了最佳性能,而在Avazu上获得了次佳性能,与SAM相比AUC差距仅为0.02个百分点。这一观察结果也与(Wang et al. 2021)中报告的结果一致,其中显示经过良好调整的MLP模型(即DNN)能够获得与许多现有模型相当的表现。

总的来说,MLP所取得的强劲性能表明,尽管其结构简单,在学习乘性特征方面的弱点,MLP在隐式学习特征交叉方面非常具有表现力。这也部分解释了为什么现有研究倾向于将显式特征交叉网络与MLP结合作为双流模型用于CTR预测。不幸的是,其实力从未在任何现有工作中明确揭示过。受到上述观察的启发,我们进一步研究了一个未被探索的模型结构的潜力,该结构简单地采用两个MLP作为双流MLP模型。

DualMLP和FinalMLP与双流基线的比较

按照现有研究,我们对表2中所示的代表性双流模型进行了彻底比较。从结果中,我们有以下观察: 首先,我们可以看到双流模型通常优于表3中报告的单一流基线,特别是单个MLP模型。这符合现有工作,揭示了双流模型可以学习互补特征,从而实现更好的CTR预测建模。 其次,简单的双流模型DualMLP表现出乎意料地好。通过对两个流的MLP层进行精心调整,DualMLP可以实现与其他复杂双流基线相当甚至更好的性能。据我们所知,DualMLP的强劲性能在文献中从未被报道过。在我们的实验中,我们发现通过在两个流中设置不同的MLP大小来增加流网络多样性可以提高DualMLP的性能。

这激发了我们进一步开发一个增强的双流MLP模型FinalMLP。

第三,通过我们在特征门控和融合方面的可插拔扩展,FinalMLP在四个开放数据集上一致地优于DualMLP以及所有其他比较的双流基线。特别是,FinalMLP在Avazu、MovieLens和Frappe上的AUC分别显著超过了现有的最强双流模型0.12个百分点(DCNv2)、0.23个百分点(xDeepFM)和0.11个百分点(AutoInt+)。这证明了我们的FinalMLP的有效性。截至撰写本文时,FinalMLP在PapersWithCode4和BARS5(Zhu et al. 2022)的CTR预测排行榜上均名列第一。

消融研究

在这一部分,消融研究显示了对FinalMLP重要设计的调查。

特征选择和双线性融合的效果

具体来说,我们将FinalMLP与以下变体进行比较:

  • DualMLP:简单的双流MLP模型,简单地将两个MLP作为两个流。
  • w/o FS:没有通过上下文感知特征门控进行流特定特征选择模块的FinalMLP。
  • Sum:在FinalMLP中使用求和融合。
  • Concat:在FinalMLP中使用连接融合。
  • EWP:在FinalMLP中使用逐元素乘积(即哈达玛积)融合。

消融研究结果在图2中呈现。我们可以观察到,当移除特征选择模块或将双线性融合替换为其他常用的融合操作时,性能会下降。这验证了我们的特征选择和双线性融合模块的有效性。此外,我们注意到双线性融合比特征选择扮演了更重要的角色,因为替换前者会导致更多的性能下降。

图片名称

图2

多头双线性融合的效果:我们研究了我们的子空间分组技术对双线性融合的影响。表4显示了通过变化双线性融合的子空间数量(即头数k)来改变FinalMLP的性能。OOM表示在设置中发生了内存溢出错误。我们发现,使用更多的参数(即更小的k)进行融合并不总是导致更好的性能。这是因为适当的k可以帮助模型从多个视角学习流级别的特征交互,同时减少冗余交互,类似于多头注意力。通过在实践中调整k,可以在有效性和效率之间取得良好的平衡。

工业评估:我们进一步在为新闻推荐服务的生产系统中评估FinalMLP,该系统每天为数百万用户提供服务。我们首先使用3天用户点击日志的训练数据(包含12亿个样本)进行离线评估。表5显示了AUC结果。与在线部署的深度BaseModel相比,FinalMLP在AUC上提高了超过一个百分点。我们还与EDCN(Chen等人,2021年)进行了比较,EDCN是最近的一项工作,它通过两流网络之间的交互增强了DCN(Wang等人,2017年)。FinalMLP在AUC上比EDCN额外提高了0.44个百分点。此外,我们测试了从接收用户请求到返回预测结果的端到端推理延迟。我们可以看到,通过应用我们的多头双线性融合,延迟可以从使用1个头的70毫秒减少到使用8个头的47毫秒,实现了与在线部署的BaseModel(45毫秒)相同的延迟水平。此外,通过选择适当数量的头,AUC结果也略有提高。

我们最后报告了在7月18日至22日进行的在线A/B测试的结果,结果如表6所示。FinalMLP平均在CTR上实现了1.6%的改进,CTR衡量的是用户点击次数与新闻总展示次数的比率。在我们的生产系统中,这样的改进是显著的。

#

https://arxiv.org/pdf/2304.00902