1.本发明涉及机器学习技术领域,具体地说是一种基于容器化和虚拟化的卷积神经网络分层训练方法及系统。
背景技术:
2.随着计算机硬件性能的提升,越来越多优秀的卷积神经网络模型相继被提出,从最初的lenet,再到后来的alexnet、vgg、googlenet、resnet、densenet等。卷积神经网络模型层数总体呈加深趋势,模型的结构亦变得愈发复杂。一般而言,卷积神经网络的层数每增加一层,整个网络的参数数量则会呈指数级增长。
3.模型的训练依赖于一定的计算机硬件资源。一个模型能否完成一次训练,主要取决于运行该模型的计算机硬件资源能否承载该模型需要的计算资源,存储资源最多的时刻。在整个模型的训练过程中,往往只有需要计算资源和存储资源最多的时刻才能把计算机的硬件性能发挥到最大,其它时刻计算机的硬件性能则处于闲置状态。在保证模型能够正常训练的前提下,就模型设计者而言,若要训练一个模型,通常需要在计算机硬件资源和模型训练总时间上做出取舍。即便如此,模型的设计者依然需要为训练模型的过程中,无法充分使用计算机硬件资源的这部分时间买单,这无疑加大了模型的训练成本。
技术实现要素:
4.本发明的技术任务是针对以上不足之处,提供一种基于容器化和虚拟化的卷积神经网络分层训练方法及系统,能够充分发挥计算设备的性能,降低模型设计者训练模型的成本,提高云服务商设备重复使用率,简化卷积神经网络模型的设计流程。
5.本发明解决其技术问题所采用的技术方案是:
6.一种基于容器化和虚拟化的卷积神经网络分层训练方法,包括分段式机器学习框架,抽象模块化模板,pod、虚机创建调度,监控平台;
7.分段式机器学习框架用于提供具有通信能力的机器学习程序,以及根据模板生成完整的机器学习模型代码;
8.抽象模块化模板,基于卷积神经网络结构的分层特性,提供标准的抽象卷积神经网络各模块的模板,采用声明式定义的方式来定义卷积神经网络各层的结构,根据模板类型的不同,声明中需要定义模块类型及相关配置,如:资源类型(虚机或pod),计算资源规模(内存,cpu,gpu,带宽),调度顺序等;
9.pod、虚机创建调度,利用卷积神经网络各模块之间需要的计算资源,存储资源的不同,通过抽象出来的模板信息,创建相应的pod或虚机;包括机器学习代码生成,pod、虚机的创建及pod、虚机的调度;
10.监控平台,包括对pod、虚机性能的监控以及模型训练过程的监控,监控平台对pod和虚机的监控数据来自各层的通信模块,其将数据统一汇总到监控平台的数据仪表盘里。
11.本方法根据卷积神经网络各模块间具有的分层关系,设计了一种分段式机器学习框架和一套抽象卷积神经网络各模块的模板,提出了根据抽象出来的模块需要的计算资源、存储资源来创建拥有相应计算资源存储资源的pod或虚机的方法,构建了pod、虚机的创建、调度和监控平台。
12.优选的,所述分段式机器学习框架将机器学习各模块的代码分别封装在不同的http服务中;分段式机器学习框架包括代码模块库与通信模块,
13.代码模块库主要定义机器学习各模块的代码,包括卷积层、池化层、全连接层模块;
14.通信模块主要为模型各模块提供数据传输的能力,包括向消息队列传输数据、向消息队列拉取数据、向监控平台反馈实时数据。
15.分段式机器学习框架将机器学习的各模块以模块化的形式封装成一个具有通信功能的模块,各模块可以灵活的组合成一个完整的机器学习网络,并根据导入的模板自动生成适合单机部署的机器学习模型;
16.将机器学习的各模块封装成一个具有通信功能的模块,使各模块可以运行在不同的机器上,达到分段训练模型的效果。
17.优选的,所述抽象模块化模板包括卷积层模板、批标准化模板、激活模板、池化模板、舍弃模板、全连接模板、数据模板和调度模板,其中调度模板基于其他模板自动生成,其它模板的主要用法如下:
18.卷积层模板主要用来配置卷积神经网络卷积层的参数,卷积层模板主要包含以下参数:
19.in_channels:网络输入的通道数;
20.out_channels:网络输出的通道数;
21.kernel_size:卷积核的大小,如果该参数是一个整数n,那么卷积核的大小是n*n;
22.stride:步长,代表卷积过程中移动的步长,默认是1;一般卷积核在输入图像上的移动是自左至右,自上至下,如果参数是一个整数,则默认在水平和垂直方向都是该整数;如果参数是stride=(2,1),其中2代表着高(h),行步长为2;1代表着宽(w)进行步长为1;
23.padding:填充,默认是全0填充;
24.dilation:扩张,一般情况下,卷积核与输入图像对应位置间的计算是尺寸相同,若卷积核大小为3*3,那么它在输入图像上每次作用的区域亦是3*3,此时dilation=0;
25.groups:分组,指的是对输入通道进行分组,如果groups=1,则输入为一组,输出亦是一组;如果groups=2,那么就将输入分为两组,相应的输出也是两组;同时需要保证in_channels和out_channels必须能整除groups;
26.bias:偏置参数,该参数为bool类型,当bias=true时,表示在后向反馈中学习得到的参数b被应用;
27.padding_mode:填充模式,padding_mode=
‘
zeros’表示0填充;
28.批标准化模板主要用来配置卷积神经网络批标准化层的参数,批标准化模板主要包含以下参数:
29.name-step:用于定义模板的名称及该模板执行步骤的顺序;
30.激活模板主要用来配置卷积神经网络激活层的参数,激活层模板主要包含以下参
数:
31.type:激活函数类型,常用的激活函数包括sigmoid,,tanh,relu等;
32.池化模板主要用来配置卷积神经网络池化层的参数,池化层模板主要包含以下参数:
33.kernel_size:pooling窗口的大小;
34.stride:pooling窗口移动的步长,默认值是kernel_size;
35.padding:输入的每一条边补充0的层数;
36.dilation:一个控制窗口中元素步幅的参数;
37.return_indices:若为true,返回输出最大值的序号;
38.ceil_mode:若为true,计算输出信号太小时会向上取整,代替默认的向下取整操作;
39.舍弃模板主要用来配置卷积神经网络舍弃层的参数,舍弃层模板主要包含以下参数:
40.rate:舍弃的概率;
41.全连接模板主要用来配置卷积神经网络全连接层的参数,全连接层模板主要包含以下参数:
42.inputs:输入数据;
43.units:该层的神经单元结点数;
44.activation:激活函数;
45.use_bias:boolean型,是否使用偏置项;
46.kernel_initializer:卷积核的初始化器;
47.bias_initializer:偏置项的初始化器,默认初始化为0;
48.kernel_regularizer:卷积核化的正则化,可选;
49.bias_regularizer:偏置项的正则化,可选;
50.activity_regularizer:输出的正则化函数;
51.trainable:boolean型,表明该层的参数是否参与训练;
52.reuse:boolean型,是否重复使用参数;
53.数据模板主要是用来配置数据预处理信息,数据层模板主要包含以下参数:
54.input_src:数据的存放路径;
55.output_src:模型配置保存路径;
56.rate:训练集和测试集的比例;
57.count:模型迭代次数;
58.其中各模板共有的参数如下:
59.cpu:用于定义需要的cpu资源,单位为m;
60.gpu:用于定义需要的gpu资源;
61.memory:用于定义需要的内存资源,单位为mi;
62.name-step:用于定义模板的名称及该模板的执行步骤顺序;
63.create_type:用于定义创建pod或虚机。
64.卷积神经网络的参数量在很大程度上决定了该模块需要的存储资源,如内存、显
存等;计算量决定了该模块需要的计算资源,如cpu,gpu等。基于卷积神经网络各模块间分层关系明显且各模块间参数量和计算量差异较大,卷积神经网络各模块对硬件需求不一致的特性致使大量的存储资源和计算资源被浪费,增加了模型训练的成本。通过抽象卷积神经网络各模块并形成模板的方法,可以解决模型训练过程中对计算机硬件资源利用不充分的问题。基于抽象卷积神经网络各模块并做成模板的方法,提供了一套标准的抽象卷积神经网络各模块的样例模板。模板采用声明式定义的方式来配置各模块的参数。
65.优选的,所述pod、虚机创建调度,
66.代码生成基于分段式机器学习框架得到,其通过解析模型各模块的模板,从分段式机器学习框架中匹配出相应的深度学习代码;
67.分段式机器学习框架通过解析模型各模块的模板,自动生成相应的具有通信能力的机器学习代码片段。生成的各模块机器学习代码会以程序的形式运行在pod或虚机里。同时为了后期模型部署的便利,本方法支持根据导入的模板自动生成适合单机部署的机器学习模型。
68.pod、虚机的创建基于模板定义部分创建的模板而生成且提供自动扩缩容服务;
69.pod、虚机的调度基于调度模板中的调度策略以及消息队列来实现。
70.进一步的,所述pod、虚机的创建,卷积神经网络各层要创建pod还是虚机,可由模型设计者在相应的模板中通过create_type字段来指定;同时亦可通过设置cpu、gpu、memory字段的值来配置pod或虚机需要的计算资源和存储资源;若没有配置相应字段值,则根据各层的计算量和参数量,按照预先设定的规则从第一层开始逐层创建出拥有与该层计算量和参数量相匹配的pod或虚机,使对应的计算资源和存储资源能够满足当前模块的需求;
71.匹配规则的原理如下:
72.gpu理论峰值=gpu芯片数量*gpu boost主频*核心数量*单个时钟周期内能处理的浮点计算次数;
73.cpu单周期双精度浮点计算能力=fma*2*512/64,其中fma指浮点向量加乘融合单元,默认值为2;
74.cpu单周期双精度浮点计算能力=fma数量*2*512/32;
75.参数值一般都是float类型,大小占4个字节,存储资源=4*参数量*a,其中a为调参系数;
76.计算资源=计算量*b,其中b为调参系数;
77.基于各层的参数量和计算量预估该层需要的计算资源、存储资源;
78.创建出来的pod或虚机,主要作用是给各模块的代码程序提供一个可靠的运行环境,若创建的为pod,则程序在pod之中运行;若创建的为虚机,创建调度模块通过相关的运维工具,如ansible,saltstack等,把该模块的代码拷贝到虚机里,并以进程的形式启动该程序。
79.进一步的,pod、虚机的调度顺序基于调度模板中的调度策略以及消息队列来实现,调度模板在模型需要的全部pod、虚机被创建成功后,由创建调度模块自动生成,它记录了访问每个pod、虚机的ip地址,以及它们的调度次序、模型迭代次数信息;调度模板生成后会由创建调度模块将该调度模板拷贝到该模型创建出来的所有pod、虚机的配置文件之中,
以此使得每个pod、虚机知道数据的传输流向;
80.具体的调度步骤如下:
81.1)、根据调度模板中的调度策略,首先启动数据模块,加载相应的数据,并对数据做预处理;
82.2)、当该层数据处理完成后,将调度策略相关的信息以及处理后的数据发送到消息队列中;
83.3)、其它层定期的轮询消息队列中的消息,有属于本层的消息就拉取下来,并按照本层的数据处理流程处理数据,数据处理结束后,重复步骤2),直到执行完调度策略;
84.当模型训练结束时,将模型的配置信息保存在数据模板,output_src字段指定的路径里,以便给后期的模型部署提供配置参数;
85.当模型的训练过程中某层的计算资源、存储资源不足或过剩时,按照指定的规则自动扩缩容pod或虚机。
86.该方法能够实现灵活的创建和调度组合方式:pod创建和pod调度,虚机创建和虚机调度,pod虚机混合创建和混合调度。
87.根据从卷积神经网络模型中抽象出来的模板,创建出相对应的pod或虚机,按照调度模板中定义的调度顺序来调度这些pod、虚机,且各pod、虚机之间的通信是基于消息队列实现的。
88.优选的,所述监控平台对pod和虚机的性能监控主要包括cpu、gpu、内存、流量的监控;
89.对模型训练状态的监控主要指对模型训练过程的监控,每层的通信模块在每次处理完一次数据后都会向监控平台发送相关的日志信息,监控平台将收集到的各层日志信息,按照时间,迭代次数排序,动态的向模型的训练者展示模型训练的状态信息;每层每次传输的日志都会包含如下信息:
90.name:当前层的模板名称;
91.data_from:接收的数据来自哪一层;
92.receive_data:接收到的数据,可选配:
93.create_time:接收到数据的时间;
94.end_time:数据传输给下一层的时间;
95.to:将数据发给下一层;
96.send_data:发送给下一层的数据,可选配;
97.message:其它信息,如报错等信息。
98.监控平台可以监控所有创建出来的pod、虚机的性能以及模型的训练状态,确保能够按照调度模板中定义的调度顺序来训练模型。
99.本发明还要求保护一种基于容器化和虚拟化的卷积神经网络分层训练系统,包括分段式机器学习框架,抽象模块化模板,pod、虚机创建调度模块,监控平台,
100.该系统实现上述的基于容器化和虚拟化的卷积神经网络分层训练方法。
101.本发明还要求保护一种基于容器化和虚拟化的卷积神经网络分层训练装置,包括:至少一个存储器和至少一个处理器;
102.所述至少一个存储器,用于存储机器可读程序;
103.所述至少一个处理器,用于调用所述机器可读程序,执行上述的基于容器化和虚拟化的卷积神经网络分层训练方法。
104.本发明还要求保护计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行上述的基于容器化和虚拟化的卷积神经网络分层训练。
105.本发明的一种基于容器化和虚拟化的卷积神经网络分层训练方法及系统与现有技术相比,具有以下有益效果:
106.与传统的卷积神经网络模型训练方法相比,本方法无论是对模型的设计者,还是对云平台服务的提供商都有较大的益处:
107.对于模型的设计者而言,采用本方法设计模型,不需要编写相关的模型代码,只需要在声明式的模板中根据模板的类型,填写上相应的参数即可,极大的简化了模型的设计开发流程;采用本方法训练模型,可以最大限度的节约模型训练的成本;
108.对于云服务提供商而言,采用本方法向用户提供创建对应pod、虚机的组合服务,可以提高云服务商设备使用效率。
附图说明
109.图1是本发明实施例提供的基于容器化和虚拟化的卷积神经网络分层训练方法架构示意图;
110.图2是本发明实施例提供的分段式机器学习框架工作示意图;
111.图3是本发明实施例提供的参数量和计算量示意图。
具体实施方式
112.下面结合附图和具体实施例对本发明作进一步说明。
113.本发明实施例提供了一种基于容器化和虚拟化的卷积神经网络分层训练方法,包括分段式机器学习框架,抽象模块化模板,pod、虚机创建调度,监控平台;
114.分段式机器学习框架用于提供具有通信能力的机器学习程序,以及根据模板生成完整的机器学习模型代码;将机器学习的各模块以模块化的形式封装成一个具有通信功能的模块,各模块可以灵活的组合成一个完整的机器学习网络,并根据导入的模板自动生成适合单机部署的机器学习模型;
115.抽象模块化模板,基于卷积神经网络结构的分层特性,提供标准的抽象卷积神经网络各模块的模板,采用声明式定义的方式来定义卷积神经网络各层的结构,根据模板类型的不同,声明中需要定义模块类型及相关配置,如:资源类型(虚机或pod),计算资源规模(内存,cpu,gpu,带宽),调度顺序等;
116.pod、虚机创建调度,利用卷积神经网络各模块之间需要的计算资源,存储资源的不同,通过抽象出来的模板信息,创建相应的pod或虚机;包括机器学习代码生成,pod、虚机的创建及pod、虚机的调度;
117.监控平台,包括对pod、虚机性能的监控以及模型训练过程的监控,监控平台对pod和虚机的监控数据来自各层的通信模块,其将数据统一汇总到监控平台的数据仪表盘里。
118.本方法根据卷积神经网络各模块间具有的分层关系,设计了一种分段式机器学习
框架和一套抽象卷积神经网络各模块的模板,提出了根据抽象出来的模块需要的计算资源、存储资源来创建拥有相应计算资源存储资源的pod或虚机的方法,构建了pod、虚机的创建、调度和监控平台。
119.分段式机器学习框架,将机器学习的各模块封装成一个具有通信功能的模块,使各模块可以运行在不同的机器上,达到分段训练模型的效果。
120.由于各模块需要的计算资源,存储资源不同,本方法拥有灵活创建出性能最佳的pod、虚机的机制。可由服务开发者自定义计算资源,存储资源,起pod,还是起虚机;或者由系统根据该模板的特征起拥有一定计算资源,存储资源的pod或虚机。
121.本方法拥有灵活的创建和调度组合方式:pod创建和pod调度;虚机创建和虚机调度;pod虚机混合创建和混合调度。
122.根据从卷积神经网络模型中抽象出来的模板,创建出相对应的pod或虚机,按照调度模板中定义的调度顺序来调度这些pod、虚机,且各pod、虚机之间的通信是基于消息队列实现的。
123.监控平台可以监控所有创建出来的pod、虚机的性能以及模型的训练状态,确保能够按照调度模板中定义的调度顺序来训练模型。
124.具体的技术方案实现如下:
125.一、分段式机器学习框架
126.分段式机器学习框架包括代码模块库与通信模块,它的主要作用是提供具有通信能力的机器学习程序以及根据模板生成完整的机器学习模型代码,其本质是将机器学习各模块的代码分别封装在不同的http服务中。
127.其中,代码模块库主要定义了机器学习各模块(如卷积层、池化层、全连接层等)的代码。
128.通信模块主要为模型各模块提供数据传输的能力,如向消息队列传输数据、向消息队列拉取数据、向监控平台反馈实时数据。
129.分段式机器学习框架工作示意图如图2所示。
130.二、抽象模块化模板定义
131.本方法针对卷积神经网络各模块间分层关系明显且各模块间参数量和计算量差异较大的问题,常见的卷积神经网络各层参数量和计算量对比见图3所示,其中参数量在很大程度上决定了该模块需要的存储资源,如内存、显存等;计算量决定了该模块需要的计算资源,如cpu,gpu等。卷积神经网络各模块对硬件需求不一致的特性致使大量的存储资源和计算资源被浪费,增加了模型训练的成本。本方法提出的抽象卷积神经网络各模块并形成模板的方法,可以解决模型训练过程中对计算机硬件资源利用不充分的问题。
132.基于抽象卷积神经网络各模块并做成模板的方法,本方法提供了一套标准的抽象卷积神经网络各模块的样例模板。模板采用声明式定义的方式来配置各模块的参数。模板主要包括:
133.卷积层模板(convolutional.yaml)、批标准化模板(bn.yaml)、激活模板(activation.yaml)、池化模板(pooling.yaml)、舍弃模板(dropout.yaml)、全连接模板(fc.yaml)、数据模板(data.yaml)、调度模板(scheduling.yaml)等。
134.其中调度模板基于其他模板自动生成,其它模板的主要用法如下:
135.卷积层模板主要用来配置卷积神经网络卷积层的参数,卷积层模板主要包含以下参数:
136.in_channels:网络输入的通道数;
137.out_channels:网络输出的通道数;
138.kernel_size:卷积核的大小,如果该参数是一个整数n,那么卷积核的大小是n*n;
139.stride:步长,代表卷积过程中移动的步长,默认是1;一般卷积核在输入图像上的移动是自左至右,自上至下,如果参数是一个整数,则默认在水平和垂直方向都是该整数,如果参数是stride=(2,1),其中2代表着高(h),行步长为2;1代表着宽(w)进行步长为1;
140.padding:填充,默认是全0填充;
141.dilation:扩张,一般情况下,卷积核与输入图像对应位置间的计算是尺寸相同。若卷积核大小为3*3,那么它在输入图像上每次作用的区域亦是3*3,此时dilation=0;
142.groups:分组,指的是对输入通道进行分组,如果groups=1,则输入为一组,输出亦是一组;如果groups=2,那么就将输入分为两组,那么相应的输出也是两组。同时需要保证in_channels和out_channels必须能整除groups;
143.bias:偏置参数,该参数为bool类型,当bias=true时,表示在后向反馈中学习得到的参数b被应用;
144.padding_mode:填充模式,padding_mode=
‘
zeros’表示0填充。
145.批标准化模板主要用来配置卷积神经网络批标准化层的参数,批标准化层模板主要包含以下参数:
146.name-step:用于定义模板的名称及该模板执行步骤的顺序。
147.激活模板主要用来配置卷积神经网络激活层的参数,激活层模板主要包含以下参数:
148.type:激活函数类型,常用的激活函数有sigmoid,,tanh,relu等。
149.池化模板主要用来配置卷积神经网络池化层的参数,池化层模板主要包含以下参数:
150.kernel_size:pooling窗口的大小;
151.stride:pooling窗口移动的步长,默认值是kernel_size;
152.padding:输入的每一条边补充0的层数;
153.dilation:一个控制窗口中元素步幅的参数;
154.return_indices:若为true,返回输出最大值的序号;
155.ceil_mode:若为true,计算输出信号太小时会向上取整,代替默认的向下取整操作。
156.舍弃模板主要用来配置卷积神经网络舍弃层的参数,舍弃层模板主要包含以下参数:
157.rate:舍弃的概率。
158.全连接模板主要用来配置卷积神经网络全连接层的参数,全连接层模板主要包含以下参数:
159.inputs:输入数据;
160.units:该层的神经单元结点数;
161.activation:激活函数;
162.use_bias:boolean型,是否使用偏置项;
163.kernel_initializer:卷积核的初始化器;
164.bias_initializer:偏置项的初始化器,默认初始化为0;
165.kernel_regularizer:卷积核化的正则化,可选;
166.bias_regularizer:偏置项的正则化,可选;
167.activity_regularizer:输出的正则化函数;
168.trainable:boolean型,表明该层的参数是否参与训练;
169.reuse:boolean型,是否重复使用参数。
170.数据模板主要是用来配置数据预处理信息,数据层模板主要包含以下参数:
171.input_src:数据的存放路径;
172.output_src:模型配置保存路径;
173.rate:训练集和测试集的比例;
174.count:模型迭代次数。
175.其中各模板共有的参数如下:
176.cpu:用于定义需要的cpu资源,单位为m;
177.gpu:用于定义需要的gpu资源;
178.memory:用于定义需要的内存资源,单位为mi;
179.name-step:用于定义模板的名称及该模板的执行步骤顺序;
180.create_type:用于定义创建pod或虚机。
181.三、pod、虚机创建调度
182.包括代码生成,pod、虚机创建及pod、虚机调度,其中代码生成基于分段式机器学习框架得到,其通过解析模型各模块的模板,从分段式机器学习框架中匹配出相应的深度学习代码;pod、虚机的创建基于模板定义部分创建的模板而生成且提供自动扩缩容服务;pod、虚机的调度基于调度模板中的调度策略以及消息队列来实现。
183.代码生成:
184.分段式机器学习框架通过解析模型各模块的模板,自动生成相应的具有通信能力的机器学习代码片段。生成的各模块机器学习代码会以程序的形式运行在pod或虚机里。同时为了后期模型部署的便利,本方法支持根据导入的模板自动生成适合单机部署的机器学习模型。
185.pod、虚机创建:
186.本方法提供了灵活创建pod、虚机的机制。卷积神经网络各层要创建pod还是虚机,可以由模型设计者在相应的模板中通过create_type字段来指定;同时亦可通过设置cpu、gpu、memory等字段的值来配置pod或虚机需要的计算资源和存储资源。若没有配置相应字段值,本方法会根据各层的计算量和参数量,按照预先设定的规则从第一层开始逐层创建出拥有与该层计算量和参数量相匹配的pod或虚机,使对应的计算资源和存储资源能够满足当前模块的需求。
187.匹配规则的原理如下:
188.gpu理论峰值=gpu芯片数量*gpu boost主频*核心数量*单个时钟周期内能处
理的浮点计算次数;
189.cpu单周期双精度浮点计算能力=fma*2*512/64,其中fma指浮点向量加乘融合单元,默认值为2;
190.cpu单周期双精度浮点计算能力=fma数量*2*512/32;
191.参数值一般都是float类型,大小占4个字节,存储资源=4*参数量*a,其中a为调参系数;
192.计算资源=计算量*b,其中b为调参系数;
193.基于各层的参数量和计算量预估该层需要的计算资源、存储资源。
194.本方法创建出来的pod或虚机,主要作用是给各模块的代码程序提供一个可靠的运行环境,若创建的为pod,则程序在pod之中运行;若创建的为虚机,创建调度模块通过相关的运维工具如ansible,saltstack等,把该模块的代码拷贝到虚机里,并以进程的形式启动该程序。
195.pod、虚机调度:
196.本方法创建的pod、虚机的调度顺序基于调度模板中的调度策略以及消息队列来实现,调度模板在模型需要的全部pod、虚机被创建成功后,由创建调度模块自动生成,它记录了访问每个pod、虚机的ip地址,以及它们的调度次序,模型迭代次数等信息。调度模板生成后会由创建调度模块将该调度模板拷贝到该模型创建出来的所有pod、虚机的配置文件之中,以此使得每个pod、虚机知道数据的传输流向。
197.具体的调度步骤如下:
198.1)、根据调度模板中的调度策略,首先启动数据模块,加载相应的数据,并对数据做预处理;
199.2)、当该层数据处理完成后,将调度策略相关的信息以及处理后的数据发送到消息队列中;
200.3)、其它层定期的轮询消息队列中的消息,有属于本层的消息就拉取下来,并按照本层的数据处理流程处理数据,数据处理结束后,重复步骤2),直到执行完调度策略。
201.当模型训练结束时,将模型的配置信息保存在数据模板,output_src字段指定的路径里,以便给后期的模型部署提供配置参数。
202.当模型的训练过程中某层的计算资源、存储资源不足或过剩时,本发明会按照一定的规则自动扩缩容pod或虚机。
203.四、监控平台
204.监控平台部分包括对pod和虚机性能的监控以及模型训练状态的监控,监控平台对pod和虚机的监控数据分别来自各层的通信模块,各层的通信模块将数据统一汇总到监控平台的数据仪表盘中。
205.对pod和虚机的性能监控主要包括cpu、gpu、内存、流量等的监控。
206.对模型训练状态的监控主要指对模型训练过程的监控,每层的通信模块在每次处理完一次数据后都会向监控平台发送相关的日志信息,监控平台将收集到的各层日志信息,按照时间,迭代次数排序,动态的向模型的训练者展示模型训练的状态信息。每层每次传输的日志都会包含如下信息:
207.name:当前层的模板名称;
208.data_from:接收的数据来自那一层;
209.receive_data:接收到的数据,可选配;
210.create_time:接收到数据的时间;
211.end_time:数据传输给下一层的时间;
212.to:将数据发给下一层;
213.send_data:发送给下一层的数据,可选配;
214.message:其它信息,如报错等信息。
215.本发明实施例还提供了一种基于容器化和虚拟化的卷积神经网络分层训练系统,包括分段式机器学习框架,抽象模块化模板,pod、虚机创建调度模块,监控平台,
216.该系统实现本发明上述实施例中所述的基于容器化和虚拟化的卷积神经网络分层训练方法。
217.本发明实施例还提供了一种基于容器化和虚拟化的卷积神经网络分层训练装置,包括:至少一个存储器和至少一个处理器;
218.所述至少一个存储器,用于存储机器可读程序;
219.所述至少一个处理器,用于调用所述机器可读程序,执行本发明上述实施例中所述的基于容器化和虚拟化的卷积神经网络分层训练方法。
220.本发明实施例还提供了一种计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行本发明上述实施例中所述的云计算平台实现分布式自动处理告警的方法。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或cpu或mpu)读出并执行存储在存储介质中的程序代码。
221.在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
222.用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如cd-rom、cd-r、cd-rw、dvd-rom、dvd-ram、dvd-rw、dvd rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上下载程序代码。
223.此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
224.此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的cpu等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。
225.上文通过附图和优选实施例对本发明进行了详细展示和说明,然而本发明不限于这些已揭示的实施例,基与上述多个实施例本领域技术人员可以知晓,可以组合上述不同实施例中的代码审核手段得到本发明更多的实施例,这些实施例也在本发明的保护范围之内。
技术特征:
1.一种基于容器化和虚拟化的卷积神经网络分层训练方法,其特征在于,包括分段式机器学习框架,抽象模块化模板,pod、虚机创建调度,监控平台;分段式机器学习框架用于提供具有通信能力的机器学习程序,以及根据模板生成完整的机器学习模型代码;抽象模块化模板,基于卷积神经网络结构的分层特性,提供标准的抽象卷积神经网络各模块的模板,采用声明式定义的方式来定义卷积神经网络各层的结构;pod、虚机创建调度,利用卷积神经网络各模块之间需要的计算资源,存储资源的不同,通过抽象出来的模板信息,创建相应的pod或虚机;包括机器学习代码生成,pod、虚机的创建及pod、虚机的调度;监控平台,包括对pod、虚机性能的监控以及模型训练过程的监控,监控平台对pod和虚机的监控数据来自各层的通信模块,其将数据统一汇总到监控平台的数据仪表盘里。2.根据权利要求1所述的一种基于容器化和虚拟化的卷积神经网络分层训练方法,其特征在于,所述分段式机器学习框架将机器学习各模块的代码分别封装在不同的http服务中;分段式机器学习框架包括代码模块库与通信模块,代码模块库主要定义机器学习各模块的代码,包括卷积层、池化层、全连接层模块;通信模块主要为模型各模块提供数据传输的能力,包括向消息队列传输数据、向消息队列拉取数据、向监控平台反馈实时数据。3.根据权利要求1所述的一种基于容器化和虚拟化的卷积神经网络分层训练方法,其特征在于,所述抽象模块化模板包括卷积层模板、批标准化模板、激活模板、池化模板、舍弃模板、全连接模板、数据模板和调度模板,其中调度模板基于其他模板自动生成,其它模板的主要用法如下:卷积层模板主要用来配置卷积神经网络卷积层的参数,卷积层模板主要包含以下参数:in_channels:网络输入的通道数;out_channels:网络输出的通道数;kernel_size:卷积核的大小,如果该参数是一个整数n,那么卷积核的大小是n*n;stride:步长,代表卷积过程中移动的步长,默认是1;padding:填充,默认是全0填充;dilation:扩张,若卷积核大小为3*3,则它在输入图像上每次作用的区域亦是3*3,此时dilation=0;groups:分组,指的是对输入通道进行分组,如果groups=1,则输入为一组,输出亦是一组;如果groups=2,那么就将输入分为两组,相应的输出也是两组;同时需要保证in_channels和out_channels必须能整除groups;bias:偏置参数,该参数为bool类型,当bias=true时,表示在后向反馈中学习得到的参数b被应用;padding_mode:填充模式,padding_mode=
‘
zeros’表示0填充;批标准化模板主要用来配置卷积神经网络批标准化层的参数,批标准化模板主要包含以下参数:name-step:用于定义模板的名称及该模板执行步骤的顺序;激活模板主要用来配置卷积神经网络激活层的参数,激活层模板主要包含以下参数:
type:激活函数类型,常用的激活函数包括sigmoid,,tanh,relu;池化模板主要用来配置卷积神经网络池化层的参数,池化层模板主要包含以下参数:kernel_size:pooling窗口的大小;stride:pooling窗口移动的步长,默认值是kernel_size;padding:输入的每一条边补充0的层数;dilation:一个控制窗口中元素步幅的参数;return_indices:若为true,返回输出最大值的序号;ceil_mode:若为true,计算输出信号太小时会向上取整,代替默认的向下取整操作;舍弃模板主要用来配置卷积神经网络舍弃层的参数,舍弃层模板主要包含以下参数:rate:舍弃的概率;全连接模板主要用来配置卷积神经网络全连接层的参数,全连接层模板主要包含以下参数:inputs:输入数据;units:该层的神经单元结点数;activation:激活函数;use_bias:boolean型,是否使用偏置项;kernel_initializer:卷积核的初始化器;bias_initializer:偏置项的初始化器,默认初始化为0;kernel_regularizer:卷积核化的正则化,可选;bias_regularizer:偏置项的正则化,可选;activity_regularizer:输出的正则化函数;trainable:boolean型,表明该层的参数是否参与训练;reuse:boolean型,是否重复使用参数;数据模板主要是用来配置数据预处理信息,数据层模板主要包含以下参数:input_src:数据的存放路径;output_src:模型配置保存路径;rate:训练集和测试集的比例;count:模型迭代次数;其中各模板共有的参数如下:cpu:用于定义需要的cpu资源,单位为m;gpu:用于定义需要的gpu资源;memory:用于定义需要的内存资源,单位为mi;name-step:用于定义模板的名称及该模板的执行步骤顺序;create_type:用于定义创建pod或虚机。4.根据权利要求1或2所述的一种基于容器化和虚拟化的卷积神经网络分层训练方法,其特征在于,所述pod、虚机创建调度,代码生成基于分段式机器学习框架得到,其通过解析模型各模块的模板,从分段式机器学习框架中匹配出相应的深度学习代码;pod、虚机的创建基于模板定义部分创建的模板而生成且提供自动扩缩容服务;
pod、虚机的调度基于调度模板中的调度策略以及消息队列来实现。5.根据权利要求4所述的一种基于容器化和虚拟化的卷积神经网络分层训练方法,其特征在于,所述pod、虚机的创建,卷积神经网络各层要创建pod还是虚机,可由模型设计者在相应的模板中通过create_type字段来指定;同时亦可通过设置cpu、gpu、memory字段的值来配置pod或虚机需要的计算资源和存储资源;若没有配置相应字段值,则根据各层的计算量和参数量,按照预先设定的规则从第一层开始逐层创建出拥有与该层计算量和参数量相匹配的pod或虚机,使对应的计算资源和存储资源能够满足当前模块的需求;匹配规则的原理如下:gpu理论峰值=gpu芯片数量*gpu boost主频*核心数量*单个时钟周期内能处理的浮点计算次数;cpu单周期双精度浮点计算能力=fma*2*512/64,其中fma指浮点向量加乘融合单元,默认值为2;cpu单周期双精度浮点计算能力=fma数量*2*512/32;存储资源=4*参数量*a,其中a为调参系数;计算资源=计算量*b,其中b为调参系数;基于各层的参数量和计算量预估该层需要的计算资源、存储资源;若创建的为pod,则程序在pod之中运行;若创建的为虚机,创建调度模块通过相关的运维工具,把该模块的代码拷贝到虚机里,并以进程的形式启动该程序。6.根据权利要求4所述的一种基于容器化和虚拟化的卷积神经网络分层训练方法,其特征在于pod、虚机的调度顺序基于调度模板中的调度策略以及消息队列来实现,调度模板在模型需要的全部pod、虚机被创建成功后,由创建调度模块自动生成,它记录了访问每个pod、虚机的ip地址,以及它们的调度次序、模型迭代次数信息;调度模板生成后会由创建调度模块将该调度模板拷贝到该模型创建出来的所有pod、虚机的配置文件之中,以此使得每个pod、虚机知道数据的传输流向;具体的调度步骤如下:1)、根据调度模板中的调度策略,首先启动数据模块,加载相应的数据,并对数据做预处理;2)、当该层数据处理完成后,将调度策略相关的信息以及处理后的数据发送到消息队列中;3)、其它层定期的轮询消息队列中的消息,有属于本层的消息就拉取下来,并按照本层的数据处理流程处理数据,数据处理结束后,重复步骤2),直到执行完调度策略;当模型训练结束时,将模型的配置信息保存在数据模板,output_src字段指定的路径里,以便给后期的模型部署提供配置参数;当模型的训练过程中某层的计算资源、存储资源不足或过剩时,按照指定的规则自动扩缩容pod或虚机。7.根据权利要求4所述的一种基于容器化和虚拟化的卷积神经网络分层训练方法,其特征在于,所述监控平台对pod和虚机的性能监控主要包括cpu、gpu、内存、流量的监控;对模型训练状态的监控主要指对模型训练过程的监控,每层的通信模块在每次处理完一次数据后都会向监控平台发送相关的日志信息,监控平台将收集到的各层日志信息,按
照时间,迭代次数排序,动态的向模型的训练者展示模型训练的状态信息;每层每次传输的日志都会包含如下信息:name:当前层的模板名称;data_from:接收的数据来自哪一层;receive_data:接收到的数据,可选配:create_time:接收到数据的时间;end_time:数据传输给下一层的时间;to:将数据发给下一层;send_data:发送给下一层的数据,可选配;message:其它信息。8.一种基于容器化和虚拟化的卷积神经网络分层训练系统,其特征在于,包括分段式机器学习框架,抽象模块化模板,pod、虚机创建调度模块,监控平台,该系统实现权利要求1至7任一所述的基于容器化和虚拟化的卷积神经网络分层训练方法。9.一种基于容器化和虚拟化的卷积神经网络分层训练装置,其特征在于,包括:至少一个存储器和至少一个处理器;所述至少一个存储器,用于存储机器可读程序;所述至少一个处理器,用于调用所述机器可读程序,执行权利要求1至7任一所述的基于容器化和虚拟化的卷积神经网络分层训练方法。10.计算机可读介质,其特征在于,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行权利要求1至7任一所述的基于容器化和虚拟化的卷积神经网络分层训练。
技术总结
本发明公开了一种基于容器化和虚拟化的卷积神经网络分层训练方法及系统,属于机器学习技术领域,包括分段式机器学习框架,抽象模块化模板,POD、虚机创建调度,监控平台;分段式机器学习框架用于提供具有通信能力的机器学习程序,以及根据模板生成完整的机器学习模型代码;抽象模块化模板,基于卷积神经网络结构的分层特性,提供标准的抽象卷积神经网络各模块的模板,采用声明式定义的方式来定义卷积神经网络各层的结构;POD、虚机创建调度包括机器学习代码生成,POD、虚机的创建及POD、虚机的调度。本发明能充分发挥计算设备的性能,降低模型设计者训练模型的成本,提高云服务商设备重复使用率,简化卷积神经网络模型的设计流程。简化卷积神经网络模型的设计流程。简化卷积神经网络模型的设计流程。
技术研发人员:江居正 张勇 石光银 蔡卫卫 高传集
受保护的技术使用者:浪潮云信息技术股份公司
技术研发日:2022.02.16
技术公布日:2022/5/25
转载请注明原文地址:https://tc.8miu.com/read-13278.html