SpeeDO —— 并行深度学习系统

 
摘要: 最近,AlphaGo又带起了一波深度学习的热潮。深度学习在很多领域都大幅提高了模型的精度,使得很多以前在实验室中的技术得以运用到日常的生活之中。然而,大多数深度学习网络非常复杂,需要大量的训练样本进行训练, ...
 
 
最近,AlphaGo又带起了一波深度学习的热潮。深度学习在很多领域都大幅提高了模型的精度,使得很多以前在实验室中的技术得以运用到日常的生活之中。然而,大多数深度学习网络非常复杂,需要大量的训练样本进行训练,很多网络需要一次训练,同时额外多次的训练来调参数。时间效率上远远无法满足当前的工业需求。因此需要并行的深度学习系统提高训练速度。
 
各大公司在构建并行深度学习系统上投入了大量的精力,包括谷歌、Facebook、微软、腾讯和百度等等。为了提高算法的并行效率,这些系统大部分使用了多机多GPU的方式。所谓多机,即是大量的机器通过网络连接组成训练集群;多GPU即是集群内部的每台机器上包含多个GPU,通过数据并行(每个GPU训练部分数据)、模型并行(每个GPU训练部分网络)或者两者混合的方式提高加快训练速度。GPU浮点运行效率很高,这导致了并行系统的主要瓶颈在于I/O效率,因此这些系统使用了诸如InfiniBand和RDMA(Remote Direct Memory Access,全称远程直接数据存取,专用于解决网络传输中服务器端数据处理的延迟)等高性能技术, 而这些技术需要昂贵的硬件支持,大大增加了系统构建和维护的成本和难度,导致这些系统很难复制和普及到通用场景。
 
SpeeDO(Open DEEP learning System的逆序)是一个为通用硬件设计的并行深度学习系统。SpeeDO不需要特殊的I/O硬件,支持CPU/GPU集群,因此可以很方便地在各种云端环境上部署,如AWS、Google GCE、Microsoft Azure等等。
 
SpeeDO 采用了目前通用的参数服务器(parameter server)架构,依赖一系列基于JVM的开源库,使用Scala语言开发。
 
SpeeDO 的架构图如下图所示:
流程图如下图所示:
SpeeDO 的主要组件及其功能如下:
 
Caffe:开源深度学习库,基于C++,支持CPU/GPU。原版不支持多GPU/多机并行。
 
Akka:JVM上的消息队列库,负责参数服务器和工作节点之间的并发消息处理。
 
Redis:基于内存的高效并行Key-Value数据库。主要用于在参数服务器和工作节点之间传递训练的模型。这些模型一般比较大(几十至上千MB不等),不适合直接通过Akka进行传输。
 
Yarn:Hadoop2的资源管理组件,实现在多台机器上一键部署参数服务器和工作节点,实时监控各节点的运行状态,处理异常。
 
SpeeDO 提供docker镜像(只支持CPU)以方便系统的快速构建和测试,获取镜像:docker pull obdg/speedo:latest,使用方法请参考:https://github.com/openbigdatagroup/speedo。
 
关于SpeeDO 的更多细节,可以参阅发表在NIPS 2015 Machine Learning Systems Workshop上的论文:http://learningsys.org/papers/LearningSys_2015_paper_13.pdf。
 
SpeeDO的代码在Github上开源:https://github.com/openbigdatagroup/speedo,并提供了详细的安装脚本和Docker文件。
 
欢迎加入本站公开兴趣群
商业智能与数据分析群
兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识
QQ群:81035754
 
 
 
 
 

SpeeDO —— 并行深度学习系统的更多相关文章

  1. 百度DMLC分布式深度机器学习开源项目(简称“深盟”)上线了如xgboost(速度快效果好的Boosting模型)、CXXNET(极致的C++深度学习库)、Minerva(高效灵活的并行深度学习引擎)以及Parameter Server(一小时训练600T数据)等产品,在语音识别、OCR识别、人脸识别以及计算效率提升上发布了多个成熟产品。

    百度为何开源深度机器学习平台?   有一系列领先优势的百度却选择开源其深度机器学习平台,为何交底自己的核心技术?深思之下,却是在面对业界无奈时的远见之举.   5月20日,百度在github上开源了其 ...

  2. NNVM打造模块化深度学习系统(转)

    [摘录理由]: 之所以摘录本文,主要原因是:该文配有开源代码(https://github.com/dmlc/nnvm):读者能够直接体会文中所述的意义,便于立刻展开研究. MXNet专栏 :NNVM ...

  3. Google会思考的深度学习系统

    上周五在旧金山举行的机器学习会议上,Google软件工程师Quoc V. Le讲解了Google的"深度学习"系统是如何运作的. "深度学习"需要用到大型计算机 ...

  4. 《TensorFlow学习指南深度学习系统构建详解》英文PDF+源代码+部分中文PDF

    主要介绍如何使用 TensorFlow 框架进行深度学习系统的构建.涉及卷积神经网络.循环神经网络等核心的技术,并介绍了用于图像数据和文本序列数据的模型.给出了分布式深度学习系统在TensorFlow ...

  5. 从0开始配置ubuntu深度学习系统

    目录 个性化配置 ubuntu安装及其分区 NVIDIA驱动安装 配置使用清华源 安装shadowsocks-qt 安装chrome 安装gdebi 安装atom 安装wps 安装sogou piny ...

  6. 斯坦福新深度学习系统 NoScope:视频对象检测快1000倍

    以作备份,来源http://jiasuhui.com/archives/178954 本文由“新智元”(微信ID:AI_era)编译,来源:dawn.cs.stanford.edu,编译:刘小芹 斯坦 ...

  7. (转)分布式深度学习系统构建 简介 Distributed Deep Learning

    HOME ABOUT CONTACT SUBSCRIBE VIA RSS   DEEP LEARNING FOR ENTERPRISE Distributed Deep Learning, Part ...

  8. 谷歌发布了 T2T(Tensor2Tensor)深度学习开源系统

    谷歌开源T2T模型库,深度学习系统进入模块化时代! 谷歌大脑颠覆深度学习混乱现状,要用单一模型学会多项任务 https://github.com/tensorflow/models https://g ...

  9. 【转】贾扬清:希望Caffe成为深度学习领域的Hadoop

    [转:http://www.csdn.net/article/2015-07-07/2825150] 在深度学习(Deep Learning)的热潮下,Caffe作为一个高效.实用的深度学习框架受到了 ...

随机推荐

  1. 无限大整数相加算法的C语言源代码

    忙里偷闲,终于完成了无限大整数相加算法的C语言代码,无限大整数相加算法的算法分析在这里. 500位的加法运行1000次,不打印结果的情况下耗时0.036秒,打印结果的情况下耗时16.285秒. 下面是 ...

  2. java培训(5-8节课)

    面向对象: 1.利用面向对象的语法,实现代码的拆分(数据存储:对象的传值). 2.利用面向对象的语法,实现程序的结构处理(继承,多态,接口,抽象类). 3.用面向对象的编程方法,理解实现程序开发的框架 ...

  3. mysql 1045的的解决方案

    找到配置文件my.ini  ,然后将其打开,可以选择用记事本打开 打开后,搜索mysqld关键字 找到后,在mysqld下面添加skip-grant-tables,保存退出. 然后重启mysql服务 ...

  4. PHP知识分享之session && cookie

    <?php /* * @Content : session && cookie * @author : Mr.xml * @time : 2015-3-17 09:53:49 * ...

  5. W3C盒子与IE盒子模型

    盒模型: 内容(content).填充(padding).边界(margin). 边框(border) IE的content部分把 border 和 padding计算了进去 例:一个盒子的 marg ...

  6. pngfix 实现Png图片透明效果

    1.http://www.jb51.net/codes/67324.html 2.DD_belatedPNG工具

  7. Memcache存储大数据的问题

    Memcached存储单个item最大数据是在1MB内,假设数据超过1M,存取set和get是都是返回false,并且引起性能的问题. 我们之前对排行榜的数据进行缓存,因为排行榜在我们全部sql se ...

  8. cocos2d-x学习笔记------动画人物跑起来吧!

    学习总结: 1.sprintf用来格式化字符串 2.CCSpriteFrame:: frameWithTexture通过图片名创建的时候需要的参数Texture2D创建使用CCTextureCache ...

  9. hdu 1568 Fibonacci 数学公式

    Fibonacci Problem Description 2007年到来了.经过2006年一年的修炼,数学神童zouyu终于把0到的Fibonacci数列(f[0]=0,f[1]=1;f[i] = ...

  10. 【BZOJ】1070: [SCOI2007]修车

    1070: [SCOI2007]修车 Description 同 一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需 ...