分布式机器学习(一)之总体概述

文章序列

分布式机器学习(一)之总体概述
分布式机器学习(二)之数据划分
分布式机器学习(三)之模型划分
分布式机器学习(四)之节点通讯

机器学习概述(Machine Learning Overview)

算力 V.S. 数据

算力+数据+算法
  数据的增长可谓是爆炸似的,算力的增长越来越快,特别是GPU的运用,使得大规模并行计算再上一个台阶。同时,在两种背景下催生了深度学习算法研究的加速,深层的网络被设计的越来越深、越来越复杂。
  数据+算力+算法=机器学习(ML), 现在数据量足够多了,模型也能设计的更加复杂了,那么,重点是算力能不能跟得上。在 2005 年到2015 年这十年间,按照不完全统计.数据增长了 至少五十倍 。 这个速率遥遥领先于我们所熟知的有关计算力增长的摩尔定律(每隔18个月,单位面积上的晶体管上的数量将增加一倍)以及有关带宽增长的尼尔森定律 (高端用户带宽将以平均每年50%的增幅增长,每21个月带宽速率将增长一倍)。

  据当年离开斯坦福加入Google 的吴恩达回忆说:“在我加入谷歌时,学术界最大的神经网络大约有100万个参量,而当时在谷歌,我们就可以构建较之规模大一千倍的神经网络。” 2012年,他与谷歌顶级工程师合作,构建了全球规模最大的“神经网络”,这种人工神经网络能够以与人类大脑学习新知识相同的方式学习新事物。吴恩达让其开发的人工神经网络利用一周的时间接触 YouTube 视频,从而自主学会了识别哪些是关于猫的视频。能够做到这点,主要是通过把视频信息分解成十亿多个不同的参量,然后自主学会如何把这些参量组合到一起,从而实现识别的功能。
  三年后,也就是2015年,微软亚洲研究院开发出的拥有超过两百亿个参数的 LightLDA 主题模型。LightLDA是一种全新的用于训练主题模型,计算复杂度与主题数目无关的高效算法。在其分布式实现中做了大量的系统优化使得 LightLDA 能够在一个普通计算机集群上处理超大规模的数据和模型。例如,在一个由8台计算机组成的集群上,我们可以在具有2千亿训练样本(token)的数据集上训练具有1百万词汇表和1百万个话题(topic)的 LDA 模型(约1万亿个参数),这种规模的实验以往要在数千台计算机的集群上才能运行。LDA 是隐含狄利克雷分布(Latent Dirichlet Allocation,简称LDA),并不是机器学习中的 线性判别分析 LDA。LDA(Latent Dirichlet Allocation)是一种文档主题生成模型,也称为一个三层贝叶斯概率模型,包含词、主题和文档三层结构。所谓生成模型,就是说,我们认为一篇文章的每个词都是通过“以一定概率选择了某个主题,并从这个主题中以一定概率选择某个词语”这样一个过程得到。LDA 是一种非监督机器学习技术,可以用来识别大规模文档集(document collection)或语料库(corpus)中潜藏的主题信息。有关LDA 的更多介绍,参照这里

  在图像处理方面,从 2012 年开始, AlexNel 在 ImageNet 大规模视觉识别挑战 ( ILSVRC) 中将图像分类的 top-5 错误率降低到 15. 3%;而后 VGGNet 将这个分类错误率进一步降低到 7. 3%;2015 年,来向微软研究院的何凯明发明了ResNet,进一步将错误率降低到接近 3.5% 的骄人成绩,而这个识别精度已经远超人类的平均水平 (5 .1 %)。

GPU Cluster

在这里插入图片描述
  Why GPU? Not CPU? 为什么选用GPU,而非CPU? GPU 和 CPU 相比,有更强的并行度和计算能力,可以使复杂的训练过程变得更加高效 。 CPU 串行计算核,而 GPU 则扪l有一个由数以千计的更小、更高效的核心组成的大规模并行计算架构 。 适合把同样的指令流并行发送到众核扎进行海最数据的快速处理。CPU 多用于控制信息较多的指令处理任务,比如响应系统的各种中断、IO 和调度等。而 GPU 则专用于计算,并不实现复杂的控制指令流。GPU一般拥有较大的显存(内存),用于存放数据,用于减少多级 cache,用于减少不必要的 IO, 以加速计算。
  下图中,显示了高性能集群中 GPU 个数的增加:
在这里插入图片描述

  总之,大数据,大模型,高算法的时代到来了,在本系列 Blog 里,主要介绍如何使用分布式机器学习算法(高性能集群)来训练拥有大规模参数的机器学习模型。分布式机器学习就是解决怎样协调和利用大量的 GPU 集群,来完成深度学习模型的训练和获取好的收敛,达到相对高的性能。分布式机器学习涉及如何分配训练任务,调配计算资源,协调各个功能模块,以达到训练速度与精度的平衡。一个分布式机器学习系统通常会包含以下主要模块 : 数据模型划分模块、单机优化模块、通信模块、模型和数据聚合模块等。各个模块都有多种实现方式,各个实现方式也可以进行排列组合,使得分布式机器学习的方法多种多样。

  这里介绍一下分布式机器学习 (DML) 和单机上的机器学习 (ML) 的差别:首先,机器学习是学习数据中的统计规律,特别是数据量特别大的时候,所以单个样本对整体模型的影响微乎其微,所以,这使得 ML 用于分布式实现不像其他的 分布式计算任务一样,对数据的输入要求必须是一致、可靠的。从这个方面讲,我们可以在集群上划分数据(数据划分)。再者,ML 对单个参数的依赖也是很小的,即使我们去掉、改变其中某个参数,可能不会影响最终的分类性能(越往高层可能影响越大),我们可以从 Dropout 等相关剪枝技术取得的成功来加以佐证。这使得我们可以对模型进行划分,集成,各个参数之间可以相互叠加,取舍(模型划分与聚合)。

分布式机器学习架构(Distribute ML Framework)

在这里插入图片描述
  上图整体描述了分布式机器学习的架构,我们将从:数据的划分方式(数据怎样分布到各个节点上)、单机ML模型的算法及优化方式(各个节点上的模型如何优化)、节点通讯(各节点之间如何传递消息)以及模型的聚合(各个节点的模型如何聚合成最终模型)来介绍 DML,并总结讨论各种实现方式,比如同步或异步实现,以及其实现方式的优劣。上述框架(或者说 roadMap)基本设计到了 DML 的方方面面。最后,我们讲来介绍一下分布式机器学习算法的收敛性,以及如何实现通用场景下的分布式机器学习,如在客户端(手机、PC端)进行分布式学习(联邦学习),以在不泄露用户隐私的情况下学习算法模型。

文章列表:
分布式机器学习(一)之总体概述
分布式机器学习(二)之数据划分
分布式机器学习(三)之模型划分
分布式机器学习(四)之节点通讯

  • 13
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值