萧瑟作者杜佳豪编辑

阿里定向广告最新突破:面向下一代的粗排排序系统COLD萧瑟

这次向大家分享的工作是我所在的阿里定向广告团队在DLP-KDD 2020发表的文章:COLD: Towards the Next Generation of Pre-Ranking System。COLD是我们新一代粗排排序系统,目前已经在阿里定向广告各主要业务落地并取得了巨大的线上效果提升。

论文地址:https://arxiv.org/abs/2007.16122

1. 粗排简介

在搜索,推荐,广告等需要进行大规模排序的场景,级联排序架构得到了非常广泛的应用。以阿里的在线广告系统为例,按顺序一般包含召回,粗排,精排,重排序等模块。粗排在召回和精排之间,一般需要从上万个广告集合中选择出几百个符合后链路目标的候选广告,并送给后面的精排模块。粗排有很严格的时间要求,一般需要在10~20ms内完成打分。

2. 发展历程

粗排在工业界的发展历程可以分成下面几个阶段:

  1. 最早期的第一代粗排是静态质量分,一般基于广告的历史平均CTR,只使用了广告侧的信息,表达能力有限,但是更新上可以做到很快。
  2. 第二代粗排是以LR为代表的早期机器学习模型,模型结构比较简单,有一定的个性化表达能力,可以在线更新和服务。
  3. 当前最广泛应用的第三代粗排模型,是基于向量内积的深度模型。一般为双塔结构,两侧分别输入用户特征和广告特征,经过深度网络计算后,分别产出用户向量和广告向量,再通过内积等运算计算得到排序分数:

[公式]

向量内积模型相比之前的粗排模型,表达能力有了显著提升,但是仍然有很多问题:

  1. 模型的表达能力仍然受限:向量内积结构虽然极大的提升了运算速度,节省了算力,但是也导致模型无法使用交叉特征,能力受到极大限制。
  2. 模型实时性较差:因为用户向量和广告向量一般需要提前计算好,而这种提前计算的时间会拖慢整个系统的更新速度,导致系统难以对数据分布的快速变化做出及时响应,这个问题在双十一等场景尤为明显。

3. COLD模型

前面粗排的相关工作仅仅把算力看做系统的一个常量,模型和算力的优化是分离的。我们重新思考了模型和算力的关系,从两者联合设计优化的视角出发,提出了新一代的粗排架构COLD (Computing power cost-aware Online and Lightweight Deep pre-ranking system). 它可以灵活对模型效果和算力进行平衡。COLD没有对模型进行限制,可以支持任意复杂的深度模型。这里我们把GwEN ( group-wise embedding network) 作为我们的初始模型结构。它以拼接好的特征embedding作为输入,后面是多层全连接网络,支持交叉特征。当然,如果特征和模型过于复杂,算力和延时都会难以接受。因此我们一方面设计了一个灵活的网络架构可以进行效果和算力的平衡。另一方面进行了很多工程上的优化以节省算力。

3.1 网络结构

精简网络的方法有很多,例如网络剪枝 ( network pruning),特征筛选 ( feature selection),网络结构搜索 ( neural architecture search)等。我们选择了特征筛选以实现效果和算力的平衡。当然其他技术也可以进行尝试。具体来说,我们把SE (Squeeze-and-Excitation) block引入到了特征筛选过程中,它最初被用于计算机视觉领域以便对不同通道间的内部关系进行建模。这里我们用SE block来得到特征重要性分数。假设一共有M个特征,ei表示第i个特征的embedding向量,SE block把ei压缩成一个实数si。具体来说先将M个特征的embedding拼接在一起,经过全连接层并用sigmoid函数激活以后,得到M维的向量s:

[公式]

这里向量s的第i维对应第i个特征的重要得分,然后再将si乘回到ei,得到新的加权后的特征向量用于后续计算。

在得到特征的重要性得分之后,我们把所有特征按重要性排序,选择K组不同的候选特征,并基于GAUC,QPS和RT指标等离线指标,对效果和算力进行平衡,最终在满足QPS和RT要求情况下,选择GAUC最高的一组特征组合,作为COLD最终使用的特征。后续的训练和线上打分都基于选择出来的特征组合。通过这种方式,可以灵活的进行效果和算力的平衡。

3.2 工程优化

为了给COLD使用更复杂的特征模型打开空间,工程上也进行了很多优化。在阿里定向广告系统中,粗排的线上打分主要包含两部分:特征计算和网络计算。特征计算部分主要负责从索引中拉取用户和广告的特征并且进行交叉特征的相关计算。而网络计算部分,会将特征转成embedding向量,并将它们拼接进行网络计算。

3.2.1 并行化

为了实时低延时高吞吐的目标,并行计算是非常重要的。而粗排对于不同广告的计算是相互独立的,因此可以将计算拆分成并行的多个请求以同时进行计算,并在最后进行结果合并。特征计算部分使用了多线程方式以进一步加速,网络计算部分使用了GPU。

3.2.2 列计算转换

特征计算的过程可以抽象看做两个稀疏矩阵的计算,一个是用户矩阵,另一个是广告矩阵。矩阵的行是batch_size,对于用户矩阵来说batch_size为1,对于广告矩阵来说batch_size为广告数。矩阵的列是featue group的数目。常规计算广告矩阵的方法是逐个广告计算在不同feature group下特征的结果,这个方法符合通常的计算习惯,组合特征实现也比较简单,但是这种计算方式是访存不连续的,有冗余遍历,查找的问题。事实上,因为同一个feature group的计算方法相同,因此可以利用这个特性,将行计算重构成列计算,对同一列上的稀疏数据进行连续存储,之后利用MKL优化单特征计算,使用SIMD (Single Instruction Multiple Data)优化组合特征算子,以打到加速的目的。

3.2.3 Float16加速

对于COLD来说,绝大部分网络计算都是矩阵乘法,而NVIDIA的Turning架构对Float16和Int8的矩阵乘法有额外的加速,因此引入Float16计算对提升性能非常必要 。但是Float16会损失计算精度,特别是在sum-pooling的情况下,数值有可能超出Floa16的范围。为了解决这个问题,一种方式是使用BN。但是BN本身的参数范围也有可能超过Float16. 因此只能使用混合精度的方式,对于BN层使用Float32,而后面的层使用Float16。另一种方式是使用参数无关的归一化方式,例如log函数。但是log函数不能处理负数,并且输入值接近0的时候会输出绝对值较大的数字。因此我们设计了一种分段平滑函数,我们叫做linear-log来解决这个问题:

[公式]

从函数图像可以看出,linear_log函数可以将Float32的数值处理到一个比较合适的范围。所以如果我们将linear_log函数放到第一层,那么就可以保证网络的输入参数在一个比较小的范围内。具体实践上,linear_log函数对COLD模型的效果基本没有影响。使用Float16以后,CUDA kernel的运行性能有显著提升,同时kernel的启动时间成为了瓶颈。为了解决这个问题,我们使用了MPS (Multi-Process Service)来解决kernel启动的开销。Float16和MPS技术,可以带来接近2倍的QPS提升。

3.3 在线服务架构

COLD没有限制模型的结构,训练和在线打分都是实时化的,可以带来以下两个优点:

  1. 在线学习的引入使COLD与向量内积模型相比,可以更及时的响应数据分布的变化,对新广告冷启动也更为友好。
  2. 实时架构对于模型迭代和在线A/B测试都更有利。向量内积模型由于用户向量和广告向量需要提前计算好,在线A/B测试也更为困难。实时架构也使COLD模型可以更快的更新,避免了向量内积模型的更新延迟问题。

4. 实验结果

这里COLD模型使用了7层全连接的网络结构。离线评估指标除了GAUC之外,还包含了top-k recall,用于评估粗排和精排的对齐程度。

[公式]

这里top k候选集合和top m候选集合均为粗排的输入打分集合。top k集合是粗排选出的,而 top m集合是精排选出的,排序指标是eCPM(eCPM = pCTR*bid)。这里的精排模型是DIEN。我们使用QPS (Queries Per Seconds, which measures the throughput of themodel) 和RT (return time, which measures the latency of model)来评估系统性能的影响。

4.1 模型效果评估

离线效果评估可以看到COLD在GAUC和Recall上都优于向量内积模型。在线效果上,COLD与向量内积模型相比在日常CTR +6.1%,RPM + 6.5%。双十一CTR+9.1%,RPM+10.8%,提升显著。

4.2 系统性能评估

从Table 3可以看到,向量内积模型的系统性能最好,而精排的DIEN的系统性能最差,COLD则在两者之间取得了平衡。

COLD在得到特征重要性分数以后,会选出不同的候选特征,并基于离线指标进行特征选择。Table 4列了几组供选择的特征,可以看到COLD是考虑效果和系统性能以后的折中。

Table 5表明,工程优化上引入Float16和MPS优化以后,QPS提升了1倍,效果显著。

5. 总结

这里我们向大家详细介绍了阿里定向广告的新一代粗排架构COLD。它是新的算法和算力联合迭代视角下的产物。COLD把算力作为一个变量进行优化,提供了一种更灵活的方式可以实现效果和算力的平衡。COLD的训练和在线打分都是实时的,可以更好的适用数据分布的变化。2019年以来,COLD已经在阿里定向广告的各主要业务上得到广泛应用并取得了显著的效果提升。

理论COLDDLP-KDD 2020阿里巴巴
1
相关数据
机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

重构技术

代码重构(英语:Code refactoring)指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果。 软件重构需要借助工具完成,重构工具能够修改代码同时修改所有引用该代码的地方。在极限编程的方法学中,重构需要单元测试来支持。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

剪枝技术

剪枝顾名思义,就是删去一些不重要的节点,来减小计算或搜索的复杂度。剪枝在很多算法中都有很好的应用,如:决策树,神经网络,搜索算法,数据库的设计等。在决策树和神经网络中,剪枝可以有效缓解过拟合问题并减小计算复杂度;在搜索算法中,可以减小搜索范围,提高搜索效率。

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

特征选择技术

在机器学习和统计学中,特征选择(英语:feature selection)也被称为变量选择、属性选择或变量子集选择。 它是指:为了构建模型而选择相关特征(即属性、指标)子集的过程。

在线学习技术

在计算机科学中,在线学习是一种机器学习方法。和立即对整个训练数据集进行学习的批处理学习技术相反,在线学习的数据按顺序可用,并在每个步骤使用未来数据更新最佳预测器。

结构搜索技术

深度学习提供了这样一种承诺:它可以绕过手动特征工程的流程,通过端对端的方式联合学习中间表征与统计模型。 然而,神经网络架构本身通常由专家以艰苦的、一事一议的方式临时设计出来。 神经网络架构搜索(NAS)被誉为一条减轻痛苦之路,它可以自动识别哪些网络优于手工设计的网络。

推荐文章
暂无评论
暂无评论~