Apache Flink ML 2.0.0 发布公告

简介: Flink ML 提供了算法接口以及基础类,以支持开发具有高易用性,高性能,低延迟的机器学习算法库。

来源 | Apache Flink 官方博客

翻译 | 林东,云骞

Apache Flink 社区很荣幸地宣布 Apache Flink ML 2.0.0 版本正式发布!Flink ML 提供了算法接口以及基础类,以支持开发具有高易用性,高性能,低延迟的机器学习算法库。

本次发布的版本对之前的 Flink ML 做了大量的重构,并对算法接口以及迭代引擎做出了许多重要的扩展。新版本可以支持具有多输入多输出的算子,支持将算子以图的方式连接组合,以及提供了基于 DataStream 的流批一体的迭代引擎。目前的版本包含了五个算法的实现。将来我们会在 Flink ML 中提供更多的具有高性能的开箱可用的算法提供社区使用。

我们相信此版本是增加 Apache Flink 所支持的机器学习使用场景,尤其是实时机器学习场景,所迈出的重要一步。

我们鼓励您下载该版本[1] 并通过 Flink 邮件列表[2] 或 JIRA[3] 与社区分享您的反馈! 我们希望您喜欢新版本,并且我们期待了解您的使用体验。

重要特性

1. 算子接口和基础设施

1.1 支持需要多输入多输出的算子

机器学习工作流中的算子可能需要多个输入,并返回多个输出。 例如,图嵌入算法可能需要两个输入,来分别表示图的边和节点。 一个工作流可能需要算子,将输入的数据集拆分为两个数据集,分别用于训练和测试。

有了这个功能后,开发人员可以将多个算子以有向无环图 (DAG) 的方式进行组合来表达一个机器学习工作流。这项功能将极大扩展 Flink ML 的易用性以及可以支持的工作流场景。

1.2 用于支持原生实时机器学习的模型数据接口

在原生的在线机器学习场景中,机器学习训练作业会持续处理训练数据并更新机器学习模型。机器学习推理作业可能会运行在多个前端服务器上来做在线推理。最新的模型数据需要从训练作业实时传输到所有的推理作业上。

传统的 Estimator/Transformer 上没有接口以实时数据流的方式提供模型数据。用户必须反复调用 fit() 来更新和获得模型数据。尽管用户可能做到每隔几分钟更新一次模型数据,但这种方法将很难支持用户做到每隔几秒钟更新一次模型数据。即使可以做到,很可能是非常低效的。

通过使用 FLIP-173[4] 所提供的接口,模型数据可以通过 getModelData() 作为无界数据流提供给用户。然后算法用户可以将模型数据实时传输到前端服务器,并用最新的模型数据进行在线推理。 这个功能可以显著增强 Flink ML 支持在线学习应用的能力。

1.3 更易于使用的算法参数接口

我们非常关心 Flink ML 的易用性和开发人员的体验。 在新版本中,我们重构并简化了用于定义和读写算法参数的接口。

通过使用 FLIP-174[5] 所提供的接口,算法参数被定义为 interface 上的静态变量;任何实现了该interface的算法都可以继承这些变量的定义。算法库提供了常用的参数验证器。为了进一步简化参数接口,我们从参数定义中删除了 isOptional 等字段。

1.4 支持将算子图打包成算子的工具

Pipeline[6] 是现有的机器学习算法库(例如 Scikit-learn, Flink, Spark 等)中最有用的工具之一。Pipeline 支持用户将包含 Estimator/Transformer 的有序列表打包成为一个新的 Estimator,同时不需要用户为新的 Estimator,以及 Estimator 所生成的 Model,去额外实现 fit/transform 接口。

FLIP-175[7] 将此功能从有序列表扩展到了有向无环图 (DAG)。 用户现在可以将一个由 Estimator/Transformer 组合而成的算子图打包成为一个新的 Estimator。这个功能将允许开发人员把复杂的工作流分割成更简单的模块,并在多个工作流中重复使用这些模块。我们相信此功能可以极大方便用户使用 Flink ML 构建和部署复杂工作流。

2. 流批一体的迭代引擎

为支持算法训练以及根据预测结果动态调整模型参数等场景,框架必须提供迭代处理数据的能力。由于 Flink 本身是基于 DAG 来描述计算逻辑的,因此我们必须在 Flink ML 中单独提供迭代引擎。此外,由于我们同时需要支持离线训练与在线训练 / 参数调整的场景,迭代引擎也必须能够同时支持批和流的处理场景。

针对上述需求,FLIP-176[8] 实现了一套流批一体的迭代执行引擎 。它为使用迭代的用户提供了将数据反馈回前序算子进行处理的功能以及在迭代体中监听每一轮进度的能力。用户可以直接基于 DataStream API 与 Table API 来实现上层的处理逻辑。此外,它还扩展了 Flink 现有的 Checkpoint 机制,从而令使用迭代的作业也可以做到 Exactly-Once 的容错。

3. Python SDK

由于 Python 的易用性和优秀的生态,如今许多机器学习从业者已经习惯于用 Python 开发机器学习工作流。 为了满足这些用户的需求,我们从这个版本开始创建了一个专用于 Flink ML 的 Python 包。Flink ML Python 包目前提供类似于 Flink ML Java 库的接口来支持开发机器学习算子。

用户可以通过如下命令通过 pip 来安装 Flink ML Python 包。

pip install apache-flink-ml

作为下一步计划,我们会增加 Python SDK 与 Flink ML 的 Java 库的交互能力。例如,我们希望支持用户将来自于 Flink ML Java 库的算子,以及 Python SDK 实现的 Python 算子 (比如 TensorFlow 程序),用 Python SDK 连接成为一个机器学习工作流。

4. 算法库

随着 Flink ML API 设计的完成,我们接下来的主要工作是在 Flink ML 中添加开箱可用的算法。作为该计划的一部分,我们借鉴了 Alink[9] 项目的许多想法,并与 Alink 项目的开发人员密切合作,设计了新的 Flink ML API,重构,优化和将算法从 Alink 迁移到 Flink。我们的长期目标是提供一个易于使用,调试和定制的高性能算法库。

我们在新版本中实现了五种算法,分别是 logistic regression, k-means, k-nearest neighbors, naive bayes 和 one-hot encoder。 目前这些算法专注于验证 API 和迭代引擎的功能。除了增加越来越多的算法之外,我们还将对算法的性能进行压力测试和优化,以确保这些算法具有最先进的性能。 敬请关注!

相关工作

1. 机器学习迁移到单独的仓库

为了提高 Flink ML 的开发效率,Flink ML 的代码已经被转移到了属于 Flink 项目的 flink-ml[10] 代码仓库。我们采用类似于 Stateful Function 项目的管理方式,通过使用一个单独的仓库,来简化代码贡献的流程,并且可以进行单独的版本发布,从而提高开发的效率。

2. 为 Flink 生态系统项目而创建的 Github 组织

为促进社区协作开发 Apache Flink 的生态项目,进一步扩大 Apache Flink 的生态,Apache Flink PMC 已授权使用 flink-extended 作为此 GitHub 组织[11] 的名称。

两个 Flink ML 相关的项目已经转移到这个组织。dl-on-flink[12] 可以支持使用 TensorFlow 来实现 Flink ML 算子。clink[13] 提供了基础设施来方便开发者使用 C++ 来实现 Flink ML 算子,用以支持需要极低延迟的场景,比如在线特征处理。

我们希望您能加入这项工作,并在这个 Github 组织中分享您的 Flink 生态项目。敬请关注生态项目的相关信息。

升级说明

有关升级过程中可能需要做出的调整及确认,请参阅原文发布公告[14]

发布说明和相关资源

用户可以查看发布说明[15] 来获得修改和新功能的详细列表。

二进制文件和源代码可以从 Flink 官网的下载页面[1] 获得,最新的 Flink ML Python 发布可以从 PyPI[16] 获得。

贡献者列表

Apache Flink 社区感谢对此版本做出贡献的每一位贡献者:

Yun Gao, Dong Lin, Zhipeng Zhang, huangxingbo, Yunfeng Zhou, Jiangjie (Becket) Qin, abdelrahman-ik, weibo.

原文链接:https://flink.apache.org/news/2022/01/07/release-ml-2.0.0.html

参考链接:

[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://cwiki.apache.org/confluence/pages/viewpage.action?pageId=184615783

[5] https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=181311361

[6] https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html

[7] https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=181311363

[8] https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=184615300

[9] https://github.com/alibaba/alink

[10] https://github.com/apache/flink-ml

[11] https://github.com/flink-extended/

[12] https://github.com/flink-extended/dl-on-flink

[13] https://github.com/flink-extended/clink

[14] https://flink.apache.org/news/2022/01/07/release-ml-2.0.0.html

[15] https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12315522&version=12351079

[16] https://pypi.org/project/apache-flink-ml/

相关实践学习
基于Hologres+Flink搭建GitHub实时数据大屏
通过使用Flink、Hologres构建实时数仓,并通过Hologres对接BI分析工具(以DataV为例),实现海量数据实时分析.
实时计算 Flink 实战课程
如何使用实时计算 Flink 搞定数据处理难题?实时计算 Flink 极客训练营产品、技术专家齐上阵,从开源 Flink功能介绍到实时计算 Flink 优势详解,现场实操,5天即可上手! 欢迎开通实时计算 Flink 版: https://cn.aliyun.com/product/bigdata/sc Flink Forward Asia 介绍: Flink Forward 是由 Apache 官方授权,Apache Flink Community China 支持的会议,通过参会不仅可以了解到 Flink 社区的最新动态和发展计划,还可以了解到国内外一线大厂围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者不可错过的盛会。 去年经过品牌升级后的 Flink Forward Asia 吸引了超过2000人线下参与,一举成为国内最大的 Apache 顶级项目会议。结合2020年的特殊情况,Flink Forward Asia 2020 将在12月26日以线上峰会的形式与大家见面。
相关文章
|
4月前
|
人工智能 数据处理 API
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
Apache Flink Agents 是由阿里云、Ververica、Confluent 与 LinkedIn 联合推出的开源子项目,旨在基于 Flink 构建可扩展、事件驱动的生产级 AI 智能体框架,实现数据与智能的实时融合。
788 6
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
|
存储 Cloud Native 数据处理
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
本文整理自阿里云资深技术专家、Apache Flink PMC 成员梅源在 Flink Forward Asia 新加坡 2025上的分享,深入解析 Flink 状态管理系统的发展历程,从核心设计到 Flink 2.0 存算分离架构,并展望未来基于流批一体的通用增量计算方向。
454 0
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
|
5月前
|
人工智能 运维 Java
Flink Agents:基于Apache Flink的事件驱动AI智能体框架
本文基于Apache Flink PMC成员宋辛童在Community Over Code Asia 2025的演讲,深入解析Flink Agents项目的技术背景、架构设计与应用场景。该项目聚焦事件驱动型AI智能体,结合Flink的实时处理能力,推动AI在工业场景中的工程化落地,涵盖智能运维、直播分析等典型应用,展现其在AI发展第四层次——智能体AI中的重要意义。
1911 27
Flink Agents:基于Apache Flink的事件驱动AI智能体框架
|
6月前
|
消息中间件 存储 Kafka
Apache Flink错误处理实战手册:2年生产环境调试经验总结
本文由 Ververica 客户成功经理 Naci Simsek 撰写,基于其在多个行业 Flink 项目中的实战经验,总结了 Apache Flink 生产环境中常见的三大典型问题及其解决方案。内容涵盖 Kafka 连接器迁移导致的状态管理问题、任务槽负载不均问题以及 Kryo 序列化引发的性能陷阱,旨在帮助企业开发者避免常见误区,提升实时流处理系统的稳定性与性能。
585 0
Apache Flink错误处理实战手册:2年生产环境调试经验总结
|
SQL 消息中间件 分布式计算
《Apache Flink 案例集(2022版)》——5.数字化转型——移动云Apache Flink 在移动云实时计算的实践(上)
《Apache Flink 案例集(2022版)》——5.数字化转型——移动云Apache Flink 在移动云实时计算的实践(上)
490 0
|
数据采集 分布式计算 Kubernetes
《Apache Flink 案例集(2022版)》——5.数字化转型——移动云Apache Flink 在移动云实时计算的实践(下)
《Apache Flink 案例集(2022版)》——5.数字化转型——移动云Apache Flink 在移动云实时计算的实践(下)
489 0
|
存储 SQL 传感器
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析2
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析2
897 0
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析2
|
SQL 消息中间件 分布式计算
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析1
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析1
662 0
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析1
|
SQL 消息中间件 分布式计算
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析3
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析3
317 0
|
6月前
|
存储 分布式计算 数据处理
「48小时极速反馈」阿里云实时计算Flink广招天下英雄
阿里云实时计算Flink团队,全球领先的流计算引擎缔造者,支撑双11万亿级数据处理,推动Apache Flink技术发展。现招募Flink执行引擎、存储引擎、数据通道、平台管控及产品经理人才,地点覆盖北京、杭州、上海。技术深度参与开源核心,打造企业级实时计算解决方案,助力全球企业实现毫秒洞察。
649 0
「48小时极速反馈」阿里云实时计算Flink广招天下英雄

相关产品

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

    更多