不仅有,而且这两年还Feature Store还兴起了。
Feature Store国内又翻译成特征平台,各家对Feature Store的定义不完全一样,但总体来说,这是一个完全托管的专用存储库,用于存储、更新、检索和共享机器学习特征。
可能新手并不了解,会想:Feature(特征)直接在Jupyter Notebook里定义,几行代码一写不就完了吗?对于试验来说,这么做无妨,但对于一个产品化的机器学习系统,这么做会使得特征难以维护。
所以Feature Store是干嘛的?我们最近也刚开始研究,这里不敢太贸然发表自己看法,就借助参考[1]一文中讲到的吧。这篇文章中,讲到Feature Store(特征平台)的作用从低层到高层分别为:
最底层是访问(access)的需求。这一层需求包括特征可读取、特征转换逻辑透明和特征血缘可溯。它们使得特征能被发现、分享和复用,减少重复。
其次是服务(serving)的需求。这一层的核心需求是为线上服务提供高吞吐、低延迟的特征读取能力,而无需通过 SQL 去数据仓库读取。其它需求还包括:与已有的离线特征存储集成,使得特征能够从离线特征存储同步到在线特征存储(例如 Redis);实时的特征转换等。
诸准确(integrity)需求。最常见的需求是最小化 train-serve skew,确保特征在训练和服务环境下是一致的。另一个常见需求是 point-in-time correctness(又称 time-travel),以确保历史特征和标签被用于训练和评估时不存在 data leaks。
再往上,是便利的需求。特征平台需要足够简单好入手,例如提供简单直观的接口、易交互、易 debug 等,才能让大家采纳和受益。
最后是自治(autopilot)的需求,包括自动回填特征、对特征的分布进行监控和报警等。我知道有些公司有做这一层的事情,但我没怎么读到相关材料。
大家可以看到,其实Feature Store这个东西,从技术并没有新东西,更多的是把特征的创建这个过程单独提出来,从而满足利益相关方的需求,无论是业务方还是技术方,都用同一套基础架构;同时,特征平台的离线计算,可以减少在线计算的压力。
所以总结下。现在不仅还有做特征工程的,而且还有把特征这件事真正做成工程的。