深度学习推荐系统实战
王喆
Roku 推荐系统架构负责人,前 hulu 高级研究员,《深度学习推荐系统》作者
10756 人已学习
立即订阅
登录后,你可以任选4讲全文学习
推荐试读
换一换
01 | 技术架构:深度学习推荐系统的经典技术架构长啥样?
04 | 特征工程:推荐系统有哪些可供利用的特征?
06 | Embedding基础:所有人都在谈的Embedding技术到底是什么?
课程目录
已完结/共 44 讲
开篇词 (1讲)
开篇词 | 从0开始搭建一个深度学习推荐系统
基础架构篇 (5讲)
01 | 技术架构:深度学习推荐系统的经典技术架构长啥样?
02 | Sparrow RecSys:我们要实现什么样的推荐系统?
03 | 深度学习基础:你打牢深度学习知识的地基了吗?
国庆策划 | 关于深度学习推荐系统,我有这些资料想推荐给你
国庆策划 | 深度学习推荐系统基础,你掌握了多少?
特征工程篇 (6讲)
04 | 特征工程:推荐系统有哪些可供利用的特征?
05 | 特征处理:如何利用Spark解决特征处理问题?
06 | Embedding基础:所有人都在谈的Embedding技术到底是什么?
07 | Embedding进阶:如何利用图结构数据生成Graph Embedding?
08 | Embedding实战:如何使用Spark生成Item2vec和Graph Embedding?
答疑 | 基础架构篇+特征工程篇常见问题解答
线上服务篇 (7讲)
09 | 线上服务:如何在线上提供高并发的推荐服务?
10 | 存储模块:如何用Redis解决推荐系统特征的存储问题?
11 | 召回层:如何快速又准确地筛选掉不相关物品?
12 | 局部敏感哈希:如何在常数时间内搜索Embedding最近邻?
13 | 模型服务:怎样把你的离线模型部署到线上?
14 | 融会贯通:Sparrow RecSys中的电影相似推荐功能是如何实现的?
答疑 | 线上服务篇留言问题详解
推荐模型篇 (12讲)
15 | 协同过滤:最经典的推荐模型,我们应该掌握什么?
16 | 深度学习革命:深度学习推荐模型发展的整体脉络是怎样的?
模型实战准备(一) | TensorFlow入门和环境配置
模型实战准备(二) | 模型特征、训练样本的处理
17 | Embedding+MLP:如何用TensorFlow实现经典的深度学习模型?
18|Wide&Deep:怎样让你的模型既有想象力又有记忆力?
19|NeuralCF:如何用深度学习改造协同过滤?
20 | DeepFM:如何让你的模型更好地处理特征交叉?
21|注意力机制、兴趣演化:推荐系统如何抓住用户的心?
22|强化学习:让推荐系统像智能机器人一样自主学习
特别加餐 | “银弹”不可靠,最优的模型结构该怎么找?
23| 实战:如何用深度学习模型实现Sparrow RecSys的个性化推荐功能?
模型评估篇 (5讲)
24 | 离线评估:常用的推荐系统离线评估方法有哪些?
25 | 评估指标:我们可以用哪些指标来衡量模型的好坏?
特别加餐|TensorFlow的模型离线评估实践怎么做?
26 | 在线测试:如何在推荐服务器内部实现A/B测试?
27 | 评估体系:如何解决A/B测试资源紧张的窘境?
前沿拓展篇 (6讲)
28 | 业界经典:YouTube深度学习推荐系统的经典架构长什么样?
29 | 图神经网络:Pinterest是如何应用图神经网络的?
30 | 流处理平台:Flink是如何快速识别用户兴趣,实现实时推荐的?
31|模型迭代:阿里巴巴是如何迭代更新推荐模型的?
32 | 强化学习案例:美团是如何在推荐系统中落地强化学习的?
33|技术权衡:解决方案这么多,哪个最合适?
结束语 (2讲)
结束语|深度学习时代需要什么样的推荐工程师?
期末考试 | “深度学习推荐系统”100分试卷等你来挑战!
深度学习推荐系统实战
15
15
1.0x
00:00/00:00
登录|注册

09 | 线上服务:如何在线上提供高并发的推荐服务?

你好,我是王喆。今天开始,我们进入线上服务篇的学习。
很多同学提起推荐系统,首先想到的是那些结构“华丽”,发展迅速的推荐模型。但事实上,在一个实际的工业级推荐系统中,训练和实现推荐模型的工作量往往连一半都没有。大量的工作都发生在搭建并维护推荐服务器、模型服务模块,以及特征和模型参数数据库等线上服务部分。
同时,由于线上服务模块是直接服务用户,产生推荐结果的模块,如果一旦发生延迟增加甚至服务宕机的情况,就会产生公司级别的事故。因此毫不夸张地说,线上服务实际上是推荐系统中最关键的一个模块。
线上服务如果写得不好,不仅杂乱无章,而且难以升级维护。因此,为了让你掌握搭建起一个支持深度学习的、稳定可扩展的推荐服务的方法,在这一模块中,我们会依次来讲线上服务器、特征存储、模型服务等模块的知识。
今天,我们先聚焦线上服务器,一起搭建直接产生推荐结果的服务接口。在这个过程中,我们按照先了解、后思考、再实践的顺序,依次解决这 3 个关键问题:
一个工业级的推荐服务器内部究竟都做了哪些事情?
像阿里、字节、腾讯这样级别的公司,它们的推荐系统是怎么承接住每秒百万甚至上千万的推荐请求的?
我们自己该如何搭建一个工业级推荐服务器的雏形呢?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
01 | 技术架构:深度学习推荐系统的经典技术架构长啥样?
04 | 特征工程:推荐系统有哪些可供利用的特征?
06 | Embedding基础:所有人都在谈的Embedding技术到底是什么?
12 | 局部敏感哈希:如何在常数时间内搜索Embedding最近邻?
24 | 离线评估:常用的推荐系统离线评估方法有哪些?
31|模型迭代:阿里巴巴是如何迭代更新推荐模型的?
该试读文章来自付费专栏《深度学习推荐系统实战》,如需阅读全部文章,
请购买文章所属专栏
立即购买
登录 后留言

精选留言(16)

  • smjccj
    源地址哈希,或根据服务器计算能力加权随机分配,当出现大量节点利用率很低时,进行资源回收,减少虚拟机,当大部分节点都出现overload情况,进行扩容,增加虚拟机数量。

    作者回复: 非常专业的回答,赞。

    2020-10-23
    4
    45
  • 范闲
    1.如果硬件配置基本一样且部署服务一样,就采用轮询或者随机的负载均衡策略
    2.如果硬件配置不同,可以根据硬件的计算能力做加权的负载均衡策略
    3.同样也可以利用源地址hash做策略
    4.关于扩容和缩容:可以根据系统负载情况做动态调整。

    作者回复: 非常好了,基本就是主流的负载均衡策略。推荐其他同学学习。

    2020-11-26
    2
    27
  • 那时刻
    请问老师,按照一些规则预先缓存好几类新用户的推荐列表,等遇到新用户的时候就直接返回,这算是冷启动策略么?

    作者回复: 其实是非常好的冷启动策略,业界也有很多是这样做的。再优化一点,可以利用新用户有限的信息,比如ip,注册信息等做一个简单的聚类,为每个人群聚类产生合适的推荐列表提前缓存。

    2020-10-29
    2
    17
  • Geek_04634b
    这个课199我都买,太值钱了,现在什么算法都是浮云,关键是落地

    作者回复: 有兴趣的话你可以去看看一些价值4999的训练营内容,然后再评估一下到底应该值多少钱。

    2021-01-12
    4
    8
  • shenhuaze
    王老师,如果推荐服务选择java和jetty,那么如果要上线基于tensorflow或者pytorch训练的深度学习模型,是需要自己用java改写预测的代码吗?还是有什么现成的解决方案?

    作者回复: 过几天会谈model serving的几种方式。一般选择请求tensorflow serving,或者embedding上线的方式。到时候我们可以再详细讨论。

    2020-10-25
    5
    8
  • 张弛 Conor
    有一个小错误,文中说输入http://localhost:6010/getmovie?movieId=1可以看到 getmovie 接口的返回对象,但在代码里访问提取的参数是id,所以这里应该输入的链接是:http://localhost:6010/getmovie?id=903。供其他小伙伴参考。
    第一个问题,如何在各节点之间分配任务?我认为首先要清楚各节点的能力,比如cpu性能、核数,内存,磁盘存储,显存;第二步是要识别这个任务的特点,比如我能想到的有A.任务的紧迫性。这个可以通过维护一系列优先队列来管理。B.任务的并发性。这个任务是否可以分成很多个任务同时去执行,可以分到多细去执行。但不太清楚这个可以如何去很好的识别。C.任务的工作量。即完成这个工作所需耗费的资源,这个可以通过数据量和分解到的子任务去判断;第三步,就是根据任务的特点和工作节点的能力去尽可能好的匹配。
    第二个问题,如何知道什么时候应该扩展节点,什么时候应该关闭节点?
    这个可以通过观察节点的资源利用率,如果现有运行节点的资源利用率很高,而排队的任务又很多,那么就可以扩展节点,相反,如果节点的资源利用率不高,也没有太多的排队任务,那么就可以适当关闭节点。
    2020-10-23
    1
    7
  • 雪焰🐻🥑
    王老师好,请问对于:“在一个成熟的工业级推荐系统中,合理的缓存策略甚至能够阻挡掉 90% 以上的推荐请求,大大减小推荐服务器的计算压力”,我理解每个用户的请求,在不同的时间,地点,context下是不一样的,这样千差万别的请求,数量级应该很大,不知道是如何把大部分都缓存起来的呢?谢谢

    作者回复: 缓存服务一般都要指定ttl,就是过期时间,ttl要根据缓存的可用大小进行设定。

    如果每次请求的变量确实完全不一样,就不用缓存了,因为没有意义。但在实际的应用中总是有优化的空间,比如电商网站,在没有产生新的历史行为的时候你没必要每次请求都产生不同的结果,就可以利用缓存来挡掉重复的请求。

    2020-10-24
    2
    6
  • 冻糕
    带我入门的师兄说推荐服务理论上限是100ms延迟,但实际上只会给你最多85ms的时间,超过就要必须优化。其中多路召回加重复过滤上限25ms,排序上限45ms 业务规则加生成json 上限10到15ms,请问老师这个延迟数据是否是业界通用的勒?

    作者回复: 你师兄说的基本是业界通用指标。

    2021-04-14
    2
    5
  • sljoai
    老师您好,本文中提供的服务降级方案是从业务功能上来说的,降低服务能力,那系统是如何感知到系统压力,同时反馈到实际服务能力的选择上的呢?另外,像Istio、SpringCloud、Dubbo这种服务框架中也包含服务降级的方案,与您文中提到服务降级方案相比较,有什么异同呢?这一块比较疑惑,希望老师能解答一下,谢谢!

    作者回复: 现在开源的监控工具,包括成熟的监控SaaS解决方案都很多,比如cAdvisor,datadog等等。总的来说成熟的公司都会建立一套成熟的监控体系,包括服务器的延迟、cpu、内存的占有率等等,一旦发现异常会立即通过预警或警告的方式反馈服务器,然后服务器根据警告作出相应的服务降级操作,或其他操作。

    你说的Istio,SpringCloud等是一些微服务的管理和实现框架,更多是从架构层面上考虑,而不是从推荐服务内部逻辑的层面考虑。

    二者并不矛盾,可以并存。

    2020-10-24
    4
  • Geek_8197bf
    请问老师,工业界推荐算法的实现都是Java和C++吗?Python流行吗?我只会Python,在犹豫要不要做推荐

    作者回复: python是离线部分的主流,但线上服务一般会用C++或java实现

    2021-05-14
    3
  • 吃数据的小毛虫
    王老师,您好。有一个小疑问需要向您请教一下,在本节的MovieService示例代码中,

    //获得请求中的id参数,转换为movie id
    String movieId = request.getParameter("id");

    获取的id实际就是movieid,因此将变量命名为了movieid,所以是不是将代码注释中的“转换”一词换为“命名为”更为合适呢?我个人理解“转换”一词暗示着有一个从A到B的过程或者操作,这里其实并没有,本质上id就是movieid,只是叫的名字变了。不知道我的理解对不对,请指正。谢谢~

    作者回复: 无伤大雅,你自己理解意思就好

    2021-09-04
  • คิดถึง 
    老师好,我想修改项目的访问地址,比如把http://localhost:6010/改为http://localhost:6010/sparrow/,该怎么办呢?
    2021-08-24
  • 笑笑是个好孩子
    这里的缓存和把召回到的结果保存到abase之类的k-v存储中 是一样的吗

    作者回复: 一般来说服务器各节点内部还有in memory缓存,k-v store一般会去存储公用的模型和数据

    2021-06-23
    1
  • MutouMan
    按能力来平均分配是比较方便的操作,如果想进一步优化,是不是可以根据请求的类别来设计不同核载的节点然后进行分配?比如冷启动相关的推荐就可以专门有一个轻量的节点处理。节点的扩展和关闭可以设计一个阈值来控制吧,总请求数超过时就扩展,反之关闭。

    作者回复: 基本的思路没有问题,基本是按照分流、弹性扩展的思路来设计。

    2021-04-30
    1
  • 行行行
    老师你好,线上服务如何做到模型实时更新的呢

    作者回复: 模型实时更新要用到模型serving的服务,后续会讲解模型服务的内容,我们到时候继续讨论。

    2020-10-23
  • kenan
    王老师,您好,请教一下,离线推荐和在线推荐的请求方式是什么?还有粗排和精排有那些方案?最好,关于这两方面内容,您有什么资料推荐一下?

    作者回复: 不要着急,我们后面继续学习,会有召回层,排序模型的介绍,如果到时还不清楚的话,我们继续讨论。

    2020-10-23
    3
收起评论
16
返回
顶部