一种Python模型分布式在线部署方法及系统技术方案

技术编号:36707112 阅读:12 留言:0更新日期:2023-03-01 09:30
本发明专利技术公开了一种Python模型分布式在线部署方法及系统,本发明专利技术设计的数据处理和特征工程代码转换器,将Python模型训练前置的离线数据处理和特征工程的逻辑转换为在线Python代码;本发明专利技术设计的模型引擎,可以快速加载机器学习、深度学习、自然语言处理等各种不同种类的Python模型。通过本发明专利技术提供的Python模型分布式部署方法及系统,Python模型可以快速部署上线,可以轻松满足高并发、高可用和容错性等要求,算法工程师只需将时间和精力花费在建模上,从而提高了模型开发效率,缩短了模型迭代周期。代周期。代周期。

【技术实现步骤摘要】
一种Python模型分布式在线部署方法及系统


[0001]本专利技术属于模型部署
,尤其涉及一种Python模型分布式在线部署方法及系统。

技术介绍

[0002]随着海量数据的累积以及AI理论技术的不断发展,机器学习和深度学习模型已经被应用到了工业、金融、零售、汽车、医疗等各种领域。Python作为当下数据分析和模型训练最常用的工具,被广泛用于各领域模型的开发。Python模型开发完成后,需要以在线部署的方式将模型应用起来。目前Python模型部署有以下两种方式,其流程见图1。
[0003]1.算法工程师使用Flask来搭建简易的web服务,web服务使用Python来加载模型,对外提供服务。
[0004]2.算法工程师将Python模型文件、模型训练逻辑以及模型调用文档交付给部署工程师,然后部署工程师将模型转化为某一特定形式,例如PMML文件等,再以Java或C++程序加载模型,并对外提供服务。
[0005]因为模型在线部署有高并发、高可用和高容错等要求,不同领域模型更新发版可能很频繁,且模型离线数据处理和特征工程也需要在在线预测时实现;所以,以上两种Python模型部署的方式,都有各自存在的缺点。
[0006]第一种算法工程师使用Flask来搭建简易的web服务的方式,首先Flask服务性能很差,不能在调用量很大时满足性能要求;其次模型在线部署对高并发、高可用和容错性有一定要求,让算法工程师来承担部署工作,效率并不高;最后离线数据处理和特征工程也需要算法工程时实现一套在线的程序,进一步加大了Python模型部署的工作量。
[0007]第二种算法工程师和部署工程师合作将模型部署上线的方式,首先算法工程师将Python模型文件、模型训练逻辑以及模型调用文档交付给部署工程师,然后部署工程师需要将离线数据处理和特征工程转化为可上线的程序以及将模型转化为可上线的形式,这样存在一定的沟通成本,而且部署工程师在将模型转化为可上线的形式时,需要保证Python模型离线训练和在线预测结果的一致性,对部署工程师的能力要求很高,所以这种方式耗时耗力且效率低下。

技术实现思路

[0008]本专利技术的目的在于针对现有技术的不足,提供一种Python模型分布式在线部署方法及系统,解决了如下技术问题:
[0009]1.如何满足任意不同类型Python模型部署上线的需求;
[0010]2.如何实现Python在线模型的高并发、高可用和容错等要求;
[0011]3.如何在不影响业务调用的情况下,实现模型版本的热更新;
[0012]4.如何让离线数据处理和特征工程也能快速地上线且保证离线和在线逻辑的一致性和数据的准确性,提高运行效率。
[0013]本专利技术的目的是通过以下技术方案实现的:
[0014]根据本说明书的第一方面,提供一种Python模型分布式在线部署方法,该方法包括:
[0015]通过数据处理和特征工程代码转换器,将Python模型训练前置的离线数据处理和特征工程的逻辑转换为在线Python代码;
[0016]通过模型引擎加载不同种类的Python模型;
[0017]采用分布式部署框架对Python模型进行在线部署,包括:
[0018]使用分布式文件存储系统存储用户上传的Python模型文件,使得每个模型引擎都能够加载Python模型文件;
[0019]根据并发调用量的大小和每个模型引擎能够处理的请求数量,计算当前所需的模型引擎数量;
[0020]当部署新的Python模型时,设置该模型的实例数y,根据模型引擎所在服务器资源使用情况,选中资源最充足的y个模型引擎来部署该模型。
[0021]进一步地,所述代码转换器用于用户通过界面的方式配置模型训练前置的离线数据处理和特征工程的逻辑,并将用户配置以JSON格式进行存储;读取用户配置,根据离线数据处理和特征工程的逻辑来生成相同逻辑的在线Python代码。
[0022]进一步地,所述代码转换器采用基于Jython的在线Python代码计算方式,将Python代码转换为字节码然后在JVM中运行。
[0023]进一步地,所述模型引擎用于加载不同种类的Python模型,包括:
[0024]模型文件初始化:根据用户上传的Python模型文件,将Python模型加载到内存中生成模型预测对象;
[0025]模型输入参数和模型预测结果识别:解析Python模型文件内容,转成Python对象,通过读取Python对象变量的方式识别模型输入参数和模型预测结果;
[0026]模型预测:当请求数据分发到模型引擎时,将接收的数据转换为Python模型的输入参数格式,根据入参数据调用内存中生成的模型预测对象,得到并返回模型预测结果。
[0027]进一步地,用户将Python模型封装成模型模版定义的格式,然后压缩为ZIP压缩包,再将Python模型文件压缩包上传,模型引擎解压模型文件压缩包后进行后续处理。
[0028]进一步地,所述模型引擎内置Python算法包以支持Python模型的加载,如果需要用到模型引擎内没有的算法包,用户需将算法包和模型文件一起上传。
[0029]进一步地,所述分布式部署框架将所有调用模型的请求负载均衡到每一个模型引擎,当请求并发量大时增加模型实例数,当请求并发量小时减少模型实例数。
[0030]进一步地,所述分布式部署框架将模型部署信息存储在Zookeeper上,当有模型引擎因为异常退出时,获取该异常模型引擎上存储的模型部署信息,然后根据正常模型引擎对应的服务器资源使用情况,挑选出资源最充足的模型引擎,将部署在异常模型引擎上的模型迁移到其他正常的模型引擎上;将异常模型引擎上正在处理的模型调用请求,转发到其他正常的模型引擎。
[0031]进一步地,所述分布式部署框架将模型部署信息存储在Zookeeper上,当用户更新模型版本时,依次滚动更新每一个模型引擎上的模型文件,当一个模型引擎上的模型文件在更新时,其他模型引擎上的模型还能继续使用,更新成功时,再更新下一个模型引擎上的
模型文件,更新失败时会自动回滚到上一个版本的模型文件。
[0032]根据本说明书的第二方面,提供一种Python模型分布式在线部署系统,该系统基于分布式部署框架实现,该系统包括代码转换器和模型引擎;
[0033]所述代码转换器用于将Python模型训练前置的离线数据处理和特征工程的逻辑转换为在线Python代码;
[0034]所述模型引擎用于加载不同种类的Python模型;
[0035]所述分布式部署框架实现Python模型的分布式在线部署,包括:
[0036]使用分布式文件存储系统存储用户上传的Python模型文件,使得每个模型引擎都能够加载Python模型文件;
[0037]根据并发调用量的大小和每个模型引擎能够处理的请求数量,计算当前所需的模型引擎数量;
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种Python模型分布式在线部署方法,其特征在于,该方法包括:通过数据处理和特征工程代码转换器,将Python模型训练前置的离线数据处理和特征工程的逻辑转换为在线Python代码;通过模型引擎加载不同种类的Python模型;采用分布式部署框架对Python模型进行在线部署,包括:使用分布式文件存储系统存储用户上传的Python模型文件,使得每个模型引擎都能够加载Python模型文件;根据并发调用量的大小和每个模型引擎能够处理的请求数量,计算当前所需的模型引擎数量;当部署新的Python模型时,设置该模型的实例数y,根据模型引擎所在服务器资源使用情况,选中资源最充足的y个模型引擎来部署该模型。2.根据权利要求1所述的Python模型分布式在线部署方法,其特征在于,所述代码转换器用于用户通过界面的方式配置模型训练前置的离线数据处理和特征工程的逻辑,并将用户配置以JSON格式进行存储;以及,读取用户配置,根据离线数据处理和特征工程的逻辑来生成相同逻辑的在线Python代码。3.根据权利要求1所述的Python模型分布式在线部署方法,其特征在于,所述代码转换器采用基于Jython的在线Python代码计算方式,将Python代码转换为字节码然后在JVM中运行。4.根据权利要求1所述的Python模型分布式在线部署方法,其特征在于,所述模型引擎用于加载不同种类的Python模型,包括:模型文件初始化:根据用户上传的Python模型文件,将Python模型加载到内存中生成模型预测对象;模型输入参数和模型预测结果识别:解析Python模型文件内容,转成Python对象,通过读取Python对象变量的方式识别模型输入参数和模型预测结果;模型预测:当请求数据分发到模型引擎时,将接收的数据转换为Python模型的输入参数格式,根据入参数据调用内存中生成的模型预测对象,得到并返回模型预测结果。5.根据权利要求4所述的Python模型分布式在线部署方法,其特征在于,用户将Python模型封装成模型模版定义的格式,然后压缩为ZIP压缩包,再将Python模型文件压缩包上传,模型引擎解压模型文件压缩包后进行后续处理。6....

【专利技术属性】
技术研发人员:陈瑞勇蔡石林唐嘉成李响
申请(专利权)人:浙江浙里信征信有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1