如何将深度学习训练速度提升一百倍?PAISoar 来了( 四 )

1. 概述

近几年来深度学习发展迅速 , 图像处理、语音识别等领域都取得了飞速发展 。 例如在图片识别上 , 神经网络结构快速演进 , 分类的网络结构从 AlexNet、VGG、Inception V1 发展到了 Inception V4、Inception-ResNet、SENet 。 随着模型层次越来越深 , 参数越来越多 , 模型能力也越来越强 , ImageNet 数据集 Top-5 的错误率越来越低 , 目前降到了2.25%(人眼5.1%) 。

随着模型复杂度不断增长、训练样本的指数级增长 , 分布式进行高效并行的神经网络训练已经变得越发重要 。 在社区版 Tensorflow 中 , 分布式训练是基于 Parameter Server 模式进行多机训练的 。 在这种训练方式下训练任务通常会遇到以下挑战:

  1. Variable placement 策略 , 常用的 replica_device_setter 的策略是 round-robin over all ps tasks , 这种策略并没有考虑 Variable 大小 , 会导致参数分配不均衡 , 某些 ps 上分配的 Variable size 大就会成为通信瓶颈;

  2. 多个 Worker 访问同一个 PS 节点时 , 受 PS 节点带宽限制和 TCP 的拥塞窗口控制 , 会导致通信效率大幅降低 , 并且规模越大 , 效率越差;

    推荐阅读