基于Flink的机器学习平台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存储和导入;
增加测试工具模块,优化测试体验。
基于Flink的机器学习平台Alink
丰富的数据库

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

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

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

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

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

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

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

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

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

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

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

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

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

3.3 查看模型评估结果
-模型评估涉及到复杂的计算;
-信息量大
-需要繁琐的处理
基于Flink的机器学习平台Alink
基于Flink的机器学习平台Alink
基于Flink的机器学习平台Alink

3.4 Op和DataFrame互转
PyAlink提供了与pandas DataFrame的互转操作,能够方便的使用python生态中已有的工具。
基于Flink的机器学习平台Alink

3.5与PyFlink一同使用
-PyAlink新增了getMLEnv的接口,直接获取PyFlink的执行环境;
-Table和Op互转。
基于Flink的机器学习平台Alink

(分享人:品一)

欢迎加入机器学习PAI钉钉群交流!
基于Flink的机器学习平台Alink

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

上一篇:知乎李大海对话阿里云贾扬清:透视AI应用难题与未来趋势


下一篇:伊对联手机器学习PAI 让云技术赋能恋爱社交行业升级