基于 Apache Flink + Hologres 的实时推荐系统架构解析|学习笔记

简介: 快速学习 基于 Apache Flink + Hologres 的实时推荐系统架构解析

开发者学堂课程【《实时数仓入门课程》基于 Apache Flink + Hologres  的实时推荐系统架构解析】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/807/detail/13888


基于 Apache Flink + Hologres  的实时推荐系统架构解析


内容介绍:

一、 实时推荐系统原理

二、 实时推荐系统架构

三、 基于 Flink + Hologres 的实时推荐系统关键技术

1. 可撤回订正的特征和样本

2. 基于事件的流批混合工作流

 

 

实时推荐系统原理

静态推荐系统:

前端用户应用产生很多日志行为,放入一个消息队列中,进入到 ETL,然后进入离线系统去做特征生成和模型训练,再将特征和模型推入到系统中,在线服务便可以调用在线推理服务从而获得推荐结果。

图片22.png

实例:

在日志中我们可以看到:“ User1 and User2 viewed page#200 and other pages;User1 viewed page#100 and clicked ads#2002;”用户日志中通过ETL 将这些行为归纳,然后送到模型训练中。

在模型训练过程中会用到一些特征:“Both User1 and User2 are male users in China;”而后模型可能学到:“Show ads#2002 to Male User in China when page#100 is visited;”。

这时将许多用户的特征信息推到特征库,也将模型推到线上去。

图片23.png

静态推荐系统的特点:

1. 静态生成模型和特征。

2. 以分类模型为例,根据用户的相似性进行用户分类,假设同类用户有相似的兴趣和行为。

l 例如中国男性用户有类似行为。

l 一旦用户被划分为某个类别,则他将一直处于这个类别中,直到被新的模型训练重新分配。


静态推荐系统的问题:

1. 用户的行为非常多元化,无法划分到某个固定类别。

l 上午为父母采购保健品,中午为出差订酒店,晚上给家人买衣服……

l 静态系统无法准确将用户放到当时当刻正确的类别中。

2. 某一类别用户的行为相似,但是行为本身可能会发生变化。

l 假设用户“随大流”,但是“大流”可能发生变化。

l 历史数据看出来的“大流”可能无法反映线上的真是情况。

加入实时特征工程的推荐系统:

为解决静态推荐系统的问题可以加入动态特征。可以对用户的实时特征进行采样,能更好的判断用户当时当刻的意图(可以采集用户一分钟之内看了哪些页面或浏览的一些商品从而给用户推荐更合适当时当刻意图的广告)。

图片24.png

由于模型训练是离线进行的,模型可能第二天才被更新,便会对推荐效果带来影响。


加入实时特征工程的推荐系统的特点及问题:

1. 通过增加动态 feature。

l 实时跟踪一类用户的行为,贴合“大流”。

l 实时追踪用户的表现,了解用户当时当刻的表现,并将用户划分到更合适的类别中去。

2. 但是当模型的分类方式本身发生变化时,可能无法找到最合适的类别,需要重新训练模型增加分类。

l 例:新产品上线频繁,业务高速成长,用户行为的分布变化比较快。


加入实时模型训练的推荐系统:

图片25.png

加入实时模型训练的推荐系统特点:

1. 在动态特征的基础上,实时训练模型,使模型尽可能贴近此时此刻用户行为的分布。

2. 缓解模型的退化。

 

 

经典离线推荐系统架构:

图片26.png

实时推荐系统演进:

1. 特征计算:静态 T+1 特征计算到实时特征计算。

2. 样本生成:离线 T+1 样本生成到实时样本生成。

3. 模型训练:离线训练 T+1 更新到增量训练实时更新。

阿里巴巴搜推广在线机器学习流程:

图片27.png


实时推荐系统架构

图片28.png

相比于离线推荐系统,架构发生了一些变化。消息队列生成的数据除了进入到离线存储来保存历史行为意外,还会把消息队列中的消息读出两份,一份做实时特征计算,也会放到特征存储中,另外一份放到实时样本拼接中,得到实时样本。这个实时样本可以同时拿到离线的模型训练和实时的模型训练。然后进入模型储存,经过模型验证最后上线。


基于 Flink + Hologres 的实时推荐方案

图片29.png

实时特征计算及推理(Flink+Hologres):图片30.png

实时样品拼接(Flink+Hologres):

图片31.png

实时模型训练/深度学习(PAI-Alink/Tensorflow):

图片32.png

实时模型训练/深度学习(PAI-Alink/Tensorflow):

图片33.png

l 可撤回订正的特征和样本

为什么需要特征和样本的订正:

1. 实时日志存在乱序

u 某个用户点击事件由于系统延迟完到产生 False Negative 样本

2. 一般通过离线作业重新计算离线样本

u 重新跑整个离线样本计算

3. 通过 Flink+Hologres 撤回机制点更新

u 仅更新需要更正的特征和样本


l 基于事件的流批混合工作流

图片34.png

不同系统之间有一些相互的依赖关系或调度关系,可能是数据依赖或控制依赖。比如:周期的或手动触发的跑一些离线的静态特征计算(特征回填或更正实时特征产生的问题);离线模型训练或在线模型训练之后需要出发模型验证;样本拼接完成之后跑批量的离线模型训练。这些任务之前的交互就是一个比较复杂的工作流,之中既有批任务又有流任务,则为流批混合工作流。


Flink AI Flow(一个大数据+AI 的顶层工作流抽象):

图片35.png

支持服务(支持完成整个调度语义的支持服务):

1. 元数据服务(Metadata Service)

图片36.png


2.通知服务(Notification Service)

l 带主键的事件和事件监听

图片37.png


3.模型中心(Model Center)

图片38.png


例子:

流批混合的调度器和工作流帮助我们实现端到端的实时推荐系统架构中所有作业所有工作流的串联。

图片39.png

开源 Flink 生态项目:

https://github.com/alibaba/flink-ai-extended/tree/master/flink-ai-flow

 

相关文章
|
7月前
|
存储 消息中间件 OLAP
基于 Flink+Paimon+Hologres 搭建淘天集团湖仓一体数据链路
本文整理自淘天集团高级数据开发工程师朱奥在Flink Forward Asia 2024的分享,围绕实时数仓优化展开。内容涵盖项目背景、核心策略、解决方案、项目价值及未来计划五部分。通过引入Paimon和Hologres技术,解决当前流批存储不统一、实时数据可见性差等痛点,实现流批一体存储与高效近实时数据加工。项目显著提升了数据时效性和开发运维效率,降低了使用门槛与成本,并规划未来在集团内推广湖仓一体架构,探索更多技术创新场景。
1480 3
基于 Flink+Paimon+Hologres 搭建淘天集团湖仓一体数据链路
|
3月前
|
机器学习/深度学习 人工智能 搜索推荐
从零构建短视频推荐系统:双塔算法架构解析与代码实现
短视频推荐看似“读心”,实则依赖双塔推荐系统:用户塔与物品塔分别将行为与内容编码为向量,通过相似度匹配实现精准推送。本文解析其架构原理、技术实现与工程挑战,揭秘抖音等平台如何用AI抓住你的注意力。
792 7
从零构建短视频推荐系统:双塔算法架构解析与代码实现
|
6月前
|
机器学习/深度学习 运维 监控
实时异常检测实战:Flink+PAI 算法模型服务化架构设计
本文深入探讨了基于 Apache Flink 与阿里云 PAI 构建的实时异常检测系统。内容涵盖技术演进、架构设计、核心模块实现及金融、工业等多领域实战案例,解析流处理、模型服务化、状态管理等关键技术,并提供性能优化与高可用方案,助力企业打造高效智能的实时异常检测平台。
487 1
|
8月前
|
SQL 运维 Java
蚂蚁 Flink 实时计算编译任务 Koupleless 架构改造
本文介绍了对Flink实时计算编译任务的Koupleless架构改造。为解决进程模型带来的响应慢、资源消耗大等问题,团队将进程模型改为线程模型,并借助Koupleless的类加载隔离能力实现版本和包的隔离。通过动态装配Plugin及其Classpath,以及Biz运行时仅对依赖Plugin可见的设计,大幅优化了编译任务的性能。结果表明,新架构使编译耗时降低50%,吞吐量提升5倍以上。
蚂蚁 Flink 实时计算编译任务 Koupleless 架构改造
|
10月前
|
SQL 消息中间件 Kafka
Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
本文介绍了阿里云实时数仓Hologres负责人姜伟华在Flink Forward Asia 2024上的分享,涵盖实时数仓的发展历程、从实时数仓到实时湖仓的演进,以及总结。文章通过三代实时数仓架构的演变,详细解析了Lambda架构、Kafka实时数仓分层+OLAP、Hologres实时数仓分层复用等方案,并探讨了未来从实时数仓到实时湖仓的演进方向。最后,结合实际案例和Demo展示了Hologres + Flink + Paimon在实时湖仓中的应用,帮助用户根据业务需求选择合适的方案。
1455 20
Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
|
9月前
|
存储 SQL Java
Flink CDC + Hologres高性能数据同步优化实践
本文整理自阿里云高级技术专家胡一博老师在Flink Forward Asia 2024数据集成(二)专场的分享,主要内容包括:1. Hologres介绍:实时数据仓库,支持毫秒级写入和高QPS查询;2. 写入优化:通过改进缓冲队列、连接池和COPY模式提高吞吐量和降低延迟;3. 消费优化:优化离线场景和分区表的消费逻辑,提升性能和资源利用率;4. 未来展望:进一步简化用户操作,支持更多DDL操作及全增量消费。Hologres 3.0全新升级为一体化实时湖仓平台,提供多项新功能并降低使用成本。
711 1
Flink CDC + Hologres高性能数据同步优化实践
|
9月前
|
SQL 消息中间件 Serverless
​Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
​Flink+Paimon+Hologres,面向未来的一体化实时湖仓平台架构设计
295 4
|
9月前
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
904 29
|
9月前
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
381 4
|
9月前
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~

热门文章

最新文章

推荐镜像

更多
  • DNS