写点什么

优酷提出基于图执行引擎的算法服务框架,系统架构概览

  • 2020-06-10
  • 本文字数:2066 字

    阅读完需:约 7 分钟

优酷提出基于图执行引擎的算法服务框架,系统架构概览

背景

在阿里的业务中,有广泛的算法应用场景,也沉淀了相关的算法应用平台和工具:基础的算法引擎部分,有成熟的召回和打分预估引擎、在线实时特征服务;推荐算法应用领域,有算法实验平台 TPP(源于淘宝个性化平台),提供 Serverless 形式的算法实验平台,包括资源弹性伸缩、实验能力(代码在线发布、AB 分流、动态配置)、监控管理(完善的监控报警、流控、降级)等能力,是算法在线应用的基石。


但在实际的算法应用业务中(如优酷推荐业务),算法应用场景众多(100+活跃场景),需求灵活多变,如果没有一套通用业务框架抽象出通用和定制化的部分来提高算法组件的复用度,会严重拖慢算法实验的节奏。基于图引擎的算法服务框架就是为了封装这样一套框架,抽象算法在线服务的通用算子,支持运行时算法流程的装配,提升算法服务场景搭建的效率。

设计概览

算法推荐典型的在线处理执行流程是:多路粗排召回、合并、预估、打散策略。推荐服务根据用户的设备 ID 等其他必要信息进行多路并行召回,在召回引擎中粗排后,经过必要的过滤处理,截取一定数量的内容调用 Rank 引擎进行精排预估,预估结果经过一系列算法策略处理后输出最终结果。


整个过程中召回、合并、预估、打散等业务处理既有并行处理也有串行处理,可以根据业务需要灵活配置。基于图的推荐业务执行引擎是运行在算法实验平台上的执行引擎,它的典型处理流程是:在 AB 实验分桶上,通过图形化交互页面配置数据源、业务算子的执行依赖关系,并配置每个算子的运行时动态参数。


系统总体结构如下图所示,共分成五个主要模块(DAG 图执行引擎、图执行算子元件、图形化配置 DAG、图配置动态解析、Debug 调试)。



图:系统总体架构


当推荐请求到达时,引擎读取 AB 参数,根据参数上配置的算子信息,通过反射机制创建算子实例,动态组装成可运行的 DAG。根据条件分支配置,动态裁剪运行时的 DAG 实例,根据图运行占用最大线程数配置,动态调整线程复用。算子通过算法实验平台的底层协程池并行运行。

关键模块

1 图执行算子元件

1) 数据集

在 DAG 图中流转的数据统一封装为 DataSet 数据集,数据集是结构化多行二维数据的封装,在数据集上封装便利的基础算子操作。


数据集上一系列处理操作基于 Java 的 Stream API 来处理,以此达到集合处理的最好性能,将非 Action 操作延迟到最后数据处理时运行。

2) 数据源

将能够返回数据或者数据交互的二方服务封装为通用数据源,所有业务算子围绕数据源的数据进行业务开发,通用数据源包括召回数据集、在线算法需要的辅助数据集(如存放在 KV 内存存储的旁路召回数据、特征等数据)、打分预估结果集、内存数据源等。


数据源的封装通过动态参数配置方式实现通用性和可扩展性。数据查询只需要修改配置即可实现数据获取,不需要开发代码。

3) 基础算子

在 DataSet 数据集上封装的基本操作作为基础算子,比如 Join、Union、Filter、Sort、Map、Collect 等流式操作。在 DataSet 上重新封装 Stream 相关 API,便于对 DataSet 进行流式处理。

4) 业务算子

召回、预估、合并、打散、过滤等业务操作封装为业务算子,在业务算子中可以查询数据源,返回数据集后通过基础算子计算得到结果。

2 图形化配置 DAG

3 配置动态解析和优化

1)根据 AB 配置实时变更图执行结构

为了减少解析图结构的耗时,图引擎在运行时对图结构做了缓存,但在 AB 配置更新时需要实时反映到图引擎中,所以要根据图配置的哈希值校验的方式检测图配置是否更新,图结构变更后会重新创建引擎实例。

2)子图并行线程优化

在 DAG 执行时,所有算子都交给线程池异步运行,但是在大多数情况下子图可能是一个顺序执行图,不需要并行,不应该占用其他线程,所以在图执行时,动态根据依赖关系识别节点是否需要占用新线程运行。

3)条件分支动态裁剪

如果图结构中存在条件节点,会根据条件节点的动态结果裁剪后续图节点的运行。如果一个图节点的执行条件为否,后续单独依赖它的节点都不会运行,条件节点具备传递性。如果后续节点不单独依赖不运行的节点,则当前节点可运行。

4 DAG 图执行引擎

1)并发控制

通过图中依赖关系动态解析节点需要通过并行还是串行执行,在图中配置最大并发线程数来控制图的最大并发度。最大程度复用线程,减少线程切换带来的开销。

2)超时控制

通过整个图上配置超时时间来控制图的超时,根据业务粒度将子业务配置为子图,从而通过控制子图的超时时间来控制子业务的超时时间。

3)通过协程优化异步执行

DAG 运行依赖线程池运行,算法实验平台提供了基础线程池,并同时将线程池在 JVM 层面优化为协程,通过压测比对,普通线程池的性能要低于协程池的性能。

总结 &展望

基于图引擎的算法服务框架建设,通过抽象算法业务的通用组件,提供图形化流程编排工具和图执行引擎,实现了 0 代码、配置化支持算法业务需求。为快速的算法应用,不断提升用户的个性化服务打下了坚实基础。对推荐、搜索、广告等算法应用业务有参考价值。


接下来,为了进一步提升引擎性能,我们将在构图优化和引擎执行性能上做优化,在保持业务表达灵活简洁的同时,追求更优的执行性能。


作者介绍:阿里文娱高级专家 随方,阿里文娱开发专家 轩成


2020-06-10 11:163989

评论

发布
暂无评论
发现更多内容

迈向群体智能 | 智源发布首个跨本体具身大小脑协作框架与开源具身大脑

智源研究院

“HAHM美国哈姆点评”是不是骗局?亲身经历者为你揭秘真相

web3区块链创业团队DappNetWork

帮你整理好了,AI 网关的 8 个常见应用场景

阿里巴巴云原生

阿里云 微服务 云原生

【HarmonyOS 5】初学者如何高效的学习鸿蒙?

GeorgeGcs

鸿蒙 入门 初学者 开源鸿蒙 学习思路

飞凯材料拟收购JNC株式会社旗下重要资产及相关专利,深化液晶产业布局

财见

《Operating System Concepts》阅读笔记:p491-p494

codists

操作系统

极速启动,SAE 弹性加速全面解读

阿里巴巴云原生

阿里云 云原生

HarmonyOS NEXT AI基础视觉服务-文字识别

zhousg

阿里云下一代可观测时序引擎-MetricStore 2.0

阿里巴巴云原生

阿里云 云原生

《2024年专利指数》报告:中国在欧洲的专利申请量创历史新高

财见

Automation Anywhere财报公布

财见

HarmonyOS NEXT AI基础语音服务-文章播报

zhousg

什么是 OLAP 数据库?企业如何选择适合自己的分析工具

镜舟科技

数据分析 StarRocks 查询性能 OLAP 数据库 MPP架构

HarmonyOS NEXT AI基础视觉服务-人脸识别

zhousg

SvelteKit 最新中文文档教程(15)—— 链接选项

冴羽

Vue 前端 React Svelte SvelteKit

赛博威智慧导购平台,融合AI激活一线导购效能,破局增长瓶颈

赛博威科技

#智慧导购 #数字营销 #赛博威

必读文章3-所有的无用,都是有用的

玄兴梦影

学习 成长 能力提升 工作 阅读

(网页直接编辑DWG)在线CAD配置属性的使用教程

WEB CAD SDK

CompletableFuture原理及应用场景详解

卷福同学

Java 面试 CompletableFuture

Java的IO模型、Netty原理详解

卷福同学

Java Netty nio 面试‘

EasyRecovery免费版下载无需注册,easyrecovery激活码密钥

阿拉灯神丁

照片恢复 Easyrecovery破解 数据恢复软件 激活码生成器 EasyRecovery16

揭秘自动驾驶的"眼睛"——目标检测技术

JustYan

人工智能 自动驾驶 少儿编程

大模型应用联网搜索:重塑智能时代的交互与决策

阿里巴巴云原生

阿里云 云原生

众合云科VI设计斩获法国双面神等国际权威大奖

财见

HarmonyOS NEXT AI基础视觉服务-背景替换

zhousg

Fabric8 Kubernetes 教程——PVC、PV、Network、PDB、Role、Cluster

FunTester

StarRocks 存算分离在京东物流的落地实践

StarRocks

数据库 OLAP 存算分离 StarRocks 湖仓一体

HarmonyOS NEXT AI基础视觉服务-人脸对比

zhousg

浪潮 KaiwuDB入选Gartner中国数据库管理系统代表厂商

KaiwuDB

数据库、 kwdb数据库

HarmonyOS NEXT AI基础语音服务-语音输入

zhousg

《Operating System Concepts》阅读笔记:p495-p511

codists

操作系统

优酷提出基于图执行引擎的算法服务框架,系统架构概览_AI&大模型_阿里巴巴文娱技术_InfoQ精选文章