首页> 中国专利> 基于容器化技术的机器学习模型框架的开发方法与系统

基于容器化技术的机器学习模型框架的开发方法与系统

摘要

本发明提供一种基于容器化技术的机器学习模型框架的开发方法与系统,包括如下步骤:机器学习模型开发:建立对应的机器学习模型,通过编程的方式构建模型并将对应的代码提交到代码仓库中;模型交互式测试:挑选合适的测试数据对已开发的机器学习模型进行验证;模型参数优化与监控:已经调试验证成功的机器学习模型及参数,可以被其他使用者直接调用,通过代码层面的参数调整来实现最优化的机器学习模型训练与结果监控,最终得到一个可以供部署使用的机器学习模型及参数。本发明通过容器化技术实现跨平台的可扩展的部署实施能力。

著录项

  • 公开/公告号CN112633501A

    专利类型发明专利

  • 公开/公告日2021-04-09

    原文格式PDF

  • 申请/专利权人 深圳晶泰科技有限公司;

    申请/专利号CN202011566619.0

  • 申请日2020-12-25

  • 分类号G06N3/10(20060101);G06N3/08(20060101);G06F8/71(20180101);G06F8/72(20180101);G06F11/36(20060101);

  • 代理机构44248 深圳市科吉华烽知识产权事务所(普通合伙);

  • 代理人胡吉科

  • 地址 518000 广东省深圳市福田区福保街道福保社区红柳道2号顺丰工业厂房3层

  • 入库时间 2023-06-19 10:32:14

说明书

技术领域

本发明涉及药物研发的辅助方法,特别涉及基于容器化技术的机器学习模型框架的方法与系统。

背景技术

机器学习的开发框架繁多,而其中以神经网络为主的开发框架有Tensorflow、Microsoft CNTK、Theano、Caffe、Keras、Torch、Sci-kit Learn、MXNet等,开发人员会根据自己的需求和框架熟悉程度选择合适的框架进行具体的机器学习开发工作,一般来说开发人员根据具体的测试数据和业务问题建模后,将模型的代码和依赖的机器学习框架打包发布,即可被他人在具体的业务场景下对真实的数据进行测试。区别于其他的软件功能性算法测试,机器学习的算法测试往往是一个测试加调试的过程,通过测试的反馈调整模型的参数进而进行新的测试验证参数的好坏,直到调试出一套“最佳”模型参数作为真实场景下的模型参数使用。所以为了方便这样一个迭代的测试加调试过程,工业界推出了一系列进行模型调试与监控的软件,包括MLFlow、Neptune.ai、Weights & Biases、CortexCertifai、Iterative.ai等,他们基本上都具备模型的运行监控、参数的整理与展示、模型调试过程的管理及多种主流机器学习开发框架的接入。

总体来说,在机器学习的实践过程中,我们会从机器学习的代码编写与模型搭建、测试环境的建立及模型测试、模型参数调优及监控等环节,而每个环节所面向的主要用户群、使用方式及环节间的串接是无法由单一的机器学习框架或者监控服务来满足的,一些云厂商试图通过提供不同类型的服务来将这整个流程整合在云平台上,例如Google AIHub、AWS Sagemaker等。但当用户需要在离线环境内的主机或者自建的云服务器上搭建类似的环境却难以找到一个最佳实践的软件架构可以满足。

发明内容

为了解决机器学习的需求,本发明提供一种基于容器化技术的机器学习模型框架的开发方法,包括:

机器学习模型开发:建立对应的机器学习模型,通过编程的方式构建模型并将对应的代码提交到代码仓库中;

模型交互式测试:挑选合适的测试数据对已开发的机器学习模型进行验证;

模型参数优化与监控:已经调试验证成功的机器学习模型及参数,可以被其他使用者直接调用,通过代码层面的参数调整来实现最优化的机器学习模型训练与结果监控,最终得到一个可以供部署使用的机器学习模型及参数。

其中,如何挑选合适的数据方法,即机器学习训练有一些一般化的规则,为了保证模型的可迁移性,我们可以随机的将准备好的数据集按训练集:测试集:验证集切分成7:2:1的模式。这里的测试数据是测试集。

通过代码层面的参数调整的调整方式:一般来说一个机器学习模型有一些超参数需要通过训练前、训练中进行调整,拿Tensorflow构建一个神经网络模型举例,网络的层数就是一个需要调整参数,而该参数可以通过编程,如Python语言接口实现输入,即代码编写完后再次运行即可。所以称之为代码层面实现参数的调整。

“最优化”:一般来说机器学习所面对的问题都可以通过机器学习建模并通过一个目标函数的构建来评估目标的好坏。所谓优化就是通过训练集进行模型训练后,模型在测试集的表现逐步优化收敛到目标的过程。那么当我们给定一个收敛终止条件时,终止条件的达成所得到的的模型即可评定为训练后得到的最优化模型。

优选的,所述机器学习模型开发:通过持续集成系统将建模人员提交到代码仓库的原代码及相关机器学习框架依赖与环境依赖打包,构建成一个基于容器(Docker)的镜像并发布到镜像管理仓库中。

其中,所述镜像为系统运行环境的一个快照,通过Docker容器化技术创建一个镜像,而将镜像具体运行在一台计算机上的过程,称之为容器的实例化,因此,运行的实体就是一个容器的实例。

优选的,容器化技术能够快速通过一个镜像构建出一个隔离且完整的开发环境,所以该镜像可以在接下来的步骤中被方便的使用。

优选的,模型交互式测试中,通过构建的容器镜像,快速部署一个容器实例来运行镜像中的交互式开发工作簿(例如Jupyter Notebook)、机器学习监控模块(例如MLflow)。用户可以登入到交互式开发工作簿的网页中进行基于模型调用及测试工作。同时,模型的训练、测试的结果可被机器学习监控模块采集,此时用户登入机器学习监控即可对于模型的运行状态进行查看。

其中,模型可以采用Python的交互式开发工作簿(Jupyter Notebook),这里编程语言的限制可能主要来自于机器学习开源框架本身,而开发工作簿和机器学习监控模块是配套有很多种选型可供选择的。

并且,开发工作薄本地包括Jupyter Notebook,Jupyter Lab,云服务包括NextJournal,AWS Sagemaker,Google Colab。而监控模块包括Neptune.ai,Weights &Biases这些服务可供选择使用。

“快速”容器技术可实现”秒”级部署,即大概几秒钟可实现一个容器部署,具体来说,可实现10s-40s的快速部署。这是两个模块,一个是通过编程来进行模型开发的,一个是用来监控模型的输出结果的。

本发明采用以上技术方案,其优点在于,机器学习的开发结果是代码,而模型的运行、测试、调试及结果的监控是将代码安装配置后进行的动作,所以他们之间集成的铆钉点是一个代码仓库、一个利用代码构建出运行环境系统(持续集成系统)、一个运行环境的管理系统(镜像管理仓库与部署工具)。用户提交代码,出发持续集成系统将更新的代码打包成镜像,并推送至镜像管理仓库,进而镜像部署工具可以在模型运行时经由模型使用者调用从镜像仓库中挑选合适的镜像进行部署。部署后就是一个完整的容器运行着“开发工作薄”(例如Jupyter)和“机器学习监控”(例如MLflow)两个软件。于是,模型使用者可以直接通过登入开发工作簿进行模型的运行,登入机器学习监控软件查看模型的运行状态及结果。

优选的,模型参数优化与监控中,模型监控系统反应的模型运行表现,用户可以进一步在交互式开发工作簿中对模型的参数进行修改,并重新运行修改后的模型,机器学习监控模块同时也能够展示修改后的模型运行状态及结果报告。

本发明采用以上技术方案,其过程为:首先,根据针对问题来建立对应的机器学习模型,通过编程的方式实现模型并将对应的代码提交到代码仓库中,此为机器学习模型开发;接下来需要挑选合适的测试数据对已开发的机器学习模型进行验证,此为模型交互式测试;最后,已经调试验证成功的机器学习模型及参数,可以被其他使用者直接调用,一般需要通过代码层面的参数调整来实现最优化的机器学习模型训练与结果监控,最终得到一个可以供部署使用的机器学习模型及参数,此为模型参数优化与监控。另外,模型参数优化与监控后可以再接模型的开发,进而继续进行测试的循环。

相应的,本发明还提供一种基于容器化技术的机器学习模型开发系统,包括:

机器学习模型开发模块:建立对应的机器学习模型,通过编程的方式构建模型并将对应的代码提交到代码仓库中;

模型交互式测试模块:挑选合适的测试数据对已开发的机器学习模型进行验证;

模型参数优化与监控模块:已经调试验证成功的机器学习模型及参数,可以被其他使用者直接调用,通过代码层面的参数调整来实现最优化的机器学习模型训练与结果监控,最终得到一个可以供部署使用的机器学习模型及参数。

本发明进一步采用以上技术方案,其优点在于,机器学习的开发结果是代码,而模型的运行、测试、调试及结果的监控是将代码安装配置后进行的动作,所以他们之间集成的铆钉点是一个代码仓库、一个利用代码构建出运行环境系统(持续集成系统)、一个运行环境的管理系统(镜像管理仓库与部署工具)。用户提交代码,出发持续集成系统将更新的代码打包成镜像,并推送至镜像管理仓库,进而镜像部署工具可以在模型运行时经由模型使用者调用从镜像仓库中挑选合适的镜像进行部署。部署后就是一个完整的容器运行着“开发工作薄”(例如Jupyter)和“机器学习监控”(例如MLflow)两个软件。于是,模型使用者可以直接通过登入开发工作簿进行模型的运行,登入机器学习监控软件查看模型的运行状态及结果。

本发明采用以上技术方案,其优点在于,该系统具备:

1.本发明将机器学习模型开发、模型交互式测试、模型参数优化与监控三种应用场景整合在一起,通过容器化技术实现跨平台的可扩展的部署实施能力。

2.该系统不受限于机器学习的框架种类,而是可以通过代码可持续集成及容器化技术实现自主按需的机器学习框架选择及开发测试环境搭建。

3.集成交互式机器学习模型开发与模型运行监控在一个框架内,提供一体化的模型测试与参数优化的体验。

附图说明

图1为本发明一实施例的系统架构图。

图2为本发明一优选实施例的交互式开发工作薄原型图。

图3为本发明一优选实施例的机器学习监控页原型图。

图4为本发明是实施例2中MLflow可视化某一种日志数据的截屏。

具体实施方式

如图1至图3所示,一种基于容器化技术的机器学习模型框架的开发方法,包括如下几个步骤:

机器学习模型开发:根据针对问题来建立对应的机器学习模型,通过编程的方式实现模型并将对应的代码提交到代码仓库中;

模型交互式测试:挑选合适的测试数据对已开发的机器学习模型进行验证;

模型参数优化与监控:已经调试验证成功的机器学习模型及参数,可以被其他使用者直接调用,一般需要通过代码层面的参数调整来实现最优化的机器学习模型训练与结果监控,最终得到一个可以供部署使用的机器学习模型及参数,此为模型参数优化与监控。

模型参数优化与监控后可以再以继续机器学习模型开发,进而继续进行测试的循环。

实施例1:

以开发一个基于机器学习的图像识别程序为例。

某机器学习算法开发部门可以根据文献算法构建模型,通过某一个选定的机器学习框架以及在框架上的算法实现代码构建了一个图像识别的程序,并通过有限的测试数据进行模型的训练及验证,验证结果若不错,即可将模型的代码提交到代码仓库中(例如Github)。

可持续集成服务(例如Jenkins)识别到代码仓库的变更,即触发容器镜像构建过程,构建一个属于当前代码变更的基础镜像。同时,构建好的镜像可以从Binder的页面上点击选择并以此为输入部署一个容器实例,该实例的启动过程会将机器学习的框架、开发人员自定义的模型的代码以及依赖的环境一并加载到一个交互式可编程的开发工具中(例如Jupyter)。于是模型的测试人员可以在交互式开发工具中对模型调整不同的参数及输入数据测试。其中,由于模型的开发过程引入了模型的监控服务埋点,所以模型在被测试的过程中,其监控日志数据会被记录在当前容器的机器学习模型监控服务中(例如MLFlow),这些监控数据可以用来观测例如机器学习模型的训练收敛情况、验证集上的误差表现等,具体采集什么指标取决于模型开发者的自定义编码来实现。

本实施例中,所述的镜像为系统运行环境的一个快照,通过Docker容器化技术创建一个镜像,而将镜像具体运行在一台计算机上的过程,称之为容器的实例化,那么运行的实体就是一个容器的实例。

实例的启动逻辑可以理解为镜像部署工具(Binder)将存储在镜像管理仓库(Docker Registry)中的Docker镜像选择一台计算机进行部署,得到的就是一个运行中的Docker容器实例,每一个容器实例里面会承载两个服务“开发工作薄”(Jupyter Notebook)和“机器学习监控”(MLflow)服务,Jupyter Notebook中用户可以使用代码仓库更新的代码(在镜像的构建过程中新的代码已经被打包到了镜像中,所以可以在这里被调用)来运行机器学习的模型,而模型的结果输出到本地硬盘中,可以被MLflow渲染到前端页面进行展示,这其中展示的数据必然包含模型训练过程中的日志数据,所以用户可以通过MLflow(一个专门用于机器学习结果监控的开源系统)来实现模型的监控功能。

所述采集指标,和具体机器学习的模型指标相关,所以取决于机器学习模型开发人员的选择,从监控系统的角度出发,只限制了采集数据的类型、字段和值的要求,例如MLflow要求采集的数据是一个时序化的数据,包含采集时间戳记录;采样点的值以图3中的y轴来展示,采样点的x值取决于步长参数的设置,步长参数需要是一个非负的64bit整型数值。

针对机器学习的模型监控服务,在实施过程中该服务不仅可以收集时序化的日志数据,还可以收集不同格式的文件数据,其持久化方案可以依托一种时序化数据存储服务(例如通过eventsourcing来实现的存储服务),而面向机器学习模型监控服务的某些需要聚合查询的数据,可以预先在存储时序化数据的时候也一并更新到一个结构化存储的数据库(例如MySQL)中,提升前端监控系统的数据可视化性能。

实施例2:

以开发一个药物设计的分子生成算法为例。

人工智能工程师可以根据文献构建基于卷积神经网络(RNN)的分子生成模型,通过开源机器学习开发框架完成模型构建后将相应的代码推送到代码仓库中(例如Bitbucket)。一般来说这类神经网络的模型参数例如学习率(learning rate)、批处理大小(batch size)等是需要模型在具体调试及训练过程中不停控制以便于得到更优的结果的。

代码推送完后,持续集成服务(Jenkins)检测到代码仓库的变更后出发相应的容器镜像构建。镜像构建及部署成为一个容器实例可由Binder实现,该实例启动过程包含了机器学习框架的初始化、开发人员自定义的模型代码及依赖的环境的加载,此外该实例中还会启动一个交互式可编程的开发工具(Jupyter)于该环境中,以确保所有的框架、代码实现及依赖可以在该交互式开发工具中被调用。

确保代码可在交互式编辑工具中可被调用后,即可开始针对训练及测试数据进行模型的调试与优化过程,以学习率和批处理大小这一参数组合为例,通过改变不同的初始化学习率及批处理大小参数组合,在训练集上重复进行模型的训练并在测试集上运行验证程序,训练及测试的日志数据可以通过模型开发过程中引入日志服务埋点功能被收集到模型监控服务(例如MLflow)(如图4所示)中。通过分析监控数据的可视化结果来判定进一步调整学习率及批处理大小这两个参数组合的策略,进而依次迭代模型训练、测试及调整的过程实现模型最优参数的探寻。该最优参数即可被记录下来方便以后使用该模型实现分子生成的任务时被作为预设置参数调用。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号