来源|apache flink 官方博客
(资料图片)
apache flink 社区很荣幸地宣布 apache flink ml 2.1.0 版本正式发布!本次发布的版本重点改进了 flink ml 的基础设施,例如 python sdk,内存管理,以及性能测试框架,来帮助开发者基于 flink ml 开发具有高性能,高稳定性,以及高易用性的机器学习算法库。
基于本次发版中提出的改进,以及我们得到的性能测试结果,我们相信 flink ml 的基础设施已经准备好提供给社区开发者使用,来开发高性能的、支持 python 环境的机器学习算法库。
我们鼓励您下载该版本[1] 并通过 flink 邮件列表[2] 或 jira[3] 与社区分享您的反馈!我们希望您喜欢新版本,并且我们期待了解您的使用体验。
重要特性
在之前的版本中,机器学习算子的内部状态数据,例如需要被缓存并在每轮迭代中重复读取的训练数据,是被储存在 state backend 中。这些数据之前只能是全量放在内存中,或者全量放在磁盘上。前一种情况,状态数据量大的情况下,可能导致 oom 和降低作业稳定性。后一种情况,由于每轮迭代会需要从磁盘读取全量数据并且进行反序列化,在状态数据量不大的情况下,性能低于把数据放在内存中的做法。这个问题增加了开发者开发高性能和高稳定性算子的难度。
在本次发版中,我们改进了 flink ml 的基础设施,允许指定一个算子可以使用的托管内存配额。在算子状态数据量低于配额的情况下,这些状态数据会被存放在 flink 的管控内存中。当算子状态数据量高于配额时,超出配额的数据会被存放在磁盘上,以避免产生 oom。算法开发者可以使用这个机制允许算子对于不同的输入数据量,都能提供最佳性能。开发者可以参考 kmeans 算子的代码来学习使用这个机制。
flink ml 的一个重要目标是推动在线训练算法的发展。在上一个版本中,我们通过提供 setmodeldata() 和 getmodeldata() 方法,让在线训练算法的模型数据能以无限数据流的形式被传输和保存,增强了 flink ml api 对于在线训练算法的支持能力。本次发版进一步改进和验证了 flink ml 基础设施对于在线训练算法的支持能力。
本次发版添加了 2 个在线训练算法 (i.e. onlinekmeans and onlinelogisticregression),并提供了单元测试,验证和测试了这些算法的正确性。这两个算法引入了 global batch size,模型版本等概念,并提供了指标和接口来设置和读取相应的信息。虽然这两个算法的预测准确率还没经过调优,但是这些工作将帮助我们进一步建立开发在线训练算法的最佳实践。我们希望越来越多的社区贡献者能加入ag真人官方网,共同完成这个目标。
一个易于使用的性能测试框架对于开发和维护高性能的 flink ml 算法库是至关重要的。本次发版添加了一个性能测试框架,支持编写可插拔可复用的数据生成器,可以读入 json 格式的配置,并将性能测试结果以 json 格式输出,以支持可定制化的性能测试结果可视化分析。我们提供了开箱可用的脚本将性能测试结果转换为图表。感兴趣的读者可以阅读这份文档[4] 来了解如何使用这个测试框架。
本次发版增强了 python sdk 的基础设施,支持 python 算子调用相应的 java 算子来完成训练和推理。python 算子可以提供和 java 算子相同的性能。这个功能可以极大提升 python 算法库的开发效率,让算法开发者可以为一套算法同时提供 python 和 java 算法库,而无需重复实现算法的核心逻辑。
本次发版延续之前的算法库开发工作,为多种机器学习算法类别添加了代表性的算法,来验证 flink ml 基础设施的功能和性能。
以下是本次发版中新增加的算法:
特征工程: minmaxscaler, stringindexer, vectorassembler, standardscaler, bucketizer
在线学习: onlinekmeans, onlinelogisiticregression
回归算法: linearregression
分类算法: linearsvc
评估算法: binaryclassificationevaluator
为了帮助用户学习和使用 flink ml 算法库,我们在 apache flink ml 网站[5] 上为每个算法提供了相应的 python 和 java 样例程序。并且我们提供了每个算法的性能测试配置文件[6] 以支持用户验证 flink ml 的性能。感兴趣的读者可以阅读这份文档[4] 来了解如何运行这些算法的性能测试。
升级说明
有关升级过程中可能需要做出的调整及确认,请参阅原文发布公告[7]。
发布说明和相关资源
用户可以查看发布说明[8] 来获得修改和新功能的详细列表。源代码可以从 flink ag真人官方网官网的下载页面[1] 获得,最新的 flink ml python 发布可以从 pypi[9] 获得。
贡献者列表
apache flink 社区感谢对此版本做出贡献的每一位贡献者:
yunfeng zhou, zhipeng zhang, huangxingbo, weibo, dong lin, yun gao, jingsong li and mumuhhh.
参考链接:
[1] https://flink.apache.org/downloads.html
[2] https://flink.apache.org/community.html#mailing-lists
[3] https://issues.apache.org/jira/browse/flink
[4] https://github.com/apache/flink-ml/blob/master/flink-ml-benchmark/readme.md
[5] https://nightlies.apache.org/flink/flink-ml-docs-release-2.1/
[6] https://github.com/apache/flink-ml/tree/master/flink-ml-benchmark/src/main/resources
[7] https://flink.apache.org/news/2022/07/12/release-ml-2.1.0.html
[8] https://issues.apache.org/jira/secure/releasenote.jspa?projectid=12315522&version=12351141
[9] https://pypi.org/project/apache-flink-ml
往期精选
▼ 关注「apache flink」,获取更多技术干货 ▼
更多 flink 相关技术问题,可扫码加入社区钉钉交流群~
点击「阅读原文」,查看flink中文学习网
关键词: