前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基于Pytorch多机分布式训练的实现

基于Pytorch多机分布式训练的实现

原创
作者头像
house.zhang
修改于 2022-03-28 07:46:06
修改于 2022-03-28 07:46:06
1.6K0
举报

由Uber公司的开发的Horovod架构,是一个集成了多个深度学习的统一平台,提供分布式训练效率的同事,让深度学习分布式训练变得更方便。

前言

     在深度学习领域中,当计算数据较多或者模型较大时,为提高模型训练效率,一般采用多GPU的分布式训练,常见的深度学习框架都支持分布式训练,虽然这些框架都各自有分布式实现,但不能统一到一个平台上,造成使用上体验不好,由Uber公司的开发的Horovod架构,它是一个集成了多个深度学习的统一平台,提供分布式训练同时则让深度学习分布式训练变得更方便。本文主要对Horovod的工作原理进行简单介绍,然后给出TI上包含镜像制作以及ti平台的使用。

工作原理

     Uber公司开发的Horovod架构是利用nvidia的NCCL2作为底层的通信基础,实现了单机多卡,多机多卡分布式训练高效的线性加速。为了更好描述NCCL2的通信原理,下面通过两幅图进行表述:图1是单机多卡的通信原理(GPU Direct P2P),图2是多机多卡的通信原理(GPU Direct RDMA)。从图中可以看到,无论单机的GPU通信还是多机的GPU通信,只需要保证GPU在相同PCI-e总线下,即可实现GPU对其他GPU Memory的访问,最终达到高带宽、低延迟和低资源利用率的效果。这点对于深度学习的模型训练而言,通过利用GPU间高带宽完成梯度更新 + 参数更新,可明显的提高整个训练速度。

在这里插入图片描述
在这里插入图片描述
代码语言:txt
AI代码解释
复制
     图1:单机多卡GPU Direct P2P 
在这里插入图片描述
在这里插入图片描述

     图2表明跨机的通信,需要网络设备的支持(即网络设备和GPU挂载相同的PCI-e总线下),通信的技术为RDMA,目前RDMA的实现方式主要分为InfiniBand和Ethernet两种传输网络。

镜像制作

     官方提供的ubuntu16.04制作有点问题,首先是gcc版本太高编译通不过,需要降级gcc g++到4.9版本,这个制作过程还是躺了不少坑的。

  • 版本信息FROM nvidia/cuda:9.0-devel-ubuntu16.04

ENV TENSORFLOW_VERSION=1.12.0

ENV PYTORCH_VERSION=1.3.0

ENV TORCHVISION_VERSION=0.4.1

ENV CUDNN_VERSION=7.4.1.5-1+cuda9.0

ENV NCCL_VERSION=2.3.7-1+cuda9.0

ENV MXNET_VERSION=1.4.1

ENV PYTHON_VERSION=3.5如下修改:# downgrade gcc g++ ,becase tensorflow incompatable

RUN apt-get install -y gcc-4.9 && apt-get install -y g++-4.9 && \

cd /usr/bin && \

rm gcc && \

ln -s gcc-4.9 gcc && \

rm g++ && \

ln -s g++-4.9 g++ && \

gcc --version

另外镜像处理了ssh生成秘钥操作,分布式计算节点ssh通信可以无密访问了:

代码语言:txt
AI代码解释
复制
RUN ssh-keygen -t rsa && \
    cat ~/.ssh/id_rsa.pub  >> ~/.ssh/authorized_keys	

详情可以联系作者查看dockerfile文件。

性能分析

   本文使用Pytorch MNIST搭建手写识别算法作为GPU分布式训练性能测试的脚本,所用脚本和训练数据(pytorch_mnist.py + mnist.npz)可以从附件中下载,所在应用组资源有限只分配个位数卡,M40机器还只有1机2卡的机型,暂时只验证对比了M40:1机1卡,1机2卡和2机2卡,2机4卡 ,基本上算是基本功能的验证。其它bg同时如果有更多GPU资源可以做更多对比。

测试数据集: Pytorch MNIST 60000 samples (batch size=100)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

    文章简单说明了horovod镜像制作流程,以及简单的对比了性能

参考资料

【1】https://www.infoq.cn/article/J4ry_9bsfbcNkv6dfuqC

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
分布式AI训练软件栈&硬件栈技术详解
分布式TensorFlow 神经网络训练基准测试参考 驱动、内核软件、训练框架和集群通信软件准备 网络、服务器和容器平台配置 通过NCCL和Horovod集群通信框架,分布式运行集群训练任务 http
用户7623498
2020/08/04
1.3K0
分布式AI训练软件栈&硬件栈技术详解
分布式深度学习最佳入门(踩坑)指南
本文主要介绍了分布式深度学习的各框架以及一些分布式深度学习训练中的常见问题,如:docker及ssh环境问题、nccl多机通信问题等。
计算机视觉
2021/01/14
3.6K0
分布式深度学习最佳入门(踩坑)指南
[源码解析] 深度学习分布式训练框架 horovod (16) --- 弹性训练之Worker生命周期
Horovod 是Uber于2017年发布的一个易于使用的高性能的分布式训练框架,在业界得到了广泛应用。
罗西的思考
2021/07/21
5230
[源码解析] 深度学习分布式训练框架 horovod (16) --- 弹性训练之Worker生命周期
云原生的弹性 AI 训练系列之一:基于 AllReduce 的弹性分布式训练实践
高策,腾讯高级工程师,Kubeflow 社区训练和自动机器学习工作组 Tech Lead,负责腾讯云 TKE 在 AI 场景的研发和支持工作。 张望,腾讯高级工程师,从事 GPU 虚拟化和分布式训练加速,负责腾讯云 TKE 在 AI 场景的研发和支持工作。 引言 随着模型规模和数据量的不断增大,分布式训练已经成为了工业界主流的 AI 模型训练方式。基于 Kubernetes 的 Kubeflow 项目,能够很好地承载分布式训练的工作负载,业已成为了云原生 AI 领域的事实标准,在诸多企业内广泛落地。 尽管
腾讯云原生
2021/03/15
1.7K0
Horovod 分布式深度学习框架相关
安装 cuda 9.0; https://www.cnblogs.com/xuyaowen/p/nvidia-driver-cuda-installation.html
西湖醋鱼
2020/12/30
6680
Horovod 分布式深度学习框架相关
快手八卦!突破TensorFlow、PyTorch并行瓶颈的开源分布式训练框架来了!
来源:AI前线 本文约5200字,建议阅读8分钟 本文介绍了专门针对分布式场景设计了特定的优化算法同比,性能较同类提升60%。 近日,快手和苏黎世理工宣布开源分布式训练框架 Bagua(八卦),相比于 PyTorch、TensorFlow 等现有深度学习开源框架仅针对系统层面进行优化,Bagua 突破了这一点,专门针对分布式场景设计了特定的优化算法,实现了算法和系统层面的联合优化,性能较同类提升 60%。 研发背景 随着摩尔定律的失效,单个计算单元的能力已经远远无法满足数据的指数级增长。比如,快手每天上传
数据派THU
2023/03/29
4380
快手八卦!突破TensorFlow、PyTorch并行瓶颈的开源分布式训练框架来了!
【一】分布式训练---单机多卡多机多卡(飞桨paddle1.8)
     加快模型的训练速度。通过对训练任务按照一定方法拆分分配到多个计算节点进行计算,再按照一定的方法对需要汇总的信息进行聚合,从而实现加快训练速度的目的。
汀丶人工智能
2022/12/21
1.8K0
【一】分布式训练---单机多卡多机多卡(飞桨paddle1.8)
字节跳动开源分布式训练框架BytePS,登上GitHub热榜
字节跳动开源了通用分布式训练框架BytePS,这个框架支持TensorFlow、Keras、PyTorch、MXNet,可以运行在TCP或RDMA网络中。
量子位
2019/07/08
1.3K0
字节跳动开源分布式训练框架BytePS,登上GitHub热榜
聊一聊深度学习分布式训练
在深度学习时代,训练数据特别大的时候想要单卡完成训练基本是不可能的。所以就需要进行分布式深度学习。在此总结下个人近期的研究成果,欢迎大佬指正。
NewBeeNLP
2022/06/06
3.4K2
聊一聊深度学习分布式训练
突破 PyTorch、TensorFlow 并行瓶颈的开源训练加速框架到底是啥?
随着摩尔定律的失效,单个计算单元的能力已经远远无法满足数据的指数级增长。比如,快手每天上传的新视频超过千万条,即便训练简单的分类模型(比如 ResNet),使用单机单卡的算力,训练快手日内新增视频都需要超过一百天的时间。因此,在数据爆炸性增长的互联网行业,多机多卡的并行训练成为了大数据时代的必然。随着深度学习模型功能的日益强大,分布式训练任务的通信成本和所需算力也随之急剧增长。
代码医生工作室
2021/10/19
5280
重磅!字节跳动开源高性能分布式训练框架BytePS:兼容TensorFlow、PyTorch等
AI 前线导读: 近日,字节跳动人工智能实验室宣布开源一款高性能分布式深度学习训练框架 BytePS,在性能上颠覆了过去几年 allreduce 流派一直占据上风的局面,超出目前其他所有分布式训练框架一倍以上的性能,且同时能够支持 Tensorflow、PyTorch、MXNet 等开源库。
代码医生工作室
2019/07/05
2K0
重磅!字节跳动开源高性能分布式训练框架BytePS:兼容TensorFlow、PyTorch等
一万亿模型要来了?谷歌大脑和DeepMind联手发布分布式训练框架Launchpad
正如吴恩达所言,当代机器学习算法的成功很大程度上是由于模型和数据集大小的增加,在大规模数据下进行分布式训练也逐渐变得普遍,而如何在大规模数据、大模型的情况下进行计算,还是一个挑战。
新智元
2021/07/06
5260
6个github中star数最多的基于pytorch的衍生库
截止2022年11月8日,统计了下github中获星较多的pytorch生态库,有
用户9875047
2022/12/07
6760
6个github中star数最多的基于pytorch的衍生库
使用Python实现深度学习模型:分布式训练与模型并行化
随着深度学习模型的复杂度和数据量的增加,单一设备的计算能力往往无法满足训练需求。分布式训练和模型并行化技术可以有效地加速模型训练过程,提高计算效率。本文将介绍如何使用Python实现深度学习模型的分布式训练与模型并行化。
Echo_Wish
2024/07/09
2770
使用Python实现深度学习模型:分布式训练与模型并行化
[源码解析] 深度学习分布式训练框架 Horovod (1) --- 基础知识
Horovod 是Uber于2017年发布的一个易于使用的高性能的分布式训练框架,在业界得到了广泛应用。
罗西的思考
2021/06/10
2.2K0
[源码解析] 深度学习分布式训练框架 Horovod (1) --- 基础知识
字节跳动开源高性能分布式训练框架BytePS,支持PyTorch、TensorFlow等
最近,字节跳动发布了一款通用高性能分布式训练框架 BytePS,该框架支持 TensorFlow、Keras、PyTorch 和 MXNet,并且可以在 TCP 或 RDMA 网络上运行。
机器之心
2019/07/12
1.2K0
字节跳动开源高性能分布式训练框架BytePS,支持PyTorch、TensorFlow等
[源码解析] 深度学习分布式训练框架 horovod (12) --- 弹性训练总体架构
Horovod 是Uber于2017年发布的一个易于使用的高性能的分布式训练框架,在业界得到了广泛应用。
罗西的思考
2021/07/14
1K0
[源码解析] 深度学习分布式训练框架 horovod (12) --- 弹性训练总体架构
OneFlow | 新深度学习框架后浪(附源代码)
随着深度学习的发展,用户越来越依赖 GPU 或者其他加速器进行大规模运算。人工智能(Artificial Intelligence)需要更优秀的软件来释放硬件的能量已成业界共识。一方面,各种框架需要进一步降低编写深度学习分布式训练程序的门槛;另一方面,用户期待系统可以支持不同的深度学习网络模型,并实现线性加速。各知名深度学习框架正在朝这方面努力,但用户在使用这些框架时仍会遇到横向扩展性的难题,或者是投入很多计算资源但没有看到效率收益,或者是问题规模超过 GPU 显存限制而无法求解。
计算机视觉研究院
2020/08/06
1.1K0
OneFlow | 新深度学习框架后浪(附源代码)
伯克利与微软联合发布:任意网络结构下的最优GPU通信库Blink
随着机器学习模型,和数据量的不断增长,模型训练逐渐由单机训练,转变为分布式的多机训练。在分布式深度学习中,数据并行是最为常用的模型训练方式。然而数据并行的模型训练过程中,需要频繁的做数据聚合/模型同步。参与运算的 GPU 数量越多,其对应的数据聚合的开销也会越大。当下单个 GPU 的算力不断增加,GPU 间的数据聚合成成了新的分布式机器学习的瓶颈。
机器之心
2019/12/05
6020
PyTorch 分布式训练原来可以更高效 | Q推荐
2017 年,Facebook 开源了针对深度学习的框架 PyTorch。PyTorch 可以帮助开发者和研究人员更加轻松的构建和训练模型。凭借其简单易用、功能强大、用途广泛等特点,PyTorch 广受欢迎,且至今仍是最火的深度学习框架之一。 近年来,随着数据集和模型规模的日益庞大,出于效率考虑,开发者通常采用分布式训练的方式,提⾼训练速度以加快模型迭代。流行的深度学习框架 PyTorch 也为分布式训练提供了内置支持。PyTorch 的分布式训练方式主要有 DP (DataParallel)、DDP (
深度学习与Python
2023/03/29
1.2K0
PyTorch 分布式训练原来可以更高效 | Q推荐
推荐阅读
分布式AI训练软件栈&硬件栈技术详解
1.3K0
分布式深度学习最佳入门(踩坑)指南
3.6K0
[源码解析] 深度学习分布式训练框架 horovod (16) --- 弹性训练之Worker生命周期
5230
云原生的弹性 AI 训练系列之一:基于 AllReduce 的弹性分布式训练实践
1.7K0
Horovod 分布式深度学习框架相关
6680
快手八卦!突破TensorFlow、PyTorch并行瓶颈的开源分布式训练框架来了!
4380
【一】分布式训练---单机多卡多机多卡(飞桨paddle1.8)
1.8K0
字节跳动开源分布式训练框架BytePS,登上GitHub热榜
1.3K0
聊一聊深度学习分布式训练
3.4K2
突破 PyTorch、TensorFlow 并行瓶颈的开源训练加速框架到底是啥?
5280
重磅!字节跳动开源高性能分布式训练框架BytePS:兼容TensorFlow、PyTorch等
2K0
一万亿模型要来了?谷歌大脑和DeepMind联手发布分布式训练框架Launchpad
5260
6个github中star数最多的基于pytorch的衍生库
6760
使用Python实现深度学习模型:分布式训练与模型并行化
2770
[源码解析] 深度学习分布式训练框架 Horovod (1) --- 基础知识
2.2K0
字节跳动开源高性能分布式训练框架BytePS,支持PyTorch、TensorFlow等
1.2K0
[源码解析] 深度学习分布式训练框架 horovod (12) --- 弹性训练总体架构
1K0
OneFlow | 新深度学习框架后浪(附源代码)
1.1K0
伯克利与微软联合发布:任意网络结构下的最优GPU通信库Blink
6020
PyTorch 分布式训练原来可以更高效 | Q推荐
1.2K0
相关推荐
分布式AI训练软件栈&硬件栈技术详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档