旧框架中,特征处理分散在业务系统中,与业务逻辑耦合严重,随着模型规模增长和业务系统的架构升级,特征处理性能逐渐成为瓶颈,主要存在以下问题:
因此,我们在新平台建设中,将特征处理逻辑抽象成独立模块,并对模块的职责边界做了清晰设定:通过提供统一API的方式,只负责特征的获取和计算,而不关心业务流程上下文 。在新的特征获取和计算模块设计中,我们主要关注以下两个方面:
围绕以上两点,本文将从下述两个方面分别介绍特征获取计算部分:
3.2.1 模型特征自描述MFDL模型特征处理是模型预处理的一部分,业界常用的做法有:
考虑到对存量模型的兼容,我们定义了一套自有的配置格式,能独立于模型文件之外快速配置 。基于对原有特征处理逻辑的梳理,我们将特征处理过程抽象成以下两个部分:
【美团外卖平台,美团外卖平台的建设与实践?】基于该两点,特征平台设计了MFDL(Model Feature Description Language)来完整的描述模型特征的生成流程,用配置化的方式描述模型特征计算和转换过程 。其中,特征计算部分通过自定义的DSL来描述,而特征转换部分则针对不同类型的模型设计不同的配置项 。通过将特征计算和转换分离,就可以很方便的扩展支持不同的机器学习框架或模型结构 。
文章插图
在MFDL流程中,特征计算DSL是模型处理的重点和难点 。一套易用的特征计算规范需既要满足特征处理逻辑的差异性,又要便于使用和理解 。经过对算法需求的了解和对业界做法的调研,我们开发了一套易用易读且符合编程习惯的特征表达式,并基于JavaCC实现了高性能的执行引擎,支持了以下特性:
基于规范化的DSL,一方面可以让执行引擎在执行阶段做一些主动优化,包括向量化计算、并行计算等,另一方面也有助于使用方将精力聚焦于特征计算的业务逻辑,而不用关心实现细节,既降低了使用门槛,也避免了误操作对线上稳定性造成的影响 。
由于MFDL是独立于模型文件之外的配置,因此特征更新迭代时只需要将新的配置推送到服务器上,经过加载和预测后即可生效,实现了特征处理的热更新,提升了迭代效率 。同时,MFDL也是离线训练时使用的特征配置文件,结合统一的算子逻辑,保证了离线训练样本/在线预估特征处理的一致性 。在系统中,只需要在离线训练时配置一次,训练完成后即可一键推送到线上服务,安全高效 。
下面是一个TF模型的MFDL配置示例:
3.2.2 特征获取流程MFDL中使用到的特征数据,需在特征计算之前从KV存储进行统一获取 。为了提升特征获取效率,平台会对多个特征数据源异步并行获取,并针对不同的数据源,使用不同的手段进行优化,比如RPC聚合等 。特征获取的基本流程如下图所示:
在特征生产章节已经提到,特征数据是按分组进行聚合存储 。特征获取在每次访问KV存储时,都会读取整个分组下所有的特征数据,一个分组下特征数量的多少将会直接影响到在线特征获取的性能 。因此,我们在特征分组分配方面进行了相关优化,既保证了特征获取的高效性,又保证了线上服务的稳定性 。
- 外卖代运营靠谱吗,外卖代运营的详细介绍?
- 什么网站可以免费推广,做的比较好的软文推广平台有哪些?
- 转让店铺哪个平台最好,个人网店转让平台哪家好?
- 淘宝所有类目列表,淘宝所有类目列表有哪些?
- 淘宝二手交易平台,淘宝二手交易平台哪个靠谱?
- 论坛推广平台有哪些,论坛推广平台有哪些渠道?
- 淘宝如何上架,淘宝如何上架商品?
- 淘宝兼职平台,淘宝兼职平台有哪些?
- 外卖平台防暑药搜索量暴涨:销量跟着水涨船高
- 京东众筹靠谱吗,京东众筹靠谱吗平台怎么进?