Liangshan

Inner peace.

认真学习阿里双11的技术

难得过年没有请假,有时间整理一下前几天看了别人转发的,关于阿里双十一的一些技术总结。原文应该叫「互联网技术超级工程」,有兴趣的可以去互联网上搜索一下,应该是免费提供下载的。

那些开源软件的升级版、定制版我就直接略过了,确实是要到一定规模才会遇到的问题,现在看也看不懂。说一些我觉得有意思的地方吧。

之前在安居客我也做过搜索,优化过很长时间,方向就是语义化(semantic)。简单来说,除去文本匹配之外试图理解用户更深层的意思。比如,如果用户搜索「近期好看的电影」,机器如何理解「近期」呢?阿里的做法是通过 query 品类预测、query 改写,可以得出「近期好看的电影」和「2018年好看的电影」相似度较高。首先是品类预测,每次查询之后的点击转化都会用于学习这次查询中的词和品类之间的关系。然后再通过 DSSM 来猜测和这个 query 接近的其他 query。同样使用 DSSM 可以训练物品之间的相似度、物品标题和物品内容的匹配度(引用原文说法:「可以一定程度上遏制淘宝商品标题堆砌热门关键词的问题」。

阿里有很多活动,每个活动都有很多细则,以及问答知识库。以往都是人工来生成这些问答,但其实这些答案都是从细则中来的,所以可以尝试使用机器学习来做「阅读理解」,自动从活动规则中找到用户想要的答案。这个思路很酷,具体流程:

另外文章中多次提到了 A/B 测试的结果,大促期间确实是一个有足够数据来测试想法的好机会。

最后想提一下混部技术。简单来说,业务有高峰波谷,能不能在闲时自动调度一些其他任务过来执行?

很多人都被车堵过,而堵车的时候,并不是所有的车道都在堵车。有一个比较 有趣的情况,我们称之为潮汐现象,而它造成的问题是在早高峰的时候是进城方向堵 车,而晚高峰是出城方向堵。而为了缓解这个问题,我们使用了潮汐车道的方式。 那么同样的原理,是否如果能让这两个集群混合起来部署,让计算任务的一部分 任务跑到在线服务的资源之上,把在线服务空闲的资源利用起来呢?答案是肯定的。

需求很简单,但做起来就非常难了。有多难呢?以阿里的人力物力,做了 4 年才落地,2017年的双11有 20% 的流量跑在混部的机器上。因为这里面的基础设施太复杂,首先不同的应用需要跑在自己完全隔离的环境中,还要实现闲/忙时段的自动调度。但这样的大工程一旦启用,就会发挥巨大的价值,据发明这项技术的 Google 透露,可以节约 30% 的服务器资源。

老实讲看完了第一个感受就是,这得有多少个工程师啊。一直以来我的想法就是人招少一点,招好一点,这样这批人无论做什么都能搞定。但看完这个介绍之后,你不得不承认在某一个领域堆砌人才确实可以把深度做的足够深。举个例子,「发红包」应该是现在促销的常规手段了,一般的做法无非就是人为定一些规则,让用户来领或者抢。但双11的红包背后居然有一整套的机器学习模型来支持:

  • 消费者双 11 当天消费金额预估—根据预估的消费金额,计算消费者需要的购物津贴,确保购物津贴有稀缺感的同时,最大化的促进成交
  • 消费者优惠敏感度分析—对于不同的消费者,发放不同金额的红包,在保证使用率的同时,可以惠及更多的消费者。
  • 消费者传播力分析—在火炬红包活动中,可以给高传播用户更高获取未点亮红包的概率,以触达、传播更多的用户。
  • 消费者类目偏好分析、流失分析—用于产出需要重点关注的人群(比如“偏科”人群、流失人群、光看不买人群),可以发放特定的红包提升用户转化。

佩(zhen)服(xian)。