ODPS—MPI机器学习编程框架

本文涉及的产品
交互式建模 PAI-DSW,5000CU*H 3个月
简介: 阿里大数据产品专家刘吉哲分享一篇关于MPI机器学习编程框架的文章。要知道,在PAI平台上,为了支持亿级的数据量、千万级的特征,所有机器学习算法都是分布式的。可以支持逻辑回归、支持向量机、随机森林等算法,和XGBOOST等优秀开源算法,还可以使用聚类、自然语言、图、深度学习、协同过滤等领域相关的算法。
【编者按】阿里一站式大数据平台——“数加”平台发布后,业内对其核心ODPS也就是现在的大数据计算服务MaxCompute极为关注。平台介绍以及开发背景可见《阿里十年经验输出,大数据平台“数加”的前世今生》。特别分享一篇阿里大数据技术专家刘吉哲的一篇关于MPI机器学习编程框架的文章。

下为正文:

ODPS作为一个大数据处理服务,有着得天独厚的优势去承载大规模机器学习,PAI就是这样一个孕育在ODPS之上的大规模机器学习平台。

在PAI平台上,为了支持亿级的数据量、千万级的特征,所有机器学习算法都是分布式的。你可以使用耳熟能详的逻辑回归、支持向量机、随机森林等算法,也可以使用被业界称道的如XGBOOST等优秀开源算法,还可以使用聚类、自然语言、图、深度学习、协同过滤等领域相关的算法。

除了丰富的、分门别类的机器学习算法,PAI平台支持算法开发者开发自己的算法,并随时在PAI平台发布。统一的调用命令、便捷的编程接口大大简化了开发者的工作。作为一个开发者,要做的就是定义自己的算法名称、参数和基于编程框架开发算法逻辑,无需关心任何平台层面的事情。本文以逻辑回归为例,介绍如何在PAI平台上基于MPI框架开发分布式算法。

ODPS支持MPICH,接口与标准MPICH无异,详细可参考其官网介绍。本文介绍的逻辑回归使用LBFGS作为优化算法,原理不再详述,我们需要解决的是如何基于MPI实现亿级的样本量、千万级特征的LBFGS。

LBFGS的迭代过程涉及到两个重要的计算:

计算似然函数的全局值
7fe4831da4ebb5225fb1d5c1fedcb030c2a0d564
计算梯度向量
4fe6937e6636855926f0d2b0c25fe2e3d10ae490

b4374f27ebaf2bb92a97f229527fb13767d1e6b7

4d2d03c3ceb817407520772ac9bd3890332724da

好了,原理就是这样,下面看看ODPS的PAI平台提供了哪些编程接口,可以达到上述并行化的目的。

编程框架和接口是C++的。基于MPI框架的算法,都需要继承自MPIAlgorithm基类,并实现纯虚函数Run,逻辑回归当然也不例外。

bfde8b27357e1dcce54c0169e9310be8ca024ae2

MPIContext定义了运行时上下文,可以获取环境参数、创建输入输出接口等。逻辑回归的输入数据位于ODPS表中,那么可以这样创建表的读接口:
 
d91425cff25c71aeef6f5889afb71f4146105d29

通过表的读接口,可以获取输入表的总行数(样本数)、总列数(特征数)、跳转到指定行开始读等。具体定义如下:
4a248ab2ce8dbb712eebf6b654cc916c7de8178e
 
如果知道了总的并行机器数、自己所在的机器序号、表的总行数,要计算平均每个机器读多少行、自己该从第几行开始读,不难吧?特征的切片方式和样本类似,只是被切分的是总的列数。因此,我们需要知道总的机器数和自己机器的序号,该MPI函数出场了。标准MPI库函数MPI_Comm_size和MPI_Comm_rank可以达到我们的目的。

2d2265c4ed059a206267094b9f800298a6783e58
 
有了这些接口,可以完成本机器上数据的计算,如何实现之前提到的机器间通信?熟悉MPI的人应该并不陌生,MPI提供了大量通信函数,最基础的MPI_Send、MPI_Recv,高级的MPI_Allgather、MPI_Allreduce,都可以信手拈来。

说到这里,已经具备了所有实现并行LBFGS的条件,现在所要做的是根据LBFGS原理去实现Run函数,再把实现代码编译成动态链接库(.so)。除此之外,还需要一个XML格式的文件,我们称之为“算法描述文件”,定义算法需要的参数等,最难的并行框架都搞定了,这个一定难不倒你。把.so和“算法描述文件”一起上传到ODPS,就完成了整个算法的发布过程。如果你愿意授权,那别人就可以在ODPS上使用你的算法了。

ODPS已经在云栖社区有了自己的圈子——ODPS,欢迎加入讨论。 :)
相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
大数据分析的技术和方法:从深度学习到机器学习
大数据时代的到来,让数据分析成为了企业和组织中不可或缺的一环。如何高效地处理庞大的数据集并且从中发现潜在的价值是每个数据分析师都需要掌握的技能。本文将介绍大数据分析的技术和方法,包括深度学习、机器学习、数据挖掘等方面的应用,以及如何通过这些技术和方法来解决实际问题。
49 2
|
3月前
|
机器学习/深度学习 存储 分布式计算
机器学习PAI关于maxcompute上用protobuf 处理数据,比较方便的方式
机器学习PAI关于maxcompute上用protobuf 处理数据,比较方便的方式
|
3月前
|
机器学习/深度学习 算法
机器学习 - [集成学习]Bagging算法的编程实现
机器学习 - [集成学习]Bagging算法的编程实现
32 1
|
7月前
|
SQL 分布式计算 大数据
大数据Spark框架概述
大数据Spark框架概述
159 0
|
7月前
|
机器学习/深度学习 分布式计算 算法
大数据Spark机器学习
大数据Spark机器学习
45 1
大数据Spark机器学习
|
6月前
|
存储 分布式计算 Hadoop
【大数据处理框架】Hadoop大数据处理框架,包括其底层原理、架构、编程模型、生态圈
【大数据处理框架】Hadoop大数据处理框架,包括其底层原理、架构、编程模型、生态圈
134 0
|
7月前
|
机器学习/深度学习 数据采集 算法
大数据与机器学习:数字时代的强大动力
在当今数字化时代,数据已经成为了一项宝贵的资源,而大数据和机器学习则是将其转化为实际价值的关键工具。本文将探讨大数据与机器学习的关系,以及它们如何共同推动技术、企业和社会的发展。
|
7月前
|
机器学习/深度学习 人工智能 算法
大数据与机器学习:技术的新浪潮
在21世纪的信息时代,大数据和机器学习已经成为技术发展的新浪潮,正在深刻地改变我们的生活和工作方式。本文将探讨这两种技术的基本原理、应用以及未来发展趋势。
94 1
|
3月前
|
人工智能 自然语言处理 大数据
AI大数据智能导诊系统源码 Springboot框架
智能导诊系统是在医院中使用的引导患者自助就诊挂号,在就诊的过程中有许多患者不知道需要挂什么号,要看什么病,通过智慧导诊系统,可输入自身疾病的症状表现,或选择身体部位,再经由智能导诊系统多维度计算,AI智能引擎分析、准确推荐科室,引导患者挂号就诊,实现科学就诊,不用担心挂错号。
56 0
|
4月前
|
机器学习/深度学习 搜索推荐 算法
「机器学习」推荐系统简介——一起来看看你是怎么被大数据杀熟的(四)
「机器学习」推荐系统简介——一起来看看你是怎么被大数据杀熟的(四)
34 0