PAI分布式机器学习平台编程模型演进之路

什么是PAI?

PAI的全称是Platform of Artificial Intelligence,主要在使用机器学习做模型训练时提供整套链路。机器学习即服务,把机器学习作为服务对外推出,大家可以在平台上使用比较先进的机器学习算法。将多种深度学习框架集成到PAI中,同时基于深度学习框架包装成更加易用的组件。具备异构的计算服务能力,把CPU计算能力和GPU计算能力统一调度起来,异构的计算能力透明,大家的注意力是哪些机器学习算法可以帮助业务,不用关心底层资源的申请和分配。PAI也支持在线预测服务,模型一键发布。

大规模分布式机器学习的挑战

数据规模和特征会不断增加,这就会导致模型复杂度的增加,之前的模型已经不能够处理这么高的复杂度了。特征增加之后,模型变得越来越大,模型很难做到单机加载,所以在模型存储时需要做分片和切分。在常规的机器学习里面,更多的注意力放在理解业务的数据、特征,而现在的注意力会转移到模型本身,更多考虑怎么通过调整模型的结构达到更好的预测效果。

编程模型演进

MapReduce编程模型

MapReduce核心的思想是分而治之,即把数据切分成很多块,每个节点处理其中的一小块。做分布式系统时会面临很多问题,比如希望计算任务可以在MapReduce框架层面做切分和调度。MapReduce从框架层面极大地降低了把任务迁移到分布式计算系统上的难度和门槛。对于数据的分布式存储和划分,数据可分散存储在几千台机器上,并且都有相应副本,不需要担心数据的丢失,底层的分布式存储会统一进行处理。计算任务的同步和计算节点的容错与恢复,若使用普通机器去搭大型计算群的时候,机器的宕机时比较普遍的现象,使用MapReduce则不需要关心这一点。右图是MapReduce的编程模型,最初是用来处理SQL等问题。

在机器学习里面,有些算法是基于MapReduce编程模型去实现的。TF-IDF用来评估文档里面单词是否能表示文档主题。首先计算文档里面单词出现的频率,把谓词和叹词去掉,关注真正有意义的词。IDF则是统计该词在所有文档里面出现的频率,将其和文档里出现的频率经过算法计算得出最终结果。这个过程如何通过MapReduce实现呢?在Mapper中迭代的去加载每一篇要训练的文章,在迭代过程中统计每个单词出现的频率。将统计结果放入Reducer中,进行计算,得到TF-IDF结果表。

MapReduce编程模型有两个特点:不同计算任务之间独立,每个Mapper和Reducer只会计算自己相关的数据,数据并行度高;适合不需要不同节点通信的机器学习算法。

MPI编程模型

逻辑回归算法是需要节点间进行通信的,该算法在个性化推荐中可以经常看到。个性化推荐算法是指每个人点击进来之后会进行分类,判断是否会对某些商品感兴趣,然后进行推荐。模型函数如上图中公式所示,定义损失函数,损失函数值越小说明模型拟合越好,寻找损失函数最小值的过程中用到了梯度下降算法。

早期,很多逻辑回归算法都是基于MPI编程模型实现的,MPI是消息传递接口,定义了Send,Receive,BC阿斯图,AllReduce接口,支持单机多Instance和多机多Instance,具有高度灵活,描述能力强,大量用于科学计算。

MPI使用时有很多限制,首先必须提前知道阶段任务在哪些计算节点上做。在大规模的计算集群里面,所有资源的分配都是动态的,在任务执行之前不知道任务会调度到哪些节点上,但是早期有很多算法需要基于MPI实现,所以对MPI底层做了网络拓扑的建立,做了大量的重构,帮助MPI相关程序能够基于分布式的调度系统调度起来。

逻辑回归的实现过程如上图所示。其中,有n个计算节点,首先会加载训练样本,计算梯度,然后本地加和,最后调用AllReduce接口去计算现在模型所在的位置。MPI本身还存在一些缺点:首先MPI中Worker的数目有上限,当需要更多节点的时候会发生性能下降。

参数服务器Parameter Server

Parameter Server和MPI相比,在更高的层次定义了编程模型和接口。Parameter Server中有三个角色,Server节点用来存储模型,计算节点会加载部分模型、训练数据,每轮迭代时每个节点会计算下个梯度,将节点和Server进行通信。Coordinator用来判断训练是否结束。此外,Parameter Server支持异步通信接口,不需要在不同计算节点间做同步。

阿里在2014年下半年,独立自研了PAI Parameter Server计算模型,已在集团内大规模使用。具体做的工作如上图所示。MPI的一个缺点是不支持容错,而每天上万台的集群会出现各种各样的故障,PAI Parameter Server针对大规模集群做了节点容错功能。Parameter Server集成很多算法,比如逻辑回归等。

深度学习

深度学习是人工神经网络的延伸,相比之下能够支持更深的网络。上图中,Alexnet是卷积神经网络,总共有8层网络,深度学习如果想要获得更好的效果,必须要构建一个更深的神经网络。随着神经网络变深,需要更多的参数,并且模型也会更加庞大。多级训练则需要更高量级的通信量。

TensorFlow

TensorFlow是谷歌第二代的深度学习框架,支持各种神经网络,具有高度的灵活性,丰富的社区生态,支持CNN、RNN、LSTM等网络。

上图中TensorFlow的例子是两层神经网络做图片的分类。上面通过API定义训练图片和测试数据,接着定义了模型(softmax多分类模型),定义损失函数通过交叉熵来做,最后选择优化函数找最优点。下面部分则是通过API把训练数据喂给模型再计算当前模型的准确率。从上例中,可以看出,API非常灵活,基于Python,所以非常方便。

PAI TensorFlow

将TensorFlow迁移到PAI上之后,将TensorFlow作业服务化,起TensorFlow作业的时候不需要去申请资源、做训练数据的迁移;分布式调度(包括单机和多机)只需提交模型训练Python文件;GPU卡映射;多种数据源,结构化数据和非结构化数据都支持;超参支持,训练模型时会调整学习率,通过超参把参数存进来就不需要每次都调整了;模型在线预测,训练好模型之后可以部署到在线预测服务上,调用API获知模型结果是否正面。

PAI Pluto(多机多卡Caffe)

Caffe早于TensorFlow,Caffe可以认为是第一代的深度学习框架,使用Caffe时需要通过配置文件配置深度学习的卷积神经网路。目前,很多关于图像的应用都是基于Caffe来做的,使用CNN的网络,比如身份证识别、驾照识别等。其缺点是单机,当训练样本多的时候训练时间非常长。将Caffe底层嫁接到OpenMPI通信框架上,可以支持多机Caffe,能够达到线性加速比。

总结

前文提到了PAI上支持的各种编程模型,在公有云上希望把机器学习作为一个服务推出来,包括数据上传、数据清洗、特征工程、模型训练、模型评价。这样就可以在PAI上做一站式的模型训练和预测。

本文作者:佚名

来源:51CTO

时间: 2024-10-03 01:29:35

PAI分布式机器学习平台编程模型演进之路的相关文章

阿里云机器学习平台编程模型演进之路

票选最美云上大数据暨大数据技术峰会上,阿里云大数据事业部高级专家九丰为大家带来题为"阿里云机器学习平台编程模型演进之路"的演讲.本文主要从机器阿里云机器学习平台PAI开始谈起,重点分享了PAI分布式机器学习平台的多种编程模型,包括MapReduce.Parameter Server和MPI等,也简谈了TensorFlow和Pluto.   以下为精彩内容整理: 随着训练数据规模的持续扩大,模型特征的持续增长,常用的机器学习算法面临着越来越多的挑战.从很多人熟悉的R语言,到基于MPI的多

PAI分布式机器学习平台

此篇为大家分享的PAI分布式机器学习平台,在大数据时代如何做到与众不同的服务?现今,数据就是资源毋庸置疑,利用大数据通过机器学习算法获取行为偏好,内容偏好,消费偏好做出决策,推荐乃至营销都有极大的可行性.PAI分布式机器学习平台就是这样一个产品,经过数据清洗.特征工程.离线训练.在线预测这些步骤,就能为你下一步发展做决策了.此平台有多种使用形式包括web界面.PyODPS.console,支持结构化和非结构化数据存储服务,模型管理多样.在阿里的应用也非常广泛如千人千面,证件智能审核功能等.未来的

大规模数据的分布式机器学习平台

来自阿里云IDST褚崴为大家带来分布式机器学习平台方面的内容,主要从大数据的特点和潜在价值开始讲起,然后介绍阿里的业务场景中常用到的机器学习算法,以及阿里采用的分布式机器学习框架,最后介绍了PAI算法平台,一起来看下吧.   大数据的特点和潜在价值 我们正在步入大数据的时代,大数据至少具备以下四个特点: 海量样本:数据的规模巨大,特征非常多,每40个月翻一番,数据管理复杂: 内容多样:非结构化数据.异质数据,每天产生的数据里有图像.语音.视频,还有各类传感器产生的数据,各种定位的信息,交易记录-

双12根本不在话下,阿里首次揭秘扛过双11的千亿级特征分布式机器学习平台XPS

阿里巴巴电商平台有上亿的用户和产品,每天产生百亿规模的用户反馈数据.比如淘宝首页的猜你喜欢场景,每天就有100亿规模的用户行为数据.如此超大规模的训练数据,给分布式机器学习带来了巨大的挑战,也引入了有趣的研究问题.2017年,阿里巴巴推荐算法团队和计算平台PAI团队合作打造了eXtreme Parameter Sever (XPS) 机器学习平台,其中eXtreme寓意为"追求极致", 体现我们希望设计具有极致性能和效果的机器学习平台的愿景.XPS平台已经广泛全流量运行在手机淘宝的猜你

分布式机器学习平台比较

这篇文章调查分析了多个分布式机器学习平台所使用的设计方法,并提出了未来的研究方向.这是我与我的学生Kuo Zhang.Salem Alqahtani通力合作的成果.我们在2016年的秋天写了这篇论文,并且将在ICCCN'17(International Conference on Computer Communications and Networks,计算机通信与网络国际会议)上介绍这篇文章. 机器学习,特别是深度学习(DL),最近已经在语音识别.图像识别.自然语言处理.推荐/搜索引擎等领域获

【对标TensorFlow】阿里公开内部超大规模分布式机器学习平台

近年来,随着"大"数据及"大"模型的出现,学术界和工业界对分布式机器学习算法引起了广泛关注.针对这一刚需,阿里集团和蚂蚁金服设计了自己的分布式平台--鲲鹏.鲲鹏结合了分布式系统及并行优化算法,解决了大规模机器学习算法带来的一系列问题,不仅囊括了数据/模型并行.负载平衡.模型同步.稀疏表示.工业容错等特性,而且还提供了封闭好的.宜于调用的 API 供普通的机器学习者开发分布式算法,降低使用成本并提升效率.相关论文在本届 KDD 以口头报告的形式发表(应用数据科学 Tr

卡耐基梅隆大学教授邢波:Petuum,大数据分布式机器学习平台

[CSDN现场报道]2014年12月12-14日,由中国计算机学会(CCF)主办,CCF大数据专家委员会承办,中科院计算所与CSDN共同协办,以推进大数据科研.应用与产业发展为主旨的 2014中国大数据技术大会 (Big Data Technology Conference 2014,BDTC 2014)暨第二届CCF大数据学术会议在北京新云南皇冠假日酒店盛大开幕. 2014中国大数据 技术大会首日全体会议中,卡耐基梅隆大学教授.ICML 2014程序主席邢波带来了名为"A New Platfo

浅析云计算分布式并行计算:编程模型

MapReduce 是由Google公司开发的一个针对大规模群组中的海量数据处理的分布式编程模型.它实现了两个功能:Map把一个函数应用于集合中的所有成员,然后返回一个基于这个处理的结果集.而Reduce是把从两个或更多个Map中,通过多个线程,进程或者独立系统并行执行处理的结果集进行分类和归纳.Map() 和 Reduce() 两个函数可能会并行运行,即使不是在同一的系统的同一时刻. 微软于2010年12月21日发布了分布式并行计算基础平台--Dryad测试版,成为谷歌MapReduce分布式

分布式机器学习平台 VELES

VELES 详细介绍 VELES 是分布式深度学习应用系统,用户只需要提供参数,剩下的都可以交给 VELES.VELES 使用 Python 编写,使用 OpenCL 或者 CUDA,利用基于 Flow 的编程. VELES 是三星开发的另一个 TensorFlow. 主要特性: 只需一个命令就可以在 Notebook 或者 Cluster 上部署 VELES 从 250+ 优化单元中创建模型 使用 Loaders 在 Go 上分析和服务数据集 在 PC 或者高性能集群训练 交互式监控训练进程