从今天开始正式入门【分布式机器学习】啦~~~
由于研一的科研项目中我的课题是

一、梯级水电站海量多源异构数据高效存储方法
二、提出梯级水电站时空大数据的并行处理框架

所以我就一直跟并行处理框架过不去,各种资料搜关键词也是搜“并行处理”,没有想到分布式这一层。经过一段时间的研究之后发现【分布式机器学习】这个领域的研究成果还是挺多的,所以打算正式入门。

一、书籍推荐

  1. 《分布式机器学习——算法、理论与实践》 作者:刘铁岩 陈薇 王太峰 高飞
    本书对分布式机器学习这一领域进行了全面而深入的介绍,并且为进一步的研究和时间储备必要的知识和思路。
  2. 《Spark MLlib机器学习——算法、源码及实战详解》 作者:黄美灵
    本书系统、全面、深入地解析Spark MLlib机器学习的相关知识,以源码为基础,兼顾算法、理论与实战,帮助读者在实际工作中进行MLlib的应用开发。(书中提到的算法都是基于Scala语言)
  3. 《PySpark实战指南——利用Python和Spark构建数据密集型应用并规模化部署》 作者:托马兹·卓巴斯[美]
    本书系统讲解如何在Spark2.0上高效运用Python来处理数据并建立机器学习模型,帮助读者开发并部署高效可拓展的实时Spark解决方案。

二、分布式机器学习(DML)基础

  1. DML难点
    分布式机器学习涉及如何分配训练任务,调配计算资源,协调各个功能模块,以达到训练速度与精度的平衡。也就是如何划分训练数据、分配训练任务、调配计算资源、整合分布式的训练结果,以达到训练速度和训练精度的完美平衡。(这几点可以作为大论文的创新点方向)
  2. DML系统的主要模块
    (1)数据和模型划分模块
    (2)单机优化模块
    (3)通信模块
    (4)模型和数据聚合模块

    通过五花八门的组合,其优劣性需要根据机器学习任务本身(比如模型和优化算法的类别)、计算机集群的属性(比如单机运算能力和通信带宽等)以及最终的评价准则(比如精度优先还是速度优先)等来进行取舍。
    分布式机器学习与其他分布式系统不同,我们需要考虑它对数据的鲁棒性,对算法精度的特别要求,以及机器学习的泛化过程等。因而,如果想把分布式机器学习做好,需要把系统和统计、优化等知识有机的结合在一起。
  3. 数据并行vs模型并行
    数据并行的主要思想:将数据进行划分,并分配到多个工作节点上进行训练,这样每个工作节点的局部数据都在容限之内。每个工作节点会根据局部数据训练处一个子模型,并且会按照一定的规律和其他工作节点进行通信(通信的内容主要是子模型参数或参数更新),以保证最终可以有效整合来自各个工作节点的训练结果并得到全局的机器学习模型。
    模型并行暂不研究,不做介绍。
  4. 通信部分
    (1)通信的拓扑结构
    A. 基于迭代式MapReduce/allreduce的通信拓扑,目前应用比较广泛的:Spark MLlib、Vowpal Wabbit(VM)、Cloudera等。
    B. 基于参数服务器的通信拓扑,目前影响力比较大的:CMU的parameter server。
    C. 基于数据流的通信拓扑,例如TensorFlow。
    (2)通信的步调
    A. 同步通信:基于BSP的随机梯度下降法(BSP-SGD)、模型平均法、ADMM、弹性平均随机梯度下降法(EA-SGD)等
    B. 异步通信(配合参数服务器):异步随机梯度下降法(ASGD)等
    (3)通信的频率
    是应该处理完每一个样本或每一个小批量(mini batch)之后就马上进行通信,还是在把所有本地训练数据都处理完之后再进行通信?
  5. 数据与模型聚合模块
    以参数服务器为例,当参数服务器收到来自不同节点的本地模型时,既可以选择对模型参数进行简单平均来获得全局模型,也可以通过解一个一致性优化问题来获得全局模型(如ADMM、BMUF),还可以通过模型集成来获得全局模型。

三、分布式机器学习框架

使用最广的DML数据处理系统之一便是Spark MLlib,Spark MLlib是Apache Spark的扩展ML库,是一个基于内存的DML框架,并且使得ML系统易于扩展和部署。MLlib提供了传统ML算法的分布式实现,例如分类、回归和聚类等等。Apache DeepSpark提供了DL的分布式训练框架的实现。
另外TensorFlowPytorch也都支持DNN的分布式训练和部署。TensorFlow通过tf.distribution支持DNN的分布式训练,允许数据在不同进程上甚至不同服务器上进行计算,并且可以使用多处理器或服务器,在数据集的不同分片上训练相同的模型。Pytorch中的分布式包torch.disruption让研究人员和使用者能够轻松地将他们的DNN训练部署到集群上。

四、Spark分布式机器学习

  1. Spark MLlib
    Spark核心由一组功能强大的、高级别的库组成,包括SparkSQL、Spark Sreaming、MLlib及GraphX。
    Spark程序一般由Scala语言编写,想用Python的话可以用PySpark库。
  2. 基于Scala:Spark MLlib机器学习
  3. 基于Python:
    Spark/PySpark有MLlib和ML包,区别在于,MLlib包是基于RDD的,ML包是基于DataFrame的(DataFrame属于DataSet)。RDD和DataFrame事两种分布式数据集,DataSet底端是RDD,但是DataSet对RDD进行了更深一层的优化。
    pyspark学习:
    PySpark MLlib
    分布式机器学习原理及实战(Pyspark)
    Spark编程基础(Python版) 厦门大学 林子雨(PPT)
    一个视频学会PySpark-附源码

五、Spark+Pytorch

这个我看也有人用,后面再研究,先马一个视频教程:https://edu.csdn.net/course/play/29974/435059

六、Spark分布式深度学习

  1. 可行性
    首先,要明确spark是用来做什么的,它是一种分布式计算框架,代表的是算力。深度学习和数据分析是数据建模和数据处理,可以用深度学习来进行数据分析。简单来说就是,Spark是计算方式,深度学习是建模,可以采用Spark这种计算方式,但是目前主流的tf、torch并没有集成。
    Spark中的神经网络目前只有多层感知机分类这一个算法。目前来看,Spark最适用的其实是数据处理,清洗等任务,能够在部分领域里取代传统数据库,这本质是因为其选择了MapReduce的机制实现分布式化,每次通信都要等待同步,而目前主流的专用分布式dl/ml框架都是采用参数服务器的形式,允许不同worker之间的异步执行,因此将Spark与主流的框架深度结合不会是一件容易的事情。
  2. 存在的问题
    深度学习以神经网络结构为代表,layers之间是串行结构,中间显然不适合Spark做分布式计算,最多某些步骤采用并行加速。由此来看,深度学习并不适合分布式结构。(并不是说DL不适合分布式计算,而是说DL不适合在Spark这样的cluster上运行,因为DL的运算一般需要多次迭代一些小运算,比如算两组参数的点积再取其sigmoid函数,这种运算方式使得DL在GPU上会有更好的表现)
    使用Spark的优点在于可以更快更有效的调整训练参数,还可以并行运算多个网络架构。也就是说Spark起的是个微调的作用,神经网络都是用tensorflow实现的。
    总而言之,目前spark在深度学习中大多起辅助作用,很大程度上依赖其他框架。但是谁也说不好将来会怎样,毕竟spark刚发布时根本写不了神经网络算法,而现在已经有很多实现方法了。
  3. Spark可结合的深度学习框架
    (1)如1中所说,MLlib中有一个多层感知机的model,实际上就是最基本的DNN,但是在参数很大的情况下,去应用这个模型不太合适。
    (2)Intel开源了基于Apache Spark的分布式深度学习框架BigDL,对于直接支持已有Spark集群的深度学习开源库,BigDL是唯一的一个框架。
    (3)有caffeonspark和tensorflowonspark可以直接进行深度学习的application。在tensorflow与spark的集成上,Yahoo开源了他们的框架TensorFlowOnSpark,支持train和inference,可以高效的利用已有的spark集群。
    (4)虽然Spark貌似不支持深度学习,但是可以通过DeepLearning4j与Spark整合来支持,参考代码:https://github.com/sunbow1/SparkMLlibDeepLearn
  4. 目前已实现的项目
    当然也有大神改造为并行的网络结构,部署在Spark分布式计算框架上。
    (1)把Spark和DL结合起来的项目不少,基本都是基于Parameter Server架构,worker算了gradient然后传到driver去aggregate,Deeplearning4j on Spark(不过感觉没啥人用,只是玩儿玩儿)。
    (2)在databricks上用spark+tensorflow训练MNIST数据:Deep Learning with Spark and TensorFlow
    databrick也有一个spark-deep-learning项目,但主要是应用于大规模的inference。
    (3)社区maillist里mllib的核心开发者也在讨论在spark中集成一些ml/dl框架spark-dev-mail。
    (4)Spark给出了一套官方解决方案Spark新愿景:让深度学习变得更加易于使用 传送门: databricks/spark-deep-learning
  5. 再不济可以参考书籍《Spark深度学习指南》,在Spark平台从头搭建神经网络。

【分布式机器学习】基本知识相关推荐

  1. 机器学习与分布式机器学习_机器学习的歧义

    机器学习与分布式机器学习 超越最高精度 (Beyond Achieving Top Accuracy) We are familiar with the idea of using machine l ...

  2. 机器学习与分布式机器学习_我将如何再次开始学习机器学习(3年以上)

    机器学习与分布式机器学习 重点 (Top highlight) I'm underground, back where it all started. Sitting at the hidden ca ...

  3. 分布式机器学习_229页,CMU博士张昊毕业论文公布,探索机器学习并行化的奥秘...

    CMU 机器人研究所张昊(Hao Zhang)博士论文新鲜出炉,主要围绕着机器学习并行化的自适应.可组合与自动化问题展开. 机器之心报道,机器之心编辑部. 随着近年来,机器学习领域的创新不断加速,Sy ...

  4. 分布式机器学习的集群方案介绍之HPC实现

    机器学习的基本概念 机器学习方法是计算机利用已有的数据(经验),得出了某种模型(迟到的规律),并利用此模型预测未来(是否迟到)的一种方法.目前机器学习广泛应用于广告投放.趋势预测.图像识别.语音识别. ...

  5. 分布式机器学习_229页CMU博士张昊毕业论文公布,探索机器学习并行化的奥秘

    机器之心报道 机器之心编辑部 CMU 机器人研究所张昊(Hao Zhang)博士论文新鲜出炉,主要围绕着机器学习并行化的自适应.可组合与自动化问题展开. 随着近年来,机器学习领域的创新不断加速,Sys ...

  6. 聚焦大规模分布式机器学习,全面剖析Google TensorFlow,来看阿里、京东等在人工智能技术的进展...

    在5月18日的北京 朝阳门悠唐皇冠假日酒店举办的CCTC 2017人工智能专场上,来自阿里.京东.IBM.PPmoney.第四范式的五位人工智能研究资深专家将为与会者带来顶级技术分享会,从曝光的议题看 ...

  7. 机器学习与分布式机器学习_机器学习应运而生

    机器学习与分布式机器学习 Human mortality is not a deterministic process (unless you happen to be living in a sci ...

  8. 分布式机器学习的故事

    王益博士,称得上机器学习领域的资深从业者,本人之前有幸拜读过王益博士的一些paper和slides,对其从事的"分布式机器学习"方向尤感兴趣. 王益博士之前写过一篇<分布式机 ...

  9. 大数据的新机遇:我的分布式机器学习故事

    from :http://www.thebigdata.cn/JiShuBoKe/13723.html 一.前言 从毕业加入Google 开始做分布式机器学习,到后来转战腾讯广告业务,至今已经七年了. ...

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

    2014年12月12-14日,由中国计算机学会(CCF)主办,CCF大数据专家委员会承办,中科院计算所与CSDN共同协办,以推进大数据科研.应用与产业发展为主旨的 2014中国大数据技术大会 (Big ...

最新文章

  1. servlet增删改查实例_SpringBoot系列(2)整合MongoDB实现增删改查(完整案例)
  2. 小数据,大前景 !美国智库最新报告:长期被忽略的小数据人工智能潜力不可估量...
  3. sublime text3 插件安装方法
  4. Zookeeper的安装配置及基本开发
  5. 最新以及历史各版本 .NET Framework 的下载
  6. php把int转string,如何在php中实现int转string
  7. 跨平台移动开发_PhoneGap 使用Accelerometer 加速器
  8. 天池 在线编程 数组游戏
  9. HTML5与原生APP之争胜负已出?
  10. 阿里巴巴整理的python_阿里P8大佬整理的2020年最全99道python面试题,文末附答案...
  11. filereader php,AJAX_File, FileReader 和 Ajax 文件上传实例分析(php),File FileReader 可以干什么? Ajax...
  12. 使用这6个技巧来物理保护 MacBook
  13. matlab做均值和方差,matlab求均值,方差
  14. 华为手机如何分享文件至电脑
  15. MATLAB强化学习入门——五、倒立摆的DQN神经网络控制
  16. xp计算机描述不能修改,如果WinXP无法更改密码怎么办?该怎么解决?
  17. 计算机一级word之sum函数,Word2013文档表格中利用SUM函数对数据进行计算的方法
  18. WebView打开第三方APP
  19. android 进程被回收,Android开发进阶:Activity和进程的回收和状态恢复
  20. 清除Chrome浏览器下默认浅黄色背景(保存密码时出现)

热门文章

  1. 西工大机考《 ERP原理及应用》大作业网考
  2. 道路测量xy坐标表示什么_cad里面什么叫绝对极坐标,相对极坐标,怎么区分他们?...
  3. DEP和ASLR的原理与破解
  4. cad如何多选对象_cad如何多选?在CAD里为什么只能选中一个对象,而不能累加选择多个对象?...
  5. Qt OpenGL加载OBJ模型
  6. iOS客户端安装包大小优化
  7. Jenkins下载安装及配置
  8. 【优化模型】每对顶点之间的最短路算法
  9. [渝粤教育] 内蒙古大学 微生物学 参考 资料
  10. PHP字符串函数 查找字符位置函数