《DeepLight: Deep Lightweight Feature Interactions for Accelerating CTR Predictions in Ad Serving》
在 CTR
预测任务上,广义线性模型和 factorization machine : FM
取得了巨大的成功。然而,由于缺乏学习更深层次特征交互的机制,它们的预测能力有限。为了解决这个问题,基于 embedding
的神经网络提出同时包含浅层组件(来学习低阶特征交互)、DNN
组件(来学习高阶特征交互),如 Wide&Deep, DeepFM, NFM, DCN, xDeepFM, AutoInt, AutoFIS
。尽管这些新颖的模型有所改进,但与诸如 LR
或 FM
的简单模型相比,预测速度慢了数百倍。随之而来的一个问题是:我们是否能够为高质量的深度模型提供令人满意的模型延迟和资源消耗,从而用于广告服务中的实时响应?
为实现这一目标,实际解决方案需要应对以下挑战:
(C1)
高质量:用于服务的“瘦身”模型预期与原始的“臃肿”模型一样准确。
(c2)
低延迟:服务延迟应该非常低,以保持高 Query per second: QPS
、以及很少的超时。
(C3)
低消耗:在在线广告服务中,pull
模型的 checkpoint
并将其存储在内存中的内存成本应该很低。
然而,所有现有的基于 embedding
的神经网络,如 DeepFM, NFM, xDeepFM, AutoInt
,仍然专注于增加模型复杂度以实现 (C1)
,同时牺牲 (C2)
和 (C3)
。虽然人们提出了一些方法,如 AutoCross
来提高模型效率,但它们没有采用DNN
框架,未能达到 SOTA
。为了共同解决这些挑战,论文 《DeepLight: Deep Lightweight Feature Interactions for Accelerating CTR Predictions in Ad Serving》
提出了一种有效的模型,即所谓的 field-weighted embedding-based neural network: DeepFwFM
,通过 field pair importance matrix
来改进 FM
模块。DeepFwFM
在经验上与 xDeepFM
一样强大,但效率更高。如下图所示,DeepFwFM
的每个组件都有一个 approximately sparse structure
,这意味着结构剪枝的优势并可能导致更紧凑的结构。通过裁剪 DeepFwFM
的 DNN
组件并进一步压缩浅层组件,得到的深度轻量化结构(即,DeepLight
)大大减少了推理时间,仍然保持了模型性能。
据作者所知,这是第一篇研究裁剪 embedding based
的 DNN
模型以加速广告服务中的 CTR
预测的论文。总之,所提出的 DeepFwFM
在快速的、准确的推断方面具有巨大潜力。与现有的基于 embedding
的神经网络相比,该模型具有以下优点:
为了解决 (C1)
高质量的挑战,DeepFwFM
利用 FwFM
中的 field pair importance
的思想,以提高对低阶特征交互的理解,而不是探索高阶特征交互。值得注意的是,与 SOTA
的 xDepFM
模型相比,这种改进以非常低的复杂性达到了 SOTA
,并且在深度模型加速方面仍然显示出巨大的潜力。
(C1)
高质量的挑战并不是由DeepLight
解决的,而是由基础模型FwFM
解决的。
为了解决 (C2)
低延迟的挑战,可以对模型进行裁剪以进一步加速:
裁剪深度组件中的冗余参数以获得最大的加速。
移除 FwFM
中的 week field pair
以获得额外的显著加速。
由此产生的轻量化结构最终几乎达到一百倍的加速。
为了解决(C3)
低消耗的挑战,可以促进 embedding
向量的稀疏性,并保留最多的 discriminant signal
,这会产生巨大的参数压缩。
通过克服这些挑战(C1-C3
),由此产生的稀疏 DeepFwFM
(即所谓的 DeepLight
),最终不仅在预测方面,而且在深度模型加速方面取得了显著的性能。它在 Criteo
数据集上实现了 46
倍的速度提升,在 Avazu
数据集上达到了 27
倍的速度,而不损失AUC
。源代码参考 https://github.com/WayneDW/sDeepFwFM
。
注:这篇论文的核心是如何对
DeepFwFM
进行压缩,而不是提出DeepFwFM
。事实上,DeepFwFM
就是DNN
作为deep
组件、FwFM
作为wide
组件的神经网络,毫无新意 。此外,
DeepLight
的剪枝方法也是工程上的应用(把训练好的模型中的接近于零的权重裁剪掉),而没有多少创新点。实验部分提示了基于剪枝的模型设计方案:首先设计较大容量的模型从而提升模型的表达能力,然后执行剪枝从而降低
latency
、减少过拟合。这种方案的一个潜在缺点是:训练资源消耗更大。
给定数据集 label
,
二阶多项式模型
其中:
FM
模型
其中:embedding
向量的集合;embedding
向量;embedding
向量的维度。
可以看到,FM
模型将参数规模从
Deep & Cross
通过一系列的 cross
操作来建模高阶交互:
其中:
通过进一步组合 DNN
组件,我们可以获得 xDeepFM
,这是 CTR
预测中的 SOTA
模型。尽管 xDeepFM
在建模特征交互方面具有强大的性能,但众所周知,它比DeepFM
的成本要高得多,并增加了速度较慢。因此我们考虑 FwFM
模型,并提出了 Deep Field-weighted Factorization Machine: DeepFwFM
:
其中:
FwFM
模型,用于建模二阶特征交互。
DNN
的参数(包括权重矩阵和 bias
向量)。
field
的 embedding
向量,field
embedding
向量。
这就是
FwFM
原始论文中 的FwFM_FiLV
,用来建模线性项。a
embedding
向量,
field pair
重要性矩阵,它建模 field pair
的交互强度。
field
。
DeepFwFM
有两个创新:
DeepFwFM
比 xDeepFM
快得多,因为我们不试图通过浅层组件来建模高阶(三阶甚至或更高)的特征交互。尽管 xDeepFM
包含强大的 compressed interaction network: CIN
来逼近任意固定阶次的多项式,但主要缺点是 CIN
的时间复杂度甚至高于 xDeepFM
中的 DNN
组件,导致了昂贵的计算。
DeepFwFM
比 DeepFM
更准确,因为它克服了矩阵分解中的稳定性问题,并通过考虑 field pair importance
导致更准确的预测。
如下图所示,DeepFM
通过 FM
组件中每个 hidden node
与输出节点之间的 weight-1 connection
(即,feature embedding
之间内积的权重为 1
)来建模低阶特征交互,然而,这无法适应局部几何结构,并牺牲了鲁棒性。
为了证明我们模型的优势,我们对 DeepFwFM
的计算复杂性进行了定量分析。给定 embedding size
embedding layer
只有 lookup
(即 field
数量 为 DNN
组件的 floating point operations: FLOPs
为 FwFM
组件的 FLOPs
为
类似地,我们可以得到 DeepFM
和 xDeepFM
的计算复杂度,如下表所示。可以看到:
xDeepFM
的 CIN
层需要 DNN
组件的操作数量。
FM
组件和 FwFM
组件比 DNN
组件快得多。
尽管 DeepFwFM
的计算复杂度较好,但是它仍然未能将延迟降低到一个良好的水平。事实上,由于包含 DNN
组件,DeepFwFM
可能会慢数百倍,这会显著降低在线 CTR
预测的速度。
DNN
组件无疑是导致高延迟问题并且无法满足在线要求的主要原因。因此,需要一种适当的加速方法来加速预测。
为什么采用结构剪枝:深度模型加速三种主要方法组成:结构剪枝(structural pruning
)、知识蒸馏(knowledge distillation
)、量化(quantization
),其中结构剪枝方法因其显著的性能而受到广泛关注。此外,DeepFwFM
的每个组件,如 DNN
组件、field pair interaction matrix
embedding
向量,都具有高度稀疏的结构,如 Figure 2
所示。这促使我们考虑结构剪枝以加速浅层组件和 DNN
组件。
对于其他选择:
量化在推断期间采用了定点精度。然而,它没有充分利用 DeepFwFM
每个组件的稀疏结构,甚至对模型性能有损。
知识蒸馏技术通过训练小网络(即 student model
)以模仿大网络(即 teacher model
),但它存在以下问题:
学生模型从教师模型学习的能力有限。
如果性能恶化,很难清楚这是由于教师模型导致、还是由于教学过程导致。
这就是我们在这项工作中采用结构剪枝的原因。
如何进行结构剪枝:
设计:我们建议裁剪以下三个组件(在 DeepFwFM
模型的背景下),而不是简单地以统一的稀疏率应用剪枝技术。这三个组件专门设计用于广告预测任务:
剪枝 DNN
组件的权重(不包括 bias
)从而移除神经元连接。
剪枝 field pair interaction matrix
field interaction
。
注意:移除冗余的
field interaction
,意味着建模时无需考虑对应field
之间的内积计算。
剪枝 embedding
向量中的元素,从而导致稀疏的 embedding
向量。
结合以上努力,我们获得了所需的 DeepLight
模型,如下图所示。DeepLight
是一种稀疏的 DeepFwFM
,它提供了一种整体方法,通过在推理期间修改训练好的架构来加速推理。
注意,
DeepLight
是用于训练好的模型,是一种剪枝算法,而不是一种训练算法。
优点:通过实验表明:
与原始 DNN
组件相比,稀疏的 DNN
组件的计算复杂度要低得多。它导致最大的计算加速。
sparse field pair interaction matrix
FwFM
组件的显著加速。此外,裁剪 field pair selection
。一旦裁剪了 field pair
feature pair
都将被丢弃。AutoFIS
也实现了类似类型的 field pair selection
。
sparse embedding
大大减少了内存使用,因为 feature embedding
主导了CTR
预测深度学习模型中的参数数量。
实现:从过度参数化的模型中选择一个良好的稀疏网络是 NP
难的,并且无法保证最优算法能够解决它。在结构剪枝领域有大量的经验研究,包括权重剪枝、神经元剪枝、以及其他单元剪枝。考虑到我们的模型只包含一个标准的 FwFM
组件和一个普通的DNN
组件,我们进行了权重剪枝,并寻求在不调用专用库的情况下实现高稀疏性和加速。
定义稀疏率 99%
的权重都被裁剪。
结构剪枝算法:
输入:
训练好的 target model
目标稀疏率
阻尼因子
输出:剪枝后的模型
算法步骤:
剪枝:对于
训练网络一个 iteration
。
这是为了在每次裁剪之后,重新训练模型从而进行微调,以便错误修剪的权重有可能再次变得活跃。
对模型的每个组件
更新组件当前轮次的裁剪比例
这是设置自适应的裁剪比例,使得在早期剪枝的很快(裁剪比例较大)、在后期剪枝很慢(裁剪比例较小)。
注意:这种裁剪方式无法确保最终模型能够得到
的目标稀疏率,只能说尽可能地接近。
根据权重的 magnitude
,裁剪最小的
降低计算复杂度:DNN
组件是导致高推断时间的瓶颈。在 DNN
组件的剪枝之后,FwFM
组件成为限制,这需要对 field matrix
embedding
层的剪枝对计算没有显著的加速。
在对 DNN
组件的权重设置一个中等大小的 bias
)的情况下,相应的加速可以接近理想的 95%
时,我们可能无法达到理想的加速比,因为 bias
的计算和稀疏结构(如 compressed row storage: CRS
)的开销。关于 field matrix
DNN
组件中的目标稀疏率
降低空间复杂度:在 embedding layer
中进行剪枝也显著减少了 DeepFwFM
中的参数数量,因此节省了大量内存。在 embedding layer
中,
至于 DNN
组件,权重参数的数量(不包括 bias
)可以从 field matrix
由于DeepFwFM
中的总参数由 embedding
向量参数所主导 , embedding
向量上的
数据集:Criteo, Avazu
。
对于 Criteo
数据集,我们采用由 Criteo
竞赛获胜者提出的对数转换来归一化数值特征:
此外,我们还将所有频次低于 8
的特征视为 "unknown"
。我们将数据集随机分成两部分:90%
用于训练、剩下的 10%
用于测试。
对于 Avazu
数据集,我们使用 10
天的点击记录,并随机拆分 80%
的样本用于训练、剩下的 20%
用于测试。我们还将所有频次低于 5
的特征视为 "unknown"
。
数据集的统计信息如下表所示。
评估指标:LogLoss, AUC
。
baseline
方法:在 emebdding-based
神经网络模型中,我们选择 DeepFM, NFM, xDeepFM
作为 baseline
,因为它们具有与 DeepFwFM
相似的架构,也是 CTR
预测的SOTA
模型。最终,六个 baseline
模型为:LR, FM, FwFM, DeepFM, NFM, xDeepFM
。
实现细节:我们使用 PyTorch
训练模型。
Criteo
数据集:
为了对 Criteo
数据集进行公平比较,我们遵循 DeepFM
和 xDeepFM
原始论文中的参数设置,并将学习率设置为 0.001
。
embedding size
设为 10
。
DeepFM, NFM, xDeepFM
的 DNN
组件默认设置为:
网络架构为 400 x 400 x 400
。
drooout rate
为 0.5
。
此外,我们也将裁剪后的 DeepFwFM
与更小尺寸的 DeepFwFM
进行比较。对于这些更小尺寸的 DeepFwFM
,它们的 DNN
组件分别为:25 x 25 x 25
(记做N-25
)、15 x 15 x 15
(记做N-25
)。原始尺寸的未裁剪 DeepFwFM
记做 N-400
。
对于 xDeepFM
,CIN
的架构为 100 x 100 x 50
。
我们微调了 L2
惩罚,并将其设置为 3e-7
。
我们在所有实验中使用 Adam
优化器,batch size = 2048
。
Avazu
数据集:保持了与 Criteo
数据集相同的设置,除了 embedding size
设为 20
、L2
惩罚为 6e-7
、DNN
网络结构为 300 x 300 x 300
。
关于实践中的训练时间(而不是推理时间),所有模型之间没有太大的差异。FwFM
和 DeepFwFM
的速度略快于 DeepFM
和xDeepFM
,这是由于 FwFM
与 DeepFwFM
在线性项上的创新(用内积代替线性项)。
DeepFwFM
和其它稠密模型的比较:对没有剪枝的密集模型的评估显示了过度参数化模型所表现出的最大潜力,如下表所示。可以看到:
LR
在所有数据集上的表现都比其他模型都要差,这表明特征交互对于提高 CTR
预测至关重要。
大多数 embedding-based
神经网络的表现优于低阶方法(如 LR
和 FM
),这意味着建模高阶特征互动的重要性。
低阶的 FwFM
仍然胜过 NFM
和 DeepFM
,显示了 field matrix
NFM
利用黑盒 DNN
隐式地学习低阶特征交互和高阶特征交互,由于缺乏显式识别低阶特征交互的机制,可能会过拟合数据集。
在所有 embedding-based
神经网络方法中,xDeepFM
和 DeepFwFM
在所有数据集上效果最好。然而,xDeepFM
的推理时间远远超过 DeepFwFM
。
稀疏化模型 DeepLight
:我们选择阻尼因子 2
个 epoch
,然后训练 8
个 epoch
用于剪枝。我们每隔 10
个 iteration
剪枝一次从而降低计算代价。
即:前
2
个epoch
训练好模型;后面的8
个epoch
执行剪枝。
DNN
剪枝加速:仅裁剪 DNN
组件的权重,DNN
的 bias
、 field matrix
embedding layer
的参数照常处理。我们尝试不同的剪枝率,并将不同稀疏率的网络与较小结构的网络进行比较。结果如 Table 4
所示。可以看到:
具有稀疏 DNN
组件的 DeepFwFM
优于稠密 DeepFwFM
,即使在 Criteo
数据集上稀疏率高达 95%
。在我们将 Criteo
数据集上的稀疏率提高到 99%
之前,这一现象保持不变。
相比之下,具有类似参数规模的相应小型网络,如 N-25
和 N-15
,获得的结果比原始的 N-400
要差得多,显示了裁剪过度参数化的网络相比从较小的网络训练更强大。
在 Avazu
数据集上,我们得到同样的结论。稀疏模型在 90%
的稀疏率下获得了最好的预测性能,只有当稀疏率大于 99.5%
时才会变差。
关于模型加速,从下图中可以看到:较大的稀疏率总是带来较低的延迟。因此在这两个数据集上,稀疏模型在性能超越原始稠密模型的基础上,都实现了高达 16
倍的推理速度提升。
这里获得的好处主要是更低的延迟。虽然模型性能略有提升,但是低于
0.1%
,因此效果不显著。但是,和
N-25, N-15
这两个更小的网络相比,DeepLight
的性能提升比较显著。然而DeepLight
的训练时间也更长。
Field Matrix
DNN
组件进行高稀疏度化之后,我们已经获得了显著的加速,接近 20
倍。为了进一步提高速度,增加 DNN
组件的稀疏率可能会有降低性能的风险,并且由于矩阵计算的开销,不会产生明显的加速。从 Figure 2
可以看出,field matrix
field matrix
我们根据 field matrix
DNN
组件已经被剪枝的基础上),如下图所示。可以看到:我们可以在不牺牲性能的情况下对 field matrix
95%
的稀疏率,此外推断速度可以进一步加快 2
到 3
倍。因此,我们最终可以在不牺牲性能的情况下获得46
倍和 27
倍的速度提升。
Embedding Vector
剪枝用于节省内存:关于 embedding
的剪枝,我们发现为所有 field
的 embedding
设置一个全局阈值,比为每个 field
的 embedding
向量设置单独的阈值获得略好的性能。因此,我们在全局阈值的基础上进行了实验。
如下图所示:
Criteo
数据集上可以采用较高的稀疏率,如 80%
,并保持几乎相同的性能。
相比之下,在 Avazu
数据集上比较敏感,当采用 60%
的稀疏率时,性能开始低于稠密模型。
从下表可以看到,大多数模型优于较小的 embedding size
的 baseline
模型(称为 E-X
),这说明了使用大的 embedding size
,然后在过度参数化的网络上应用剪枝技术以避免过拟合。
剪枝
embedding
似乎并没有带来多少AUC
提升(0.03%
左右,非常微小)。
DeepFwFM
的结构剪枝:从上述实验中,我们看到 DNN
组件和 field matrix
对于性能驱动的任务:
在 Criteo
数据集上,我们可以通过 sparse DeepFwFM
将 SOTA AUC
从 0.8116
提高到 0.8223
,其中 DNN
组件和 field matrix
90%
、embedding
向量中的剪枝率为 40%
。该模型被称为 D-90% & R-90% & F-40%
。
在 Avazu
数据集上,我们可以通过 sparse DeepFwFM
将 SOTA AUC
从 0.7893
提高到 0.7897
,其中 DNN
组件和 field matrix
90%
、embedding
向量中的剪枝率为 20%
。该模型被称为 D-90% & R-90% & F-20%
。
这里的剪枝对于性能提升非常微小,几乎可以忽略。因为太小的提升可能由于超参数配置、随机因素等等的影响,而观察不到。
对于内存驱动的任务:在 Criteo
数据集和 Avazu
数据集上的内存节省分别高达 10
倍和 2.5
倍。
对于延迟驱动的任务:我们使用结构为 D-99% & R-95% & F-40%
的 DeepLight
在 Criteo
数据集上实现了 46
倍的速度提升,使用结构为 D-98% & R-90% & F-0%
的 DeepLight
在 Avazu
数据集上实现了 27
倍的速度提升,而且没有损失准确性。
DeepLight
和其它稀疏模型的比较:对于其他模型,我们也尝试了在不牺牲性能的情况下加速预测的最佳结构。关于 xDeepFM
中的CIN
组件,我们用 C-99%
表示 CIN
组件的 99%
的稀疏率。结果如下表所示。可以看到:
所有 embedding-based
的神经网络都采用高稀疏率来保持性能。
此外,DeepLight
在预测时间上与 sparse DeepFM
和 sparse NFM
相当,但在 Criteo
数据集上的 AUC
至少提高了 0.8%
,在 Avazu
数据集上提高了 0.4%
。
DeepLight
获得了与 xDeepFM
相似的预测性能,但其速度几乎是 10
倍。