效果工具链之算法迭代篇
来源: 贝壳智搜
作为效果优化系列的第二篇,第一篇,本篇旨在从工程角度介绍算法迭代系统重塑模型迭代流程的实施思路。此系统作为效果工具链的其中一部分,主要功能使算法工程师不用离开算法迭代系统,即可完成数据处理、模型训练、模型评估到服务部署工作。
1.背景介绍
近些年来,人工智能已成为当今社会的热门话题,引领着社会的变革和技术的发展。事实上,人工智能已悄悄地渗入到我们生活的点点滴滴,在各个业务领域的应用已初见成效。而这些应用得益于在海量数据分析的基础上建立的经验模型,并且每一款人工智能产品都是通过对训练成熟的模型封装而衍生出来的。因此,模型即是人工智能的核心所在。欲想更快、更有效地从人工智能中获取高价值的内容和衍生产品,我们必须了解其问题的核心——如何高效、快速地训练模型。
目前业界比较优秀的机器学习系统平台有很多。在贝壳找房,为了满足智能化业务的高速发展,同样需要衍生一款一站式生态化的服务链来支持线上的搜索等业务。从业务需求角度来看,本系统与业务关联如下图所示。
2.什么是算法迭代系统?
在整个算法迭代链中,算法迭代系统主要服务于搜索排序模型,其中包括了五个模块:数据预处理、特征数据管理、模型训练模块、离线评估模块、模型线上化模块。主要解决了各个业务方重复造轮子,特征口径混乱的问题。提高了算法同学的工作效率,规范化了模型上线流程。
本系统作为算法迭代过程中线上化环节之一,能够辅助构建算法迭代闭环,为搜索业务提供了一系列预测、分析、模型的相关工具类系统。整体来看,本系统整体架构主要包括了以下几个方面:
- 数据预处理模块:将原生数据规范化、聚集原生数据中有效信息,做到信息高可用。
- 离线、实时特征模块:主要功能为收集分拣线下日志、计算提炼成算法所需要的特征,并将线下、实时特征应用到离线训练模型中。
- 离线训练模块:通过对 Tensorflow 等机器学习框架的封装,实现了离线训练可视化,通过表单的形式,统一模型训练和资源分配。
- 离线评估模块,维护多种评估指标的计算。如 AUC、RECALL、MRR、MAP、NE 等,并将数据实时记录,支持邮件消息分发等功能。
- 模型管理模块:通过 k8s 将模型容器化,并上线使用,并提供了模型注册,发现,路由,部署等服务,为搜索业务提供在线预测服务。
3.系统简介
3.1 数据处理、特征模块
3.1.1 问题简介
在贝壳,业务发展过程中,数据量往往是 PB 级别,原生数据数据量大且不能被直接利用,存在以下问题。
- 1.原始数据结构复杂、字段繁多、格式不统一,不能直接用于模型训练。
- 2.数据与特征转换过程中重复造轮子。
- 3.特征没有统一管理,特征存储杂乱、冗余。
3.1.2 技术方案
针对特征转化、特征存储流程杂乱问题,我们将数据处理类型抽象化、通用化为算子。满足数据处理组件相互独立的特征计算条件。通过算子间组合,适配数据处理过程中不断变化的新需求。系统架构图如下所示。
根据业务需求,我们将原生数据特征转换流程分为离线特征部分和在线特征部分,满足离线算法迭代与线上特征的实时调用。流程图如下图所示。
3.1.3 算子可视化
通过算子可视化,算法 RD 可以拖拽算子、自定义组合,提效特征组合流程。算子可视化示例如下图所示。
3.2 离线训练模块
定位:搭建可视化训练闭环,提高算法 RD 迭代效率。
现阶段,可视化选项有训练数据集来源,验证数据集来源,算法类型选择,运行参数,模型文件输出位置等几类组成。在以后的迭代过程中,模型训练任务将与离线特征预处理和模型离线评估打通,实现业务流程闭环。做到对模型训练过程的实施统一调度与管理。可视化操作界面如下图所示。
3.3 模型评估模块
3.3.1 为什么要评估模型?
模型的效果优化过程是循环迭代的过程,只有通过持续调整和不断调优才能适配新数据和新业务。
模型初始化时,模型参数分布往往因为分布不均与最优结果存在偏差,导致模型性能不佳。通过评价指标,对模型在特定数据集上的性能实时跟踪,不断保存最优模型。当迭代完成或达到预期时即可停止训练。
3.3.2 怎么检验和评估模型?
离线评估指使用历史数据训练一个适合解决目标任务的一个或多个机器学习模型,选择评价指标并对模型进行离线验证(Validation),进而选择性能最优模型。
在线评估指当模型达到设定的指标值时便将模型上线,投入生产,使用生产环境中实时数据来对该模型进行预测,在线评估不同于离线评估,有着不同的评价方法论以及评价指标。离线评估是一种偏经验判断误差的方法论,而在线评估更关注业务指标,如用户点击率等。最常见的在线评估方式是 A/B testing,它是一种统计假设检验方法。为了满足用户,减轻对比负担,我们的检验和评估即可针对单一模型,也满足多模型混合。
3.3.3 离线模型评估方法、流程
- 分类模型常用评估方法:
- 回归模型常用评估方法:
离线模型评估流程如下图所示。
3.4 模型管理模块
目前系统支持部署基于 tensorflow 框架的开发的模型、fasttext、 lightGBM 等模型。
模型管理的主要有以下功能:
- 1.提供模型发现、部署、切换、降级、扩容等解决方案。
- 2.模型容器化过程消除了线上线下的环境差异
- 3.同等条件下可以运行更多的应用实例,充分地利用系统资源。
- 4.资源隔离与限制,可以精确地对应用分配 CPU、内存等资源。保证了应用间不会相互影响。同时可以快速扩容缓解线上的压力。
模型管理示例如下图所示。
同时,模型管理系统还包括重新部署、修改、接口校验、删除等功能。对于删除功能,为了杜绝线上高危操作,系统开放的 double check 机制,可优先删除模型网关,并提供快速恢复。
4.总结与展望
本系统希望打造一个易用、高效、灵活、可扩展的算法迭代系统。支持多种机器学习框架和深度学习框架。努力提高算法 rd 人效,满足线上业务需求,为搜索业务提供一套完整的算法迭代工具。
5.作者简介
刘妍,2018 年 9 月加入贝壳找房语言智能与搜索部应用架构组工作,负责租赁业务、算法配置等系统研发工作。
梁晓进,2018 年 7 月加入贝壳找房语言智能与搜索部应用架构组工作,负责特征工程、搜索策略相关工作。
王龙,2019 年 6 月加入贝壳找房语言智能与搜索部应用架构组工作,主负责算法配置等系统研发工作。