01 | 技术架构:深度学习推荐系统的经典技术架构长啥样?
01 | 技术架构:深度学习推荐系统的经典技术架构长啥样?
讲述:王喆
时长17:05大小15.61M
推荐系统要解决的根本问题是什么?
推荐系统的逻辑架构
深度学习对推荐系统的革命
来源:《Neural collaborative filtering》
来源:《Deep Interest Evolution Network for Click-Through Rate Prediction》
深度学习推荐系统的技术架构
第一部分:推荐系统的数据部分
第二部分:推荐系统的模型部分
小结
课后思考
赞 126
提建议
精选留言(40)
- 朱月俊2020-09-22数据部分:event distribution, hadoop, query results, netflex.hermes, user event queue, netflix.manhattan. 模型部分:model training, models, online computation, online service, algorithm service.
作者回复: 赞,完全正确。另外nearline computation也属于数据部分,正中央的evcache等几个数据库可以看作数据部分和模型部分的接口。
共 2 条评论33 - 杜军2020-09-27请教大神,我们注意到 Flink 最近更新比较频繁,号称可以做到流批一体分析,甚至 ETL 领域好像也可以用起来,是不是可以在系统架构设计的时候直接用 Flink 取代 Spark,ETL 和实时部分统一到一个架构上来是否可行?谢谢
作者回复: 这是个很好的问题。其实也是大数据工程师们一直追求的批流一体的Kappa架构。 但实践中遇到的困难不少。一是一些历史遗留问题,比如当前很多公司的数据体系大部分是建立在spark基础上的,那直接用flink去替代肯定有风险,所以很多公司还沿用着混合的lambda架构。 另外是Spark和Flink发展的问题,Flink在进化的同时Spark也在发展,比如Structured Streaming的提出就是为了跟Flink竞争,而且Spark本身的社区成熟程度和这么多年的积累还是超过目前的Flink的。所以也难说Flink会完全替代Spark。 但毫无疑问,批流一体是未来的方向,大家也都在往这个方向努力。但我个人觉得Spark和Flink会长期共存,共同发展。
共 3 条评论24 - Four y2020-09-22老师,请问关于大数据数据出口的那一部分,请问实时的用户推荐请求也是会先经过大数据处理,生成可供线上推理的数据吗?就是针对文中大数据出口的第二点。
作者回复: 这是个好问题,希望大家多提这样的思考。 在推荐服务器做线上推断时,实时用户请求里面包含的特征一般是直接在服务器内部提取出来的,所以肯定不需要再在数据流中走一遍。 但是线上请求数据最终还是会落盘,生成日志数据,这个过程中,一些流处理,和批处理的平台会对这些数据做进一步处理,生成今后可供使用的特征以及训练用样本。
共 4 条评论21 - 飞逝@时间2021-06-19老师,请教几个实际生产问题(T表示当天,T-1表示昨天): 1)在召回阶段,不管是传统的CB/CF算法或者老师说深度学习中的Embedding技术,这部分由于拿的全量数据(T之前的所有数据)所以离线计算,但是由于训练的数据是按时间不断递增更新的,是需要每天都调度这些算法离线计算产生召回物品吗? 2)同样在精排阶段,由于数据每天按时间递增,那训练的模型是每天重新训练?还是按照一定的策略(比如积累一定程度的数据量)再重新训练模型?展开
作者回复: 一般不管召回模型,还是排序模型,都需要天级别更新。有些一线公司会用流的方式更新模型,可以做到分钟级别的增量更新。
13 - 张弛 Conor2020-09-28老师,想向您请教一下召回层和排序层除了结果上的“粗”和“精”是否还有其他的区别?另外就是二者在深度学习技术加持下能否实现端到端的排序呢?
作者回复: 我们在之后的召回层介绍中还会深入讲解召回层,所以期待之后的交流。 关于端到端排序是一个非常好的问题。其实我们理想状态下最好的结果就是不分召回层和排序层,实现端到端排序。但是工程上很难做到,因为排序层往往是复杂模型,大规模候选集情况下延迟较大。 但是也已经有不少业界团队在探索端到端排序的可能。我觉得是一个很好的值得改进的方向。
共 2 条评论9 - fsc20162020-09-22老师,这套课程侧重点和您的书《深度学习推荐系统》区别是什么了,更偏实战嘛
作者回复: 是的,专栏的名字是《深度学习推荐系统实战》,所以会更注重理论联系实际,用一套代码SparrowRecSys把所有重要的知识点实现一遍,最后串联成一套成型的推荐系统。
9 - Geek_f676f32021-02-23文章写得不错,赞!推荐是一个更复合的领域,在推荐系统实践中,整体的思考架构还可以增加产品、系统纬度;产品、数据、模型、系统四位一体,作为从业人员,也要学会从产品角度来思考问题
作者回复: 是这样,现在的要求越来越全面了。
共 2 条评论8 - 陈威洋2020-10-26请问王老师一个概念问题,落盘是什么意思?为什么要用落盘这个词?
作者回复: 落盘一般是指写入磁盘或者一些永久性存储的存储系统。
共 3 条评论7 - 夜雨声烦2020-10-09推荐系统要解决的三个问题: 1,推荐系统要解决的问题是什么? 在“信息过载”的情况下,用户如何高效获取感兴趣的信息。 2,有没有一个非常高角度的思维导图,让我能够了解这个领域有哪些主要的技术,做到心中有数? 上面的树结构,以及根、枝干、叶子代表的含义; 3,为什么我们要一直强调“深度学习”,深度学习到底给推荐系统带来了什么革命性的影响? 深度学习的模型结构复杂,数据拟合能力和表达能力更强,能够让推荐模型更好的模拟用户的兴趣变迁过程,甚至是做决定的过程。而深度学习的发展,也推动着推荐系统数据流部分的革命,让它能够更快、更强地处理推荐系统相关的数据。 作业: 数据部分:event distribution,user event queue,Netflix.Manhattan,Cassandra,mysql,EVcache,Online Data Service;Query result,Offline data,Nearline Computation; 模型部分:model training,Models,online computation,online data service,Algorithm Service,Machine Learning Algorithm展开
作者回复: 作业部分回答的非常好。
7 - 西北小英雄2020-10-02老师您好,我去看了您的知乎专栏对Netflix推荐系统架构图的讲解,对下面部分有点疑问。(可能我是推荐系统新手,没有工程经验对架构不太懂,如果的问题不是很营养,望谅解) 比如从online 到nearline和offline通过用户消息队列(User Event Queue,现在基本都使用Kafka)来缓存数据流,这是连接online和其他层的接口。 而从nearline和offline中连接online的接口则是algorithm service,online data service,以及model到online层的接口。 1.单从图中也看不出User Event Queue和offline层有关系, 2.nearline层是把计算结果存入mysql等数据库后给online层的algorithm service使用了吗?展开
作者回复: 1、User Event Queue就拿用kafka举例,跟offline的关系确实不强,唯一的关系就是数据经kafka最终会落盘到离线的存储系统。所以这一点你的理解没错 2、nearline的理解也没错,一般来说nearline处理好的数据、特征会存储到evcache,redis等内存数据库供online service使用。
7 - 高璇璇2020-09-23增强学习是指reinforcement learning吗?国内一般叫强化学习
作者回复: 是的,两种可能都有叫,大家能理解就好。
6 - 军舰2020-09-22老师,候选物品库是不是可以这样理解:我现在在看柯南,那么候选物品可能是动画片、侦探题材等?
作者回复: 候选物品库是所有可被推荐的物品集合。比如一个动漫视频网站,他的候选物品可以是 柯南,海贼王,七龙珠等等,但动画片,侦探题材这些属于物品上的特征,并不是候选物品。
共 2 条评论6 - 谁将新樽盛旧月2021-04-30公司要上线推荐系统了,刚开始研发第一个推荐系统,看这个是不是有点超纲,后续优化推荐可以用到深度学习推荐,现在就上线课程中推荐系统的感觉有点困难,老师给点建议
作者回复: 没什么超纲不超纲的,这又不是义务教育课程,可以当作自己的知识储备或者行业的前沿进展跟踪。
共 2 条评论5 - 太子长琴2020-09-25老师好,请问下啊, 特征库会存储模型计算后的特征(比如embeddibg)吗,还是只存储基本特征? 实时新数据(比如新用户,新物品)一般是多久或者有什么指标确定需要更新到离线模型呢? 谢谢
作者回复: 一般来说embeeding也完全可以存储到特征数据库中,最终的决定还是应该看各公司具体的技术架构和业务需求。如果embedding数据量比较大,也有单独存储的。 实时新数据一般来说,特征的更新是越快越好,因为特征的改变也直接影响到最终的排序结果。 模型的训练没有统一的指标,理论上来说也是越快越好,但要考虑算力,数据处理延迟等工程限制。大多公司以小时级别更新。
5 - 归零2021-04-05no magic,作为互联网从业者,目前预测后续的工作跟深度学习相关,先学习一下。很认同老师的思路,先知道解决什么问题,同时心中有一个路线,可以按图索骥。
作者回复: 赞
5 - DBC2021-07-05您好,请教一个问题~ Model Serving的部分里面说指的是在线的时候,提供特征的。请问一下,是指的在线去缓存里找,召回的这部分的item的特征和user特征,然后拼接成输入特征后,去请求模型这个过程么?
作者回复: 是的
3 - 章光辉2021-03-18虽然老师将“流处理平台”归为“准实时”,我也明白老师的意思是“流处理平台相对于客户端/服务端具有一定的滞后性(哪怕是那么几百毫秒)”,但是这在大数据领域却不是一个正确的说法。
作者回复: 欢迎不同的声音,特别是专门从事数据工作的工程师的声音。所以对于流处理平台,正确的说法和理解应该是怎样的?
共 2 条评论3 - Geek_b7f31e2021-01-07老师,请教几个问题: 1. 候选集比较小的情况,比如小于5千个物品,是不是没有必要分成召回和排序两块? 2. 一般推荐系统的响应速度要求是多少?根据您的经验制约响应速度的bottle neck一般会出现在哪个环节? 谢谢!
作者回复: 1.其实无法回答,跟你的系统设计,数据量大小,模型复杂度都有关系。 2.一般要求在100ms以内。我想先听听你的想法,你觉得最耗时的环节都在哪?我觉得不难分析出来。
共 3 条评论3 - Yuwei Quan🎋2020-10-15我想问nearline computation这一步是在干嘛啊,是把训练好的model 存成artifact准备和online model相结合做deployment吗。我不太懂数据部分和模型部分的接口是什么意思。最后的event distribution存起来有什么好处啊,会复盘吗?然后他们的Netflix Hermes和Manhattan是一个部组的整个代称还是一个数据处理的代称。谢谢
作者回复: nearline computation主要负责准实时特征更新。 数据部分和模型部分的接口 可以关注后续课程的特征和模型服务部分。 event distribution 可以用于异常监控预警和一些特征的生成。 Hermes和Manhattan是Netflix推荐系统的两个模块,不用过分纠结细节。
3 - Geek_072020-10-10老师,我想请教一下,候选物品库大概是怎么做存储管理的呢?像今日头条这种平台可能会有不同类型的物品(比如视频、图文等等),他们的结构化的内容属性可能都是不同的,做召回的时候,召回层又是怎么跟物品库做交互的?
作者回复: 召回层的时候还会做介绍。基本都会采用多路召回进行融合。
3