本发明涉及一种流式机器学习系统吞吐率优化方法,尤其涉及一种面向大数据流式机器学习系统的吞吐率优化方法及系统,属于计算机软件。
背景技术:
1、机器学习是人工智能的主要实现方式,通过机器学习技术,人工智能在民生、医疗、教育、金融等领域实现了技术落地,推动了多个行业的深刻变革。在应用机器学习算法时,传统方式会利用全量数据训练一个最优的算法模型,然后使用该模型进行在线预测,这种方式称为批式机器学习。当前,随着数字电网等场景的日益普及,边缘侧物联网传感器规模急剧增加,流式数据成为了大数据的重要形态。流式机器学习通过对算法模型进行增量、实时的更新,能够适应无穷、动态的流式数据,已被应用于数字电网场景中的传感器数据监测、实时数据分析处理等场景。为了支撑流式机器学习应用,快速流式机器学习任务,涌现出了flink ml、alink、river等一系列较为成熟的流式机器学习系统。
2、在大数据背景下,流式数据具有高速和动态变化的特点。为应对高速流式数据,流式机器学习系统必需具有较高的吞吐率,以及时处理到来的数据,使得机器学习算法模型能够从最新的数据中学习到知识。另一方面,流式数据动态变化的特点体现在其流速会随着上游业务的变化而改变。但在硬件条件固定的环境下,流式机器学习系统的吞吐率上限是固定的,当流式数据的流速变化超出该上限,系统中将产生严重的数据积压,导致机器学习算法模型无法从最新的数据中学得知识,算法模型不再具有实时性。
3、现有的流式机器学习系统吞吐率优化方法主要从算子和硬件资源角度进行优化。一是对系统中各类算子的具体实现进行优化,提高算子的执行效率,从而提升系统的整体吞吐率。此类方法当硬件配置固定时,系统的吞吐率上限仍然是固定的,并且,对算子的执行效率进行优化较难实现,收益也较低。二是将流式机器学习系统利用kubernetes等资源管理平台进行部署,由资源管理平台根据上游的数据流速动态调整系统可用的硬件资源量,实现系统的动态扩缩容,进而动态调整系统的吞吐率以完成优化,但该类方法需要冗余的硬件资源并且依赖于外部平台。
4、综上,现有的流式机器学习系统吞吐率优化方法主要集中在对系统内部算子进行优化或者从外部对系统可用硬件资源进行扩缩容,尚缺乏在硬件资源固定的条件下动态实现流速匹配以提升流式机器学习系统整体吞吐率的优化方法。
技术实现思路
1、针对现有技术中存在的问题,本发明的目的在于提供一种面向大数据流式机器学习的吞吐率优化方法及系统,能够动态调整数据流速以匹配系统处理能力,实现吞吐率优化。
2、本发明的技术解决方案:
3、一种面向大数据流式机器学习的吞吐率优化方法,其步骤包括:
4、1)在计算节点启动数据采样模块、流速监测模块,在管理节点启动参数优化模块和采样控制模块;
5、2)采样控制模块确定初始采样率并设置流速汇报时间间隔;
6、3)参数优化模块获取数据源提供的流式数据的数据类型并选取一数据采样策略;然后根据所述初始采样率确定所述数据采样策略中的初始参数,将所述数据采样策略及其参数发送给数据采样模块;
7、4)采样控制模块通知各计算节点上的流式机器学习系统开始执行流式机器学习任务;
8、5)数据采样模块根据当前数据采样策略及其参数对当前接收的数据源产生的每批流式数据进行采样,并将采样结果发送给流式机器学习系统供流式机器学习任务进行模型训练;
9、6)在流式机器学习任务开始执行后,流速监测模块持续监测所述数据源的流速和模型训练吞吐率;然后按照设置的流速汇报时间间隔将所述流速和所述模型训练吞吐率按照发送给采样控制模块、将所述模型训练吞吐率发送给参数优化模块;
10、7)采样控制模块根据所述数据源的流速及所述模型训练吞吐率,计算出新的采样率并将其发送给参数优化模块;
11、8)参数优化模块根据新的采样率、模型训练吞吐率,优化当前数据采样策略的参数设置或选择新的数据采样策略并将处理结果发送给数据采样模块;
12、9)数据采样模块根据步骤8)的处理结果对当前接收的数据源产生的每批流式数据进行采样;
13、10)流式机器学习任务运行过程中,持续执行步骤5)~步骤9),以优化所述模型训练吞吐率。
14、进一步的,所述采样控制模块获取模型训练吞吐率t和数据源的流速s,计算出新的采样率r=t/s*alpha;然后向数据采样模块发送新的采样率r,所述数据采样模块根据新的采样率r对当前接收的数据源产生的每批流式数据进行采样;其中,alpha用于匹配输入输出流速。
15、进一步的,选取alpha=0.95。
16、进一步的,所述数据采样策略库中包含随机采样策略,其采样方法为:对于流式数据中的每一数据样本,生成一个在[0,1]间均匀分布的随机数n;如果随机数n小于设定的最大采样比例e,则选中该数据样本;如果随机数n大于或等于设定的最大采样比例e,则丢弃该数据样本。
17、进一步的,所述数据采样策略库中包含基于距离的核心集采样策略,其采样方法为:
18、3.1)从流式数据中读取出一批数据,初始化核心集s为空;
19、3.2)计算该批数据中各样本之间的欧氏距离,并存储为一个矩阵,用于后续访问;
20、3.3)依次遍历该批样本数据,对于其中的数据样本x,首先将其加入核心集s中,然后计算核心集s外该批样本数据中的所有样本到核心集s中样本的最近距离之和d,然后将该数据样本x从核心集s中移除;
21、3.4)将遍历过程中,出现的最小的d所对应的数据样本加入核心集s中;
22、3.5)重复步骤3.3)和步骤3.4),直至核心集s中的数据量达到设定的最大数据量n。
23、进一步的,对所述数据采样策略库中的采样策略进行扩展,其方法为:生成新采样策略,包含采样逻辑和参数、采样模式、可接受数据类型;其中,采样逻辑为具体应用到数据上的采样策略,参数为采样逻辑中的具体控制参数,采样模式包含流式和微批式。
24、一种面向大数据流式机器学习的吞吐率优化系统,其特征在于,包括部署于计算节点上的数据采样策略库、流速监测模块和采样控制模块,以及部署于管理节点上的参数优化模块和数据采样模块;
25、数据采样策略库,用于存储数据采样策略;
26、参数优化模块,用于获取数据源提供的流式数据的数据类型并选取一数据采样策略;然后根据所述初始采样率确定所述数据采样策略中的初始参数,将所述数据采样策略及其参数发送给数据采样模块;以及根据新的采样率、模型训练吞吐率,优化当前数据采样策略的参数设置或选择新的数据采样策略并将处理结果发送给数据采样模块;
27、采样控制模块,用于确定初始采样率并设置流速汇报时间间隔,通知各计算节点上的流式机器学习系统开始执行流式机器学习任务,以及根据数据源的流速及模型训练吞吐率,计算出新的采样率并将其发送给参数优化模块;
28、数据采样模块,用于根据当前数据采样策略及其参数对当前接收的数据源产生的每批流式数据进行采样,并将采样结果发送给流式机器学习系统供流式机器学习任务进行模型训练;
29、流速监测模块,用于在流式机器学习任务开始执行后,持续监测数据源的流速和模型训练吞吐率;然后按照设置的流速汇报时间间隔将所述流速和所述模型训练吞吐率发送给采样控制模块、将所述模型训练吞吐率发送给参数优化模块。
30、本发明面向大数据流式机器学习系统的吞吐率优化系统如图1所示,包含用于执行流式机器学习任务的计算节点和用于采样控制的管理节点,包含数据采样策略库、参数优化模块、数据采样模块、流速监测模块和采样控制模块。各模块的部署方式、主要职责、交互模式和具体如下:
31、数据采样策略库:部署在计算节点上,包含从原始流式数据中采样出部分具有代表性数据的策略集合。采样策略需要在减小数据量的情况下尽可能保障采样数据对原始流式数据的代表性,即同样的查询任务(如机器学习任务)在原始流式数据和采样数据上的结果尽可能一致。
32、参数优化模块:部署在管理节点上,接收流速监测模块、数据采样模块和数据采样策略库的输入,输出优化的数据采样策略参数并实现动态调整。
33、采样控制模块:部署在管理节点上,与流速监测模块交互以接收流速监测模块的输入并设置参数;根据接收到的数据流速信息,计算出新的采样率并通知数据采样模块,从而达成系统内外数据流速的平衡。
34、数据采样模块:部署在计算节点上,接收采样控制模块和参数优化模块的输入,负责处理上游传入的原始流式数据,对流式数据进行采样后,发送到流式机器学习系统供流式机器学习任务进行模型训练。
35、流速监测模块:部署在计算节点上,接收采样控制模块的输入,负责监测数据源流速及模型训练吞吐率,并定期向采样控制模块汇报。
36、所述数据采样策略库的具体步骤如下:
37、1.数据采样策略库中当前包含两种数据采样策略,具有不同的参数、特性与适用范围,数据采样策略库可支持策略扩展。
38、2.随机采样策略:该策略的采样模式为流式采样,输入参数为最大采样比例e,适用于任意类型的数据。随机采样策略使用率广,但采样效果可能较差。其具体采样逻辑如下:
39、2.1对于原始流式数据中的每一数据样本,生成一个在[0,1]间均匀分布的随机数n;
40、2.2如果随机数n小于设定的最大采样比例e,则选中该数据样本;
41、2.3如果随机数n大于或等于设定的最大采样比例e,则丢弃该数据样本。
42、3.基于距离的核心集采样策略:该策略的主要原理是从流式数据中选择出一个核心集s,s是流式数据的子集,能够反映流式数据的特征。该策略的采样模式为微批式采样,参数为核心集中的最大数据量n,接受的数据类型为能够计算距离的数值型数据。该策略可接受的数据类型较为局限,但采样效果较好。其具体采样逻辑如下:
43、3.1从数据流中读取出一批数据,初始化核心集s为空;
44、3.2计算该批数据中各样本之间的欧氏距离,并存储为一个矩阵,用于后续访问;
45、3.3依次遍历该批样本数据,对于数据样本x,首先将其加入s中,然后计算s外所有样本到s中样本的最近距离之和d,然后将x从s中移除;
46、3.4将遍历过程中,出现的最小的d所对应的样本x加入s中;
47、3.5重复步骤3.3和3.4,直至s中的数据量达到最大数据量n。
48、4.按照如下步骤扩展采样策略库:
49、4.1新采样策略包含采样逻辑和参数、采样模式、可接受数据类型;
50、4.2采样逻辑为具体应用到数据上的采样策略,例如步骤2中所述随机采样策略的采样逻辑即为根据随机数选取数据样本;
51、4.3参数为采样逻辑中的具体控制参数,例如步骤2中所述随机采样策略的参数即为采样率;
52、4.4采样模式包含流式和微批式;
53、4.4.1流式采样模式中每读入一条数据,就对其应用步骤4.2中所述采样逻辑,并决定是否进行采样并将其发送到下游流式机器学习系统;
54、4.4.2批式采样模式中首先持续读取数据直至满足预设数量,然后对该批数据应用步骤4.2中所述采样逻辑,将采样结果发送到下游;
55、4.5可接受数据类型为采样策略可处理的流式数据类型。
56、所述参数优化模块的具体步骤如下:
57、1.与数据采样模块交互,获取当前批次流式数据类型;
58、2.与采样控制模块交互,获取当前及历史批次的采样率;
59、3.与流速监测模块交互,获取历史批次流式数据的模型训练吞吐率;
60、4.当存在历史模型训练吞吐率时,判断吞吐率变化趋势,在初始化时或最近多个监测窗口内吞吐率持续降低时,根据步骤5重新选取数据采样策略,否则根据步骤6仅改变数据采样策略的参数;
61、5.当初始化或需要重新选取数据采样策略时,与数据采样策略库交互,使用数据类型筛选可用的数据采样策略,并随机选取可用的采样策略;
62、6.结合采样率和下游流式机器学习系统所能接受的最大数据流入速率确定数据采样策略的参数,例如使用基于核心集的采样策略时通过采样率计算核心集中的最大数据量n。当已存在历史参数时,在当前参数值的指定范围内(如正负10%)改变参数,否则,在取值范围内随机选取;
63、7.向数据采样模块返回选定的数据采样策略和参数。
64、所述数据采样模块的具体步骤如下:
65、1.接收采样控制模块的输入,获取最新的数据采样率;
66、2.接收参数优化模块的输入,获取当前批次数据的采样策略及参数;
67、3.遵循采样策略对该批次数据进行采样,输出数据满足采样率要求。
68、所述流速监测模块的具体步骤如下:
69、1.执行初始化过程,接收采样控制模块的输入,并从采样控制模块获取流速汇报间隔信息;
70、2.在数据源处进行监控,记录固定时间间隔内流入系统的数据量并计算出数据源流速,然后向采样控制模块汇报;
71、3.在模型训练处进行监控,记录固定时间间隔内被用于模型训练的数据量并计算出模型训练吞吐率,然后向采样控制模块汇报。
72、所述采样控制模块的具体步骤如下:
73、1.向流速监测模块发送流速汇报间隔信息,启动流速监测模块;
74、2.接收流速监测模块的输入,获取数据源流速s,模型训练吞吐率t,计算出新的采样率r=t/s*alpha,其中参数alpha用于匹配输入输出流速,避免性能抖动时过载,此处选取alpha=0.95;
75、3.向数据采样模块发送新的采样率r,系统以新的采样率开始采样。
76、如图2所示,一种面向大数据流式机器学习系统的吞吐率优化方法及系统,具体步骤如下:
77、1.在计算节点启动数据采样模块、流速监测模块,在管理节点启动参数优化模块和采样控制模块;
78、2.采样控制模块确定初始采样率,与流速监测模块交互以设置流速汇报间隔;
79、3.参数优化模块获取第一批流式数据的数据类型,选取数据采样策略;根据采样控制模块的初始采样率确定数据采样策略的初始参数;
80、4.采样控制模块通知计算节点上的流式机器学习系统,开始执行流式机器学习任务;
81、5.数据采样模块与参数优化模块交互,获取当前的数据采样策略及参数,接收数据源产生的流式数据并执行采样,采样结果输出至机器学习系统供流式机器学习任务进行模型训练;
82、6.流速监测模块持续监测数据源的流速,供采样控制模块使用;
83、7.采样控制模块持续接收流速监控模块发送过来的数据源的流速及模型训练吞吐率,计算出新的采样率;
84、8.参数优化模块接收新的采样率、模型训练吞吐率等数据,优化参数设置或选择新的数据采样策略;
85、9.数据采样模块根据新的采样率和数据采样策略进行采样;
86、10.流式机器学习任务运行过程中,持续执行步骤5~9以动态设置采样率并优化参数,以优化模型训练吞吐率。
87、本发明提出一种面向大数据流式机器学习系统的吞吐率优化方法及系统,与现有技术相比,本发明具有以下优点:
88、1.本发明可以在不增加可用软硬件资源总量的情况下提高流式机器学习系统的吞吐率上限;
89、2.本发明可以在不借助外部资源管理系统的情况下动态调整流式机器学习系统的总体吞吐率;
90、3.本发明通过动态调整数据采样率,在流式机器学习系统的吞吐率和模型精度间自动取得平衡。
1.一种面向大数据流式机器学习的吞吐率优化方法,其步骤包括:
2.根据权利要求1所述的方法,其特征在于,所述采样控制模块获取模型训练吞吐率t和数据源的流速s,计算出新的采样率r=t/s*alpha;然后向数据采样模块发送新的采样率r,所述数据采样模块根据新的采样率r对当前接收的数据源产生的每批流式数据进行采样;
3.根据权利要求2所述的方法,其特征在于,选取alpha=0.95。
4.根据权利要求1或2或3所述的方法,其特征在于,所述数据采样策略库中包含随机采样策略,其采样方法为:对于流式数据中的每一数据样本,生成一个在[0,1]间均匀分布的随机数n;如果随机数n小于设定的最大采样比例e,则选中该数据样本;如果随机数n大于或等于设定的最大采样比例e,则丢弃该数据样本。
5.根据权利要求1或2或3所述的方法,其特征在于,所述数据采样策略库中包含基于距离的核心集采样策略,其采样方法为:
6.根据权利要求1所述的方法,其特征在于,对所述数据采样策略库中的采样策略进行扩展,其方法为:生成新采样策略,包含采样逻辑和参数、采样模式、可接受数据类型;其中,采样逻辑为具体应用到数据上的采样策略,参数为采样逻辑中的具体控制参数,采样模式包含流式和微批式。
7.一种面向大数据流式机器学习的吞吐率优化系统,其特征在于,包括部署于计算节点上的数据采样策略库、流速监测模块和采样控制模块,以及部署于管理节点上的参数优化模块和数据采样模块;