BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

吕慧伟:推荐系统的请求量飞速增长,同时兼顾稳定性
录制于:

| 受访者 吕慧伟 关注 1 他的粉丝 作者 InfoQ 关注 13 他的粉丝 发布于 2017年2月23日 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。
29:46

个人简介 吕慧伟,腾讯云布道师,腾讯社交网络运营部高级工程师,腾讯通用推荐系统神盾开发负责人,腾讯云推荐引擎架构师。中国科学院计算技术研究所博士,美国阿贡国家实验室博士后,从事并行计算多年,MPICH 核心开发者之一。

QCon是由InfoQ主办的全球顶级技术盛会,每年在伦敦、北京、东京、纽约、圣保罗、杭州、旧金山召开。自2007年3月份首次举办以来,已经有包括传统制造、金融、电信、互联网、航空航天等领域的近万名架构师、项目经理、团队领导者和高级开发人员参加过QCon大会。

   

1. 大家好,这里是QCon全球软件开发大会上海站2016,非常高兴邀请到腾讯云的吕慧伟老师,我想问一下为什么腾讯会做云推荐引擎呢?目的是什么?

吕慧伟:大家知道现在推荐引擎很火,在QCon也有很多关于推荐引擎的分享,大家为什么做这个事情,因为推荐引擎带来的效果提升非常明显,一般来说一个产品在接入推荐引擎以后可以得到30%以上的效果提升,不管是从购买还是用户的点击还是活跃度去看,都会有很大的提升,所以大家都在做这个事情。这个事情是一个很复杂的工程,包括数据的采集、算法的配置还有整个系统的搭建,一般小一点的互联网公司可能没有技术实力做这个事情,腾讯之前有很多的推荐系统的经验,现在我们也想把这方面的经验分享给大家,把这部分能力提供出来给大家使用,这跟我们的战略也是吻合的,我们现在做的是连接器,想把腾讯云推荐引擎这个能力开放给更多的合作伙伴去用,让他们快速的接入、快速的搭建起一个推荐系统,帮助他们的业务得到很好的效果提升,这是我们做推荐引擎的目的。目标用户就是有个性化推荐需求的中小企业或者是传统的行业,刚刚涉及互联网领域没有技术能力做推荐系统的这些用户。

   

2. 腾讯的推荐功能和业务需求可以追溯到什么时候呢?

吕慧伟:这部分很早就在做,QQ的好友推荐也是我们最早开始做,应该是2012年左右,会根据你的关系链情况,推荐可能认识的好友,大家在使用过程中已经用到了这个功能。

   

3. 那大概是几几年?

吕慧伟:2012年左右。

   

4. 什么时候开始考虑推出这个系统性的平台,和腾讯云的结合又是怎样的?

吕慧伟:之前我们是只针对这样一个业务,我们把一件事情做好就可以,后来越来越多的业务用到了这个推荐,像我这次分享里讲到的,有应用宝、QQ空间、QQ好友推荐,都用到了我们的推荐系统。针对这么多的业务场景,还有这么多不同的业务,每个业务场景都做一次开发,就有很多重复的工作,开发过程也是费时费力。我们就想到要把通用的部分做成算法模块或算法库,每次可以针对场景选一个算法来做,而不是重新开发一个,这样就提高了写应用的程序员的开发效率,开发的速度更快了,而且也不容易出错。基本上是2014、2015年的时候我们就开始着手做这个通用化能力的建设,最近半年我们在做云推荐引擎,因为我们内部的业务,用的都说好,我们跟平时的一些合作伙伴交流的过程当中发现他们也非常想用这个推荐系统,所以我们才有动力去把推荐能力给开放出来。

   

5. 如果这样看,这个推荐系统的演进之路就是2012年的时候是个独立的模块,2014、2015年变成通用的。做成通用的系统,从业务和技术角度来说,有没有什么利弊?

吕慧伟:肯定是利大于弊,好处就是应用程序员开发更简单,对推荐业务场景可以介入更快。弊端暂时我们很少能找到,因为模块化、模板化都是平时很常见的做法,如果非要找一个不好的地方就是做成模板之后,对某一个业务没有那么定制,所以可能一开始介入进来的时候,通过一个通用的模板接进来,接下来在调的过程当中会发现这个通用模板不适合你的开发要求,你可能会反复迭代,甚至自己写一个算法,但是给你提供这样一个模板的好处就是你很快就可以先上手,上手以后再在你的基础上改,会比从头改容易很多,所以还是好处。非得说一个坏处的话在定制的那一块可能要迭代好多次。

   

6. 现在这个推荐系统当前的应用场景大体可以分为几类?比如在社交、音乐、广告等不同的场景下,收集和关心的信息、数据有哪些不同?

吕慧伟:我们接入很多场景,每个场景的请求包括用户的兴趣都是不一样的,大致可以分为这么几类:基于社交的,基于位置的,基于你的兴趣的,还有基于相关内容的,这么几类。举一个例子,我们看QQ空间,用户播放当前视频的时候我们会给你推荐下一个视频,下一个视频通过什么算法来推荐就有很多的选择,比如我周围的同事、朋友都在看一些什么样的视频,可能我也会喜欢,因为我的同事是我们平时要打交道的或者这个朋友是我以前就已经是兴趣爱好一致的人,这个算法就是协同的算法。另外一个算法可以根据当前的视频选择相似的内容,比如你有一个游戏的视频,那我给你推一些相似的游戏资讯或者当前最热的游戏竞技内容,这是通过相似的算法。还有就是可能给你推荐一些热门的事情。这三种不同的推荐算法对应三种不同的模型,同一个场景下可以选这么多不同的模型,针对不同的场景、不同的业务可以选择的空间就更大。我们一般是先根据以前的经验,先上一个小的模型或者一个比较通用的模型,然后在这个模型上线以后观察它的效果,再反复迭代,包括其中一些细节,一些特征算法上的修改,这是一个持续优化的过程。

   

7. 您提到过腾讯曾经重构实时计算系统,能讲一讲当时是面对怎样的困难决定要重构这个系统?对应的解决办法和团队内的组织分工吗?

吕慧伟:这是我加入腾讯以后做的第一件事情,我以前是做并行计算的,比较关注的就是性能这一块,加入腾讯以后刚好赶上了推荐系统的请求量飞速增长的过程,就是2015年左右,通用化的阶段,接很多业务进来。我们去年一年的业务量增长了10倍,从每天大概10亿的请求增长到每天百亿请求,这个对系统的压力很大,系统性能一下子要支撑那么多的请求,通过扩机器可以解决一部分的问题,但是更重要的是稳定性。以前我们可能支持一个业务,这一个业务在某一个性能范围里面可能不需要考虑过载这些事情,用户请求量再大也不会超出机器处理请求的能力范围,现在一下子那么多业务进来,可能已经超出机器的处理能力。在这个背景下,一方面要提高性能,一方面要做一些过载保护,遇到海量请求的时候,还能很好的服务大部分用户,所以我们基于这两个目标做了一次重构。重构过程也比较艰难,首先要对以前的架构重新调整,重新设计,还有就是每一个程序员平时工作已经很忙了,你还要在业务增长的情况下最快的时间做完,我们最后是通过封闭开发解决这个问题,找了几个平时代码能力最强的程序员一起关到小黑屋里面,大概关了一周把框架部分写完了,重新设计或者重新架构了以后大家就来调试,把每个模块调通,调通以后还有一些边边角角的测试用例没有测到,还要调试、修改Bug,最后到上线,整个过程也很快,用了一周的封闭开发时间就做了一次很大的重构。

   

8. 现在推荐系统中用户的画像是多少,维度是怎样?不同种类的画像的技术处理区别有哪些?  

吕慧伟:用户画像是很重要的内容,推荐系统中只有了解用户才可以做更好的推荐,用户画像分这么几个维度,一个是一些基础属性,比如年龄,性别,还有学历、行业,这些基础属性可以通过一些统计算法统计出来,在哪个行业、哪个年龄段。第二个是兴趣,你这个用户可能喜欢打球,喜欢汽车,因为你平时在浏览这些内容,这又是你另外一方面的维度。第三个维度就是你在某一个业务上的活跃度,比如我很喜欢这个应用,可能一天花30分钟在上面,还有一些用户10分钟,有的用户是5分钟,这个活跃度也是很重要的事情。根据这些不同的维度,我们有不同的方法去统计,刚才说了通过统计的方法统计用户的时间,包括一些基础属性都可以通过统计方法得到,还有一些更隐含的关系,比如好友关系、你的兴趣或者行业,可以通过你的社会关系链算出来,可以通过机器学习这种方法去学,还有一些就是活跃度,也是可以通过统计算出来。

   

9. 能谈一谈具体选用的机器学习的框架吗?

吕慧伟:这部分我们是用了自己的系统,因为开源的已经无法满足我们的需求。

   

10. 腾讯的机器学习这一块,现在是在研发阶段还是已经投入到生产使用了?你们采用的是哪一个框架?

吕慧伟:我们现在在内部已经有很多的应用,包括在云上面已经开放了很多能力给不同的合作伙伴,比如像优图、语音识别,这些都已经开放给大家用。优图有一个例子,因为腾讯目前存储的图片量应该是国内数一数二的,图片量非常大,训练出来得到的模型效果非常好,近两年每年都有顶级论文发表在顶级会议上,有一些研究成果公布给大家分享,当然这个产品也是通过腾讯云的方式提供出来给大家用。

   

11. 系统在计算推荐结果时,延时大概是多少?  

吕慧伟:根据业务量不同,延时是不一样的,比如一个简单的请求热度就很简单,会更快一点,如果要算一个复杂的模型可能就慢一点,平均是毫秒或几十毫秒的级别。

   

12. 怎么评价推荐结果的好坏呢?   

吕慧伟:推荐系统最后的评价好坏肯定还是用户说了算,所以我们有一套A/B test系统,有一个流量控制系统,20%的流量给A算法,80%流量给B算法,通过对比哪个流量得到的转化率更高,可以知道哪个算法更好,比较常见的做法是先上一个比较简单的模型,很快可以实现的,再上一个经过多次调优的模型,对比一下新上的模型好不好,如果不好快速丢弃掉再上一个新的,然后根据场景去定制,应用宝、QQ空间,其中的算法都是经过多次迭代的过程。

   

13. 这个推荐系统应该是腾讯在大数据整体方向布局中的一个小模块吧?它与大数据的认识思考和发展思路是怎样形成的? 

吕慧伟:这是一个逐步演进的过程,我们最早就是做一个推荐系统,然后把这个推荐系统的能力放到云上面,后面围绕这个系统会有一系列其他的数据开放出来,比如像用户画像、征信这些东西,都可以逐步开放出来。大数据平台能力是我们之前很早就开始积累的,从平台到系统,再到应用都有不同的积累项目。平台方面腾讯云可以做到很好的资源调度,包括降低成本。在系统方面我们有数智这样一个大数据解决方案,通过数智这个平台我们提供最常用的数据的框架,像spark,hadoop,storm,这些框架都在数据套件里面包括了,在安装的时候只需要一键配置,就可以安装到你的私有云或公有云上,可以很方便的使用,这是数智套件。第三方面就是数据的应用或者服务,推荐引擎是一块,刚才说的机器学习、图像识别、语音识别是另外一块,在数据应用领域会有多个能力开放出来。

   

14. 如果有一天视频多了起来,推荐系统会考虑从视频流中实时计算推荐吗?

吕慧伟:这方面我们已经在考虑了,最近做的事情就是把推荐的特征实时化,用户在使用一个APP或者产品的过程当中,他的一些用户行为可以实时反馈过来,比如这个页面,我有没有打开,或者我在一个视频上停留了多久、有没有点击,这些用户行为会几秒钟反馈回到推荐系统,我们就知道这个用户喜不喜欢当前的视频,比如说在一个视频停留了10秒钟,那我觉得是比较喜欢,从头看到尾,就知道你是喜欢这个视频,可以根据喜欢的程度给你推荐一些更相关的视频。

   

15. 除了用户行为,有没有对视频或者图像内部的内容进行标注?

吕慧伟:你说的是从图像或者是视频里面检索出来一些信息的标签,或者是一些索引,这是另外一方面能力,我们跟其他团队合作,他们会提供图像识别的算法,视频的算法,包括提供标签,你可以更好的了解内容,通过内容和用户的匹配,可以更好的做推荐,这方面更多的是需要合作,我们是专注在推荐系统这一块,也有很多团队在做这个事情。

   

16. 接下来你们的未来发展方向是什么?你们下一个技术攻坚点是什么?   

吕慧伟:这一块包括整个业界,对大数据都非常的重视,所以我们在大数据这块肯定会投入很多人力去做。从两个方面去做,从数据平台这一块,我们会加强数据的基础处理能力,还有数据分析能力,像最近提供的一些产品,像机器学习、优图、语音,这些能力都是往AI方向走。另外是我们自己的推荐系统,这个推荐系统也是一直不断的在优化当中,之前有很多的系统优化,后面我们会关注一些算法、模型上的优化,比如我们接下去会做的两件事情,一个是模型简单化,一个是算法复杂化。如果使用深度学习,可以使特征训练非常简单,但深度学习这个算法比较复杂,所以通过深度学习可以使得特征训练过程非常简单,这是一个事情;第二个是用传统的模型,但是会用很多的用户特征去做,用的还是传统模型,但是我们会提供更多的特征,使得推荐更准确;第三个事情就是你刚才说的实时化,我们也在做很多的尝试,实时化可以很快的反馈用户当前的情况,也是很有意义的,总体就是从这几方面去考虑。

   

17. 你们在团队组建还有人员招募、职位分工上是怎么考虑的?

吕慧伟:我们现在内部主要是分平台、算法,还有产品,这三块去考虑。平台这块需要使系统具有处理海量数据的能力,落实到细节就是把实时计算做的更快,成本更低,这是一个;算法方面我们会实验很多新的算法,包括在旧的算法上改进,新的算法像深度学习这块我们也在做一些尝试;还有产品这一块,我们希望把算法做的更通用,可以让更多人来使用这个推荐系统,我们跟云结合在做云推荐引擎这个产品。   人才方面希望有更多有能力的人或者对推荐系统感兴趣的人可以跟我们联系,我们有很多职位,很多的应用场景包括很多的业务等着大家过来一起开发。

   

18. 你们有接触到深度学习、机器学习,数据清洗处理这一块有专门的人来做吗?

吕慧伟:数据清洗我们有专门的团队去做,他们会做一些去重、去敏,经过一部分清洗,去除敏感信息,按照一定的格式存下来,后面的算法才可以训练它。

   

20. 将来期望达到多少?

吕慧伟:数据中心团队大概是有100人左右在做这个事情,在平台、算法都会有不同的人去做,平台大概有10来个人在优化这个事情。

InfoQ:谢谢吕老师。

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT