[论文解读] Purine: A bi-graph based deep learning framework
Purine 是一种基于双图的深度学习框架,将神经网络建模为由算子和数据张量组成的有向无环二分图,支持高效的事件驱动执行,并自动重叠内存传输与计算操作。通过通用任务分发器和图组合机制,统一支持数据并行和模型并行,实现了多GPU环境下的近线性加速,在12个GPU上使用每GPU批量大小为128的GoogLeNet模型时实现了12倍加速。
In this paper, we introduce a novel deep learning framework, termed Purine. In Purine, a deep network is expressed as a bipartite graph (bi-graph), which is composed of interconnected operators and data tensors. With the bi-graph abstraction, networks are easily solvable with event-driven task dispatcher. We then demonstrate that different parallelism schemes over GPUs and/or CPUs on single or multiple PCs can be universally implemented by graph composition. This eases researchers from coding for various parallelization schemes, and the same dispatcher can be used for solving variant graphs. Scheduled by the task dispatcher, memory transfers are fully overlapped with other computations, which greatly reduce the communication overhead and help us achieve approximate linear acceleration.
研究动机与目标
- 简化在多GPU和多机环境下实现各种并行化方案(数据并行、模型并行、混合并行)的实现。
- 通过事件驱动的任务分发器,将内存传输与计算重叠,降低分布式训练中的通信开销。
- 提供一个统一且可扩展的框架,将深度神经网络抽象为双图,解耦算法设计与底层并行化逻辑。
- 通过图迭代实现迭代训练过程(如SGD)的高效执行,避免计算图中出现循环依赖。
提出的方法
- 将深度神经网络表示为有向无环二分图(双图),包含两种顶点类型:算子(函数)和张量(数据)。
- 使用事件驱动的任务分发器,仅在所有输入张量准备就绪时触发算子执行,实现自动调度和依赖关系解析。
- 为张量和算子分配'位置'属性(主机名和设备ID),以指定GPU或CPU的分配,支持透明的多设备和多机执行。
- 引入'Copy'算子以实现跨设备边界的跨GPU和跨机器通信。
- 通过图组合实现并行化方案(数据并行、模型并行、混合并行),并复用同一分发器,无需为每种配置编写自定义代码。
- 在计算空闲阶段调度数据传输,实现通信与计算的重叠,最大限度减少空闲时间,提升效率。
实验结果
研究问题
- RQ1统一的双图抽象能否简化深度学习框架中多样化并行策略的实现?
- RQ2使用事件驱动任务调度,通信开销在分布式训练中能否被有效隐藏?
- RQ3在全连接层(传统上被视为通信瓶颈)中,数据并行能否被高效应用?
- RQ4通过单一分发器和图组合,能否在多GPU和多机环境下实现近线性加速?
主要发现
- 在12个GPU上使用每GPU批量大小为128的GoogLeNet模型时,Purine实现了每秒1383.7张图像的推理速度,表现出12倍加速。
- 由于有效重叠了内存传输与计算,该框架在12个GPU上实现了接近线性的扩展,即使在10 GbE网络环境下也表现良好。
- 当每GPU批量大小为32时,Purine在12个GPU上仍实现了9.53倍加速,表明在小批量设置下也具备出色的性能。
- 性能分析确认,CPU与GPU之间的内存复制操作与反向传播计算完全重叠,仅第一个卷积层造成轻微瓶颈。
- 该框架通过图迭代成功实现了SGD,通过将参数更新拆分为独立图,避免了循环依赖。
- 通用任务分发器的使用使得无需重构框架即可无缝支持数据并行、模型并行和混合并行。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。