业界 | Poseidon:高效的分布式深度学习通信架构
来源:互联网 发布:编程错误error 编辑:程序博客网 时间:2024/06/12 03:39
参与:蒋思源、吴攀
近日,卡耐基梅隆大学(CMU)和 Petuum 推出了新一代高效的分布式深度学习通信架构 Poseidon。Poseidon 是一个易于使用,并能放大 DL 程序在 GPU 集群性能的通信架构。已存的 DL 程序不需要更改代码就能通过 Poseidon 在多个机器上自动最优地实现并行化,加速效果和机器数量呈线性增长关系。机器之心简要地介绍了该论文,详细内容请查看原论文。
论文:Poseidon: An Efficient Communication Architecture for Distributed Deep Learning on GPU Clusters
论文链接:https://arxiv.org/abs/1706.03292
深度学习模型在单 GPU 机器上可能需要花费数周的时间进行训练,因此将深度学习分布到 GPU 集群进行训练就显得十分重要了。然而相对于 CPU,拥有更大的吞吐量的 GPU 允许单位时间内处理更多的数据批量(batches),因此目前的分布式 DL 因为大量参数频繁地在网络中进行同步而表现不佳。
我们提出了 Poseidon,它是一个分布式 DL 在 GPU 上可实现高效通信的架构。Poseidon 利用深度程序中的层级模型结构而叠加通信与计算,这样以减少突发性网络通信。此外,Poseidon 使用混合的通信方案,并根据层级属性和机器数量优化每一层同步所要求的字节数。我们表明 Poseidon 能使 Caffe 和 TensorFlow 在 16 个单 GPU 机器上实现 15.5 倍的加速,而且该实验还是在有带宽限制(10GbE)并挑战 VGG19-22K 图像分类网络下完成的。此外,Poseidon 能使 TensorFlow 在 32 个单 GPU 机器上运行 Inception-V3 达到 31.5 倍的加速,相比于开源的 TensorFlow 实现 50% 的性能提升(20 倍加速)。
图1. 六层卷积神经网络
图 2:(a)参数服务器和(b)分布式 ML 的充分因子 broadcasting。
图 3:分布式环境中的(a)传统反向传播和(b)无等待(wait-free)反向传播。
表 2:用于参数同步的 Poseidon API。
图 4:Poseidon 架构的概览。
表 3:神经网络的评估。其中展示了单结点批量大小,这些批量大小是基于文献中的标准报告而选择的(通常最大的批量大小正好是 GPU 的内存大小)。
图 5:使用 Poseidon 平行化的 Caffe 和 40GbE 带宽训练的 GoogLeNet、VGG19 和 VGG19-22K,及它们训练时的吞吐量变化。单节点 Caffe 设置为基线(即加速=1)。
图 6:使用 Poseidon 平行化的 Caffe 和 40GbE 带宽训练的 Inception-V3、VGG19 和 VGG19-22K,及它们训练时的吞吐量变化。单节点 TensorFlow 设置为基线(即加速=1)。
图 7:在 8 个节点上使用不同系统训练三种网络的 GPU 计算分解和延迟时间。
图 8:使用 Poseidon 平行化的 Caffe 和不同网络带宽训练的 GoogLeNet、VGG19 和 VGG19-22K,及它们训练时的吞吐量变化。单节点 Caffe 设置为基线(即加速=1)。
图 9:(a)加速 vs. 节点数量和(b)使用 Poseidon TensorFlow 与原始 TensorFlow 训练 ResNet-152 的最佳测试误差 vs. epochs。
本文为机器之心编译,转载请联系本公众号获得授权。
- 业界 | Poseidon:高效的分布式深度学习通信架构
- 安装 360的 poseidon
- 分布式深度学习:神经网络的分布式训练
- 分布式深度学习:神经网络的分布式训练
- 通信业界的一些概念
- 深度学习的分布式训练
- 高效分布式爬虫系统的架构设计[申请专利]
- 深度梯度压缩:降低分布式训练的通信带宽
- 深度学习平台的分布式实现综述
- 分布式深度学习系列
- 分布式深度学习 CaffeOnSpark
- 业界最高效和强大的Java快速开发环境
- 分布式架构学习之:019--分布式服务子系统的划分
- 深度学习的硬件架构解析
- 【深度学习】详细的神经网络架构图
- 清晰高效的深度学习(Deep Learning)框架:Caffe
- Caffe-清晰高效的深度学习(deep learning)框架
- 架构师之路:Dubbo的分布式系统架构学习
- LLVM每日谈之二十五 Clangd和LSP
- 大小写转换
- hibernate学习教程-封装分页查询
- Akka之actor模型
- Python错误 SyntaxWarning: name 'xxx' is assigned to before global declaration
- 业界 | Poseidon:高效的分布式深度学习通信架构
- Docker之创建并进入mysql容器
- java基础之持有对象
- 人工智能之搜索方法
- spring cloud + spring boot + springmvc+mybatis分布式微服务云架构
- mt2503 [MAKE]加入BT switch机制后,makefile文件的变化
- windows平台使用Microsoft Visual C++ Compiler for Python 2.7编译python扩展
- 轻松学习 JavaScript:了解 let 语句
- Cordova App 打包全揭秘