Horovod 分布式深度学习框架相关
最近需要 Horovod 相关的知识,在这里记录一下,进行备忘:
- 分布式训练,分为数据并行和模型并行两种;
- 模型并行:分布式系统中的不同GPU负责网络模型的不同部分。神经网络模型的不同网络层被分配到不同的GPU或者同一层内部的不同参数被分配到不同的GPU之上;
- 数据并行:不同的GPU有同一个模型的多个副本,每个GPU分配到不同的数据,然后将所有的GPU的结果按照某种方式合并;
- 不同的GPU,可以是同一台机器之上的多个GPU或者是不同机器上的GPU;

- 在数据并行过程中,各个GPU之间需要同步模型参数,参数分为 同步更新和异步更新两种情况;
- 图中的Machine可以认为是GPU或者是CPU;也有 数据并行和模型并行的混合模式;模型并行各个部分存在一定的依赖,规模伸缩性差;而数据并行中,各个部分独立,规模伸缩性好;实际训练过程中更多使用数据并行;
- 数据并行会涉及到各个 GPU 之间同步模型参数,一般分为同步更新和异步更新。同步更新要等到所有 GPU 的梯度计算完成,再统一计算新权值,然后所有 GPU 同步新值后,才进行下一轮计算。异步更新,每个 GPU 梯度计算完后,无需等待其他 GPU 的梯度计算(有时可以设置需要等待的梯度个数),可立即更新整体权值,然后同步此权值,即可进行下一轮计算。同步更新有等待,异步更新基本没有等待,但异步更新涉及到梯度过时等更复杂问题;在实际应用中,单机多卡的同步式数据并行是最常用的,在论文中最常见的训练方式是单机八卡。数据再多时,一般就需要多机多卡;
- 无论是单机多卡,还是多机多卡,都是分布式训练;
保持更新,更多内容请关注 cnblogs.com/xuyaowen;
Horovod 安装:
安装 cuda 9.0; https://www.cnblogs.com/xuyaowen/p/nvidia-driver-cuda-installation.html
编译安装nccl 根据cuda 9.0; https://www.cnblogs.com/xuyaowen/p/nccl-learning.html
安装 gcc 4.9: https://www.cnblogs.com/xuyaowen/p/gcc-49-install-on-ubuntu.html
python 版本 Python 3.6.9 (具体环境请自行适配)
安装 openmpi 4.0 : https://www.cnblogs.com/xuyaowen/p/openmpi-40-install.html
pip 安装 Horovod 框架:
HOROVOD_NCCL_HOME=nccl的home目录 HOROVOD_NCCL_LIB=nccl的lib目录 HOROVOD_NCCL_INCLUDE=nccl的include目录 HOROVOD_GPU_ALLREDUCE=NCCL pip install --no-cache-dir horovod
HOROVOD_NCCL_HOME=/home/name/nccl/build/ HOROVOD_NCCL_LIB=/home/name/nccl/build/lib/ HOROVOD_NCCL_INCLUDE=/home/name/nccl/build/include/ HOROVOD_GPU_ALLREDUCE=NCCL pip install --no-cache-dir horovod
安装后,使用:python -c "import horovod.tensorflow as hvd;" 命令进行测试,如果无错误输出,则表示安装成功;之后可参考官方手册使用Horovod;
➜ openmpi python -c "import horovod.tensorflow as hvd;"
/home/name/anaconda3/envs/gnnalgos/lib/python3./site-packages/tensorflow/python/framework/dtypes.py:: FutureWarning: Passing (type, ) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (,)) / '(1,)type'.
_np_qint8 = np.dtype([("qint8", np.int8, )])
/home/name/anaconda3/envs/gnnalgos/lib/python3./site-packages/tensorflow/python/framework/dtypes.py:: FutureWarning: Passing (type, ) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (,)) / '(1,)type'.
_np_quint8 = np.dtype([("quint8", np.uint8, )])
/home/name/anaconda3/envs/gnnalgos/lib/python3./site-packages/tensorflow/python/framework/dtypes.py:: FutureWarning: Passing (type, ) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (,)) / '(1,)type'.
_np_qint16 = np.dtype([("qint16", np.int16, )])
/home/name/anaconda3/envs/gnnalgos/lib/python3./site-packages/tensorflow/python/framework/dtypes.py:: FutureWarning: Passing (type, ) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (,)) / '(1,)type'.
_np_quint16 = np.dtype([("quint16", np.uint16, )])
/home/name/anaconda3/envs/gnnalgos/lib/python3./site-packages/tensorflow/python/framework/dtypes.py:: FutureWarning: Passing (type, ) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (,)) / '(1,)type'.
_np_qint32 = np.dtype([("qint32", np.int32, )])
/home/name/anaconda3/envs/gnnalgos/lib/python3./site-packages/tensorflow/python/framework/dtypes.py:: FutureWarning: Passing (type, ) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (,)) / '(1,)type'.
np_resource = np.dtype([("resource", np.ubyte, )])
安装测试结果
参考连接:
https://github.com/horovod/horovod (官方文档,可以参考安装和使用)
https://www.infoq.cn/article/J4ry_9bsfbcNkv6dfuqC
http://fyubang.com/2019/07/08/distributed-training/ (讲解了分布式多卡训练相关的基础知识)
分布式多卡-pytorch,tensorflow 系列教程 (较为详细的教程,讲解了现有较为优秀的框架的特点和使用方式)
https://zhuanlan.zhihu.com/p/78303865 (安装使用参考,本文中的安装步骤参考此教程)
Horovod 分布式深度学习框架相关的更多相关文章
- 使用horovod构建分布式深度学习框架
最近两周一直在尝试着分布式深度学习的架构,主要的原因一方面是几台机子全是1060卡,利用深度网络在较大数据样本上训练的效率极其低下,所以尝试着将几台机子做成分布式,看看能否提高训练效率:第二方面是有人 ...
- TensorFlow与主流深度学习框架对比
引言:AlphaGo在2017年年初化身Master,在弈城和野狐等平台上横扫中日韩围棋高手,取得60连胜,未尝败绩.AlphaGo背后神秘的推动力就是TensorFlow--Google于2015年 ...
- 人工智能深度学习框架MXNet实战:深度神经网络的交通标志识别训练
人工智能深度学习框架MXNet实战:深度神经网络的交通标志识别训练 MXNet 是一个轻量级.可移植.灵活的分布式深度学习框架,2017 年 1 月 23 日,该项目进入 Apache 基金会,成为 ...
- 转:TensorFlow和Caffe、MXNet、Keras等其他深度学习框架的对比
http://geek.csdn.net/news/detail/138968 Google近日发布了TensorFlow 1.0候选版,这第一个稳定版将是深度学习框架发展中的里程碑的一步.自Tens ...
- 分布式深度学习DDL解析
分布式深度学习DDL解析 一.概述 给一个庞大的GPU集群,在实际的应用中,现有的大数据调度器会导致长队列延迟和低的性能,该文章提出了Tiresias,即一个GPU集群的调度器,专门适应分布式深度学习 ...
- 贾扬清分享_深度学习框架caffe
Caffe是一个清晰而高效的深度学习框架,其作者是博士毕业于UC Berkeley的 贾扬清,目前在Google工作.本文是根据机器学习研究会组织的online分享的交流内容,简单的整理了一下. 目录 ...
- Nebula Graph 技术总监陈恒:图数据库怎么和深度学习框架进行结合?
引子 Nebula Graph 的技术总监在 09.24 - 09.30 期间同开源中国·高手问答的小伙伴们以「图数据库的设计和实践」为切入点展开讨论,包括:「图数据库的存储设计」.「图数据库的计算设 ...
- 28款GitHub最流行的开源机器学习项目,推荐GitHub上10 个开源深度学习框架
20 个顶尖的 Python 机器学习开源项目 机器学习 2015-06-08 22:44:30 发布 您的评价: 0.0 收藏 1收藏 我们在Github上的贡献者和提交者之中检查了用Python语 ...
- 深度学习与CV教程(8) | 常见深度学习框架介绍
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...
随机推荐
- openwrt_在PPPOE上网的同时_访问光猫
openwrt_在PPPOE上网的同时_访问光猫 转载注明来源: 本文链接 来自osnosn的博客,写于 2019-11-14. 参考文章: 光猫桥接模式下,通过路由器访问光猫.简单设置 设置Open ...
- webpack动态加载打包chunk命名
最近,遇到复杂h5页面开发,为了优化H5首屏加载速度,想到使用按需加载的方式,减少首次加载的JavaScript文件体积,于是将处理过程在这里记录一下,涉及到的主要是以下三点: 使用Webpack如何 ...
- 好的js书写习惯
1:单一判断 bad if (result) { console.log("秋叶"); } if (!result) { console.log("秋叶"); ...
- QT--吃月亮小游戏
QT--吃月亮小游戏 简介: 该设计使用了鼠标事件.键盘事件.绘图事件,可通过鼠标或者方向键控制人物移动吃到月亮 代码: 1.widget.h文件: #ifndef WIDGET_H #define ...
- 47-准备 Overlay 网络实验环境
为支持容器跨主机通信,Docker 提供了 overlay driver,使用户可以创建基于 VxLAN 的 overlay 网络.VxLAN 可将二层数据封装到 UDP 进行传输,VxLAN 提供与 ...
- python 基础学习笔记(7)--迭送器
**函数名的运用** - [ ] 函数名是一个变量, 但它是一个特殊的变量, 与括号配合可以执行函数的变量 **函数名的内存地址** ``` def func(): print('666') p ...
- Redhat Linx使用Centos yum源
一.故障现象: 在安装了Read linux后,使用yum安装软件,出现如下提示:[root@localhost~]# yum install xxxLoaded plugins: product-i ...
- springboot+quartz+数据库存储
Spring整合Quartz a.quartz调度框架是有内置表的 进入quartz的官网http://www.quartz-scheduler.org/,点击Downloads, 下载后在目录\do ...
- R-6 线性回归模型流程
本节内容: 0:小知识 1:新数据要如何进行分析 2:第二步骤:理解数据 3:第三步骤:相关分析 4:特殊点 0:小知识 0.1:我们说对分析一个数据一般是分步骤的:那么我们可以对其中的步骤进行打标签 ...
- Oracle 11gR2中HR用户安装说明
1.脚本下载: 链接: 1,脚本放在这个目录下$ORACLE_HOME/demo/schema/human_resources hr_analz.sql hr_code.sq ...