本视频来源于Shusen Wang讲解的《分布式机器学习》,总共有三讲,内容和连接如下:

  • 并行计算与机器学习(上)
  • 并行计算与机器学习(下)
  • 联邦学习:技术角度的讲解

这一节讲解《并行计算与机器学习(上)》,这节课的主要内容:

  • Motivation:并行计算有什么用?为什么机器学习的人需要懂并行计算。
  • 最小二乘回归。
  • 用并行计算来解最小二乘回归。
  • 并行计算中的通信问题。
  • MapReduce,已经如何用MapReduce实现并行梯度下降,以及通信、同步的问题

首先,我们为什么需要对机器学习进行并行计算呢?这点其实很好理解,因为:

  • 机器学习模型通常很大:如ResNet-50有2500万个参数
  • 大模型是基于大数据训练的,比如ImageNet有1400万张图片
  • 大模型和大数据共同构成了大的计算开销
  • 利用并行计算可以使得运算更快(此处指的是钟表时间而不是总的计算量)

我们先以最小二乘法为例开始讲解:

最小二乘法的目标如上图所示,我们希望找到 www 使得 L(w)L(w)L(w) 最小。那么我们就是要求这么一个梯度:

假如我们有两块处理器,我们就可以将数据分为两份,由两个处理器分别执行,然后执行完再对数据进行合并(通信),如下:

通信的目的是做Aggregation,一般有两种通信方法,分别是 Share memory 和 Message passing。

Share memory 的架构图如上,简单来说就是不同的处理器共享一块内存,然后他们可以共同访问这一块内存,这样就很容易实现通信。这种方法有着一定的限制,因为处理器要连着同一个内存,这样就没办法同时用很多处理器进行工作,规模是上不去的。

另一种方法叫做 Message passing,有多个节点,节点的处理器之间是可以采用共享内存,节点之间不能共享内存。节点之间可以网线相连接也可以使用 TCP/IP 进行消息传递。这种方式可以适用于大规模的计算。做并行计算的时候,一个很重要的点是如何协调这些节点,于是我们有了 Client-Server 架构:

我们把一个节点作为server,用来协调其他节点,其他节点作为worker,用于计算。

另一种架构叫做P2P架构,每个节点有邻居,邻居之间可以通信。

然后我们讲一下如何用MapReduce做并行梯度下降。这个是MapReduce的简单介绍。

MapReduce是Client-Server架构,Server可以把信息广播到worker节点。Server先定义一个 Map 操作,这个 Map 操作是由worker节点完成,然后worker把结果传回client并处理,这个叫做reduce。

利用 MapReduce 做并行梯度计算的过程如上,过程也比较通俗易懂就不在加以解释了

那么假如有 mmm 个节点的话,我们可以吧数据均匀分给他们,那么差不多每个worker的运行时间变成了 1/m1/m1/m,当然实际上是不会降到那么低,因为还有同步的时间。这个加速比实际上如下图所示:

真实情况加速比实际上是到不了 mmm 的,如果算法或者模型不好,通信时间可能比计算时间要长很多。通信时间由两部分构成,一个是通信复杂度,一个是网络延迟。

还有一部分开销是由同步造成的,因为worker是有快有慢造成的。假如一个节点挂掉了那大家都得等它。

这种情况下,这个节点就叫做straggler,其会导致钟表时间增大,因为要等这个节点。概括一下,这节课程讲了一下几点:

  • 梯度下降可以用 MapReduce 进行并行化。
  • 并行化的过程中,数据被分给 worker 进行计算。
  • 每一个梯度下降过程包含一个广播、map和一个 reduce 操作。
  • 主要有计算代价、通信代价和同步代价。
  • 如果有 mmm 个 worker,那么加速比是低于 mmm 的。

欢迎关注公众号《差分隐私》

分布式机器学习(上)-并行计算与机器学习相关推荐

  1. 史上最强--机器学习入门

    让我们从机器学习谈起 导读:在本篇文章中,将对机器学习做个概要的介绍.本文的目的是能让即便完全不了解机器学习的人也能了解机器学习,并且上手相关的实践.当然,本文也面对一般读者,不会对阅读有相关的前提要 ...

  2. 资源 |​ 史上最全机器学习笔记

    本文由LCatro整理 机器学习 机器学习算法原理 https://github.com/wepe/MachineLearning 机器学习实战原书内容与批注 https://github.com/a ...

  3. 【机器学习】什么是机器学习?(上)

    转自慧安金科:https://blog.csdn.net/hajk2017/article/details/81142345 感谢博主 什么是机器学习?在搜索框内输入"机器学习", ...

  4. 机器学习入门系列(1)--机器学习概览(上)

    最近打算系统学习和整理机器学习方面的知识,会将之前看的 Andrew Ng 在 course 课程笔记以及最近看的书籍<hands-on-ml-with-sklearn-and-tf>结合 ...

  5. 当Sklearn遇上Plotly,机器学习变得如此简单、易于理解

    在学习sklearn(机器学习)过程中,模型原理可谓是枯燥无味,加上大多数模型训练过程也是不可见的,这使得很多小伙伴们望而却步,当然也有很多学者试图通过各种方式以可视化模型学习及预测过程,但大多数是复 ...

  6. rasp agent_Rasp Pi上的Perf机器学习

    rasp agent Raspberry Pi上的3种机器学习框架 (3 Frameworks for Machine Learning on the Raspberry Pi) The revolu ...

  7. 集成学习(上):机器学习基础task1-熟悉机器学习的三大主要任务

    机器学习基础task1-熟悉机器学习的三大主要任务 1.导论 1.1 回归 1.2 分类 1.3 无监督学习 学习内容来源链接 1.导论 什么是机器学习?机器学习的一个重要的目标就是利用数学模型来理解 ...

  8. 机器学习导论�_机器学习导论

    机器学习导论� Say you are practising basketball on your own and you are trying to shoot the ball into the ...

  9. 机器学习(一)机器学习概述

    机器学习概述 机器学习开发流程 流程图: 学习框架和资料介绍 需明确几点问题: (1)算法是核心,数据与计算是基础 (2)找准定位 大部分复杂模型的算法设计都是算法工程师在做,机器学习开发人员需要做的 ...

最新文章

  1. C#中字节数组与字符串的来回转换
  2. CSS系列——前端进阶之路:初涉Less
  3. Android studio java文件显示变为红色J
  4. C语言第五章实验二答案,《C语言程序设计》实验二 参考答案
  5. 深入理解定时器系列第三篇——定时器应用(时钟、倒计时、秒表和闹钟)
  6. java int 指针_如何在Java中使用指针?
  7. 2. 怎么根据nagios报警做出调整的
  8. [论文阅读] Learning a Unified Classifier Incrementally via Rebalancing
  9. 对字符串进行加密解密
  10. 给出年、月、日,计算该日是该年的第几天
  11. JavaScript中的ActiveXObject对象
  12. 老板子华硕A7N8X-X
  13. 基于MFFMB的电商评论文本分类研究
  14. L2-016 愿天下有情人都是失散多年的兄妹 (25 分)深度优先遍历
  15. 隐藏文件去掉隐藏属性
  16. 2020网络安全NISP一级(模拟题七)
  17. GP数据库安装以及使用
  18. cut out数据增强_谷歌大脑提出自动数据增强方法AutoAugment:可迁移至不同数据集...
  19. APP和WAP手机网站的区别
  20. win10 怎么清除电脑所有数据

热门文章

  1. Sql中的null 与不等于的比较
  2. orangepi安装PHP5,OrangePi Zero 制作NAS服务器
  3. HTML生成一个二维码,微信扫一扫,可以对网页分享
  4. 别人的【计算机视觉算法岗面经】“吐血”整理:2019秋招资料
  5. [已解决]failed to receive handshake ssl/tls connection failed github
  6. 【ORACLE】dmp格式导入导出,表没有数据的情况下,该表导入会缺失
  7. python接口自动化测试--基于加密接口的测试用例设计
  8. 数学-求和符号的性质
  9. 舜宇光学科技2018年净利润达24.9亿元 同比减少14.2%
  10. Ubuntu系统下C语言的简单使用及gcc和Makefile编译C程序