AutoML系列 | 02-自动化机器学习系统设计
需求背景
由于机器学习技术在金融、广告、推荐系统和用户行为分析等多个方面的应用不断取得成功,为商业、生产创造了巨大价值,越来越多的企业期望借助机器学习技术来提升业务运行的效率和质量。机器学习模型的构建是一个复杂而耗时的过程,需要尝试不同的算法,且每种算法都有多个超参数需要根据具体的数据和任务目标进行合理的设置。
目前,构建一个性能良好的机器学习模型,主要有以下两种方式,但均存在一些痛点问题:
解决思路
架构设计
1、系统整体架构设计
系统架构图如下:
图1 自动化机器学习系统架构图
该系统包含的各功能模块的设计以及模块之间相互协作关系如下文所述:
A→Git仓库:主要用来对机器学习算法代码及其它相关文件进行版本管理;为自动化机器学习任务设计器(C)中设计具体自动学习任务时提供核心算法逻辑,该代码能够读取加载超参数优化引擎(E)自动搜索得到的超参数组合。
B→容器镜像仓库:主要提供不同硬件平台(CPU/GPU服务器等)上自动化机器学习任务、模型推理任务等的容器镜像及镜像管理,包括算法模型运行所需的基础算法库、依赖包等软件环境以及网络通信等基础配置。在自动化机器学习任务设计器(C)中设计具体自动学习任务时选择相应的容器镜像后,超参数优化引擎(E)和模型训练/评估引擎(G)中以该镜像启动1个或多个容器执行超参数搜索任务,而无需运维搭建运行环境。
C→自动化机器学习任务设计器:为模型构建人员提供设计自动化机器学习任务的直观、可视化配置界面,配置内容包括:
▷▷▷ 从Git仓库(A)中选择待搜索超参数的机器学习模型代码;
▷▷▷ 从容器镜像仓库(B)中选择自动化机器学习任务运行的容器镜像,例如安装好Scikit-learn、XGBoost、LightGBM、CatBoost等基础算法库及依赖包的容器镜像;
▷▷▷ 从超参数搜索空间管理模块(D)中选择根据具体任务定义的超参数搜索空间定义文件;
▷▷▷ 从大数据集群(J)元数据管理模块中选择模型训练需要的加工好的训练集和验证集,包括特征变量和目标变量的配置;
▷▷▷ 设置自动学习任务运行的硬件资源类型(CPU/GPU)和数量、并发执行数、运行终止条件(迭代次数、运行时长阈值、模型精度阈值等)、期望保存的性能最优模型文件以及超参数组合结果的数量等;
▷▷▷(可选的)从超参数优化算法仓库(F)选择超参数优化算法,系统默认会根据学术界的公开评测选择当前最优算法,系统定期根据超参数优化算法仓库(F)中集成的算法更新默认值。
D→超参数搜索空间管理模块:包含超参数搜索空间数据库和超参数组合数据库2个数据库,提供对具体自动化机器学习任务搜索空间定义文件以及(E)超参数优化引擎搜索得到的最优N个超参数组合结果的管理,包括:
▷▷▷ 搜索空间的定义、编辑、可视化对比等;
▷▷▷ 不同超参数组合及其对应的模型性能的可视化对比、超参数组合的定义和编辑等。
E→超参数优化引擎:根据自动化机器学习任务设计器(C)的自动化机器学习任务设计,基于超参数优化算法启动对应超参数优化任务,从定义的超参数搜索空间中采样超参数组合,作为参数传递到机器学习模型代码中,然后将给定超参数的机器学习模型训练任务分发到模型训练/评估引擎(G)中进行训练,并收集模型在验证集上的性能表现连同本轮采样的超参数组合反馈给超参数优化任务,超参数优化任务迭代更新模型参数,然后从定义的超参数搜索空间中采样新一轮的超参数组合。如此循环,直到满足自动化机器学习任务设计器(C)中设置的终止条件。最后,将模型性能最优的N个超参数组合保存至超参数搜索空间管理模块(D)的超参数组合数据库中。
F→超参数优化算法仓库:指按照超参数优化引擎(E)标准接口定义的超参数优化算法的管理仓库,仓库中包含系统提供默认超参数优化算法(例如:贝叶斯优化算法、进化类算法、基于强化学习的算法等等)和用户根据标准接口自定义的优化算法。
G→模型训练/评估引擎:基于K8S调度、分配资源和任务。提供模型训练/评估所需弹性硬件资源和基于自动化机器学习任务设计器(C)中配置的容器镜像启动的容器,接收超参数优化引擎(E)分发的模型训练/评估任务,从大数据集群(J)中加载自动化机器学习任务设计器(C)中配置的训练集和验证集,进行模型的训练和权重参数的更新,并将模型训练过程的监控信息(包括具体模型采用的超参数组合、模型迭代更新过程中模型在训练集和验证集上的性能表现、运行时长、运行状态等)反馈至自动化机器学习任务监控面板(I)。最后将模型性能最优的N个模型、权重参数及模型元数据信息保存至模型仓库(H)中。
H→模型仓库:指具体自动化机器学习任务学习得到的模型性能最优的N个模型、权重参数及模型元数据信息的管理仓库,提供模型元数据信息的预览对比、模型的多维度分类、排序、搜索等功能。
I→自动化机器学习任务监控面板:主要提供具体自动化机器学习任务模型训练过程信息(模型采用的超参数组合、模型迭代更新过程中模型在训练集和验证集上的性能表现、运行时长、运行状态、对硬件资源的使用率等等)的可视化展示、对比,模型构建人员可结合自身专业知识,通过对模型性能表现及其对应的超参数组合、超参数搜索空间分析,从中提取见解,指导超参数搜索空间管理模块(D)中超参数搜索空间的定义优化以及自动化机器学习任务设计器(C)中相关参数的设置。
J→大数据集群:是指多类型数据及其元数据的存储、管理平台,为模型训练/评估引擎(G)提供训练集和验证集,为模型推理平台提(K)供待推理数据。
K→模型推理平台:用于将训练好的模型仓库(H)中的模型部署上线提供离线/在线服务的平台。
2、自动化模型构建的核心流程
模型构建人员基于本文提出的自动化机器学习系统,可便捷地完成自动化机器学习任务的设计、管理,实现模型超参数的自动搜索和优化,提升模型产出效率和质量。主要流程示意图如图2所示。
图2 自动化模型超参数优化流程示意图
(1)模型构建人员开发好需要进行超参数优化的模型代码,提交至Git仓库(A);在自动化机器学习任务设计器(C)中根据系统页面提示,完成超参数搜索空间的定义和自动化机器学习任务相关参数的配置,然后提交任务。
(2)系统后台基于自动化机器学习任务设计器(C)中任务的具体参数配置启动超参数优化引擎(E),并在模型训练/评估引擎(G)中启动相应的模型训练/评估作业。
(3)超参数优化引擎(E)和模型训练/评估引擎(G)相互通信、交换参数,并将运行过程状态反馈到自动化机器学习(I)任务监控面板。
(4)第(3)步后台多次进行,无需模型构建人员干预,最终将最优的超参数组合和训练好的模型分别存储至超参数搜索空间管理模块(D)中的超参数组合数据库和模型仓库(H)。
AutoML系统的两种模式
1、基于专家知识与AutoML系统协作增强的模式
在部分机器学习构建场景,由于机器学习Pipeline的复杂性以及超参数优化算法的局限性,在有限的硬件资源和模型超参数自动搜索优化时长下,AutoML系统最终输出的最优解可能难以到达理想的效果,如果结合机器学习专家知识,能够进一步增强模型性能。本发明提出的自动化机器学习系统也提供了一种便捷的“人机协作”模式,实际使用中,可采用以下部分或全部可选操作。
(1)机器学习专家通过自动化机器学习任务监控面板(I)分析、对比上一版本自动化机器学习任务搜索的不同超参数组合及其对应的模型性能评估指标,结合专家知识,对超参数搜索空间的定义进行优化,包括搜索空间连续超参数的缩放,离散超参数枚举值的增删改,超参数优化算法的变更等。
(2)为充分利用历史训练模型,在模型初始化自动化机器学习任务设计器(C)中可跳转到模型仓库模块(H),预览上一版本训练结果中模型训练结果及其性能评估指标,并自动选择性能最优的模型来初始化新版本自动化机器学习任务,即“热启动”超参数优化引擎(E)分发到模型训练/评估引擎(G)上的模型训练任务,以加快超参数搜索优化的速度。
(3)在自动化机器学习任务设计器(C)中设计新版本自动化机器学习任务时,以上一版本自动化机器学习任务搜索到的最优N个超参数组合或在结合机器学习专家知识优化的超参数搜索空间的基础上,配置更大规模模型训练数据集,以进一步提升模型性能。相当于采取多步骤方案,将有限预算(硬件资源、可接受的学习时长、带标注标签的训练数据集)结合专家知识合理的分配,在初步搜索学习阶段采用较少的资源进行较大范围搜索,缩小范围后分配更多的预选在优化筛选后的范围内进一步搜索,从而减少总体的自动化机器学习的时间。
(4)选择以上部分或全部可选操作后,按照自动化模型构建的核心流程,进行自动模型超参数优化。
2、免代码(code free)模式
更高级的一种自动化机器学习系统模式是无需模型构建人员编写代码,通过产品化的相关可视化页面配置即可完成机器学习模型的自动化训练。免代码(code free)的自动化机器学习流程示意图如图3所示。
图3 免代码(code free)模式的自动化机器学习流程示意图
(1)模型构建人员在无需编写代码,只需在自动化机器学习任务设计器(C)中主要配置以下三方面的参数:
▷▷▷ 自动学习任务的目标类型(分类、回归等);
▷▷▷ 硬件资源类型(CPU/GPU)和数量、并发执行数、运行终止条件(迭代次数、运行时长阈值、模型精度阈值等)、期望保存的性能最优模型文件以及超参数组合结果的数量等等;
▷▷▷ 从大数据集群(J)元数据管理模块中选择模型训练需要的加工好的训练集和验证集,包括特征变量和目标变量的配置。
(2)自动学习任务提交后,系统后台引擎(图3 虚线方框部分,对用户不可见)迭代运行,将运行时长、运行状态等信息反馈至自动化机器学习任务监控面板(I)。最后将模型性能最优的N个模型、权重参数及模型元数据信息保存至模型仓库(H)中。
该模式的关键在于系统后台引擎(图3 虚线方框部分,对用户不可见)部分,实际上也包含两个子引擎:超参数优化引擎(E)和模型训练/评估引擎(G)。不同之处在于与超参数优化引擎(E)关联的超参数优化算法仓库(F)中机器学习任务Pipeline的自动构建、Pipeline超参数搜索空间的设计以及优化算法的设计。核心技术方案如下:
(1)基础算子库的构建:集成scikit-learn中的分类类算子、回归类算子、数据预处理类算子、数据清洗类算子,并提供标准化接口,对外开放以便集成开源算子。
(2)机器学习Pipeline的构建:包括分类、回归、自定义三种类型的Pipeline,Pipeline由数据清洗、数据预处理、分类/回归四类算子组成,分别从基础算子库中选择。分类/回归两类算子的选择互斥外,其它算子之间不互斥,数据清洗类和数据预处理类算子根据其原理具有数据类型(类别变量、离散变量、连续变量)适应性。算子选择构成Pipeline的可选方式构成Pipeline级别的超参数搜索空间。
(3)对于分类/回归两类算子超参数空间基于其理论范围和学术界对这两类算在在多项公开数据集上的评测进行超参数空间适当缩小,预置于系统中。具体机器学习Pipeline根据其算子的构成从预置超参数空间进行查询组合,构成最终的超参数搜索空间。
(4)超参数优化算法从超参数优化算法仓库(F)中基于学术界公开评测分别对分类、回归类任务提供默认设置,并更具学术界最新进展定期更新;可选的,在自动化机器学习任务监控面板(I)高级配置中可由模型构建人员自主配置,包括单个或多个优化算法的组合两种方式。
基于上述四个基础组件,系统后台自动定义了机器学习Pipeline、最终的超参数搜索空间和超参数优化算法。超参数优化引擎(E)采样超参数组合后将具体机器学习模型训练任务分发到模型训练/评估引擎(G)中进行训练,并收集模型性能反馈,然后进行下一轮迭代。如此循环。最后,将模型性能最优的N个模型、权重参数及模型元数据信息保存至模型仓库(H)中。
总 结
1、本文提出了一套完整的自动化机器学习系统及其架构设计方案,通过抽象出“自动化机器学习任务设计器”、“超参数搜索空间管理模块”、“超参数优化引擎”、“超参数优化算法仓库”、“模型训练/评估引擎”、“模型仓库”、“自动化机器学习任务监控面板”等功能模块,并进行松耦合的连接交互,对机器学习模型超参数搜索、模型的迭代优化以及与模型开发周边环境协作等繁琐流程和环节进行了统一的管理和优化。
2、本文提出了机器学习模型超参数自动搜索优化与机器学习技术人员专业知识融合、交互设计从而进一步提升模型效果的技术方法和实现方案。
3、为减少机器学习模型构建过程中对专业技术人才专业知识和超参数调优经验的依赖,本文提出的自动化机器学习系统提供了一种“免代码(code free)”构建机器学习模型的模式及其技术方案。模型构建人员无需开发代码,只需配置模型学习任务的具体目标(如分类或回归等)、相关约束条件以及模型训练集和验证集,系统后台自动完成模型的构建和超参数的搜索,并将最优的N个模型保存至模型仓库。
京东数科算法工程师,毕业于中科院。多年大数据、算法及AI平台建设经验,实现AI平台从0到1的产品化落地。对NLP、AutoML、AI平台等感兴趣。
关注技术说,我们只凭技术说话!
点在看会少个bug哦👇