基于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学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
1月前
|
机器学习/深度学习 人工智能 算法
【AAAI 2024】再创佳绩!阿里云人工智能平台PAI多篇论文入选
阿里云人工智能平台PAI发表的多篇论文在AAAI-2024上正式亮相发表。AAAI是由国际人工智能促进协会主办的年会,是人工智能领域中历史最悠久、涵盖内容最广泛的国际顶级学术会议之一,也是中国计算机学会(CCF)推荐的A类国际学术会议。论文成果是阿里云与浙江大学、华南理工大学联合培养项目等共同研发,深耕以通用人工智能(AGI)为目标的一系列基础科学与工程问题,包括多模态理解模型、小样本类增量学习、深度表格学习和文档版面此次入选意味着阿里云人工智能平台PAI自研的深度学习算法达到了全球业界先进水平,获得了国际学者的认可,展现了阿里云人工智能技术创新在国际上的竞争力。
|
2月前
|
机器学习/深度学习 人工智能 JSON
人工智能平台PAI问题之推断报错如何解决
人工智能平台PAI是指阿里云提供的机器学习平台服务,支持建模、训练和部署机器学习模型;本合集将介绍机器学习PAI的功能和操作流程,以及在使用过程中遇到的问题和解决方案。
39 0
|
2月前
|
机器学习/深度学习 人工智能
人工智能平台PAI问题之维度不匹配如何解决
人工智能平台PAI是指阿里云提供的机器学习平台服务,支持建模、训练和部署机器学习模型;本合集将介绍机器学习PAI的功能和操作流程,以及在使用过程中遇到的问题和解决方案。
44 1
|
2月前
|
机器学习/深度学习 人工智能 分布式计算
人工智能平台PAI问题之loss为负数如何解决
人工智能平台PAI是指阿里云提供的机器学习平台服务,支持建模、训练和部署机器学习模型;本合集将介绍机器学习PAI的功能和操作流程,以及在使用过程中遇到的问题和解决方案。
44 1
|
2月前
|
机器学习/深度学习 存储 人工智能
人工智能平台PAI问题之cuda报错如何解决
人工智能平台PAI是指阿里云提供的机器学习平台服务,支持建模、训练和部署机器学习模型;本合集将介绍机器学习PAI的功能和操作流程,以及在使用过程中遇到的问题和解决方案。
42 1
|
2月前
|
机器学习/深度学习 人工智能 资源调度
人工智能平台PAI问题之多机多卡如何解决
人工智能平台PAI是指阿里云提供的机器学习平台服务,支持建模、训练和部署机器学习模型;本合集将介绍机器学习PAI的功能和操作流程,以及在使用过程中遇到的问题和解决方案。
59 0
|
2月前
|
机器学习/深度学习 人工智能 并行计算
人工智能平台PAI问题之延迟更新如何解决
人工智能平台PAI是指阿里云提供的机器学习平台服务,支持建模、训练和部署机器学习模型;本合集将介绍机器学习PAI的功能和操作流程,以及在使用过程中遇到的问题和解决方案。
29 0
|
2月前
|
机器学习/深度学习 人工智能 异构计算
人工智能平台PAI问题之Tag类型特征等长如何解决
人工智能平台PAI是指阿里云提供的机器学习平台服务,支持建模、训练和部署机器学习模型;本合集将介绍机器学习PAI的功能和操作流程,以及在使用过程中遇到的问题和解决方案。
45 0
|
2月前
|
机器学习/深度学习 人工智能 DataWorks
人工智能平台PAI问题之日志报错误如何解决
人工智能平台PAI是指阿里云提供的机器学习平台服务,支持建模、训练和部署机器学习模型;本合集将介绍机器学习PAI的功能和操作流程,以及在使用过程中遇到的问题和解决方案。
53 0
人工智能平台PAI问题之日志报错误如何解决
|
2月前
|
机器学习/深度学习 存储 人工智能
人工智能平台PAI问题之出现pb限制如何解决
人工智能平台PAI是指阿里云提供的机器学习平台服务,支持建模、训练和部署机器学习模型;本合集将介绍机器学习PAI的功能和操作流程,以及在使用过程中遇到的问题和解决方案。
58 0

热门文章

最新文章