找回密码
 立即注册
清秋481 新手上路

阿里皮艺床有限公司粗排技术系统与最新停顿

3 / 924

1

主题

2

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2021-10-21 01:13:54 | 显示全部楼层 |阅读模式
分享嘉宾:王哲 阿里皮艺床有限公司巴巴

编辑整理:乐远

语音朗诵:蒋志新

出品平台:DataFunTalk



导读:在搜索、保举、广告等需要停止大范围排序的场景,级联排序架构获得了很是普遍的利用。以阿里皮艺床有限公司的在线广告系统为例,按顺序一般包括召回、粗排、精排、重排等模块。粗排在召回和精排之间,一般需要从上万个广告调集当挑选出几百个合适后链路方针的候选广告,并送给前面的精排模块。粗排有很严酷的时候要求,一般需要在10~20ms内完成打分。在如此庞大的打份量以及如此严酷的RT需求下,粗排是若何平衡算力、RT以及最初的打分结果呢?本文将为大师分享粗排技术系统以及粗排最新停顿COLD,今朝COLD排序系统已经在阿里皮艺床有限公司定向广告各首要营业落地并获得了庞大的线上结果提升。
本文的分享,首要围绕下面几点展开:
    粗排的成长历史粗排的最新停顿COLD粗排技术的总结与展望
01

粗排的成长历史

首先和大师分享下粗排的成长历史。
1. 粗排的布景


什么是粗排?一般的话,一个大型的产业级排序系统城市采用多阶段的排序架构,凡是会包括四部分:召回、粗排、精排和重排。以阿里皮艺床有限公司巴巴定向广告为例,召回的范围通常为万万左右,而粗排打分范围通常为一万以上,精排和重排的范围通常为上百左右。粗排是处于召回和精排的一其中心阶段,方针是在满足算力RT约束的情况下,从上万个广告调集当挑选满足后链路需求的候选广告调集。
粗排和精排有两点分歧:
    算力和RT的约束更严酷:粗排的打份量远高于精排,同时有更严酷的提早约束,阿里皮艺床有限公司巴巴定向广告的要求是10-20ms解空间题目更严重:粗排和精排练习的时辰利用的都是展现样本,可是线上打分环节粗排打分候全集更大,打分阶段间隔展现环节更远,是以粗排阶段打分调集的散布和展现调集差异相比精排更大,解空间题目也更严重。
2. 粗排的两大技术线路
粗排的技术线路实在就是处理粗排一般该怎样迭代的题目,由于粗排是处于召回和精排之间的一个模块,是以粗排自己的迭代会遭到前后链路的制约,是以需要站在全部链路的视角来看待这个题目。纵观全部链路,粗排一般存在两种技术线路:调集挑选和精准值预估。


① 调集挑选技术
调集挑选技术是以调集为建模方针,选出满足后续链路需求的调集的方式,该技术线路在召回很是典型,这实在也很是合适粗排的定位。该方式优点是算力消耗一般比力少,弱点是依靠于对后链路的进修,可控性较弱。
什么叫可控性?也就是说假如希望停止一些调剂的话,由于这类方式依靠于经过数据回流对后链路停止进修,而数据回流常常比力慢,同时对数据量也有要求,能够需要前面链路的这些战略调剂影响到比力大的流量以后,粗排才可以进修到,是以这类方式可控性比力衰,是偏被动的一种方式。
这类技术线路有以下常见的几种方式:
    多通道方式:类似于召回,针对分歧的方针构建分歧的通道,然后别离选出分歧的调集,然后再停止合并挑选。Listwise方式:通常为间接建模调集的损失,典型算法如LamdaMART。为了更好了解listwise算法,这里提一下pointwise算法和pairwise算法,pointwise算法通常为点估量的方式,练习进程只斟酌单条样本;而pairwise算法练习进程中会斟酌当前样本和别的样本的相互关系,会机关这样的pair,并在练习的进程中引入这方面的pairwise loss,练习方针能够是正pair排在负pair的前面;Listwise更近一步,在练习的时辰会斟酌全部调集,会希望全部调集的目标如NDCG等到达最大化,如LamdaMART算法。序列天生方式:间接做调集挑选。一般包括调集评价器和调集天生器,算法进程以下:首先,用评价器对一切的item停止打分并挑选一个得分最高的,作为调集合的第一个商品。接下来,再挑选第二个商品,把第一个商品和一切能够的第二个商品停止组合,并用评价器停止打分。以后,挑选得分最高的调集,并延续利用类似于贪心的方式不竭的搜索,终极获得一个最优的调集。
② 精准值预估技术
精准值预估技术间接对终极系统方针停止切确值预估,实在也就是pointwise的方式。
以广告系统为例,建模的方针通常为ECPM,即
ECPM=pCTR*bid

操纵预估技术预估pCTR,然后预估bid,终极按照ECPM来停止排序,在粗排的话就是取排序的分最高的topK作为终极的调集。这类方式的优点是可控性强,由因而间接对全部方针停止建模,假如建模方式做了调剂的话,可以间接调剂排序公式,调剂预估模子,对全部链路的掌控力更强。弱点就是算力消耗比力大,而且预估越正确,算力消耗也越大。
3. 粗排的技术成长历史


粗排在产业界的成长过程可以分红下面几个阶段:
① 最早期的第一代粗排是静态质量分,通常为统计广告的历史均匀CTR,只利用了广告侧的信息,表达才能有限,可是更新上可以做到很快。
② 第二代粗排是以LR为代表的早期机械进修模子,模子结构比力简单,有一定的本性化表达才能,可以在线更新和办事。
其中①②可以合称为“粗排的前深度进修时代(2016年之前)”。
③ 当前利用最普遍的第三代粗排模子,是基于向量内积的深度模子。通常是双塔结构,两侧别离输入用户特征和广告特征,经过深度收集计较后,别离产出用户向量和广告向量,再经过内积等运算计较获得排序分数:


③ 称为“粗排的深度时代-向量内积模子(2016)”。


向量内积模子相比之前的粗排模子,表达才能有了很明显的提升,其优点:
    内积计较简单,节省线上打分算力User向量和Ad向量离线计较产出,是以可以做的很是复杂而不用担忧在线RT题目双塔结构的user侧收集可以引入transformer等复杂结构对用户行为序列停止建模


但是仍然有很多题目:
    模子表达才能仍然受限:向量内积虽然极大的提升了运算速度,节省了算力,可是也致使了模子没法利用穿插特征,才能遭到极大限制。模子实时性较差:由于用户向量和广告向量一般需要提早计较好,而这类提早计较的时候会拖慢全部系统的更新速度,致使系统难以对数据散布的快速变化做出实时响应,这个题目在双十一等场景尤其明显。存在冷启动题目,对新广告、新用户不友爱迭代效力:user向量和item向量的版本同步影响迭代效力。由于每次迭代一个新版本的模子,别离要把响应user和item向量产出,其自己迭代流程就很是长,特别是对于一个比力大型的系统来说,假如把user和item都做到了上亿的这类级此外话,能够需要一天赋能把这些产出更新到线上,这类迭代效力很低。
针对向量内积模子的题目,也有很多相关的改良,典型的以下面这个方式。


向量版Wide&Deep模子,deep部分仍然是向量内积结构,wide部分引入基于野生先验机关的user和ad的穿插特征,一定水平上克服了向量内积模子没法利用穿插特征的题目。但是该方式仍然有一些题目,wide部分是线性的,受限于RT的约束,不能做的过于复杂,是以表达才能仍然受限。


别的一个典型的改良方式是向量内积模子的实时化, user向量经过线上打分实时产出,ad向量仍然离线产出,可是更新频次增加。
经过实时打分,可以引入实时特征,实时性增强。但是实时打分使向量内积模子的RT和算力上风削弱,user模子处于RT的约束不能设想的很复杂,而且该方式还引入了新的打分模子和ad向量版本纷歧致的题目。
④第四代COLD,下一代粗排框架(2019)-算力感知的在线轻量级的深度粗排系统。下面将具体先容该模子。
02

粗排的最新停顿COLD



前面粗排的相关工作仅仅把算力看做系统的一个常量,模子和算力的优化是分手的。我们重新思考了模子和算力的关系,从两者结合设想优化的视角动身,提出了新一代的粗排架构COLD ( Computing power cost-aware Online and Lightweight Deep pre-ranking system )。它可以灵活地对模子结果和算力停止平衡。COLD没有对模子结构停止限制,可以支持肆意复杂的深度模子。这里我们把GwEN ( group-wise embedding network ) 作为我们的初始模子结构。它以拼接好的特征embedding作为输入,前面是多层全毗连收集,支持穿插特征。固然,假如特征和模子过于复杂,算力和延时城市难以接管。是以我们一方面设想了一个灵活的收集架构可以停止结果和算力的平衡。另一方面停止了很多工程上的优化以节省算力。
总结为以下几点:
    基于算法-系统Co-Design视角设想,算力作为一个变量与模子停止结合优化模子结构没有限制,可以肆意利用穿插特征工程优化处理算力瓶颈在线实时系统,实时练习,实时打分,以应对线上散布快速变化
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个特征的重要得分,然后再将s_i乘回到e_i,获得新的加权后的特征向量用于后续计较。
在获得特征的重要性得分以后,我们把一切特征按重要性挑选最高的top K个特征作为候选特征,并基于GAUC、QPS和RT目标等离线目标,对结果和算力停止平衡,终极在满足QPS和RT要讨情况下,挑选GAUC最高的一组特征组合,作为COLD终极利用的特征。后续的练习和线上打分都基于挑选出来的特征组合。经过这类方式,可以灵活的停止结果和算力的平衡。
留意Se Block仅用于特征挑选阶段,线上模子不包括该结构。
② 基于scaling factor的结构化剪枝
此外COLD还会停止剪枝,做法是在每个神经元的输出前面乘上一个gamma,然后在练习的loss上对gamma停止稀疏赏罚,当某一神经元的gamma为0时,此时该神经元的输出为0,对尔后的模子结构不再有任何影响,即视为该神经元被剪枝。
在练习时,会选用循环剪枝的方式,每隔t轮练习会对gamma为0的神经元停止mask,这样可以保证全部剪枝进程中模子的稀疏率是单调递加的。


这类剪枝方式在结果根基稳定的情况下,粗排GPU的QPS提升20%。
终极模子是7层全毗连收集。
2. 工程优化
为了给COLD利用更复杂的特征模子翻开空间,工程上也停止了很多优化。在阿里皮艺床有限公司定向广告系统中,粗排的线上打分首要包括两部分:特征计较和收集计较。特征计较部分首要负责从索引中拉取用户和广告的特征而且停止穿插特征的相关计较。而收集计较部分,会将特征转成embedding向量,并将它们拼接停止收集计较。


① 并行化
为了实现低时延高吞吐的方针,并行计较是很是重要的。而粗排对于分歧的广告的计较是相互自力的,是以可以将计较分红并行的多个请求以同时停止计较,并在最落后行成果合并。特征计较部分利用了多线程方式进一步加速,收集计较部分利用了GPU。
② 行列转换
特征计较的进程可以笼统看做两个稀疏矩阵的计较,一个是用户矩阵,另一个是广告矩阵。矩阵的行是batch_size,对于用户矩阵来说batch_size为1,对于广告矩阵来说batch_size为广告数,矩阵的列是featue group的数目。常规计较广告矩阵的方式是逐一广告计较在分歧feature group下特征的成果,这个方式合适凡是的计较习惯,组合特征实现也比力简单,可是这类计较方式是访存不持续的,有冗余遍历、查找的题目。究竟上,由于同一个feature group的计较方式不异,是以可以操纵这个特征,将行计较重组成列计较,对同一列上的稀疏数据停止持续存储,以后操纵MKL优化单特征计较,利用SIMD (Single Instruction Multiple Data)优化组合特征算子,以到达加速的目标。
③ Float16加速


对于COLD来说,绝大部分收集计较都是矩阵乘法,而NVIDIA的Turning架构对Float16和Int8的矩阵乘法有额外的加速,是以引入Float16计较对提升性能很是需要 。可是Float16会损失计较精度,出格是在sum-pooling的情况下,数值有能够超越Float16的范围。为领会决这个题目,一种方式是利用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提升。别的,利用阿里皮艺床有限公司自研的含光800NPU专有硬件,替换本来的GPU,QPS进一步提升约1倍。
3. 在线办事架构


COLD没有限制模子的结构,练习和在线打分都是实时化的,可以带来以下两个优点:
    在线进修的引入使COLD与向量内积模子相比,可以更实时的响应数据散布的变化,对新广告冷启动也更加友爱。实时架构对于模子迭代和在线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)来评价系统性能的影响。
① 模子结果评价


离线结果评价可以看到COLD在GAUC和Recall上都优于向量内积模子。在线结果上,COLD与向量内积模子相比在平常CTR +6.1%,RPM + 6.5%。双十一CTR+9.1%,RPM+10.8%,提升明显。
② 系统性能评价


从上面表格可以看到,向量内积模子的系统性能最好,而精排的DIEN的系统性能最差,COLD则在两者之间获得了平衡。
COLD在获得特征重要性分数今后,会选出分歧的候选特征,并基于离线目标停止特征挑选。第二个表列了几组供挑选的特征,可以看到COLD是斟酌结果和系统性能今后的折衷。


Table 5表白,工程优化上引入Float16和MPS优化今后,QPS提升了1倍,结果明显。
5. COLD的进一步成长


那末COLD的前面进一步怎样成长?答案是与精排停止加倍深度的整合。今朝粗排和精排都是各自自力迭代的,这样会形成一个前后纷歧致的题目,会带来一个链路的内讧。而且粗排和精排保护两套流程的话,自己保护本钱也很高,特别是像阿里皮艺床有限公司巴巴定向广告这边,营业多而且复杂。别的,COLD和精排一样都是很是实时化的架构,这使得粗排和精排停止更深度的联动成为能够。
具体若何停止加倍深度的整合呢?这里我们间接将粗排和精排的生产流程合二为一,结合练习,同享部分参数。别的也会借助特征蒸馏的方式,利用精排练习进程中的得分来指导粗排。在这个根本上,尝试引入精排参竞日志,对于未展现样本借助精排得分停止帮助进修。为什么引入精排参竞日志?实在前面提到过,由于粗解除了RT还有一个就是解空间的题目,粗排自己见到的调集比精排更多,可是它自己模子的才能却比精排更弱。所以为了减缓这个题目,引入精排参竞日志,这部分日志自己是没有label的,可以操纵精排在这些label上停止打分,经过蒸馏的方式来指导粗排停止进修。为什么说这类方式在一定水平上能减缓解空间的题目?实在是建立在精排的模子才能比粗排更强,这个强很洪流平表现在精排对穿插特征的操纵上,在这类情况下,对于很多没有展现的user和item的pair对,精排相比于粗排实在是可以给出更切确的预估的,在这个条件下,借助精排更切确的预估分数,然后对粗排停止指导,在一定水平上是可以减缓解空间题目标。
这类计划的益处是将粗排和精排的流程合二为一,粗排精排模子一路练习,一路产出,这样可以提升粗排和精排的对齐水平,处理前面提到的由于前后链路纷歧致酿成的链路消耗题目。别的引入精排参竞日志,在一定水平上也能减缓解空间题目。而且还有一个益处就是下降运维本钱,削减了练习资本,提升我们的迭代效力。
03

粗排技术的总结与展望



最初做一下总结,今朝全部粗排根基已经周全迈向深度进修时代,而且深度进修时代的粗排首要存在向量内积和COLD两种支流技术线路。没有最好的算法,只要最合适的算法。非论是COLD还是向量内积,实在都有它合适的场景。有的团队在向量内积这条线路上延续迭代,实在也是遭到自己算力RT的一些限制,包括自己工程团队等各方面身分的影响。而且很多团队的精排也还是向量内积结构,粗排就没有需要升级到COLD了。


最初,展望一下粗排会怎样成长。粗排未来会存在两种能够的线路。
一个是粗排精排化,也就是说精排技术延续向粗排迁移,粗排和精排的界限逐步模糊,走向更深条理的整合和一体化。实在可以看到,粗排的迭代过程自己实在就是一个粗排精排化的进程,一般很多技术如向量内积,都是先在精排落地拿到结果后,再逐步向粗排迁移。而且算力也会更深度的介入到全部模子的迭代进程中,未来能够的话甚至不会再分粗排和精排,精排自己能够会在引入算力作为一个约束的情况下,经过AutoML等方式,产出多个分歧算力版本的子模子,粗排只是其中一个,跟从精排自动升级和迭代,从而实现全链路算力和结果的平衡。甚至算力充足大的话,可以不需要粗排了,间接用精排打分便可以了。
别的实在还存在别的一条路,就是回归调集挑选的本质,以产出合适后链路需要的调集为方针,真正以调集为工具停止建模。这里需要清楚粗排的方针是什么?粗排的方针是选出后链路需要的调集。现在朝粗排精排化的迭代思绪实在是在做ranking,可是粗排实在只需要一个top k的调集,调集内部无序便可以了。而粗排精排化这类方式消耗了很大一部分算力在TopK的内部排序上,很多算力消耗在Top1和Top2怎样排好,从计较角度来看是一种资本浪费。固然这条技术线路还比力新,今朝还在摸索中。可是这个偏向是一个很有希望的偏向,由于它回归了粗排的本质,间接面向粗排的终极方针,是以在算力的操纵率和终极的天花板上是更高的。
参考材料:
【1】Covington P, Adams J, Sargin E. Deep Neural Networks for YouTube Recommendations. RecSys. 2016.
【2】Zhe Wang, Liqin Zhao, Biye Jiang. COLD: Towards the Next Generation of Pre-Ranking System
明天的分享就到这里,感谢大师。
关于我们:
DataFunTalk 专注于大数据、野生智能技术利用的分享与交换。倡议于2017年,在北京皮艺床有限公司、上海皮艺床有限公司、深圳皮艺床有限公司、杭州皮艺床有限公司等城市举行跨越100场线下沙龙、论坛及峰会,已约请近600位专家和学者介入分享。其公众号 DataFunTalk 累计生产原创文章300+,百万+阅读,10万+精准粉丝。
回复

使用道具 举报

1

主题

5

帖子

21

积分

新手上路

Rank: 1

积分
21
发表于 2021-10-21 01:14:52 | 显示全部楼层
转发了
回复

使用道具 举报

0

主题

5

帖子

20

积分

新手上路

Rank: 1

积分
20
发表于 2021-10-21 01:15:10 | 显示全部楼层
转发了
回复

使用道具 举报

0

主题

4

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2021-10-21 01:15:27 | 显示全部楼层
mark
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

最好的茶叶都在这里

在这里,你可以找到最好的茶叶

多维度在线交流 新房独家优惠 线上预约线下线上

扫码下载APP
免费赠送红包