CIKM 2023 | SHARK:大规模推荐系统的轻量级模型压缩方法

admin 2023年10月27日00:44:15评论74 views字数 3159阅读10分31秒阅读模式
构建有效的推荐模型在电子商务和短视频平台等在线服务中起到至关重要的作用。推荐模型主要由计算层和嵌入层构成。增加嵌入层的大小已被证明可以有效提高推荐模型的性能,但逐渐导致工业推荐系统中嵌入层的大小超过 TB,阻碍了进一步迭代。 为了在保持模型性能的同时节省资源,我们提出了SHARK,由两部分组成。 首先,我们使用泰勒展开近似 Permutation 来修剪嵌入表(特征字段)的数量。 其次,我们引入了一种新的量化方法,对每个嵌入应用不同的量化策略。 我们对公共和工业数据集进行了广泛的实验,证明我们提出的 SHARK 框架的每个组件都优于以前的方法。 我们对快手的短视频、电商、广告推荐模型等多个模型进行了A/B测试,所有被压缩的模型已用于线上部署。在线A/B测试结果表明 SHARK 可以有效减少嵌入层的内存占用,特别是在短视频场景,在模型效果不变的情况下,SHARK显著节省了70%的存储空间和数千台机器,提高30%的每秒查询量(QPS)。

CIKM 2023 | SHARK:大规模推荐系统的轻量级模型压缩方法

论文地址:https://arxiv.org/pdf/2308.09395.pdf
作者:张北川(快手),孙承根(快手),谈建超(快手),蔡鑫军(快手),赵军(快手),苗孟琦(快手),殷康(快手),宋成儒(快手),牟娜(快手),宋洋(快手)
问题与挑战

如何构建有效的推荐系统,为用户推荐准确、个性化的信息,近来显得尤为重要。 推荐系统的研究人员一直致力于优化推荐模型的效果,这不可避免地导致工业推荐系统中的推荐模型达到TB规模并占用大量存储成本,给系统带来了巨大的负担并严重阻碍了模型优化的效率。为了缓解这个问题,压缩推荐模型以节省计算资源和存储资源迫在眉睫。 先前的研究表明,嵌入层通常占整个系统的大部分资源。 嵌入层的压缩核心在这四个关键维度:(1)嵌入表的数量 (2) 嵌入表的基数 (3) 嵌入的维度(4)数值精度,如图1所示。 在本文中,我们重点关注嵌入表的数量和数值精度两方面。

CIKM 2023 | SHARK:大规模推荐系统的轻量级模型压缩方法

在尝试将压缩模型时,我们遇到了两大挑战:
  1. 需要一个轻量且准确的特征重要性评估器。虽然以前的方法能够有效进行特征评估,但它们经常在基础模型中引入新的结构或参数,从而产生额外的训练成本。为了规避这些限制并保留当前基础模型的结构,业界通常采用 Permutation 作为特征评估方法。但需要注意的是,Permutation 的计算复杂度很高,由于大规模推荐系统中特征字段的数量巨大且数据量较大,该方法效率低下。
  2. 需要对不同embedding采用不同量化策略。我们的调查表明,出现频率较高的 embedding 在量化后容易出现更高的量化误差。以前的方法大多数忽视这一现象。MPE 有类似的观察,并采用缓存技术将高频 embedding 同时存储为浮点精度和低精度。然而 MPE 中的优先级值未能考虑正样本在训练过程中的更大重要性,同时 MPE 使用的缓存技术带来了额外的访问和存储,这是我们想要避免的。
为了应对这些挑战,我们提出了 SHARK 压缩系统。SHARK 包含两个关键组件:(1)Fast-Permutation(下文简称 F-Permutation),其被用来减少特征字段的数量。它利用泰勒展开式近似 Permutation。相比 Permutation ,我们的方法大大降低了时间复杂度,从而能够使用更多样本来评估特征,提高特征选择的准确度。(2)Frequence-Quantization(下文简称F-Quantization),是一种新颖的量化方法。它首先对所有 embedding 进行评分,并在分数更新期间将不同的系数分配给正负样本。然后,F-Quantization 根据优先级分值对不同的 embedding 应用不同的低精度策略(例如 int8 和 fp16),使嵌入层能够更高效地运行。
方法

F-Permutation

为评估第 个特征字段的重要性,Permutation 会保持其他特征字段不变。将第 个特征字段的值替换成其他样本后,Permutation 会记录模型性能的下降多少。如果替换后,模型性能显著降低,则认为第 个特征字段很重要。相反,如果替换后,模型性能保持不变,则认为第 个特征字段不重要。形式上,Permutation 评估第 个特征字段在样本 上的重要性可以被定义为:

CIKM 2023 | SHARK:大规模推荐系统的轻量级模型压缩方法

其中 表示特征字段总数, 表示 中的任意候选, 包含第 个特征字段中的所有特征值, 表示第 个特征域在样本 中的原始值, 表示值 在整个数据集中的概率。这个过程很显然只能串行地执行,使得 Permutation 的效率极低。

为了解决这个问题,我们提出利用泰勒展开式来近似等式(1),如方程所示。

CIKM 2023 | SHARK:大规模推荐系统的轻量级模型压缩方法

我们利用等式(4)来并行的评估所有特征,使得效率得到了较大提升。值的注意的是,对于多维度的 embedding,其重要性是所有维度的和。更进一步地,特征字段删除主要包含:模型评估,特征字段裁减和微调,如下图所示。

CIKM 2023 | SHARK:大规模推荐系统的轻量级模型压缩方法

在模型评估阶段,模型的效果和特征重要性会同时求出。若模型的效果没有下降,则裁减最不重要几个特征字段。由于裁减后的模型参数会继承裁减前的,裁减后的模型只需要少量的样本就能微调到收敛。
F-Quantization
在本节中,我们将介绍 F-Quantization。F-Quantization 主要通过以下两个公式实现:

CIKM 2023 | SHARK:大规模推荐系统的轻量级模型压缩方法

其中, 代表任意 embedding。遵循之前的工作,每个 embedding 将会设置一个scale:

CIKM 2023 | SHARK:大规模推荐系统的轻量级模型压缩方法

其中值 表示嵌入向量 中找到的最大绝对值。对于目标 位整数类型,范围 定义为 。然而,在我们的推荐系统中,当采用 fp16 精度的行量化时,我们观察到了显著的量化误差。通过分析,我们发现经常访问的 embedding 往往会表现出较高的量化误差。为了解决这个问题,首先,我们定义 embedding 时刻基于频率的优先级值 如下:

CIKM 2023 | SHARK:大规模推荐系统的轻量级模型压缩方法

其中 是时间衰减率, 是重要性权重, 是一个 batch 中包含 embedding 的正例和负例的数量。由于正样本在训练过程中更重要,因此我们为正负权重分配不同的系数。在我们的方法中,得分最高、中间和最低的行可以以全精度、fp16 精度和 int8 精度进行训练,如下式:

CIKM 2023 | SHARK:大规模推荐系统的轻量级模型压缩方法


实验

我们在公共数据集和工业数据集上执行了大量实验,以回答以下3个问题:

  1. 相比于先前的特征选择方法,F-Permutation 表现如何?
  2. 相比于先前的量化方法,F-Quantization 表现如何?
  3. F-Permutation 和 F-Quantization 是否兼容?
F-Permutation的表现

CIKM 2023 | SHARK:大规模推荐系统的轻量级模型压缩方法CIKM 2023 | SHARK:大规模推荐系统的轻量级模型压缩方法

上图的实验结果在工业数据集上,我们的方法持续实现最好的效果。在cirteo数据集上,我们的方法在10-22之间实现了最好的效果。
F-Quantization的表现

CIKM 2023 | SHARK:大规模推荐系统的轻量级模型压缩方法

上表表示与 SOTA 相比,我们的方法在所有预测任务(例如 Like、Click 和 Follow)上都取得了AUC效果提升。
F-Quantization和F-Permutation兼容性

CIKM 2023 | SHARK:大规模推荐系统的轻量级模型压缩方法

"F-Q+F-P" 表示 F-Quantization 和 F-Permutation 直接融合的效果,两种方法组合后成功地将内存占用量减少到基准方法的 30%(50% × 60%),这也证明了两者的兼容性。
总结

在本文中,我们提出了 SHARK,一种用于嵌入层的轻量级压缩方法。我们提出两种新颖的方法解决了嵌入层冗余的两个方面,即嵌入表的数量和嵌入的数值精度。我们对各种基准和数据集进行的广泛实验证明了这些方法相对于已有方法的优越性。在行业应用方面,SHARK 成功应用在快手平台的短视频、电商、广告推荐模型中。

对于短视频推荐的排序模型,在线A/B测试结果显示,压缩工业模型所用存储的70%并没有导致平均观看时长的下降。此外,每秒查询次数 (QPS) 提高了 30%,从而大大节省了计算资源。由于这些效率的提高,数千台机器得以节省。

原文始发于微信公众号(快手技术团队):CIKM 2023 | SHARK:大规模推荐系统的轻量级模型压缩方法

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年10月27日00:44:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CIKM 2023 | SHARK:大规模推荐系统的轻量级模型压缩方法https://cn-sec.com/archives/2148511.html

发表评论

匿名网友 填写信息