导读:在机器学习从开发到上线的闭环中,实时特征计算是其中的重要一环,用于完成数据的实时特征加工。由于其高时效性需求,数据科学家完成特征脚本离线开发以后,往往还需要工程化团队通过大量的优化才能完成上线。另一方面,由于存在离线开发和工程化上线两个流程,线上线下计算一致性验证成为一个必要步骤,并且会耗费大量的时间和人力。本文将从以上两个痛点出发,描述实时特征计算系统架构的优化目标 - 开发即上线,以及针对此优化目标的架构设计原则。最后,将会基于开源实时特征计算解决方案 OpenMLDB,具体描述其在实践中的架构设计和优化。
今天,机器学习应用已经在各行各业积累了广泛的应用落地案例。归纳来说,机器学习从开发到上线的全生命周期闭环可以用下图(Figure-1)概括性描述。
从 Figure-1 可以看到,从横向维度,机器学习全流程被划分成离线开发和线上服务两个相辅相成的流程。从纵向维度,信息价值承载的形式会经历从数据、特征、再到模型的转换过程。
- 数据:原始的数据信息,比如交易的流水信息,包含金额、时间、商户名称等。
- 特征:基于原始数据所生产计算的进一步表达能力更为丰富的信息,有利于产出后续质量更高的模型,比如某客户在过去三个月内的消费平均金额等特征。本文即针对特征计算的工程化问题进行详细展开讨论。
- 模型:通过隐含的上万甚至上亿条基于特征生成的数据规则,从超高维度上来描述数据本质的规律,包含了基于数据预测行为的能力。
今天,数据和模型,已经有了充分的讨论和事实上的工业界标准处理方式。但是对于特征,今天工业界还并没有形成统一的方法论和处理工具。主要因为在人工智能开始应用落地的初期,大量关注都在基于深度学习的感知类应用上,此类应用的特征工程流程相对标准。但是今天,决策类场景(如风控、个性化推荐等)在大量企业级应用落地。对于决策类场景,特征工程的处理逻辑相对灵活和复杂,因此在这一块目前尚未形成标准化的方法论和工具。这也正是本文所要聚焦的领域,通过从设计方法论和架构设计实践的阐述,让大家深刻理解实时特征计算系统及其典型使用流程。
本文主要关注具有非常强时效性的实时特征计算,其查询计算的端到端延迟一般设定在几十毫秒的量级。实时特征的常见计算模式,是当事件发生时,基于从当前时间点往前推移的一个时间点,形成一个时间窗口,进行窗口内的相关聚合计算。如下图 Figure-2 列举了一个典型的风控领域的实时特征计算场景,其产生了十天、一个小时、五分钟三个时间窗口,基于窗口进行了不同的聚合计算。
Figure-2: 风控领域的典型实时特征计算举例
实时特征计算今天已经在越来越多的场景中体现出其重要性,其本质在于抓住最新时间段内的数据特征,为快速决策提供有力支撑。本文主要针对实时特征计算,来进行相关设计理念和架构的阐述。
2.1. 痛点:两套开发流程和线上线下计算一致性校验 今天,在没有一套合适的方法论和工具链的情况下,如果需要开发上线一套实时特征计算逻辑,我们看到其包含三个步骤,即离线特征脚本开发、在线特征代码重构、以及线上线下计算逻辑一致性校验。其三者的关系如下图 Figure-3 所示。
Figure-3: 在缺少合适的工具情况下的实时特征计算从开发到上线全流程
这三个步骤主要完成的任务以及参与者见下方表格 Table-1。从 Table-1 中可以看到几个关键信息: