一站式机器学习平台Deepthought的建设与初探
爱奇艺除了在音视频、推荐等深度学习的AI应用以外,也有不少数据挖掘、数据分析的传统机器学习应用场景,例如用户预测、风控等。传统的研发模式的痛点,就是会给算法人员和业务人员一些不便利,具体如下:
1. 用户代码基于单机脚本实现,处理环节长、耦合高,难以修改和扩展,长久以来可读性降低;
2. 同一业务下多个场景、同一场景下多个模型,在数据处理、模型训练等技术流程上类似,场景重复步骤和数据结果难以重复利用;
3. 场景不同导致存在周期训练、定时预估、实时预估等需求,对业务人员和算法人员的代码要求高,维护成本高;
4. 算法人员和业务人员对分布式机器学习的开发存在技术壁垒,导致数据量和模型复杂度受单机资源限制;
基于以上痛点,爱奇艺开发了面向通用的机器学习场景的一站式机器学习平台Deepthought,可实现可视化交互,能更加直观便捷的搭建适合业务场景需要的架构,以及实时预估服务,是算法模型部署至实际业务的重要环节。
Deepthought在开发之初即考虑了以下基本业务需求:
1. 核心算法基于分布式机器学习框架封装,以开源封装为主、自研实现为辅,满足快速上线基本算法需求;
2. 对于机器学习和数据挖掘各个环节解耦,满足不同环节的输出结果可复用;
3. 与大数据平台通天塔深度融合,利用通天塔管理的项目、数据、调度实现机器学习任务的在线、离线场景的执行;
4. 减轻用户代码开发压力,通过可视化交互和配置方式,实现机器学习任务的编排,提升算法模型搭建效率。
Deepthought v1.0版,面向具体业务的机器学习平台
属于反作弊业务使用的机器学习平台,主要将反作弊业务中的机器学习流程各个阶段解耦合,同时管理反作弊业务中的业务数据,例如黑名单、样本、特征管理。Deepthought v1架构如下图所示。
Deepthought基于Spark ML/MLLib封装了业务常用二分类模型,以及常用数据预处理过程,例如缺失值填充、归一化等。
Deepthoughtv2.0版,面向通用业务的机器学习平台
所有数据处理和算法执行通过组件的方式管理和调度。算法的扩展除了核心逻辑和调度脚本外,所有组件信息和配置项都可通过后台配置管理完成,前端交互时动态渲染组件的所有配置信息。
算法扩充
在v2我们持续增加了多个机器学习算法,其中包括监督学习二分类、多分类、回归算法,非监督学习的聚类、图类算法,多种数据预处理算法以及多种算法评估和数据分析可视化组件,基本满足传统机器学习所有场景的需要。
可视化交互
每一个机器学习的步骤,以组件的方式管理和使用。用户通过对组件的拖拉拽方式的交互操作,能更加直观便捷的搭建适合业务场景需要的架构,可实现的业务场景也更加灵活开放。另外,前端也提供了一系列标注化的报表控件,系统即时读取的报表数据可动态渲染成可视化报表。
离线定时调度任务
与大数据平台通天塔权限打通,通过大数据平台通天塔读取Deepthought任务信息并进行调度,实现任务的定时预测的场景。
Deepthought v2架构如下图所示。
Deepthoughtv3.0版,支持实时预估服务
自动调参
v2实现了自动调参的功能,可通过多种调参算法,对多个参数进行优化组合、并行训练,最终找出最优评估效果的参数组合和最优模型。通过自动执行重复性任务提高用户工作效率,使得用户更多关注问题,而不是模型。
实时预估
参数服务器
由于一些内在原因,在基于Spark的机器学习无法支撑百万级以上维度、亿级以上行数的超大规模数据训练。业界通过参数服务器解决了超大规模数据训练的问题。v3集成了开源参数服务器,并在此基础上实现了部分常用模型的参数服务器版本。
Deepthought v3架构如下图所示。
部分核心实现与封装
下文将对平台部分核心功能的实现和封装简要介绍。
Spark ML/MLLib封装
Deepthought中算法组件基于spark原生ml/mllib包进行封装和改进,在继承了其并行计算、通道流式处理等优点之外,还加入一系列提供用户易用性的功能,同时增加了一些原生包中不存在的算法。
Deepthought不仅仅是对Spark ML/MLLib做了封装,也有很多基于实际业务和平台化的开发。为了扩展和优化Deepthought的功能,Deepthought增加了数据预处理组件以及训练组件中的标签自动转换功能。
loss实时输出原理
一个良好的可用的机器学习模型,需要经过算法工程师不断的调优、尝试;而模型的调优需要花费大量的时间和精力。
用户在线上使用模型实时预估的过程中,需要定期使用新训练的模型替换旧模型。在实时预估服务的早期版本中,预估服务代码在加载到QAE后,通过初始化一次性加载模型到内存里。
这就导致如果需要更新模型时,我们需要通过kill QAE实例,逐渐替换QAE达到新模型替换旧模型的效果。这种方式存在缺陷是:
1. 用户对切换过程不可知,无法追踪某次响应具体是旧模型或新模型的预测结果;
2. 由于RPC是长连接,KILL一个QAE实例后会导致当前实例中的所有链接中断。过程虽然短暂,但仍然会造成一定的请求抖动。
目前应用和后续工作
目前Deepthought已被流量反作弊、用户行为分析、爱奇艺号、文学等多个团队使用。下文简要介绍目前已在Deepthought开展业务的一些典型场景。
目前流量反作弊业务已全线使用Deepthought进行模型训练和离线预测。
Deepthought在推荐业务中也受到的广泛的应用和好评。
在整个推荐业务中,Deepthought专注于模型的训练,通过将大数据平台通天塔准备好的数据给入到Deepthought平台,用户通过拉取组件的形式,构建一系列数据预处理,数据拆分,模型训练、评估的流程,并在模型训练完备之后部署到线上,从而进行实时的预估附。当整套流程第一次构建完成之后,用户往后仅仅需要定时运行流程,实现模型的更新即可。
其中gbdt编码+fm训练的组合模型,是使用频率最高的模型之一。推荐业务通过gbdt编码将连续型数据转换为离散型数据,在与已有离散型数据进行拼接,从而得到可用于fm模型训练的数据。
当模型训练完成,Deepthought通过公众号和邮件的方式通知用户模型的准确率、召回等详情。当模型确认可用后,可通过Deepthought平台将模型进行实时部署,从而满足推荐业务的实时预测需求。
Deepthought对大量机器学习封装和平台化开发,使用户可通过简单配置和拖动方式完成机器学习操作,协助非算法业务同学能够轻松使用机器学习,同时规范使用,大大减轻用户在重复代码和算法、模型管理上的工作量。同时,与大数据平台通天塔深度合作,实现数据开发到模型训练、离线、在线预测全流程闭环,是大数据团队数据中台重要组成部分。
也许你还想看
干货分享 | 海量数据实时分析服务技术架构演进
干货分享 | 爱奇艺直播 - 春晚直播业务API架构
扫一扫下方二维码,更多精彩内容陪伴你!