Flink ML 2.0改进算法可用性,还新增Python支持

机器学习库Flink ML 2.0.0拥有重新设计的API,并且因应开发者的需求,开始加入Python支持

Flink ML 2.0改进算法可用性,还新增Python支持

Apache Flink社群发布机器学习函式库Flink ML 2.0.0,在这个新版本中,开发团队重构Flink ML早期的函式库,扩展Flink ML API并更新Runtime主要功能,像是开始支持多输入和多输出,和新增串流批次统一函式库等,另外,这个版本还添加了5个算法实作。

Flink ML是Apache Flink串流处理框架的一部分,提供机器学习API和基础设施库,能够简化机器学习工作管线建置工作。

Flink ML和基于Flink的机器学习算法平台Alink开发人员合作,一起重新设计API,来提供高效能算法,现在官方开始在Flink ML添加算法,目前这个版本官方已经实作了5种算法,包括对数机率回归、k-means、K-近邻算法、单纯贝氏分类器以及One-hot编码器,除了加入新的算法外, 官方也会持续进行压力测试和优化,确保算法的性能。

由于机器学习工作流程的各阶段,可能需要多个输入,并回传多个输出,例如图嵌入算法需要读取两个表格,分别获取图的边和节点数据,又或是工作流程可能有一个阶段,需要将输入数据集拆分成为两个数据集,分别用于训练和测试。

而在Flink ML 2.0.0中,算法开发人员可以使用多输入和多输出功能,将机器学习工作流程,组装成为预定义阶段的有向无环图(DAG),并可以在不清楚细节的情况下,配置和部署该工作流程,而这大幅扩展了Flink ML的可用性和应用性。

Flink ML新版本更好地支持在线学习,使用公开模型数据的API,官方解释,在原生的线上学习场景中,用户可能拥有一个长期执行的工作,不断地处理训练资料,并更新机器学习模型,用户能够在网页服务器上,部署多个工作来进行线上推理,而这需要将最新的数据,以接近实时的延迟,从训练工作传输到推理工作。

但问题是,传统的Estimator/Transformer范式,并不提供API以串流的方式暴露模型数据,因此用户就许要反复呼叫fit()来更新模型资料,官方表示,用户虽然可以每隔数分钟更新一次模型数据,但是这种方法效率非常差。 而新版本中提供了getModelData() API,供用户将数据模型实时传输到网页服务器,并使用最新的模型数据进行线上推理,这项功能可以明显强化Flink ML的线上学习应用能力。

另外,Flink ML 2.0.0还加入了流批次统一迭代函式库,官方表示,为了支持训练机器学习算法,并根据预测结果,动态调整模型参数,需要原生支持迭代资料处理,但Flink是使用DAG来描述流程逻辑,因此需要在Flink之上,单独提供迭代函式库,而且Flink要能支持离线训练和在线训练,迭代函式库还要同时支持串流和批次处理用例。

因此在这个新版本中,官方实作串流批次统一迭代函式库,提供将纪录回传给优先运算子,并在迭代中追踪进度的功能。 用户可以使用DataStream API和Table API来表达迭代内部的执行逻辑。

由于Python广受欢迎,许多机器学习开发者,已经习惯使用Python开发机器学习工作流程,因此Flink ML现在还提供Python套件,来满足Python开发者的需求,接下来官方还会强化Python套件,增加与Java函式库的互通性。

(0)
打赏 微信扫一扫 微信扫一扫

相关推荐

发表评论

登录后才能评论