共计 2686 个字符,预计需要花费 7 分钟才能阅读完成。
起源|Apache Flink 官网博客
Apache Flink 社区很荣幸地发表 Apache Flink ML 2.1.0 版本正式公布!本次公布的版本重点改良了 Flink ML 的基础设施,例如 Python SDK,内存治理,以及性能测试框架,来帮忙开发者基于 Flink ML 开发具备高性能,高稳定性,以及高易用性的机器学习算法库。
基于本次发版中提出的改良,以及咱们失去的性能测试后果,咱们置信 Flink ML 的基础设施曾经筹备好提供给社区开发者应用,来开发高性能的、反对 Python 环境的机器学习算法库。
咱们激励您下载该版本 [1] 并通过 Flink 邮件列表 [2] 或 JIRA [3] 与社区分享您的反馈!咱们心愿您喜爱新版本,并且咱们期待理解您的应用体验。
重要个性
1. 算子接口和基础设施
1.1 反对算子级别粒度的内存管控
在之前的版本中,机器学习算子的外部状态数据,例如须要被缓存并在每轮迭代中反复读取的训练数据,是被贮存在 state backend 中。这些数据之前只能是全量放在内存中,或者全量放在磁盘上。前一种状况,状态数据量大的状况下,可能导致 OOM 和升高作业稳定性。后一种状况,因为每轮迭代会须要从磁盘读取全量数据并且进行反序列化,在状态数据量不大的状况下,性能低于把数据放在内存中的做法。这个问题减少了开发者开发高性能和高稳定性算子的难度。
在本次发版中,咱们改良了 Flink ML 的基础设施,容许指定一个算子能够应用的托管内存配额。在算子状态数据量低于配额的状况下,这些状态数据会被寄存在 Flink 的管控内存中。当算子状态数据量高于配额时,超出配额的数据会被寄存在磁盘上,以防止产生 OOM。算法开发者能够应用这个机制容许算子对于不同的输出数据量,都能提供最佳性能。开发者能够参考 KMeans 算子的代码来学习应用这个机制。
1.2 开发在线训练算法的基础设施的改良
Flink ML 的一个重要指标是推动在线训练算法的倒退。在上一个版本中,咱们通过提供 setModelData() 和 getModelData() 办法,让在线训练算法的模型数据能以有限数据流的模式被传输和保留,加强了 Flink ML API 对于在线训练算法的反对能力。本次发版进一步改良和验证了 Flink ML 基础设施对于在线训练算法的反对能力。
本次发版增加了 2 个在线训练算法 (i.e. OnlineKMeans and OnlineLogisticRegression),并提供了单元测试,验证和测试了这些算法的正确性。这两个算法引入了 global batch size,模型版本等概念,并提供了指标和接口来设置和读取相应的信息。尽管这两个算法的预测准确率还没通过调优,然而这些工作将帮忙咱们进一步建设开发在线训练算法的最佳实际。咱们心愿越来越多的社区贡献者能退出咱们,共同完成这个指标。
1.3 算法性能测试框架
一个易于应用的性能测试框架对于开发和保护高性能的 Flink ML 算法库是至关重要的。本次发版增加了一个性能测试框架,反对编写可插拔可复用的数据生成器,能够读入 JSON 格局的配置,并将性能测试后果以 JSON 格局输入,以反对可定制化的性能测试后果可视化剖析。咱们提供了开箱可用的脚本将性能测试后果转换为图表。感兴趣的读者能够浏览这份文档 [4] 来理解如何应用这个测试框架。
2. Python SDK
本次发版加强了 Python SDK 的基础设施,反对 Python 算子调用相应的 Java 算子来实现训练和推理。Python 算子能够提供和 Java 算子雷同的性能。这个性能能够极大晋升 Python 算法库的开发效率,让算法开发者能够为一套算法同时提供 Python 和 Java 算法库,而无需反复实现算法的外围逻辑。
3. 算法库
本次发版连续之前的算法库开发工作,为多种机器学习算法类别增加了代表性的算法,来验证 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 官网的下载页面 [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/down…
[2] https://flink.apache.org/comm…
[3] https://issues.apache.org/jir…
[4] https://github.com/apache/fli…
[5] https://nightlies.apache.org/…
[6] https://github.com/apache/fli…
[7] https://flink.apache.org/news…
[8] https://issues.apache.org/jir…
[9] https://pypi.org/project/apac…
点击进入 Flink 中文学习网
更多 Flink 相干技术问题,可扫码退出社区钉钉交换群
第一工夫获取最新技术文章和社区动静,请关注公众号~
流动举荐
阿里云基于 Apache Flink 构建的企业级产品 - 实时计算 Flink 版现开启流动:
99 元试用 实时计算 Flink 版(包年包月、10CU)即有机会取得 Flink 独家定制卫衣;另包 3 个月及以上还有 85 折优惠!
理解流动详情:https://www.aliyun.com/produc…