Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >重磅!字节跳动开源高性能分布式训练框架BytePS:兼容TensorFlow、PyTorch等

重磅!字节跳动开源高性能分布式训练框架BytePS:兼容TensorFlow、PyTorch等

作者头像
代码医生工作室
发布于 2019-07-05 10:30:31
发布于 2019-07-05 10:30:31
2K00
代码可运行
举报
文章被收录于专栏:相约机器人相约机器人
运行总次数:0
代码可运行

整理 | 蔡芳芳

AI 前线导读: 近日,字节跳动人工智能实验室宣布开源一款高性能分布式深度学习训练框架 BytePS,在性能上颠覆了过去几年 allreduce 流派一直占据上风的局面,超出目前其他所有分布式训练框架一倍以上的性能,且同时能够支持 Tensorflow、PyTorch、MXNet 等开源库。

首先奉上 BytePS 开源项目地址:https://github.com/bytedance/byteps

BytePS 结合了字节跳动人工智能实验室几个月来对分布式训练通信的多个研究与优化成果,包含通信优先级调度、PS 的 RDMA 实现、针对 PCIe switch 与 NUMA 的优化,以及 BytePS 本身构架的创新等。

深度学习的效果取决于模型与数据,目前行业内不断刷新深度学习准确率的最新研究,大多都基于更大的模型以及更大的数据集。然而,大模型与大数据对训练时的计算能力提出了极高要求,单张 GPU 卡,或者单台服务器上的 GPU 卡,已经远远不能够满足内部训练任务的需求。因此,分布式训练的效率,即使用多台服务器协同进行训练,现在成为了深度学习系统的核心竞争力。

一直以来,在分布式训练中有两大流派,分别是 allreduce 和 PS(Parameter Server)。过去三年中,尤其是百度提出 allreduce,以及 Uber 开源基于 allreduce 的 Horovod 之后,行业内的认知中,allreduce 是最好的分布式训练通信方式,而过去的 PS 实现的性能也确实与 allreduce 存在一定差距。

BytePS 颠覆了 allreduce 长期领先的局面,BytePS 拥有着超出目前其他所有分布式训练框架一倍以上的性能,包括 NVIDIA 开源的 NCCL,Uber 开源的 Horovod,以及 Tensorflow、PyTorch、MXNet 自带的分布式训练方案等。

BytePS 开发团队表示,在公有云或者私有云这类共享集群中,经过精巧设计和高质量实现的 PS,PS 架构不仅不比 allreduce 差,而且在一些环境还能得到比 allreduce 还高一倍的速度。

为了做到针对云计算和共享集群场景的最优训练表现,BytePS 团队重新思考了最佳通信策略,不仅在机器内使用 NCCL,同时也重新部署了机器间的通信方式。

据介绍,在服务器内,GPU 是插在不同的 PCIe switch 上的,相同 PCIe switch 内的 GPU 通信带宽较高,跨 PCIe switch 的通信带宽就较小。NUMA 是指服务器上有不止一颗 CPU,CPU 内存也有类似问题:同 CPU 的内存访问带宽高,跨 CPU 的内存访问带宽低。BytePS 会根据这些信息,有选择地分配数据在 CPU 和 GPU 中的内存位置,以及哪块内存和哪块内存通信,从而最大化通信带宽。

BytePS 构架本身也做了一些重要设计,使得 PS 架构理论上的潜能得以实现,包括:Tensor 自动切分、多级灵活流水线处理、网络通信优先级调度、ZeroMQ 优化、共享内存 zero-copy、RDMA 实现和 PS 端多队列多线程优化。

更详细的实现原理参见:https://github.com/bytedance/byteps/blob/master/docs/rationale.md

性能表现

测试中,BytePS 团队使用了公有云上的虚拟机,每个虚拟机有 8 张 Tesla V100 16GB GPU,GPU 之间通过 NVLink 进行高速互连。每个 GPU 上的 batch size 选取为 64。虚拟机之间通过 20Gbps 的 TCP/IP 网络进行连接。在这种情况下,由于机器之内带宽足够大,TCP/IP 的网络带宽则成为了主要瓶颈。

BytePS 选择了 Resnet50 和 VGG16 两个模型进行评测,其中 Resnet50 是计算密集型的模型(对通信要求低,优化空间小),VGG16 是通信密集型的模型(对通信要求高,优化空间大),对照组选择了目前市面上最流行的通信框架之一 Horovod-NCCL(基于 allreduce 算法实现),性能指标为每秒钟训练的 ImageNet 图片数量,越高代表越好。

通过两组实验结果可以看出,对于计算密集型的 Resnet50 模型,BytePS 性能超过 Horovod-NCCL 近 44%;而对于通信密集型的 VGG16 模型,BytePS 性能可以超过 Horovod-NCCL 将近 100%。

BytePS 团队也在配有 100Gbps 的 RDMA 网络的私有集群做了测试,BytePS 也有一定的性能提升,具体分析参见 Github( https://github.com/bytedance/byteps)。

除了在性能上超出目前其他所有分布式训练框架外,BytePS 可以兼容 Tensorflow、PyTorch、MXNet 等训练框架。BytePS 团队表示,开发者只需要非常少的改动,就可以使用 BytePS 框架进行分布式训练,享受 BytePS 带来的高性能。

此前行业里的 PS 实现,都是针对特定通用框架,例如专门为 TensorFlow 实现的 PS,也有专门为 MXNet 实现的 PS。

字节跳动人工智能实验室开源的 BytePS,通过实现一个通用的抽象层,抽象层可以被各种通用框架引用,实现了同时支持多个框架的可能性,因此能够支持 Tensorflow、PyTorch、MXNet 等行业主流训练框架。

BytePS 提供了 TensorFlow、PyTorch、 MXNet 以及 Keras 的插件,用户只要在代码中引用 BytePS 的插件,就可以获得高性能的分布式训练。BytePS 的核心逻辑,则实现在 BytePS core 里。具体的通信细节,完全由 BytePS 完成,用户完全不需要操心。

快速上手 BytePS

使用 BytePS 前,假设你已经安装了以下一种或更多框架:TensorFlow、Keras、PyTorch、MXNet 等。BytePS 主要基于 CUDA 和 NCCL。

复制 BytePS 和第三方依赖:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone --recurse-submodules https://github.com/bytedance/byteps

进入 BytePS 文件目录,并安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python setup.py install

注意:你可能需要设置 BYTEPS_USE_RDMA=1 来安装 RDMA 支持。

现在你可以试试我们已有的示例。假设你使用 MXNet,并想尝试 Resnet50 训练基准。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export NVIDIA_VISIBLE_DEVICES=0,1 \
       DMLC_NUM_WORKER=1 \
       DMLC_NUM_SERVER=1 \
       DMLC_WORKER_ID=0 \
       DMLC_ROLE=worker \
       DMLC_PS_ROOT_URI=10.0.0.1 \
       DMLC_PS_ROOT_PORT=1234 \
       DMLC_INTERFACE=eth0

python byteps/launcher/launch.py byteps/example/mxnet/train_imagenet_byteps.py --benchmark 1 --batch-size=32

对于分布式训练,你可能需要建立一个服务器镜像。研发团队提供了 Docker 文件 作为例子。你可以将同样的镜像用于调度和服务器。

关于如何启动分布式任务的内容和更多上手教程可参考:https://github.com/bytedance/byteps/tree/master/docs

如何在已有代码中使用 BytePS

虽然内核设计有所不同,但 BytePS 和 Horovod 接口高度兼容,我们希望通过 Horovod 接口减少用户测试 BytePS 的工作量。

如果你的任务只依赖于 Horovod 的 allreduce 和广播,你可以在一分钟内切换到 BytePS。只需要用 import byteps.tensorflow as bps 替换 import horovod.tensorflow as hvd,并将代码中所有的 hvd 替换成 bps 即可。

BytePS 的局限和未来计划

BytePS 目前不支持单纯的 CPU 训练,其中一个原因是 BytePS 的部分底层逻辑可能无法支持。因此你需要使用 CUDA 或 NCCL 来构建和运行 BytePS。

未来 BytePS 计划增加以下特性:

  • 稀疏模型训练
  • 异步训练
  • 容错机制
  • 延迟减缓

BytePS 团队表示,深度学习领域仍然有非常大的空间和可能性值得行业同仁们一起探索,开源 BytePS,是希望利用 BytePS 在性能和功能上的先进性,降低开发者和深度学习领域参与者们的门槛,帮助更多同道中人一起探索深度学习,提升 AI 应用效率。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 相约机器人 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
字节跳动开源高性能分布式训练框架BytePS,支持PyTorch、TensorFlow等
最近,字节跳动发布了一款通用高性能分布式训练框架 BytePS,该框架支持 TensorFlow、Keras、PyTorch 和 MXNet,并且可以在 TCP 或 RDMA 网络上运行。
机器之心
2019/07/12
1.2K0
字节跳动开源高性能分布式训练框架BytePS,支持PyTorch、TensorFlow等
字节跳动开源分布式训练框架BytePS,登上GitHub热榜
字节跳动开源了通用分布式训练框架BytePS,这个框架支持TensorFlow、Keras、PyTorch、MXNet,可以运行在TCP或RDMA网络中。
量子位
2019/07/08
1.3K0
字节跳动开源分布式训练框架BytePS,登上GitHub热榜
字节跳动开源分布式训练框架BytePS,登上GitHub热榜
字节跳动开源了通用分布式训练框架BytePS,支持TensorFlow、Keras、PyTorch、MXNet,可以运行在TCP或RDMA网络中,大大优于现有的开源分布式训练框架。
昱良
2019/07/04
9760
字节跳动开源分布式训练框架BytePS,登上GitHub热榜
分布式深度学习最佳入门(踩坑)指南
本文主要介绍了分布式深度学习的各框架以及一些分布式深度学习训练中的常见问题,如:docker及ssh环境问题、nccl多机通信问题等。
计算机视觉
2021/01/14
3.6K0
分布式深度学习最佳入门(踩坑)指南
大幅提升训练性能,字节提出新型分布式DNN训练架构
现有的分布式 DNN 训练架构无法充分利用异构资源实现高性能训练。近期,来自字节跳动和清华大学的研究人员提出一种新型分布式 DNN 训练架构——BytePS,解决了这一问题,实现了大规模训练性能的显著提升。这项工作已在国际顶级计算机系统会议 OSDI’20 上发表,其开源代码在 GitHub 上获得 2400 stars。
石晓文
2020/12/22
1.9K0
大幅提升训练性能,字节提出新型分布式DNN训练架构
业界 | 详解Horovod:Uber开源的TensorFlow分布式深度学习框架
选自Uber 作者:Alex Sergeev、Mike Del Balso 机器之心编译 参与:李泽南、路雪 Horovod 是 Uber 开源的又一个深度学习工具,它的发展吸取了 Facebook「一小时训练 ImageNet 论文」与百度 Ring Allreduce 的优点,可为用户实现分布式训练提供帮助。本文将简要介绍这一框架的特性。 近年来,深度学习引领了图像处理、语音识别和预测等方面的巨大进步。在 Uber,我们将深度学习应用到了公司业务中,从自动驾驶搜索路线到防御欺诈,深度学习让我们的数据科
机器之心
2018/05/08
3.3K0
业界 | 详解Horovod:Uber开源的TensorFlow分布式深度学习框架
基于Pytorch多机分布式训练的实现
由Uber公司的开发的Horovod架构,是一个集成了多个深度学习的统一平台,提供分布式训练效率的同事,让深度学习分布式训练变得更方便。
house.zhang
2022/03/28
1.6K0
云原生分布式深度学习初探
大规模数据以及大型的神经网络结合在很多机器学习的任务上带来了超凡的表现。在训练深度学习模型的时候,当数据以及参数量变大的时候计算资源是决定我们算法迭代速度的关键要素之一。
溪歪歪
2020/09/09
1.6K1
云原生分布式深度学习初探
数据集暴增压力下,微信「扫一扫」识物训练如何优雅破局?
引言 微信“扫一扫”识物上线一段时间,由前期主要以商品图(鞋子/箱包/美妆/服装/家电/玩具/图书/食品/珠宝/家具/其他)作为媒介来挖掘微信内容生态中有价值的信息,扩张到各种垂类领域的识别,包括植物/动物/汽车/果蔬/酒标/菜品/地标识别等,识别核心依托于深度学习的卷积神经网络模型。随着每天千万级的增长数据和越来越多的模型参数量,深度学习训练一次时间大概需要一周左右。如何能够快速训练优化模型并上线,成为我们亟待解决的问题。 一、引言 如今,依托强大的GPU算力,深度学习得到迅猛发展。在图像处理、语音识
腾讯大讲堂
2020/06/01
2K0
一万亿模型要来了?谷歌大脑和DeepMind联手发布分布式训练框架Launchpad
正如吴恩达所言,当代机器学习算法的成功很大程度上是由于模型和数据集大小的增加,在大规模数据下进行分布式训练也逐渐变得普遍,而如何在大规模数据、大模型的情况下进行计算,还是一个挑战。
新智元
2021/07/06
5240
快手八卦!突破TensorFlow、PyTorch并行瓶颈的开源分布式训练框架来了!
近日,快手和苏黎世理工宣布开源分布式训练框架 Bagua(八卦),相比于 PyTorch、TensorFlow 等现有深度学习开源框架仅针对系统层面进行优化,Bagua 突破了这一点,专门针对分布式场景设计了特定的优化算法,实现了算法和系统层面的联合优化,性能较同类提升 60%。
Ai学习的老章
2021/07/28
7850
GPU 分布式 AI 训练加速引擎 TACO-Training 容器方案首发!
背景 随着 AI 模型规模的越来越大,训练数据的越来越多,用户对模型的迭代效率也要求越来越高,单个 GPU 的算力显然无法满足大部分业务场景,使用单机多卡或多机多卡训练成为趋势。单机多卡训练场景的参数同步借助目前 NVIDIA NVLINK 技术已经得到了很好地解决,而多机多卡场景由于对网络通信的强依赖就没有那么简单。 目前网卡厂商提供的 RoCE 等 RDMA 技术,使得多机通信效率大幅提升,但是如何在25G或 50G VPC 网络环境下提升分布式训练系统的通信效率,仍然是目前公有云厂商亟需解决的
腾讯云计算产品团队
2021/11/26
1.5K0
GPU 分布式 AI 训练加速引擎 TACO-Training 容器方案首发!
冯克环,腾讯云异构计算研发工程师,专注于云上 AI 训练加速相关技术,对 GPU 虚拟化、GPU 训练加速有深厚的积累,目前负责腾讯云 AI 训练加速相关技术的研发以及性能优化工作。 张锐,腾讯云网络虚拟化研发工程师,在之前的工作中专注于 AI 训练网络优化方面的工作,在 RDMA、GPU 通信优化等方面有较多经验,目前专注于做云上AI训练通信优化方面的工作。 背景 随着 AI 模型规模的越来越大,训练数据的越来越多,用户对模型的迭代效率也要求越来越高,单个 GPU 的算力显然无法满足大部分业务场景,使
腾讯云原生
2021/11/26
1.3K0
PyTorch 分布式训练原来可以更高效 | Q推荐
2017 年,Facebook 开源了针对深度学习的框架 PyTorch。PyTorch 可以帮助开发者和研究人员更加轻松的构建和训练模型。凭借其简单易用、功能强大、用途广泛等特点,PyTorch 广受欢迎,且至今仍是最火的深度学习框架之一。 近年来,随着数据集和模型规模的日益庞大,出于效率考虑,开发者通常采用分布式训练的方式,提⾼训练速度以加快模型迭代。流行的深度学习框架 PyTorch 也为分布式训练提供了内置支持。PyTorch 的分布式训练方式主要有 DP (DataParallel)、DDP (
深度学习与Python
2023/03/29
1.2K0
PyTorch 分布式训练原来可以更高效 | Q推荐
新晋IEEE Fellow给字节跳动设计这样一张网!
今年 数据通信领域喜报连连 先有Nick大神荣获Bell Medal 然后研发IPv6路由的张老师喜提院士 上月最新IEEE Fellow评选揭晓字节跳动 郭传雄因对数据中心网络设计的贡献而获选 IEEE Fellow,即为 IEEE 会士,是 IEEE 最高等级会员,是 IEEE 授予成员的最高荣誉,在学术科技界被认定为权威的荣誉和重要的职业成就。当选人需要对工程科学与技术的进步或应用做出重大贡献,为社会带来重大价值。当选人数不超过 IEEE 当年会员总数的 0.1%。 郭大神当年在微软时 就专注于RDM
用户6874558
2023/02/15
1.7K0
新晋IEEE Fellow给字节跳动设计这样一张网!
伯克利与微软联合发布:任意网络结构下的最优GPU通信库Blink
随着机器学习模型,和数据量的不断增长,模型训练逐渐由单机训练,转变为分布式的多机训练。在分布式深度学习中,数据并行是最为常用的模型训练方式。然而数据并行的模型训练过程中,需要频繁的做数据聚合/模型同步。参与运算的 GPU 数量越多,其对应的数据聚合的开销也会越大。当下单个 GPU 的算力不断增加,GPU 间的数据聚合成成了新的分布式机器学习的瓶颈。
机器之心
2019/12/05
5980
[源码解析] 深度学习分布式训练框架 Horovod (1) --- 基础知识
Horovod 是Uber于2017年发布的一个易于使用的高性能的分布式训练框架,在业界得到了广泛应用。
罗西的思考
2021/06/10
2.2K0
[源码解析] 深度学习分布式训练框架 Horovod (1) --- 基础知识
Tensorflow框架是如何支持分布式训练的?
大数据时代的互联网应用产生了大量的数据,这些数据就好比是石油,里面蕴含了大量知识等待被挖掘。深度学习就是挖掘数据中隐藏知识的利器,在许多领域都取得了非常成功的应用。然而,大量的数据使得模型的训练变得复杂,使用多台设备分布式训练成了必备的选择。
AI科技大本营
2019/05/06
1.5K0
Tensorflow框架是如何支持分布式训练的?
为了加速在GPU上进行深度学习训练,NVIDIA原来还做了这么多事情,你都知道么?
不同行业采用人工智能的速度取决于最大化数据科学家的生产力。NVIDIA每个月都会发布优化的NGC容器,为深度学习框架和库提供更好的性能,帮助科学家最大限度地发挥他们的潜力。英伟达持续投资于完整的数据科学栈,包括GPU架构、系统和软件栈。这种整体的方法为深度学习模型培训提供了最好的性能,NVIDIA赢得了提交给MLPerf的所有六个基准测试,这是第一个全行业的AI基准测试。NVIDIA在最近几年引入了几代新的GPU架构,最终在Volta和图灵GPU上实现了张量核心架构,其中包括对混合精度计算的本机支持。NVIDIA在MXNet和PyTorch框架上完成了这些记录,展示了NVIDIA 平台的多功能性。
GPUS Lady
2019/04/29
2.3K0
为了加速在GPU上进行深度学习训练,NVIDIA原来还做了这么多事情,你都知道么?
TACO云原生最佳实践
业界AI应用中,GPU的使用逐渐增加,腾讯云TACO是一种异构计算加速软件服务,搭配腾讯自研的软硬件协同优化组件和硬件厂商特有优化方案,支持物理机、云服务器、容器等产品的计算加速、图形渲染、视频转码各个应用场景,帮助用户实现全方位全场景的降本增效。
远远小七宝
2022/12/01
1.2K0
TACO云原生最佳实践
推荐阅读
相关推荐
字节跳动开源高性能分布式训练框架BytePS,支持PyTorch、TensorFlow等
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验