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

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 快速学习 基于 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

 

相关文章
|
1天前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版操作报错合集之用CTAS从mysql同步数据到hologres,改了字段长度,报错提示需要全部重新同步如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
28 8
|
1天前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版操作报错合集之遇到报错:Apache Kafka Connect错误如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
12 5
|
1天前
|
SQL 关系型数据库 MySQL
实时计算 Flink版操作报错合集之报错:org.apache.flink.table.api.validationexception如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
8 1
|
1天前
|
存储 SQL 关系型数据库
实时计算 Flink版操作报错合集之报错:WARN (org.apache.kafka.clients.consumer.ConsumerConfig:logUnused)这个错误如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
13 3
|
1天前
|
安全 Java 数据处理
实时计算 Flink版操作报错合集之hologres里报错:找不到字段如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
14 4
|
2天前
|
架构师 网络协议 算法
Android高级架构师整理面试经历发现?(大厂面经+学习笔记(1)
Android高级架构师整理面试经历发现?(大厂面经+学习笔记(1)
|
4天前
|
SQL 运维 Cloud Native
基于OceanBase+Flink CDC,云粒智慧实时数仓演进之路
本文讲述了其数据中台在传统数仓技术框架下做的一系列努力后,跨进 FlinkCDC 结合 OceanBase 的实时数仓演进过程。
225 2
 基于OceanBase+Flink CDC,云粒智慧实时数仓演进之路
|
4天前
|
机器学习/深度学习 搜索推荐 算法
高并发推荐系统架构设计-1 基本介绍
【5月更文挑战第5天】推荐系统是信息过滤工具,通过处理物料数据和行为日志,运用预处理、特征工程、算法模型学习用户兴趣,实现个性化推荐。在线架构包括AB分流、多路召回、模型排序和业务规则重排序。旧版线上架构由C++编写的API和engine服务组成,HTTP请求经SLB、Nginx、FastCGI到达服务程序,召回和排序服务处理推荐。存在并发瓶颈问题。
39 1
|
4天前
|
SQL 存储 JSON
Flink+Paimon+Hologres 构建实时湖仓数据分析
本文整理自阿里云高级专家喻良,在 Flink Forward Asia 2023 主会场的分享。
|
4天前
|
SQL 存储 JSON
Flink+Paimon+Hologres 构建实时湖仓数据分析
本文整理自阿里云高级专家喻良,在 Flink Forward Asia 2023 主会场的分享。
71640 4
Flink+Paimon+Hologres 构建实时湖仓数据分析