当前位置: 首页 > 后端技术 > Node.js

Flow-batch集成机器学习算法平台

时间:2023-04-03 12:24:58 Node.js

针对新兴机器学习广泛多样的应用场景,阿里计算平台基础算法团队于2017年开始研发基于Flink的新一代机器学习算法平台。项目名称Alink,取自相关名称(Alibaba、Algorithm、AI、Flink、Blink)的公共部分。经过三年的研发投入,Alink在算法性能、算法规模、算法易用性等方面取得了不错的成绩,并实现了产品化。这使数据分析师和应用程序开发人员能够轻松构建端到端的业务流程。在接下来的几页中,我们将从算法功能、算法性能、用户界面、可视化等方面对Alink进行系统的介绍。算法功能Alink拥有丰富的batch算法和streaming算法,可以帮助数据分析和应用开发者端到端的完成从数据处理、特征工程、模型训练、预测的全过程。如下图所示,在Alink提供的功能算法模块中,每个模块包括流式算法和批式算法。比如线性回归,包括批量线性回归训练、流式线性回归预测和批量线性回归预测。此外,Alink算法涵盖分类、回归、聚类、评价、统计分析、特征工程、异常检测、文本、在线学习、关联分析等经典领域。它是一个通用的机器学习算法平台。目前,Alink已被阿里巴巴集团多个BU使用,并取得了良好的业务提升。尤其是2019年天猫双11,单日数据处理量达到970PB,峰值每秒处理数据量高达25亿条。Alink成功经受住超大规模实时数据训练的考验,助力天猫商品推荐点击率提升4%。算法性能下图是一些经典算法与Spark的性能对比。从图中可以看出,Alink在大部分算法上的表现都优于Spark,部分算法的性能弱于Spark。整体性能处于可比水平。不过,“在功能的完备性上,Alink更有优势。”Alink除了涵盖Spark的算法,还包括流式算法、流批混合、在线学习、中文分词等。用户界面为了提供更好的交互体验,我们提供了两种用户界面:web和PyAlink。首先我们介绍网页界面。Web界面提供拖拽式创建实验的方式,通过配置各个组件完成整个实验的参数配置。下图是web界面创建的batch、stream、stream-batch混合实验。并且Alink可以支持节点级实验运行状态的展示。在每个算法节点旁边,我们用一个闪烁的小灯泡表示“正在运行”的状态,用一个勾表示“运行完成”的状态。通常,只有批处理组件才有可能运行完成。根据各个组件的运行状态,可以很方便的判断当前实验运行到什么程度。而且,如果在实验过程中出现错误或者实验长时间没有结束,也可以根据组件的运行状态更容易定位到可能存在问题的组件。除了简单的运行状态,Alink还提供了查看组件输入输出数据量指标的功能。针对不同类型的组件,Alink提供了不同的指标展示方式:对于流式组件,在组件运行时,可以近乎实时的看到组件输出的BPS和RPS值。对于批处理组件,组件运行后,会显示输出数据的总数和字节数。这些指标的展示可以为判断实验/业务是否正常运行提供很多参考,尤其是一些线上实时业务,可以通过这些指标直观的看出是否正常运行。下面我们继续介绍PyAlink。为了满足脚本用户的需求,我们在notebook上提供了PyAlink,用户可以通过PyAlink的python包来使用Alink。PyAlink支持单机运行,也支持集群提交。并且打通了Operator(Alink算子)和DataFrame的接口,使得Alink的整个算法过程可以无缝集成到python中。PyAlink还提供了使用Python函数调用UDF或UDTF。PyAlink在notebook中使用下图展示一个模型训练预测的过程,并打印出预测结果:Alink中的可视化包括统计相关可视化、模型可视化、评估可视化等,目前能够实现大屏可视化组件包括:统计分析组件,直接显示统计算法的结果;机器学习模型组件,显示训练模型的信息;评估组件,显示评估界面。下图显示了统计可视化。从下图我们可以看出,我们的统计可视化支持窗口统计和累计统计,支持曲线、直方图、统计表、矩阵图等多种展示方式。另外,下面两张图展示了模型的可视化和评估的可视化。总结展望经过三年的发展,Alink已经成为一个功能齐全的机器学习算法平台,并在2019年的FFA19上向社区开源了代码,让更多的人使用这个平台来解决业务问题。虽然Alink开源已经初见成效,但我们会继续积极为FlinkML贡献代码。我们希望为Flink项目贡献更多优秀的机器学习算法,也希望与社区一起,共同推动Flink社区机器学习生态的发展。发展和繁荣。上云,看云栖号:更多云资讯、云案例、最佳实践、产品介绍,访问:https://yqh.aliyun.com/本文为阿里云原创内容,未必未经许可不得转载