Apache Flink ML 2.0.0 发布公告

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 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轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
1月前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
616 13
Apache Flink 2.0-preview released
|
1月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
71 3
|
1月前
|
分布式计算 监控 大数据
大数据-148 Apache Kudu 从 Flink 下沉数据到 Kudu
大数据-148 Apache Kudu 从 Flink 下沉数据到 Kudu
57 1
|
1月前
|
数据挖掘 物联网 数据处理
深入探讨Apache Flink:实时数据流处理的强大框架
在数据驱动时代,企业需高效处理实时数据流。Apache Flink作为开源流处理框架,以其高性能和灵活性成为首选平台。本文详细介绍Flink的核心特性和应用场景,包括实时流处理、强大的状态管理、灵活的窗口机制及批处理兼容性。无论在实时数据分析、金融服务、物联网还是广告技术领域,Flink均展现出巨大潜力,是企业实时数据处理的理想选择。随着大数据需求增长,Flink将继续在数据处理领域发挥重要作用。
|
SQL 消息中间件 分布式计算
《Apache Flink 案例集(2022版)》——5.数字化转型——移动云Apache Flink 在移动云实时计算的实践(上)
《Apache Flink 案例集(2022版)》——5.数字化转型——移动云Apache Flink 在移动云实时计算的实践(上)
270 0
|
数据采集 分布式计算 Kubernetes
《Apache Flink 案例集(2022版)》——5.数字化转型——移动云Apache Flink 在移动云实时计算的实践(下)
《Apache Flink 案例集(2022版)》——5.数字化转型——移动云Apache Flink 在移动云实时计算的实践(下)
294 0
|
存储 SQL 传感器
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析2
【Flink】(04)Apache Flink 漫谈系列 —— 实时计算 Flink 与 Alibaba Cloud Realtime Compute 剖析2
601 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
346 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
175 0
|
2月前
|
运维 数据处理 数据安全/隐私保护
阿里云实时计算Flink版测评报告
该测评报告详细介绍了阿里云实时计算Flink版在用户行为分析与标签画像中的应用实践,展示了其毫秒级的数据处理能力和高效的开发流程。报告还全面评测了该服务在稳定性、性能、开发运维及安全性方面的卓越表现,并对比自建Flink集群的优势。最后,报告评估了其成本效益,强调了其灵活扩展性和高投资回报率,适合各类实时数据处理需求。

相关产品

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

    更多
    下一篇
    无影云桌面