基于Flink的机器学习平台Alink

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: PAI平台参加“周二开源日”活动,本期分享核心内容摘要:一、Alink是什么;二、Alink如何使用;三、Alink进阶。

一、Alink是什么
1.1 Alink介绍
-Alink是基于Flink的机器学习算法平台
1) 由阿里巴巴计算平台事业部PAI团队研发;
2) 同时支持批式/流式算法,提供丰富的算法库;
3) 帮助数据分析和应用开发人员能够从数据处理、特征工程、模型训练、预测,端到端地完成整个流程。
-相关名称的公共部分
Alibaba,Algorithm,AI,Flink,Blink

1.2 Alink开源
Alink自2019年11月开源至今,共发布以下4大版本:
-Alink v1.0
1) 2019年11月 Alink v1.0.0
Flink Forword Asia大会上宣布开源;
支持Java接口和Python接口(PyAlink)。
2) 2019年12月 Alink v1.0.1
解决一些场景下PyAlink的安装问题;
更新算法文档。

-Alink v1.1
1) 2020年2月 Alink v1.1.0;
支持发布到Maven中央仓库和PyPI;
PyAlink兼容PyFlink,改进UDF / UDTF功能;
支持多版本的Kafka数据源。
2) 2020年4月 Alink v1.1.1
提升使用体验,在参数检查方面更加智能。
3) 2020年6月 Alink v1.1.2
新增30余个数据格式转化组件;
支持多版本Hive数据源;
Pipeline和LocalPredictor支持SQLSelect操作。

-Alink v1.2
2020年7月 Alink v1.2.0
支持多文件系统;
CSV格式读取、导出组件支持各文件系统;
推出AK格式读取、导出组件,简化文件 数据的操作;
支持模型信息摘要、输出;
增加FM分类、回归算法。

-Alink v1.3
2020年12月 Alink v1.3.0
增加ItemCF、UserCF等推荐算法;
增加向量和文本相似度算法;
插件化catalog和文件系统;
丰富model info功能;
改进Pipeline存储和导入;
增加测试工具模块,优化测试体验。
image.png
丰富的数据库

1.3 开源Alink与SparkML对比
image.png
上图为开源Alink与SparkML算法运行时间对比图。纵坐标为各类算法,横坐标为运行同一算法时,SparkML相较开源Alink所花费的时间倍数。由上图可看出,在大多数情况下,开源Alink比SparkML效率更高。

二、Alink如何使用
2.1 Alink使用方式
有两种使用方式:Link与Pipeline。
下面通过一个例子展现两种使用方式的区别。

Link
Link是批式/流式算法通用的串联方式。
image.png
如上图所示,当得到训练数据后,训练数据进行了一次VectorAssembler,将多个列合成一列Vector.
数据处理完成后进行PCA的训练,训练结束后做PCA预测。预测数据做PCA预测时同时做Assembler,目的在于与训练数据保持一致,PCA预测结束后打印出结果。上述例子通过Link与Pipeline实现具体过程如下:
image.png
Link
image.png
Pipeline

2.2 Alink支持多种数据源
image.png
Alink还有一个优势是支持多种数据源。
它支持文件系统数据源与Catalog数据源,文件系统数据源包含HDFS、OSS、Local等,Catalog数据源包含Hive、Mysql、Derby等。这里需重点注意Local。Lcal为本地数据文件系统,如果在本地运行时,就可以使用它去进行测试。
Alink支持多种数据源的优势在于,当用户在使用时,面对不同的数据源不需要将数据导来导去,直接在Alink中区别对应数据源,然后将相应数据写到对应的Sink中去。

2.3 Alink运行
当算法与数据源准备完毕后,可以开始运行代码。运行代码可分为开发与部署,相当于本地运行与集群运行。在开发阶段,可以先用一个小数据集进行本地运行测试,快速验证过程与效果是否正确无误。
当本地运行测试无误后,可以提交到集群,运行大规模数据。
本地运行与集群运行的代码只有些许差异,具体代码如下。
image.png
本地运行:useLocalEnv
image.png
集群运行:useRemoteEnv

2.4 LocalPredictor
集群运行之后,需要进行线上推理,流程图如下图所示。
image.png
数据会在分布式集群系统中进行模型训练,然后将模型存储到文件存储系统或其他Sink里,接着将模型推到线上服务系统进行线上服务,该过程在Alink实现过程如下:
image.png
Alink使用LocalPredictor有个显著的优势,当用户在开发过程中,它使训练过程、线上预测与线下预测等数据保持一致。

三、Alink进阶
上面介绍了Alink的算法、数据源、运行与部署,那如何进行开发?开发的过程中有哪些技巧可以使用呢?
3.1 利用提示和报错信息
-利用提示查看算法相关Op, 可以查看Op和Pipeline。
image.png
举个例子,Alink支持6种数据格式,包括Vector、Triple、Json、Columns、Kv以及Csv,这六种格式可以根据实际需求相互转换。
如果要去做数据转换的时候,该如何找这个名字?
例如要将Columns转换成Csv,就输入Columns,那么跟Columns相关的所有算法都会出现,直接选择想要转换的算法即可,如下图所示。
image.png
这种方式提升了转换算法的效率,解决了用户在数百个算法中寻找的困扰。

-利用提示查看算法支持的参数。
每个算法拥有不同的参数,该如何设置参数?
Alink里的参数均以Set开头,举例如下图所示:
image.png
先将算法名字OneHotEncoder写上,然后写上set,那么相关的这种参数则会罗列出来供用户选择。

-枚举变量,使用JAVA,有枚举值的提示。
image.png
如果 Python的话,也可以通过下图的报错信息来看这个值到底应该怎么填。
image.png
image.png
以之前为例,ChiSqSelectorBatchOp里面有一个变量是SelectorType表示筛选类型,因为用户不清楚所以输入“aaa”,运行之后算法抛出来异常,表示“aaa”并不是SelectorType里的成员。它可能的值为NumTopFeatures、PERCENTILE、FPR、FDR、FWE,此时用户可以选择自己需要用的方法填入相应的值即可。

Alink对列名异常也做了一些优化。
如果列名输错了,行为是怎么样的?
image.png
image.png
如上所示,这个数据里面列是ID跟Test,当用户添了一个“text 1”,运行之后系统报错表示“text 1”无法找到,并提示“do you mean : text ?”,使得用户可以去查找相似列名。

3.2 查看训练信息
接下来介绍如何查看训练信息、模型信息,评估信息等,有些算法有丰富的训练信息可以帮助进行正确性验证,可能会输出每一轮的Loss、学习率,特征重要性、权重等等。
-Loss、学习率,特征重要性、权重
image.png
以上面为例,先定义逻辑回归算法Op,设置参数,使用lazyPrintTrainInfo可以将打出训练过程信息,lazyCollectTrainInfo可以在中间函数选择需要打印的信息。
image.png
上图为运行结果,显示了Loss、GradNorm、learnRate相应信息。
下方的train importance info包含模型的特征重要性,用户可以根据实际需求打印。

-通过训练流程得到的模型,不只是用于推理服务,也可以帮助诊断流程。
image.png
image.png
以上面为例,与之前的TrainInfo非常相似,在后面PrintModelInfo之后系统会打印model信息,在这里可以查看选择列、label值、categorical变量、gaussian变量以及模型等相关信息。还有一些其他的这种信息。

-对于复杂的模型,还可以提供更形象化的模型展示。
image.png
复杂的模型信息较多,例如树型结构。这种情况可以用lazyCollectModelInfo将图saveTreeAsImage,则会得到一个清晰的树状图,用户一目了然。

3.3 查看模型评估结果
-模型评估涉及到复杂的计算;
-信息量大
-需要繁琐的处理
image.png
image.png
image.png

3.4 Op和DataFrame互转
PyAlink提供了与pandas DataFrame的互转操作,能够方便的使用python生态中已有的工具。
image.png

3.5与PyFlink一同使用
-PyAlink新增了getMLEnv的接口,直接获取PyFlink的执行环境;
-Table和Op互转。
image.png

(分享人:品一)

欢迎加入机器学习PAI钉钉群交流!
image.png

云原生场景中的 AI任务调度
基于Flink的机器学习算法平台 Alink(二)推荐算法介绍

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
4月前
|
存储 SQL 安全
联通实时计算平台问题之如何体现集群治理的效果
联通实时计算平台问题之如何体现集群治理的效果
|
4月前
|
消息中间件 分布式计算 Kafka
联通实时计算平台问题之实时计算平台对于用户订阅和数据下发是如何支持的
联通实时计算平台问题之实时计算平台对于用户订阅和数据下发是如何支持的
|
4月前
|
消息中间件 监控 Java
联通实时计算平台问题之监控Kafka集群的断传和积压情况要如何操作
联通实时计算平台问题之监控Kafka集群的断传和积压情况要如何操作
|
4月前
|
消息中间件 监控 Kafka
联通实时计算平台问题之Flink状态后端数据量较大时,问题排查要如何进行
联通实时计算平台问题之Flink状态后端数据量较大时,问题排查要如何进行
|
4月前
|
消息中间件 存储 算法
联通实时计算平台问题之亿级标签关联实现且不依赖外部系统要如何操作
联通实时计算平台问题之亿级标签关联实现且不依赖外部系统要如何操作
|
4月前
|
消息中间件 监控 Kafka
联通实时计算平台问题之实时计算平台的数据处理流程是什么样的
联通实时计算平台问题之实时计算平台的数据处理流程是什么样的
|
4月前
|
搜索推荐 OLAP 流计算
OneSQL OLAP实践问题之基于 Flink 打造流批一体的数据计算平台如何解决
OneSQL OLAP实践问题之基于 Flink 打造流批一体的数据计算平台如何解决
63 1
|
4月前
|
监控 Java Serverless
美团 Flink 大作业部署问题之想在Serverless平台上实时查看Spring Boot应用的日志要怎么操作
美团 Flink 大作业部署问题之想在Serverless平台上实时查看Spring Boot应用的日志要怎么操作
|
5月前
|
机器学习/深度学习 人工智能 Java
人工智能平台PAI使用问题之alink安装部署卡住不动,是什么导致的
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。
|
6月前
|
机器学习/深度学习 人工智能 PyTorch
人工智能平台PAI产品使用合集之Alink在PAI上执行时下载依赖库失败,是什么原因
阿里云人工智能平台PAI是一个功能强大、易于使用的AI开发平台,旨在降低AI开发门槛,加速创新,助力企业和开发者高效构建、部署和管理人工智能应用。其中包含了一系列相互协同的产品与服务,共同构成一个完整的人工智能开发与应用生态系统。以下是对PAI产品使用合集的概述,涵盖数据处理、模型开发、训练加速、模型部署及管理等多个环节。