IBM研究院利用新型软件技术,将深度学习性能推到新“制高点”

编译自:IBM 研究院院士 Hillery Hunter 的博客

摘要:IBM 研究院的新型分布式深度学习软件技术,在大型神经网络和大型数据集训练性能上创历史新高。

IBM 研究院宣布,通过全新的分布式深度学习软件实现了接近理想的扩展能力,该软件在 64 个 IBM Power 系统中的 256 个NVIDIA GPU 上使用 Caffe 深度学习框架,实现了 95% 的扩展效率。

之前的最佳扩展能力是 Facebook AI 研究院所取得的,他们利用Caffe2 进行训练的扩展效率为 89%,但数据通信开销(communication overhead)更高。凭借此软件,IBM 研究院使用一个非常大的数据集(750万张图像)训练神经网络时,最新图像识别准确率达到了33.8%,并且训练仅花了 7 个小时。Microsoft 之前发布的记录为 10 天达到 29.8% 的准确率。 

IBM PowerAI 4.0 发行版中现在已经提供了这段 IBM 研究院分布式深度学习代码的 TensorFlow 和 Caffe 技术预览版。

深度学习是一种广泛使用的 AI 方法,可以帮助计算机理解人们用以体验世界的图像和声音,并提取其中的含义。它有望帮助我们不仅提升用户移动设备体验,并且在医疗影像诊断等广阔领域取得突破。但是,大规模运行 AI 深度学习模型在技术上面临着困难,训练时间通常要持续数天甚至数周,这使得大规模部署深度学习的准确率和实用性进展受到了限制。

我们在IBM 研究院的团队致力于缩短使用大型数据集、训练大型模型的时间。我们的目标是将与深度学习训练相关的等待时间从数天或数小时缩短到几分钟或几秒钟,并提高这些 AI 模型的准确率。为此,我们正在解决在大量服务器和 NVIDIA GPU 间进行分布式深度学习的巨大挑战。

大多数流行的深度学习框架可扩展到一个服务器中的多个 GPU,但无法扩展到多个配有 GPU 的服务器。而我们团队(Minsik Cho、Uli Finkler、David Kung以及其他合作者)编写了软件和算法,能够对在数十个服务器中的数百个 GPU 加速器间并行运行的、非常庞大且复杂的计算任务进行自动优化。

我们的软件能够完全同步进行深度学习训练,并且数据通信开销非常低。因此,当我们扩展到一个包含数百个GPU 的大型集群,并使用ImageNet-22k 数据集的750 万张图像训练模型时,图像识别准确率史无前例地达到了33.8%,而 Microsoft此前发布的最好结果仅为29.8%。4% 的准确率提升是一次巨大的飞跃;因为过去一般提升不到 1%。由于能够充分利用配备了数百个 NVIDIA GPU 的数十台服务器,我们创新的分布式深度学习(DDL,Distributed deep learning) 方法不仅让我们提高了准确率,还能在短短 7 小时内训练一个 ResNet-101神经网络模型;而Microsoft 训练同一个模型需要花费 10 天时间。这一成果需要我们创建分布式深度学习代码和算法,解决对强大的深度学习框架进行扩展的固有难题。

Facebook AI 研究所 2017 年 6 月发表了一篇研究论文, 解释了他们使用更小的数据集 (ImageNet 1k) 和更小的神经网络 (ResNet 50) 所取得的出色成果,体现了固有难题:

“深度学习的蓬勃发展离不开大型神经网络和大型数据集。但是,网络和数据集越大,训练时间就越长,进而会阻碍研究和开发进度。”

具有讽刺意味的是,随着 GPU速度越来越快,在多个服务器间编排和优化深度学习也变得越来越困难。这使得深度学习系统在功能上有了缺陷,进而促使我们创建一种新型的分布式深度学习软件,能够以极高的性能和极高的准确率在大规模神经网络和数据集上运行 Tensorflow、Caffe、Torch 和 Chainer 等流行开源代码。

下面这个“盲人摸象”寓言的另一版本有助于描述我们正在解决的问题,以及我们实现的早期成果。摘自维基百科:

“……每位盲人触摸大象身体的不同部分,但仅触摸一部分,比如侧面或象牙。然后他们根据自己的部分体验来描述大象,所以他们对大象的描述完全不同。”

现在,尽管每个人的最初体验是不一样的,但如果为这些人提供足够的时间,他们可以分享足够的信息,从而拼凑出非常准确的完整的大象图片。

与此类似,如果你有一些 GPU 在忙碌地处理一个深度学习训练问题的各个元素 – 像目前的典型案例一样花数天或数周并行执行 –你可以非常轻松地同步这些学习结果。

但是,随着 GPU 变得更快,它们的学习速度也会更快,就需要使用传统软件完全无法达到的速度与所有其他 GPU 共享其学习结果。这是一个很棘手的技术问题,给系统网络带来了压力。基本来讲,更智慧且更快的学习者们(即GPU们) 需要更好的通信方式,否则它们将不同步,并会花费大部分时间等待获得彼此的结果。所以,通过使用更多、能更快学习的 GPU,你并没有获得更快的速度,甚至可能遇到性能下降的情况。

我们通过分布式深度学习 (DDL) 软件弥补的功能局限,主要体现在提高扩展效率以及如何在增加GPU 时实现接近完美的系统扩展性能上。这项指标展示了 256 个 GPU 如何高效地“交流”彼此的学习成果。

我们通过使用ImageNet-22K 数据集的 750 万张图像(批量处理的图像尺寸为 5120)来训练 ResNet-101 深度学习模型,证明了该分布式深度学习软件的扩展能力。团队使用了一个包含 64 台 IBM Power 服务器和总计256 个 NVIDIA P100 GPU 加速器的集群,以非常低的数据通信开销实现了 88% 的扩展效率。

Facebook AI 研究所 (FAIR) 的一个团队此前实现了 256 个 GPU 的最佳扩展能力。FAIR 在较小的数据集ImageNet-1K(拥有约 130 万张图像)上使用了一个较小的深度学习模型 ResNet-50,两者都降低了计算的复杂性,而且使用了 8192 这一更大的批处理尺寸,他们使用 Caffe2 深度学习软件,在由 256 个 NVIDIA P100 GPU 加速的集群上,实现了 89% 的扩展效率。使用ResNet-50 模型以及与 Facebook 相同的数据集,IBM 研究院的 DDL 软件使用 Caffe 实现了 95% 的效率,如下图所示。

IBM DDL 在 256 个 GPU 间的扩展性能

对于开发人员和数据科学家,IBM 研究院的分布式深度学习 (DDL) 软件提供了一个 API(应用编程接口),每个深度学习框架都可以接入该 API,从而扩展到多台服务器上。PowerAI 企业级深度学习软件第 4 版提供了一个技术预览版,使这项集群扩展功能可以用于任何使用深度学习框架训练其 AI 模型的组织。我们期望,通过为 AI 社区提供 DDL功能,更多的人将利用集群的强大功能进行 AI 模型训练,实现更高的准确性。