爱奇艺 Opal 机器学习平台:特征中心建设实践

news2024/11/26 9:53:37

 01 

综述

Opal 是爱奇艺大数据团队研发的一站式机器学习平台,旨在提升特征迭代、模型训练效率,帮助业务提高收益。整个平台覆盖了机器学习生命周期中特征生产、样本构建、模型探索、模型训练、模型部署等在内的多个关键环节。其中特征作为模型训练的基石,其重要性不言而喻,如何让用户借助平台的能力,提升其业务侧特征迭代效率,从而达到预期的目标,是作为平台方需要思考的关键问题之一。在 Opal 中,特征生产、存储、访问等共同组成了特征中心的核心功能。本文将重点介绍特征中心相关工作。关于 Opal 的更多介绍,详见:Opal 机器学习平台:爱奇艺数智一体化实践

 02

特征中心是什么

简单来说,特征中心是用来生产、共享、管理机器学习模型特征的工具平台。算法工程师或数据分析人员可以在平台上方便的创建及分享特征,而平台侧协助解决特征生产和使用过程中碰到的各类问题,提高特征的迭代效率。

特征中心基本适用于所有需要特征的场景,典型的如推荐、广告、风控等场景。特征表注册在特征中心中,特征中心可以自动完成在线和离线表的构建,保证在线和离线的一致性,同时保证特征表只存一份的情况下,能够向多人共享特征,减少资源成本。另外特征中心还可以节省时间成本,原来需要复杂的 SQL 操作,比如导出训练表、数据导表等操作,现在在特征中心中都可以通过 Web UI 进行简单的拖拽式配置完成。

 03

特征中心解决的问题

算法模型本质上是一个映射函数,输入数值型的向量,输出是基于某个目标对候选集的排序。在爱奇艺场景中,离线训练时,算法工程师需要先从原始日志抽取出特征,并基于此构建训练样本;在线服务时,要根据端侧用户的用户 ID 和 视频 ID 查询出对应的原始特征,并根据 DSL 配置将原始特征转换为训练特征,最后调用预测服务得到预测值。

一般来说,想提高模型效果只能从以下两方面着手:

  1. 模型侧优化:  这是一种以优化模型结构、调优模型超参数为主的系统调优策略,通过调整参数不断优化模型的效果指标,我们将对应的优化称为模型侧优化;

  2. 数据侧优化:与模型侧优化相对应,这是一种以调整数据集质量为主的系统调优策略,通过改进数据质量来提升模型效果,在做数据侧优化时,可以认为模型是固定的。但实际业务中,人们往往很容易认为模型效果不好,是因为模型不好,但却忽略了数据集本身对模型效果的巨大影响。

业内有共识:"数据(特征)决定模型上限,模型结构及调参只是逼近这个上限",数据侧优化对整体效果提升的重要性不言而喻。那么如何让工程师高效地基于数据侧进行优化?答案是特征中心。平台需要能够解决数据侧优化过程中遇到的各类挑战:

  1. 如何应对海量的用户请求?爱奇艺拥有海量观影用户,对特征的访问又是极高频的操作,如何应对高 QPS 的请求是特征中心面临的挑战之一;

  2. 如何满足对特征的实时化要求?在广告、推荐、风控场景下,为保证算法模型的输出效果,对特征的实时性要求水涨船高;

  3. 如何提高特征的扩展性和灵活性?业务场景日益复杂,特征需求灵活多变。从基础特征到统计序列特征组的生产,从离线特征的简单统计到实时特征的窗口计算、交叉特征等,业务方需要特征中台能够支持逐渐衍生而来的新特征类型和需求;

  4. 如何满足快速迭代的业务诉求?特征中台提供的面向业务的 DSL 需要足够场景,特征生产链路尽量让业务少写代码,底层的计算引擎、存储引擎对业务完全透明,彻底释放业务计算、存储选型、调优的负担,彻底实现实时基础特征的规模化生产,不断提升特征生产力。

具体来说,特征中心的功能需要至少覆盖如下几个方面:

  1. 特征输入:如何管理业务线的数据源,包括各类文本文件、Parquet 文件、Hive 表等;

  2. 特征计算:如何表达特征计算逻辑,从原始日志中高效的抽取出需要的特征;

  3. 特征存储:计算出来的特征存放在什么类型的系统中,这里涉及到存储成本和访问效率的权衡;

  4. 特征转换:从原始特征到模型特征的转换,包含各类 DSL 的解析及转换。

 04

特征中心整体架构图

2b91cfb7363f7b025f8983dc355b152d.png

根据特征在整个链路中的角色不同,可以将特征分为特征生产和特征使用两大类:

  1. 特征生产:解决了如何从各种类型的大数据源中进行特征计算、得到的结果如何存储的问题,平台设计了一套高效的特征计算算子,配合拖拽式的 Web 页面,托管运维用户的特征生产任务,协助用户高效地管理其特征;

  2. 特征使用:解决了如何实现特征的线上访问,特征中心通过引入特征视图的概念,实现从特征复用,自定义转换等功能,并提供 Opal Feat View SDK 实现特征的动态序列化,多机房自动感知,就近访问等功能,为业务方屏蔽底层的存储细节,让其专注于业务逻辑上。

 05

特征中心功能介绍

由上一小节可知,特征中心从功能上可分为特征的生产和特征的使用。进一步,根据目标特征的生产时延,可以将特征生产划分为离线特征组和实时特征组。下面将分别介绍其功能。


离线特征组


通常来讲,当需要训练一个机器学习模型时,我们通常会预处理一组数据,将原始数据转化为一个特征向量或者特征集,这个特征向量可以被模型更好的理解和使用。比如,统计一个用户过去一周的购买行为,将这个统计结果作为一个特征。在一些情况下,为了提高处理速度和效率,我们会提前计算这些特征,并将它们存储起来,以备后续使用。我们将这种提前计算并储存的特征集称为离线特征组。

00a032a466b2a5e858bae9fd82d93108.png

如下图所示,Opal 离线特征组基于用户通过拖拽构建的 DAG 图,从 Source 节点读取数据,数据可以是 Hive  表、Iceberg 表或 TFRecord 和 Parquet 文件,经过中间的由 Opal 抽象出来的计算节点进行数据转换,最终将产出的特征写入在 Target 节点所描述的存储系统中。如图所示,Opal 目前支持各类常见的特征存储格式。

特征元数据管理、特征生产 DAG 配置

3871a08fa5b7466992d5516635f339f7.jpeg

通过在平台上拖动左侧的算子进行组合后得到一个 DAG 的生产任务配置,围绕 DAG,平台支持对特征元数据及特征 Schema 等进行管理。


SQL 语法解析及 Schema 推断

925a4a8c2cbdb1766c036264f4fe1162.jpeg

平台提供语法解析及校验功能,用户在配置期间即可实时观察到每个算子输出的字段详情,无需到提交任务阶段才发现错误,可降低用户调试时间。


特征质量校验及预警

be08a82627b0f795646c668551d3bfcc.jpeg

平台支持对已产出的特征进行各种检查,例如:特征的零值率、空值率、分位数、最大最小值等,并提供可视化的页面,方便用户查看特征质量。


任务重跑及异常告警

2532626f5983d62cf3d96924bd1d428b.jpeg

目前已有推荐中台、广告算法、业务风控等多个团队接入离线特征生产模块,基于平台产出三百余个特征组,基于 Opal 平台托管式的特征生产模式一方面大幅度的简化了业务方对特征生产上的投入时间,因此可以把更多时间投入到其它链路中,提高迭代效率。

实时特征组


实时特征组不同于离线特征组。离线特征组通常包括可以预先计算和存储的特征,而实时特征组包含的是实时或近实时生成的特征。实时特征的获取和计算通常需要强大的数据基础设施和实时数据处理能力。

b8cc0242501a02680541859541644776.png

实时特征组在许多实时决策和预测系统中是很重要的,例如推荐系统,欺诈检测,金融交易等等。管理好实时特征组,确保实时特征值的准确和及时获取,对于这些系统的性能和实用性起着重要的作用。

与离线特征组类似,Opal 提供了基于 DAG 的实时特征加工流图,实现从 Kafka / Iceberg / MySQL 摄入数据,利用平台集成的算子进行计算,后输出到 Kafka 及其它数据存储介质中。

其它在离线特征组模块提供的功能在实时模块也正逐步增加中。


实时特征生产 DAG 配置

e539407c2070f9a8e19fefc92aad28c5.jpeg

平台提供特征元数据及 Schema 管理,通过各类算子的组合即可完成一个实时特征的配置。


滑动窗口算子示例

823cc1092f71157afc4094f4c372f3c6.png

通过简单的配置,即可实现窗口转换,用户无需编写复杂的 SQL 语句,大大降低了业务团队的开发成本。


窗口特征合并及状态复用

1fd3b2abb5ebbed7741e0e63de1cf080.png

对于不同窗口周期但滑动步长一样的特征计算任务,Opal 支持对其进行合并,将计算整合在同一个窗口中进行,这样可大幅度节省状态空间,减少任务资源占用。

特征视图


统一离在线特征组端侧访问

离线特征组、实时特征组解决了特征的配置、加工、存储等问题,而特征视图解决了特征的读取问题。如下所示,离线特征组、实时特征组产出特征后,存储在各种不同的离线存储介质中,无法被业务方线上引擎服务直接使用,需要一个灌库服务将特征组从离线存储导入到在线缓存(Couchbase、Redis、HBase等)中,Opal 通过特征视图实现特征的灌库,并提供统一客户端实现特征的读取,用户无需关注特征灌库的细节。

1ab933b240532b11ad4b88cf373645ac.png


特征转换及特征衍生

在某些情况下,用户需要对已有特征进行转换,例如对原始特征取对数或四则运算后再返给下游。为了支持上述功能,Opal 提供了一套灵活高效的 DSL 特征转换表达式。其基本格式如下:

语法解释:

  • 函数名为平台预定义的关键字

  • 参数可以是 特征变量 或各种类型的 字面值常量

    • 数值集合常量,如:[1, 2, 4]

    • 字符串集合常量,如:['aaa', 'bbb']

    • 特征变量,视图内任意合法的特征名称,由反引号标识,例如:`city`

    • 数字常量,任意合法的数字,例如:123

    • 字符串常量,由单引号标识,例如:'hello world'

    • 集合常量,由中括号标识

转换示例:


Java 客户端接入,简化特征获取流程

eba142750e59696373e5c09d2a2b6037.png

平台提供了 Java SDK 以实现对线上特征的访问,如图所示,SDK 屏蔽了底层存储资源,用户无需对接各类复杂的缓存,通过引入 SDK 即可实现对特征的访问。

运维监控大盘

接入客户端后,SDK 会自动向指标服务侧投递指标,用户可以基于 Grafana 大盘监控观察服务是否运行正常。

c4aa0c63b775fb7fe02f5da0558dac90.png

 06

业务接入

目前分别有广告、推荐、风控业务不同程度的接入了Opal 平台的特征中心,并进行了一系列相应升级改造,接入后各业务的特征迭代效率提升 0.4 倍到 3 倍不等,业务引擎侧获取特征时延降低约 50%,特征侧需求堆积实现零积压。具体业务接入前后架构变迁细节以及给业务带来的收益,可参考文章 Opal 机器学习平台:爱奇艺数智一体化实践 中业务实践小结。我们也将在后续的系列文章中推出,由业务同学撰写的基于 Opal 的特征评估架构改造的经验分享。

07

未来规划


未来,Opal 平台上的特征中心将从以下几方面增强功能,助力业务取得更好的效果:

  1. 特征共享:随着平台中管理的特征越来越多,不可避免的会出现特征重复计算问题,平台有必要实现特征的分享,避免用户重复生产;

  2. 实时特征的质量校验:对于离线特征,平台已有相对完善的特征校验模块,可以保证产出特征的质量,对实时特征也需要有一个相应的质量监测服务;

  3. 特征热度计算:根据特征被线上访问的情况,推算出每个特征的热度,该热度可以后续协助业务方进行特征的重要性评估。

3f84932aceea3c7e504f6ca3f23a22c7.jpeg

也许你还想看

数据湖在爱奇艺数据中台的应用

爱奇艺数据湖实战 - Hive数仓平滑入湖

爱奇艺数据湖实战 - 基于数据湖的日志平台架构演进

爱奇艺数据湖实战

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1875799.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

maven安装jar和pom到本地仓库

举例子我们要将 elastic-job-spring-boot-starter安装到本地的maven仓库&#xff0c;如下&#xff1a; <dependency><groupId>com.github.yinjihuan</groupId><artifactId>elastic-job-spring-boot-starter</artifactId><version>1.0.5&l…

基于SpringBoot网吧管理系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; Java精品实战案例《600套》 2025-2026年最值得选择的Java毕业设计选题大全&#xff1…

TCP/IP模型原理(理论)

TCP/IP模型 1. 网络模型简介2. 应用层2.1 URL2.1.1 urlencode和urldecode 2.2 HTTP协议2.2.1 HTTP协议格式2.2.2 HTTP问题2.2.3 HTTPS 3 传输层3.1 端口号3.2 udp3.2.1 udp协议帧格式3.2.2 udp特点3.2.3 udp缓冲区3.2.4 注意 3.3 tcp协议3.3.1 tcp协议段格式3.3.2 确认应答机制…

计算机组成原理:海明校验

在上图中&#xff0c;对绿色的7比特数据进行海明校验&#xff0c;需要添加紫色的4比特校验位&#xff0c;总共是蓝色的11比特。紫色的校验位pi分布于蓝色的hi的1, 2, 4, 8, 16, 32, 64位&#xff0c;是2i-1位。绿色的数据位bi分布于剩下的位。 在下图中&#xff0c;b1位于h3&a…

如何借助ai(文心一言)获取tushare的数据

1. 准备工作 确保已安装python &#xff0c;安装Tushare库 和文心一言的地址&#xff08;文心一言&#xff09;&#xff1a; 注册Tushare账号并获取Token&#xff1a;在Tushare官方网站注册账号&#xff0c;并获取个人Token。如下 tushare地址&#xff1a;&#xff08;点击即…

音视频开发32 FFmpeg 编码- 视频编码 h264 参数相关

1. ffmpeg -h 这个命令总不会忘记&#xff0c;用这个先将ffmpeg所有的help信息都list出来 C:\Users\Administrator>ffmpeg -h ffmpeg version 6.0-full_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, Built by MSYS2 pro…

如何恢复已删除的 JPG/JPEG 图片文件

您是否意外丢失或删除了 JPG 或 JPEG 照片&#xff1f;幸运的是&#xff0c;您可以使用照片恢复工具找回它们。立即获取 JPEG 恢复工具 - PC 版照片恢复&#xff1a; 照片是捕捉和重温生活中特殊时刻的最佳方式。因此&#xff0c;当我们因硬盘崩溃、意外格式化磁盘或错误删除图…

Element UI搭建使用过程

本章内容基于上一篇---Vue-cli搭建项目基础版 Vue-cli搭建项目----基础版-CSDN博客 官网地址:Element - The worlds most popular Vue UI framework 介绍:完全基于Vue.js ,用于快速搭建用户界面. 第一步:安装ElementUI 在终端输入 npm i element-ui -S 在main.js输入 …

SpringMVC启动流程

文章目录 引文HandlerHandlerMapperHandlerAdapterRequestMapping方法参数解析RequestMapping方法返回值解析文件上传流程拦截器解析 SpringMVC启动流程如下 引文 我们在使用SpringMVC时&#xff0c;传统的方式是在webapp目录下定义一个web.xml文件&#xff0c;比如&#xff1a…

无忧易售新功能:一键白底转换,升级产品图片质感

在电商领域不断追求卓越与效率的今天&#xff0c;无忧易售ERP推出一键白底转换功能&#xff0c;为卖家们提供前所未有的便捷与高效&#xff0c;改变了商品图片处理的传统模式&#xff0c;革新了卖家们的图片处理体验&#xff0c;让商品展示焕然一新&#xff0c;助力商家在激烈的…

点云入门知识

点云的处理任务 场景语义分割 物体的三维表达方法&#xff08;3D representations&#xff09;&#xff1a; 点云&#xff1a;是由物体表面上许多点数据来表征这个物体。最接近原始传感器数据&#xff0c;且具有丰富的几何信息。 Mesh&#xff1a;用三角形面片和正方形面片拼…

计算机人说学校-北京理工大学-计算机方向

1. 专长、特点、特色 北京理工大学&#xff08;北理工&#xff09;的计算机专业同样具有显著的优势和特点&#xff1a; 学术水平高&#xff1a;作为一所985高校&#xff0c;北理工在计算机科学与技术以及人工智能领域都有着较高的学术水平和教学资源。研究方向广泛&#xff1…

阿里云服务器数据库迁云: 数据从传统到云端的安全之旅(WordPress个人博客实战教学)

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 一、 开始实战1.2创建实验资源1.3重置云服务器ECS的登录密码&#xff08;请记住密码&#xff09;1.4 设置安全组端口1…

akamai指纹自由

最近项目的部分业务设计到了akamai的技术。也是第一次接触&#xff0c;于是网上搜了一下&#xff0c;相关的帖子和文章很多&#xff0c;在前人共享的资料的基础上&#xff0c;自己这几天终于完全弄通了。 先上结果 akmai的针对策略就2个&#xff0c;第一个是tls验证&#xff0…

【ElementPlus源码】Container 布局容器

文章目录 index.tsContainerheaderutilswithInstallwithNoopInstall hooksuseNamespace 单元测试 看源码时候做的笔记。如有错误请指出&#xff01; 关于路径的省略&#xff0c;详见button&#xff1a;【ElementPlus源码】Button按钮-CSDN博客 index.ts 导入一堆组件&#xff…

(南京观海微电子)——三极管原理及应用区别

PNP与NPN三极管的原理与使用方法 三极管主要的功能是电流放大和开关作用。 三极管按材料分有两种&#xff1a;锗管和硅管。而每一种又有NPN和PNP两种结构形式&#xff0c;但使用最多的是硅NPN和PNP两种三极管&#xff0c;两者除了电源极性不同外&#xff0c;其工作原理都是相同…

编程开发不得不懂的世界协调时UTC的由来

在各种时间标准出现之前&#xff0c;各地都是根据太阳来进行计时的。把太阳连续2次经过地球同一位置所经历的时间间隔称为真太阳日&#xff0c;然后再把这个太阳日划分为更小的时间单位&#xff0c;例如中国古代使用日晷记录时间&#xff0c;把一个太阳日分为12个时辰。因为地球…

排序(冒泡排序、选择排序、插入排序、希尔排序)-->深度剖析(一)

欢迎来到我的Blog&#xff0c;点击关注哦&#x1f495; 前言 排序是一种基本的数据处理操作&#xff0c;它涉及将一系列项目重新排列&#xff0c;以便按照指定的标准&#xff08;通常是数值大小&#xff09;进行排序。在C语言中&#xff0c;排序算法是用来对元素进行排序的一系…

竞赛选题 python的搜索引擎系统设计与实现

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; python的搜索引擎系统设计与实现 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;5分创新点&#xff1a;3分 该项目较为新颖&#xff…

昇思25天学习打卡营第04天|数据集 Dataset

数据是深度学习的基础&#xff0c;高质量的数据输入将在整个深度神经网络中起到积极作用。MindSpore提供基于Pipeline的数据引擎&#xff0c;通过数据集&#xff08;Dataset&#xff09;和数据变换&#xff08;Transforms&#xff09;实现高效的数据预处理。其中Dataset是Pipel…