7 Star 1 Fork 6

StarTogether / mlops-book

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
chapter-6.md 30.60 KB
一键复制 编辑 原始数据 按行查看 历史
tanzhongyi 提交于 2022-10-19 15:05 . update chapter-6

第6章 Feature Store (特征平台)

本章主要介绍MLOps中所特有的平台——特征平台(Feature Store)。人工智能系统中的数据绝大部份是特征。一方面特征非常重要,“数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。“但是另一方面特征处理又极为麻烦和低效,基本上人工智能研发和运维团队80%以上的工作都是跟特征相关。

为了让特征处理更加高效,业内出现了很多技术方案,其中一个最近几年才兴起并迅速流行起来的技术方案就是Feature Store,也有人把它翻译为特征仓库,笔者按照国内的习惯称之为特征平台。有专家认为Feature Store是MLOps最重要的基石之一,MLOps相关的实践操作大部分是围绕Feature Store展开。

本章节将从如下几个方面来系统和全面介绍特征平台。其中第1节将介绍什么是特征平台和起源;第2节将介绍特征平台的作用;第3节将介绍特征平台的发展现状;第4节将介绍特征平台目前的几个主流产品;第5节将介绍特征平台的趋势和未来。

6.1 特征平台的概念和起源

特征平台(Feature Store)是一个让多个团队共享、发现和使用经过高度定制的特征的一个平台,用来解决这些团队的机器学习问题。

Feature store的名字和概念第一次在业内被提到,是来自于国外著名出行公司Uber的一篇对外的技术博客上。在这篇标题为“Meet Michelangelo: Uber’s Machine Learning Platform” (链接为https://www.uber.com/blog/michelangelo-machine-learning-platform/的博客上,Uber内部机器学习平台的工程师对外介绍了他们所研发和运维的机器学习平台---“Michelangelo”,该项目以著名雕塑家米开朗基罗的名字来命名,是机器学习工业发展史上一个非常有名的平台,在业内被广泛的提及、引用和参考。这篇博客也被认为是MLOps历史上最重要的文档之一。

Uber从2015年开始开发”Michelangelo“平台,2016年正式上线运营该平台。它的设计目标是“ML-As-A-Service Platform”,“Enable engineers and data scientists across the company to easily build and deploy machine learning solutions at scale through a platform approach。”就是通过一个统一的平台,提供给公司内多个AI工程师和AI科学家团队,让他们可以很轻松的训练和部署具备可扩展性的机器学习解决方案。

它的几个关键特性如下:

  • 提供End to End(端到端)的解决方案。它覆盖机器学习工程的全部生命周期,包括管理数据、训练模型、评估模型、部署模型、提供预测服务、监控模型等任务。
  • 标准化。之前Uber内部各个AI团队使用各自熟悉的开发语言、开发工具、训练和预测框架,差异非常大;现在通过这个一站式的平台,全部的研发和运维工作都标准化,在上面工作的AI工程师和AI科学家都使用相同的编程语言和运维工具,减少了开发和维护成本。
  • 可扩展性。因为采用共享和标准化的方式,很容易通过扩展资源的方式支持更多的团队,平台上运行更多的模型训练和更多的线上预测等业务。

Michelangelo平台内部有多个模块,不一一赘述,具体可以参考该博客原文。重点介绍其中一个关键的模块就是Palette feature store,它是一个集中的特征平台,不同的团队都可以按需使用其平台上的各种特征。是因为他们发现,Michelangelo平台上最具有挑战的部分就是数据管理,“Data is the hardest problem in Machine Learning“。例如他们平台上的重点业务Uber Eats(Uber外卖)所需要的订单配送时间预估,就需要非常多的特征,包括这个订单多大、这个餐馆有多忙碌、这个餐馆备餐的时间有多长、这个餐馆到用户的运送路线上交通有多拥挤等等,都是影响订单配送时间预估的机器学习模型的特征。

管理这些特征的挑战在于:

(1)如何找到有效的特征和标签。

(2)如何保证数据在生产环境中的可靠性、可扩展性、低延迟。

(3)如何避免线上线下不一致导致的各种问题。

(4)很多特征是需要实时更新的,例如配送路线上的交通忙碌情况、外卖餐馆的实时忙碌情况等,而传统的工具对实时特征的支持并不好。

在一一解决了上述这些工程上的问题之后,他们又发现对于不同业务的多个机器学习场景,他们所需要的各种特征往往出现一些重复的情况,即对于一些特征,业务部门A的场景1需要它,业务部门B的场景2也需要它。例如一个特征例如乘客相关的信息,是从原始的文件日志过来经过了多次转化、传输和抽取之后计算得到的,多个团队的多个机器学习场景都需要它(例如路径规划、外卖配送、出租车调度等)。如果按照传统的”Silos“(竖井)研发模式,即为每个场景单独准备一套隔离的特征库,但是这些特征的生成是需要很多存储和计算资源的,因为这些特征是需要从原始日志中读取,然后进行各种转换操作后所生成的。在不能复用的情况下,那么这些特征会占用大量的存储和计算资源,但是计算的结果是重复的,这种计算结果也是非常低效的。同时也降低了研发和部署的速度,因为有大量特性需要经过很长的计算得到,而不能直接拿来就使用。所以,他们精心设计和研发的Palette Feature Store平台,是一个一站式的特征商店,让特征很容易被搜索到,也很容易被定义,这样很容易被全公司复用;当然他们也提供了很多顺手的工具,用来解决特征处理的常见问题包括数据偏移、数据质量控制等。为了同时满足线上预测的高吞吐、低延迟需求和线下训练的海量批量读取需求,Palette Feature Store内部有两个存储系统,包括一个Hive系统(用来支持离线特征的存取),一个Cassandra系统(用来支持在线特征的读取);同时也支持两类计算系统,包括Spark系统来进行特征处理的批式计算和Flink系统来进行特征处理的流式计算。

2017年Uber机器学习平台的产品和研发工程师在参加一个知名技术大会上对外分享”开朗基罗平台“后,Feature Store的概念逐渐让业内知晓,然后迅速流传开来,更多业内从事者也纷纷研究和部署该产品。

6.2 特征平台的作用

那么特征平台的作用,它重点解决哪些问题呢?

按照价值大小和业务优先级可以分为如下三点:

  • 特性1: 同时满足模型训练和模型预测时候对特征的读取要求

即同时满足模型离线训练时候的大批量和线上模型预测时候的高吞吐、低延迟需求。

  • 特性2: 解决特征处理在训练/预测阶段不一致的问题

保证数据处理在线上和线下的一致性,即采用同样的数据和同样的处理逻辑,避免出现效果的不一致(即离线训练效果很好,线上预估效果比较差)。

  • 特性3: 解决特征复用的问题,高效共享,避免资源浪费 让特征很容易被定义和共享,并被多个团队复用,同时解决权限的问题。

除了这些特性外,还有很多其他的特性,包括特征血缘,特征监控等。

我们看看图6-1,这是Feature store架构设计的一个很经典的图。

![feature store](images/chapter-6-1.png)

图6-1 Feature store经典架构图(图片来自https://www.tecton.ai/blog/what-is-a-feature-store/

从上面图6-1的架构图可以看出,一个典型的Feature store平台是一个统一存放特征的地方。

  • 该图从左到右表明数据的流向,即数据从左边的各种来源中获取,经过Feature store的处理后对外供给模型的训练和预测服务;
  • 左边它可以外接各种特征的数据源,包括Batch Source(批处理式的)和Stream Source(流式的);
  • 右边它对外输出服务,即对外可以给Model Training(模型训练)和Model Serving(模型预测)各自提供所需的特征读取功能;
  • 内部包含Registry(特征注册仓库)、Transform(特征转化),Storage(特征存储),Serving(特征读取)等功能,还有运维相关的Operational Monitoring(运维监控)功能。其中Serving还支持On-demarnd transform(即按需的特征转化,一般用在实时预估场景下)。

这个架构图虽然简单,但是很显式的表明了经典的特征平台相关的功能和模块。各个企业具体的实现大同小异,基本都有这些模块,比较大的区别是存储部分是如何实现的,online部分采用什么存储系统,offline部分采用什么存储系统;Transform部分基本都支持Spark和Flink的批流处理,

6.3 特征平台的现状

在2017年Uber对外介绍Feature Store之前,其实业内若干机器学习业务比较领先的企业包括Google、百度等的多个业务都已经搭建了自身的特征平台,但是往往是作为业务机器学习平台的一个或多个模块存在,来共同完成特征供给(包括离线训练和在线预测的需求)。而且基本上没有特征共享的能力,所以特征注册、特征发现等功能也没有。

在2017年Uber对外介绍Feature Store之后,这个概念得到广泛的认可,体现在大厂内部的机器学习平台也出现了单独的特征仓库,之前散落在多个地方的功能被聚合在一起,成为一个单独的功能模块。也增加了特征注册、特征搜索等功能,具备了特征复用的能力。

除了大厂内部自制的特征平台外,业内纷纷出现各种各样的特征平台产品来对外提供,其中有知名技术公司的产品,也有一些AI创业公司的产品。某些是开源的软件项目,某些是不开源的商业产品。

我们来按照时间线来一起看看。

  • 2017年 Uber首先提出Feature Store的概念和产品
  • 2018年12月 瑞典的Logical Clock公司开源Hopsworks项目,是业内第一个开源的feature store项目
  • 2019年1月 Go-Jek公司联合Google Cloud开源Feast项目
  • 2020年4月 业内明星创业公司Tecton获得3500万美元投资
  • 2020年11月 feature store创业公司Abacus.ai获得2200万美元投资
  • 2020年12月 AWS发布 SageMaker Feature Store
  • 2021年1月 创业公司Molecula获得1760万美元投资
  • 2021年5月 Databricks 发布Databricks Feature Store
  • 2021年5月 Google发布Vertex Feature Store
  • 2021年6月 第四范式公司开源OpenMLDB
  • 2022年4月 LinkedIn公司开源Feathr
  • 2022年7月 Tecton获得1亿美元投资

业内各种IT媒体也纷纷举行Feature Store相关的运营和推广活动。 例如feasturestore.org在2021年首次举办业内第一届Feature Store Summit,邀请了国际上30多家feature store相关的大厂、创业公司、研究机构等分享他们的产品、案例和研究结果;第二届Feature Store Summit也在2022年10月举办。

国内专注于MLOps技术领域的开源社区---星策社区(startogether.ai),也在定期举行Feature Store Meetup来宣传和推广Feature store概念和产品。至今已经举办了4届。

  • 2021年12月11日, Feature Store Meetup V1在北京线下举行,有小米、美团、伴鱼、第四范式的工程师来分享各自的案例和项目;
  • 2022年4月10日, Feature Store Meetup V2在线上举行,有工商银行、AWS、网易云音乐、第四范式的工程师来分享各自的特征平台;
  • 2022年6月12日, Feature Store Meetup V3在线上举行,有华为、众安保险、第四范式的工程师来分享各自的特征平台;
  • 2022年9月4日, Feature Store Meetup V4在线上举行,有腾讯、微软、第四范式的工程师来分享各自的特征平台。

这些Meetup的分享干货十足,十分精彩,回放的视频都已经上传到了B站(https://www.bilibili.com/)上了,可以在B站上搜索“星策社区“找到。

另外,2022年至今,在国内的多个IT大会上也有Feature Store相关的演讲和分享,包括Apache开源软件基金会组织的ApacheCon Asia、LF AI&Data基金会组织的AI Con、51CTO组织的AI Summit, 上海人工智能协会组织的WAIC,InfoQ组织的ArchSummit,开放原子开源基金会组织的开放原子开发者大会等,越来越多的架构师在台上分享Feature store的实践。同时在传统IT媒体知乎、开源中国、CSDN、思否、infoQ上也越来越多能看到各种Feature Store相关的文章。

Feature store的概念和产品在国外已经比较广为人知了,是人工智能领域内创业者、投资者很看好的热门赛道;特征平台在国内的热度也在慢慢起来,不过热度和采纳度上比起国外还有较大的差距。

6.4 特征平台目前的几个主流产品

目前特征平台在业内已经得到广泛的认可,有人评价2021年为Feature store年。 业内很多公司使用自建的方式来构建自己的特征平台,同时也有不少商业公司推出对外服务的特征平台的产品。

笔者对这些商业或开源的特征平台产品做了一下分类,分为以下四类:

  • 创业公司的商业特征平台产品:Tecton, Hopsworks等
  • 包含在云厂商的集成机器学习平台之内的特征平台:AWS SageMaker,Databricks,Microsoft Azure,Google Cloud Vertex等
  • 机器学习软件厂商的SAAS服务包含特征平台:Databricks Feature Store等
  • 特征平台的开源项目: Feast,OpenMLDB,Feathr等

我们先来介绍一下创业公司的典型代表---Tecton。

6.4.1 Tecton

Tecton,全称为Tecton.ai, 官网是tecton.ai, 是Feature Store领域内明星创业公司,联合创始人和现任CEO是Mike Del Balso。他之前正好是Uber Michelangelo平台的产品经理,Tecton的创业班底团队基本都是来自Uber Michelangelo平台的研发工程团队,包括联合创始人和CTO Kevin Stumpf。2019年创立至今,已经融资超过1.5亿美元(包括2022年7月完成的1亿美元投资),是这个领域内的明星创业公司。该公司的使命是“To transform the way companies solve real-world problem with machine learning”。2020年发布第一代产品,目前主力产品的定位是“Feature Platform for Real-Time Machine learning”,可运行在各个主流云平台(Amazon AWS、Google GCP、Microsoft Azure)上,商业模式是提供全托管的SAAS服务,按照用量收费。

作为一个商业化的公司,它提供功能非常完全的特征平台,产品架构图如图6-2所示。

![Tecton 产品架构图 ](images/chapter-6-2.png) 图6-2 Tecton产品架构图(图片出自https://www.tecton.ai/)

从图6-2它的产品架构图来看,它支持各种主流的数据源,包括实时的数据源和批处理的数据源;对外可以支持主流的机器学习框架来完成训练和预测服务;内部的主要功能模块包括如下几个:

  • Feature Repository,用来定义和管理各种特征
  • Feature Pipeline,用来定义和管理特征生成的流水线
  • Feature Store,用来存储和读取各种特征
  • Monitoring,用来监控系统的性能和效果等

其中Feature pipeline是一个比较有特点的功能。一个能对模型起作用的特征,往往需要一系列的工作,包括从底层的大数据平台(例如各种数据湖平台)上获取原始信息,然后进行各种计算(包括数据抽取,数据转换等),这些计算任务通常是通过Spark、Flink等平台完成,而且批处理作业还需要一个任务编排和调度系统来进行管理。Tecton提供的Feature Pipeline As Code,是通过在Python程序中定义Feature,同时定义该Feature被产生出来所需要的任务流水线。而这些定义包括特征的定义、特征流水线的任务定义,都是通过Python代码显式的申明,并可以存储在git代码管理系统,跟传统的CI/CD工具相配合。Feature pipeline所定义的各种操作,具体实现和运行是通过底层的资源编排系统来完成,这些任务调度和编排是通过Tecton平台自动完成,编排和调度细节并不需要特征工程师关心。这种Feature as Code,Feature Pipeline as Code都使用了现代比较流行的声明式API的设计方式,开发者理解和使用起来都十分方便。

目前它的产品形态为全托管的云服务,是Tecton Platform的一部分,在AWS、GCP(Google Cloud)、Azure(Microsoft)上都有部署。用户可以在这三个云上购买它的SAAS服务,按照用量收费。

从它官方网站所提供的各种案例来看:目前它的主要客户集中在金融行业,例如Cash App, Tide等,都是金融行业的企业,用在推荐、风控等场景里面,主打的场景都是有实时数据需求的,也是MLOps最能大显身手的场景。

当然,除了Tecton.ai 这家明星创业企业外,还有不少新锐的创业企业也在纷纷推出它们的feature store产品和服务。不断能在市场上看到各种融资消息,这个赛道是风险投资比较看重的热门赛道。

介绍了一个创业公司做的单独的Feature store产品外,我们再来介绍一下主流机器学习大厂的feature store产品,它们基本都是其一站式机器学习平台的一部分,例如AWS Sagemake Feature store, Google Vertex Feature Store, Microsoft Azure Feature Store等。

6.4.2 AWS Sagemake Feature Store

2020年12月,AWS推出了SageMaker Feature Store产品。

它是一个完全托管式的特征平台,用于存储、共享和管理机器学习所需要的模型特征。 提供如下的功能:

  • 存储、共享和管理用于训练和推理的机器学习模型特征,以促进多个不同机器学习应用的特征复用;
  • 可以从任意数据源提取特征,包括流式和批处理
  • 支持构建特征流水线来支持部署

它的系统架构图见图6-3

![SageMaker Feature Store](images/chapter-6-3.png)

图6-3 AWS SageMaker Feature Store系统架构图(图片出自aws sagemaker官网)

如图6-3所示,AWS SageMaker Feature Store的内部包含Online store(在线仓库)和Offline store(离线仓库)。其中Offline store存储离线的特征,Batch feature pipelines(批式特征流水线)从各种离线大数据存储中读取特征并经过转化后写入到Offline store中,该流水线同时把特征也写入到Online Store上。 Offline Store把特征供给于右边的Model training和批式的预测打分中。 Online store除了从Batch feature pipelines获得数据外,也通过Stream feature pipelines(流式特征流水线)从Amazon Kinesis(AWS的Message Queue)获得实时数据,对外输出给模型的预测服务。同时,Online store也会同步数据到Offline Store,这样可以让Offline store中也有来自线上Message Queue的实时数据。

除了Feature store基本的复用功能、支持流批数据读取、支持模型训练和模型预测服务这些基本的功能外,SageMaker Feature Store还提供了一些增强的特性,包括:

  • 特征和模型的血缘分析,即哪些特征被哪些模型所使用了,各自对应的版本信息都是什么,这些血缘信息可以方便AI科学家和AI工程师来进行数据和模型问题的定位和追溯。
  • 避免时间穿越问题,AI科学家可能需要使用过去特定时间的精确特征值集来训练模型,还要避免包含超过该时间点的数据的风险。SageMaker Feature Store 支持时间点查询,这样可以精确返回每个特征在感兴趣的历史时间的状态。
  • 安全和合规性问题,主要是控制各种敏感数据的访问等。

AWS SageMaker Feature Store的优势是跟AWS的大数据生态紧密结合,可以很方便的使用AWS上各种大数据的存储和计算系统,例如Amazone S3、Amazon Redshift等,也可以使用AWS上的各种工具,例如AWS Glue,AWS Athena等。

AWS Feature Store跟AWS生态各模块的关系图如图6-4所示

![AWS ecosystem](images/chapter-6-4.png) 图6-4 AWS SageMaker Feature Store的生态图(图片出自https://aws.amazon.com/cn/blogs/machine-learning/understanding-the-key-capabilities-of-amazon-sagemaker-feature-store/)

如图6-4所示,Amazon SageMaker Feature Store可以利用AWS的各个模块来完成机器学习的各种任务,例如可以使用AWS的EMR和Glue来完成特征处理,利用Lambda服务来做线上预测服务等灯。

Google Cloud Vertex Feature Store和微软的Azure Feature Store也提供类似的功能,也跟各自的大数据生态结合,可以提供各种所需要的存储、计算平台和工具,就不一一赘述了。

6.4.3 Databricks Feature Store

Databricks公司是大数据领域最著名的企业之一,俗称“砖厂”。它是大数据批式计算引擎Spark的背后公司,同时在人工智能领域也有很好的产品,例如Databricks Platform for Machine Learning。2021年5月在它的平台上增加了Feature store功能。

他们对特征平台的定位是:特征平台是一个集中的存储库,它使AI科学家能够查找和共享特征,并确保用于计算特征值的相同代码用于模型训练和推理。 因为Databricks的主推产品是他们的数据湖产品,所以他们的feature store的slogon为“A feature store built on top of the data lakehouse“

产品架构图6-5如下:

![Databricks Feature Store ](images/chapter-6-5.png) 图6-5 Databricks Feature Store架构图 (图片出自https://www.databricks.com/dataaisummit/session/enable-production-ml-databricks-feature-store)

该产品形态为全托管的云服务,是Databricks Platform的一部分,在AWS、Google Cloud、Microsoft Azure都有部署。 用户可以在这三个云上购买Databricks feature store的SAAS服务,按照用量收费。

Databricks Feature Store的产品特性除了同时提供Offline Store(用于模型的发现、训练和批式预测)和Online Store(用于模型的在线预测外),也还有自己的特点:

  • 采用大数据开发者比较熟悉的DataFrame接口来进行特征的读取,只需要定义一些Feature Table(特征表格)和关联条件,就可以像使用Spark的DataFrame一样使用这些特征数据(SDK将实现的细节进行隐藏,从而开发者只关心特征表格)
  • 采用“as-of join”功能,可以使用每个特征表中的时间点来连接多个特征表,从而避免“Time Travel”即时间穿越的问题
  • 采用按需计算(On-Demand Feature Computation)的方式来支持实时特征,减少存储的成本

更多内容请参考Databricks Feature Store的官方文档,不再详述。

本章介绍了几个有代表性的商业产品之后,下面再介绍几个开源的feature store项目。

6.4.4 Feast项目

Feast是一个开源的feature store项目,2019年由go-jek公司联合Google Cloud开发,之后项目创始人和主力工程师Willem Pienaar 加入到Tecton.ai, 成为Tecton.ai的全职雇员,之后Tecton.ai宣布支持Feast项目的开发,目前该项目贡献量排名前五的工程师中的四位都是来自Tecton.ai.

它在github上的地址为https://github.com/feast-dev/feast。 它采用Apache 2.0的开源许可证,目前在github上有3.6K star,是目前在github上feature store 分类下流行度最高的项目了。

它官网上的文档比较清晰的说明了Feast项目的适用范围:它是一个可定制的数据操作平台,复用现有的基础数据平台来管理和服务于实时模型的机器学习功能。它不是一个ETL/ELT系统,即对数据进行各种转换和操作的系统;它也不是一个数据操作的编排系统;它不是一个数据仓库或者数据库,它是依赖于现有基础设施的,也包括各种数据仓库和数据库。

Feast项目的架构图如图6-6所示

![feast 架构图](images/chapter-6-6.png) 图6-6 Feast项目系统架构图(图片出自https://github.com/feast-dev/feast)

如图6-6所示,Feast项目作为一个feature store,功能也比较全。Data scientist(AI科学家)在Feast平台上,Search and discover feature(搜索和发现特征),Define features and transformations(定义特征和进行特征转化),之后Generate training set(生成训练集)。Engineer(AI工程师依据Model和Feast Build server that fetches feature(构建提供特征读取的服务),提供给线上的预测服务使用。

从其官网了解套,它包括如下这些特性:

  • Data Sources (从如下这些类型的数据源中读取数据,包括流式和批式)

    • Snowflake source
    • Redshift source
    • BigQuery source
    • Parquet file source
    • Azure Synapse + Azure SQL source (contrib plugin)
    • Hive (community plugin)
    • Postgres (contrib plugin)
    • Spark (contrib plugin)
    • Kafka / Kinesis sources (via push support into the online store)
  • Offline Stores (用来支持特征数据的离线读取需求的存储)

    • Snowflake
    • Redshift
    • BigQuery
    • Azure Synapse + Azure SQL (contrib plugin)
    • Hive (community plugin)
    • Postgres (contrib plugin)
    • Trino (contrib plugin)
    • Spark (contrib plugin)
    • In-memory / Pandas
  • Online Stores (用来支持特征在线读取需求的存储)

    • Snowflake
    • DynamoDB
    • Redis
    • Datastore
    • SQLite
    • Azure Cache for Redis (community plugin)
    • Postgres (contrib plugin)
    • Custom online store support
    • Cassandra / AstraDB
  • Feature Serving

    • Python Client
    • Python feature server
    • Go feature server

目前Feast项目还处于快速的迭代中,很多功能都在迅速的开发中。

介绍了国外的开源Feature Store项目之后,再介绍一个国内的开源项目OpenMLDB。

6.4.5 OpenMLDB

OpenMLDB是第四范式公司2021年6月对外开源的项目。

它是一个开源机器学习数据库,为企业提供全栈的FeatureOps解决方案。可能某些同学有点晕了,怎么又出了一个FeatureOps了。其实FeatureOps是MLOps的一部分,它专注于feature即特征相关的操作,包括抽取、变换、存储和计算等等。用下面的图可以很清楚的表示这两者之间的关系。

![MLOps全生命周期](images/chapter-6-7.png)

这是第四范式公司定义的MLOps完整的生命周期,它包含了离线部分的DataOps(任务主要是数据采集、数据的存储),FeatureOps(离线特征计算、存储和共享),ModelOps(模型的训练和调优);也包含了在线部分的DataOps(实时数据流的接入,和响应实时请求),FeatureOps(实时特征计算,特征服务),ModelOps(在线推理,结果数据回流等)。

对于FeatureOps(即特征操作),其中一个相当大的挑战是如何保证线下和线上的一致性,避免出现Training/Serving skew(线上线下不一致)。我们来看下典型的AI科学家和AI工程师的工作流程。离线情况下,AI科学家从一个离线的数据仓库中拿到特征的原始数据,然后经过数据抽取/特征变换之后得到所需要的特征,然后把特征喂给模型进行训练;如果效果不满意,可能会增加新的数据作为特征,也可能把现有的特征进行更多的转化等,然后调整模型网络架构和调试各种学习超参数之后再训练,直到获得较好效果的模型。这个过程,科学家往往使用Python,在Notebook中工作,训练生成模型后把模型部署到线上来承担真实流量,即面对真实的数据。这个时候,AI工程师需要部署模型并开发预测服务,需要从数据仓库中拿到模型所需要的原始数据,再把AI科学家训练时对特征进行的ETL(Extract,Transform,Load)逻辑转换为线上预测服务相关的逻辑,用C++或Java改写其中的逻辑。因为AI科学家进行训练的时候是不太考虑线上服务的性能要求(比如高并发、低延迟等),而这些事AI工程师必须要考虑的,所以这个转化过程是非常耗时的,因为逻辑稍微有些不一致,就会导致训练和预测结果的差异,导致明明训练的结果很理想,上线之后效果就大打折扣从而达不到预期,所以需要AI工程师和AI科学家进行反复的沟通和调试,而这都是非常耗时的操作。

OpenMLDB采用一种创新性的做法,让AI科学家和AI工程师都采用同一种非常普遍的语言即SQL来进行各自的工作。这样,AI科学家用一套SQL脚本构建出训练所需要的特征数据完成训练,同样这套SQL脚本可以被AI工程师原封不动的部署到线上,来用于预估服务。同一套SQL脚本被两种角色在训练和预测时候使用,从而创新性的解决了FeatureOps中最大的问题,即训练和预测不一致的问题。 用OpenMLDB进行离线训练和线上预估的流程图如6-8所示

![SQL-to-production](images/chapter-6-8.png)

图6-8 OpenMLDB的主要特性SQL上线示意图

当然OpenMLDB还有其他的一些非常好的特性,例如它内置一个高性能低延迟并对时序特征的窗口操作做特定优化的在线特征存储系统等。

OpenMLDB2021年6月已经在github上对外开源,采用的许可证是商业友好的Apache V2 License,它已经在第四范式的众多商业客户实际运行场景中运行,性能和质量得到广泛的验证。开源的地址是https://github.com/4paradigm/openmldb。

本书第7章 OpenMLDB 将详细的介绍这个项目,介绍他的特性、设计细节、如何使用等情况,欢迎同学们参考。

6.5 特征平台的将来

在现在的主要功能(见6.2节)上,笔者预测特征平台还会增加如下这些功能:

  • 自动选择特征: 当一个Feature store中有很多Feature可以被发现和使用的时候,如何高效的选择对业务有影响的特征就成为问题。未来的Feature store将把特征选择的事情自动化,即能够帮助开发者,根据用户的场景需求自动选择比较适合的特征。
  • 特征重复识别: 当一个Feature store中有大量类似的特征时候,需要能自动识别出来哪些重复的特征出来。
  • 高效低成本的解决实时特征计算:
  • 可能还需要接入数据合规、数据血缘部分

笔者认为:Feature Store作为MLOps的核心组件,会成为各个大批量落地AI应用的企业的机器学习系统中的必不可少的部分。 产品形态不管是独立的Feature Store产品,还是作为端到端的机器学习平台中的一部分,都会有自身的市场而得到更多的应用。

1
https://gitee.com/StarTogether/mlops-book.git
git@gitee.com:StarTogether/mlops-book.git
StarTogether
mlops-book
mlops-book
master

搜索帮助