Apache Flink ML 2.1.0 发布公告

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: Apache Flink 社区很荣幸地宣布 Apache Flink ML 2.1.0 版本正式发布
来源|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/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


点击进入 Flink 中文学习网

更多 Flink 相关技术问题,可扫码加入社区钉钉交流群
第一时间获取最新技术文章和社区动态,请关注公众号~

O1CN01tmtpiy1iazJYZdixL_!!6000000004430-2-tps-899-548.png"

活动推荐

阿里云基于 Apache Flink 构建的企业级产品-实时计算Flink版现开启活动:
99 元试用 实时计算Flink版(包年包月、10CU)即有机会获得 Flink 独家定制卫衣;另包 3 个月及以上还有 85 折优惠!
了解活动详情:https://www.aliyun.com/product/bigdata/sc

image.png

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
1月前
|
消息中间件 API Apache
官宣|阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会
本文整理自阿里云开源大数据平台徐榜江 (雪尽),关于阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会。
1411 1
官宣|阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会
|
1月前
|
SQL Java API
官宣|Apache Flink 1.19 发布公告
Apache Flink PMC(项目管理委员)很高兴地宣布发布 Apache Flink 1.19.0。
1346 1
官宣|Apache Flink 1.19 发布公告
|
1月前
|
SQL Apache 流计算
Apache Flink官方网站提供了关于如何使用Docker进行Flink CDC测试的文档
【2月更文挑战第25天】Apache Flink官方网站提供了关于如何使用Docker进行Flink CDC测试的文档
142 3
|
1月前
|
Oracle 关系型数据库 流计算
flink cdc 同步问题之报错org.apache.flink.util.SerializedThrowable:如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
|
1月前
|
XML Java Apache
Apache Flink自定义 logback xml配置
Apache Flink自定义 logback xml配置
152 0
|
1月前
|
消息中间件 Java Kafka
Apache Hudi + Flink作业运行指南
Apache Hudi + Flink作业运行指南
85 1
|
2月前
|
消息中间件 Kafka Apache
Apache Flink 是一个开源的分布式流处理框架
Apache Flink 是一个开源的分布式流处理框架
482 5
|
1月前
|
缓存 分布式计算 Apache
Apache Hudi与Apache Flink更好地集成,最新方案了解下?
Apache Hudi与Apache Flink更好地集成,最新方案了解下?
60 0
|
1月前
|
监控 Apache 开发工具
Apache Flink 1.12.2集成Hudi 0.9.0运行指南
Apache Flink 1.12.2集成Hudi 0.9.0运行指南
67 0
|
1月前
|
SQL Java Apache
超详细步骤!整合Apache Hudi + Flink + CDH
超详细步骤!整合Apache Hudi + Flink + CDH
80 0

相关产品

  • 实时计算 Flink版
  • 推荐镜像

    更多