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

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

原创
作者头像
house.zhang
修改2022-03-28 15:46:06
1.5K0
修改2022-03-28 15:46:06
举报
文章被收录于专栏:大数据及人工智能

由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
复制
     图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
复制
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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 工作原理
    • 镜像制作
    • 性能分析
      • 总结
      • 参考资料
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档