一种机器学习模型通用部署方法与流程
未命名
08-14
阅读:218
评论:0
1.本发明公开一种方法,涉及人工智能技术领域,具体地说是一种机器学习模型通用部署方法。
背景技术:
2.人工智能技术尤其是深度学习技术广泛应用于推荐、广告等业务场景,这些场景使用的模型有较为显著的特点:模型规模大,在线推理性能要求高,更新频繁。模型规模大是指网络结构复杂,参数量巨大,运算量巨大。对在线推理性能要求高主要是对整体时延要求较为苛刻。更新频繁是指在推荐、广告等业务中经常需要尝试新特征、新模型,因此新模型的训练和上线频率很高。由于上述原因,深度学习模型都需要专门的部署框架进行模型在线部署,以pytorch模型为例,它的部署框架是torchserver,torchserver需要用户提供一个文件handler.py,用户在handler.py中实现数据预处理过程和模型推理过程。但这一做法存在明显的弊端:预处理过程可能需要访问外部资源,从torchserver内部访问外部资源会带来很多麻烦和不可控的风险;预处理过程无法进行语言层面的优化,torchserver只支持python;由于修改预处理逻辑需要修改整个部署文件,并重新加载模型,因此预处理过程无法单独优化。
技术实现要素:
3.本发明针对现有技术的问题,提供一种机器学习模型通用部署方法,实现机器学习模型pytorch的部署。
4.本发明提出的具体方案是:
5.本发明提供一种机器学习模型通用部署方法,将机器学习模型的数据预处理模块与机器学习模型分别独立部署,所述机器学习模型为pytorch模型,
6.以独立服务形式部署所述数据预处理模块;
7.部署所述机器学习模型于torchserver框架内;
8.所述数据预处理模块与torchserver框架按照约定的协议进行通信。
9.进一步,所述的一种机器学习模型通用部署方法中编写所述数据预处理模块的文件preprocess.py,根据所述文件preprocess.py所述数据预处理模块进行数据预处理包括:
10.获取全部所需的原始数据;
11.根据不同数据的使用方式进行特征扩展及特征交叉;
12.针对数值特征进行数据平滑、缩放及离散化处理,针对类别特征进行数值化和one-hot编码处理;
13.进行缺失值填充及异常值纠正;
14.将所有特征值按照特征顺序构建为预处理样本。
15.进一步,所述的一种机器学习模型通用部署方法中所述部署所述机器学习模型于
torchserver框架内,包括:
16.创建所述机器学习模型的mar文件,所述mar文件包含所述机器学习模型的处理文件handler.py和所述机器学习模型的结构定义文件model.py,所述处理文件handler.py继承基类basehandler,不重载相关逻辑,
17.配置所述机器学习模型的部署包配置文件config.properties,并设置相关参,
18.构建所述机器学习模型的在线部署的文件,通过所述在线部署的文件安装打包工具及创建mar文件。
19.进一步,所述的一种机器学习模型通用部署方法中所述设置相关参数,包括:
20.设置inference_address和management_address分别表示推理服务url和管理服务url;
21.设置grpc_inference_port和grpc_management_port分别表示推理服务grpc端口和管理服务grpc端口;
22.设置load_models表示部署的机器学习模型;
23.设置model_store表示mar文件所在路径;
24.设置enable_envvars_config=false,并设置service_envelope为相应值,通过相应值对应的envelope使所述机器学习模型正确地接收数据预处理模块的输出。
25.进一步,所述的一种机器学习模型通用部署方法中数据预处理模块与torchserver框架按照http协议进行通信,并利用多维数组表示pytorch模型的预处理样本。
26.本发明还提供一种机器学习模型通用部署装置,包括预处理服务部署模块和模型部署模块,
27.所述装置将机器学习模型的数据预处理模块与机器学习模型分别独立部署,所述机器学习模型为pytorch模型,
28.处理服务部署模块以独立服务形式部署所述数据预处理模块;
29.模型部署模块部署所述机器学习模型于torchserver框架内;
30.所述数据预处理模块与torchserver框架按照约定的协议进行通信。
31.进一步,所述的一种机器学习模型通用部署装置中预处理服务部署模块编写所述数据预处理模块的文件preprocess.py,所述数据预处理模块根据所述文件preprocess.py进行数据预处理包括:
32.获取全部所需的原始数据;
33.根据不同数据的使用方式进行特征扩展及特征交叉;
34.针对数值特征进行数据平滑、缩放及离散化处理,针对类别特征进行数值化和one-hot编码处理;
35.进行缺失值填充及异常值纠正;
36.将所有特征值按照特征顺序构建为预处理样本。
37.进一步,所述的一种机器学习模型通用部署装置中所述模型部署模块部署所述机器学习模型于torchserver框架内,包括:
38.创建所述机器学习模型的mar文件,所述mar文件包含所述机器学习模型的处理文件handler.py和所述机器学习模型的结构定义文件model.py,所述处理文件handler.py继
承基类basehandler,不重载相关逻辑,
39.配置所述机器学习模型的部署包配置文件config.properties,并设置相关参数,
40.构建所述机器学习模型的在线部署的文件,通过所述在线部署的文件安装打包工具及创建mar文件。
41.进一步,所述的一种机器学习模型通用部署装置中所述模型部署模块设置相关参数,包括:
42.设置inference_address和management_address分别表示推理服务url和管理服务url;
43.设置grpc_inference_port和grpc_management_port分别表示推理服务grpc端口和管理服务grpc端口;
44.设置load_models表示部署的机器学习模型;
45.设置model_store表示mar文件所在路径;
46.设置enable_envvars_config=false,并设置service_envelope为相应值,通过相应值对应的envelope使所述机器学习模型正确地接收数据预处理模块的输出。
47.本发明的有益之处是:
48.本发明提供一种机器学习模型通用部署方法,将数据预处理过程与模型推理拆分为独立模块后,数据预处理过程可根据实际业务场景进行灵活优化,不会影响模型推理过程;在数据和预处理过程均不变化的情况下,可实现模型频繁更新。
附图说明
49.图1是本发明方法应用框架示意图。
50.图2是现有技术应用框架示意图。
51.图3是另一现有技术应用框架示意图。
具体实施方式
52.下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
53.本发明提供一种机器学习模型通用部署方法,将机器学习模型的数据预处理模块与机器学习模型分别独立部署,所述机器学习模型为pytorch模型,
54.以独立服务形式部署所述数据预处理模块;
55.部署所述机器学习模型于torchserver框架内;
56.所述数据预处理模块与torchserver框架按照约定的协议进行通信。
57.本发明方法针对机器学习模型,将数据预处理过程和模型推理过程拆分为可独立部署的模块,其中数据预处理过程单独部署,模型推理过程使用相应的框架部署,两个模块按照约定的方式进行通信,两个模块可分别进行最大程度的优化。
58.具体应用中,在本发明方法的一些实施例中,基于本发明方法的技术方案,进行机器学习模型通用部署的过程可参考如下:
59.步骤1:以独立服务形式部署所述数据预处理模块。其中进一步,编写所述数据预处理模块的文件preprocess.py,根据所述文件preprocess.py所述数据预处理模块进行数
据预处理包括:
60.获取全部所需的原始数据;
61.根据不同数据的使用方式进行特征扩展及特征交叉;
62.针对数值特征进行数据平滑、缩放及离散化处理,针对类别特征进行数值化和one-hot编码处理;
63.进行缺失值填充及异常值纠正;
64.将所有特征值按照特征顺序构建为预处理样本。数据预处理的目标是该阶段的输出数据可被模型或者模型框架框架直接使用。
65.进一步,数据预处理模块与torchserver框架可以按照http协议进行通信,以如下结构输出数据:
66.{'instances':[[],[]...]}
[0067]
其中instances的值是多维数组,数组的每一个元素即是一个预处理样本。
[0068]
步骤2:部署所述机器学习模型于torchserver框架内。
[0069]
进一步,步骤2中包括:
[0070]
步骤21:创建所述机器学习模型的mar文件,所述mar文件包含所述机器学习模型的处理文件handler.py和所述机器学习模型的结构定义文件model.py,所述处理文件handler.py继承基类basehandler,不重载相关逻辑,其中文件model.py是模型主要结构的定义文件,只允许一个类存在,需要使用其他自定义类时应当在其他文件中进行定义,在文件model.py中进行导入import操作即可,
[0071]
步骤22:配置所述机器学习模型的部署包配置文件config.properties,并设置相关参数,进一步,步骤22中包括:
[0072]
设置参数,其中inference_address=http://《ip》:《port》
[0073]
management_address=http://《ip》:《port》
[0074]
分别表示推理服务url和管理服务url;
[0075]
grpc_inference_port=《port》
[0076]
grpc_management_port=《port》
[0077]
分别表示推理服务grpc端口和管理服务grpc端口;
[0078]
设置load_models=《model_1》.mar[,《model_2》.mar]
[0079]
表示部署的机器学习模型;
[0080]
设置model_store=《model_path》表示mar文件所在路径;
[0081]
设置enable_envvars_config=false,并设置service_envelope为相应值,通过相应值对应的envelope使所述机器学习模型正确地接收数据预处理模块的输出;
[0082]
步骤23:构建所述机器学习模型的在线部署的文件,通过所述在线部署的文件安装打包工具及创建mar文件。
[0083]
进一步,步骤23中包括:
[0084]
a.使用pip安装打包工具torch-model-archiver;
[0085]
b.使用如下命令进行.mar文件的构建:
[0086]
torch-model-archiver
‑‑
model-name《your_model_name》
‑‑
version1.0
‑‑
model-file《your_model_file》.py
‑‑
serialized-file《your_model_name》.pth
‑‑
handler《
default_handler or your_handler》
‑‑
extra-files《your_extra_file.py》
[0087]
其中《your_model_file》.py是模型主定义文件,《your_model_name》.pth是模型训练完成后保存的参数文件,default_handler表示框架内置的handler名称,your_handler即为步骤2创建的文件handler.py,《your_extra_file.py》表示的是需要使用的额外文件,比如模型主定义文件需要使用的文件等;
[0088]
该命令会创建文件《your_model_name》.mar。
[0089]
步骤3:使所述数据预处理模块与torchserver框架按照约定的协议进行通信。其中将config.properties与《your_model_name》.mar一起上传至torchserver,config.properties中的参数model-store,torchserver在该参数所设定的路径下查找相应的.mar文件,
[0090]
数据预处理模块可以通过http协议访问模型,访问url如下:
[0091]
http://《ip》:《port》/predictions/《your_model_name》
[0092]
其中的《ip》,《port》即为config.properties中所设定的inference_address,《your_model_name》即为config.properties中load_models所设定的模型。
[0093]
本发明还提供一种机器学习模型通用部署装置,包括预处理服务部署模块和模型部署模块,
[0094]
所述装置将机器学习模型的数据预处理模块与机器学习模型分别独立部署,所述机器学习模型为pytorch模型,
[0095]
处理服务部署模块以独立服务形式部署所述数据预处理模块;
[0096]
模型部署模块部署所述机器学习模型于torchserver框架内;
[0097]
所述数据预处理模块与torchserver框架按照约定的协议进行通信。
[0098]
上述装置内的各模块之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
[0099]
同样地,本发明装置将数据预处理过程与模型推理拆分为独立模块后,数据预处理过程可根据实际业务场景进行灵活优化,不会影响模型推理过程;在数据和预处理过程均不变化的情况下,可实现模型频繁更新。
[0100]
需要说明的是,上述各流程和各装置结构中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。上述各实施例中描述的系统结构可以是物理结构,也可以是逻辑结构,即,有些模块可能由同一物理实体实现,或者,有些模块可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
[0101]
以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。
技术特征:
1.一种机器学习模型通用部署方法,其特征是将机器学习模型的数据预处理模块与机器学习模型分别独立部署,所述机器学习模型为pytorch模型,以独立服务形式部署所述数据预处理模块;部署所述机器学习模型于torchserver框架内;所述数据预处理模块与torchserver框架按照约定的协议进行通信。2.根据权利要求1所述的一种机器学习模型通用部署方法,其特征是编写所述数据预处理模块的文件preprocess.py,根据所述文件preprocess.py所述数据预处理模块进行数据预处理包括:获取全部所需的原始数据;根据不同数据的使用方式进行特征扩展及特征交叉;针对数值特征进行数据平滑、缩放及离散化处理,针对类别特征进行数值化和one-hot编码处理;进行缺失值填充及异常值纠正;将所有特征值按照特征顺序构建为预处理样本。3.根据权利要求1所述的一种机器学习模型通用部署方法,其特征是所述部署所述机器学习模型于torchserver框架内,包括:创建所述机器学习模型的mar文件,所述mar文件包含所述机器学习模型的处理文件handler.py和所述机器学习模型的结构定义文件model.py,所述处理文件handler.py继承基类basehandler,不重载相关逻辑,配置所述机器学习模型的部署包配置文件config.properties,并设置相关参数,构建所述机器学习模型的在线部署的文件,通过所述在线部署的文件安装打包工具及创建mar文件。4.根据权利要求3所述的一种机器学习模型通用部署方法,其特征是所述设置相关参数,包括:设置inference_address和management_address分别表示推理服务url和管理服务url;设置grpc_inference_port和grpc_management_port分别表示推理服务grpc端口和管理服务grpc端口;设置load_models表示部署的机器学习模型;设置model_store表示mar文件所在路径;设置enable_envvars_config=false,并设置service_envelope为相应值,通过相应值对应的envelope使所述机器学习模型正确地接收数据预处理模块的输出。5.根据权利要求1所述的一种机器学习模型通用部署方法,其特征是数据预处理模块与torchserver框架按照http协议进行通信,并利用多维数组表示pytorch模型的预处理样本。6.一种机器学习模型通用部署装置,其特征是包括预处理服务部署模块和模型部署模块,所述装置将机器学习模型的数据预处理模块与机器学习模型分别独立部署,所述机器学习模型为pytorch模型,
处理服务部署模块以独立服务形式部署所述数据预处理模块;模型部署模块部署所述机器学习模型于torchserver框架内;所述数据预处理模块与torchserver框架按照约定的协议进行通信。7.根据权利要求6所述的一种机器学习模型通用部署装置,其特征是预处理服务部署模块编写所述数据预处理模块的文件preprocess.py,所述数据预处理模块根据所述文件preprocess.py进行数据预处理包括:获取全部所需的原始数据;根据不同数据的使用方式进行特征扩展及特征交叉;针对数值特征进行数据平滑、缩放及离散化处理,针对类别特征进行数值化和one-hot编码处理;进行缺失值填充及异常值纠正;将所有特征值按照特征顺序构建为预处理样本。8.根据权利要求6所述的一种机器学习模型通用部署装置,其特征是所述模型部署模块部署所述机器学习模型于torchserver框架内,包括:创建所述机器学习模型的mar文件,所述mar文件包含所述机器学习模型的处理文件handler.py和所述机器学习模型的结构定义文件model.py,所述处理文件handler.py继承基类basehandler,不重载相关逻辑,配置所述机器学习模型的部署包配置文件config.properties,并设置相关参数,构建所述机器学习模型的在线部署的文件,通过所述在线部署的文件安装打包工具及创建mar文件。9.根据权利要求8所述的一种机器学习模型通用部署装置,其特征是所述模型部署模块设置相关参数,包括:设置inference_address和management_address分别表示推理服务url和管理服务url;设置grpc_inference_port和grpc_management_port分别表示推理服务grpc端口和管理服务grpc端口;设置load_models表示部署的机器学习模型;设置model_store表示mar文件所在路径;设置enable_envvars_config=false,并设置service_envelope为相应值,通过相应值对应的envelope使所述机器学习模型正确地接收数据预处理模块的输出。
技术总结
本发明公开一种机器学习模型通用部署方法,涉及人工智能技术领域;将机器学习模型的数据预处理模块与机器学习模型分别独立部署,所述机器学习模型为Pytorch模型,以独立服务形式部署所述数据预处理模块;部署所述机器学习模型于torchserver框架内;所述数据预处理模块与torchserver框架按照约定的协议进行通信。信。信。
技术研发人员:魏可伟 张俊泽 刘伟 刘旺
受保护的技术使用者:上海沄熹科技有限公司
技术研发日:2023.05.06
技术公布日:2023/8/13
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
