导读:今天我们将从线上线下一致的生产级特征计算平台这个点切入,从「人工智能工程化落地过程中企业面临的数据和特征挑战」 ,「OpenMLDB:线上线下一致性的生产级特征计算平台」,「拥抱开源、面向社区」三个方面介绍开源机器学习数据库 OpenMLDB。 希望这场分享能够帮助大家了解 OpenMLDB 是什么,能做什么,适用于哪些场景。同时本文也将首次介绍 OpenMLDB的使用场景和生态构建。
OpenMLDB使用场景:覆盖离线开发到实时线上计算的完整流程,满足高计算性能需求和实时计算需求,同时也满足纯离线开发及实时线上计算需求。
OpenMLDB生态构建:加速链接DataOps(Pulsar、Kafka等)、ModelOps(TensorFlow、PyTorch、LightGBM等) ,无阻对接ProductionOps(Airflow、DolphinScheduler等) ,围绕OpenMLDB构建面向机器学习应用及上线全流程的上下游生态。
介绍一下我自己,我叫卢冕,目前在第四范式担任系统架构师,主要负责数据库团队和高性能计算团队,同时也是开源项目 OpenMLDB 的主要研发负责人,目前主要专注于数据库系统和异构计算。
1 | 人工智能工程化落地过程中企业面临的数据和特征挑战
首先来看一下背景之一——当前人工智能工程化落地过程中所面对的数据和特征挑战。通过统计数据,我们了解到如今企业在推进人工智能落地的时候,可能会将 95% 的时间都花在数据问题的处理上,数据治理的问题亟待解决。虽然今天我们能在市面上看到非常多的开源或是商业的数据解决方案,例如 Hadoop、MySQL 等已经向大家提供了丰富的解决方案。
但是,在 AI 工程化落地过程当中,这些方案是否已经完全解决了我们所面对的挑战,满足了一切我们所期待的需求?其实目前还是存在很多问题的。
MLOps 完整生命周期
在 AI 工程化落地的这个过程当中,MLOps 成为一个非常流行的概念。相信大家或多或少都对此有些了解。MLOps 概括了人工智能机器学习工程化落地的完整生命周期所需要的一些工具以及服务。
下图展示的是 MLOps 运作的闭环流程,可以看到它会分为离线开发和线上服务两个部分。在机器学习相关的开发中,我们常常会把工作流程拆分为模型的训练和上线,这两套流程存在较大的差异。当我们吧这两套流程放置在企业级的生产场景中,它们可以进一步地拆解为 DataOps、FeatureOps 和 ModelOps。这次分享将集中关注 FeatureOps,谈论如何通过 OpenMLDB 这一个线上线下一致的生产级特征计算平台去解决特征计算、特征存储、线上实时特征计算以及特征服务的问题。
可以注意的是,画面下方线上服务部分这一块还加入了一个环节——ProductionOps,它是企业人工智能工程化落地时一个非常重要的环节。在生产环境之下,企业会非常看重高可用、可扩缩容、平滑升级、实时监控这些企业级核心。所以 ProductionOps 也是我们做 FeatureOps 过程中非常关注的内容。
面向决策类场景的特征工程
本次内容分享的背景之二是 OpenMLDB 所触发的应用背景。目前 OpenMLDB 面向的主要场景是决策类场景,是基于时序数据的这种特征工程。这里的关键词有三:
-
面向结构化数据和决策类场景
-
处理时序数据
-
基于时间窗口的聚合函数
展开说明上述三点。
其中的结构化数据,简单来说指的是表数据。而决策类场景指的是区别于基于深度学习的感知类产品所面向的决策类场景,更多应用于实时推荐系统、风控系统、反欺诈系统等企业业务系统的场景。
所谓的时序数据,就是所有的数据记录都会带有一个时间戳,如图中数据表格里的第四列就包含着时间戳。
在实际生产当中特征工程基本上都是对这种时序数据去做这个时间窗口上的聚合函数,这也是我们处理最多的特征工程。
生产级特征工程业务需求
下面我们会从业务角度举例,说明生产级特征工程所面向是两大业务需求:
-
线上模型精度符合业务需求
-
特征实时计算,满足低延迟
以实时推荐系统为例,比如小李同学,在某个时间点想买洗衣机,去搜索洗衣机,触发了搜索行为以后,后面整个特征计算会做什么?首先进来的实时行为特征,这三个原始的特征就是 User ID,日期以及他在搜索的产品。如果我们只是拿这三个特征去做模型训练和推理,是达不到一个业务需求的模型精度的。
此时我们需要做的是一个特征工程,所谓的特征工程就是我们从数据库里去进一步地拉取一些历史数据,比方说我们从交易数据库、商品数据库、用户数据库去拉取一些历史数据,然后组合、计算,得到一些更完整的更有意义的特征。
图片左下角就是一个实时的特征。假设当前有个主播正在带货,或者网络购物平台正好有一批优惠券正在发放,此时就会存在一个非常实时的特征,比如当前优惠券最多的或者折扣力度最大的洗衣机型号是什么,也可能是过去5分钟内点击量最多的洗衣机是什么,这些特征的计算对实时性的要求非常高。当然抽取的特征中也有一部分特征可能和小李过去的消费行为相结合。比方说小李过去一年买的最多的电子品牌是什么,他的消费平均水平是什么。我们将所有的特征组合起来,衍生出来的新特征,就是通过特征工程(或者叫做特征计算)生产的特征,最后组合成一个完整的特征列表,再将它给到后续的模型预估。
从这个案例我们可以看出,做特征工程包含了非常重要的特征计算步骤。
特征平台开发上线生命周期
在这两个业务需求之下,特征计算平台从开发到上线的全生命周期是如何完成的呢?
一开始入场的是数据科学家,他们会根据历史数据和业务精度的要求建立一个离线的业务模型,在此过程中设计离线特征脚本。这个特征脚本就是前面提到的过去一段时间内的点击量的特征等等。要如何去抽取这些特征,要定义哪些特征,判断不同的场景中需要