高性能计算技术也能助推大规模深度学习(百度实践)

简介: 本文描写了百度硅谷人工智能实验室在深度学习框架中引入HPC技术的实践,通过对OpenMPI里ring all-reduce算法进行改进,使语音识别训练模型的性能得到数十倍的提升,最后百度开源了其实现,希望更多的人受益。

更多深度文章,请关注:https://yq.aliyun.com/cloud

作者简介:

1ce2199fbc603a104d7e1c2d7598193e2fac99c0

Tiffany Trader,毕业于圣地亚哥州立大学和加州州立大学,长期致力于高性能计算、云计算、绿色计算新闻报道和分析,2015年开始担任全球知名高性能计算新闻网站HPCwire的总编辑。Tiffany Trader 的LinkedIn主页Twitter主页


    来自百度硅谷人工智能实验室(SVAIL)的研究人员改进了众所周知的HPC通信技术,提升了通信速度,并且扩大了他们的神经网络训练规模,今天,在知名深度学习社区分享了他们的实现。

    百度改进的这个技术就是OpenMPI算法ring all-reduce,在百度的语音识别模型(Deep Speech 2,建立在多个GPU计算节点之上)并行训练中使用了ring all-reduce算法,百度在今年2月开源了两个软件包,一个是baidu-allreduce c库(一个小型C++库),另一个是tensorflow-allreduce(给tensorflow 0.12.1打了一个补丁),使用tensorflow建立的模型可以使用这个新的版本,利用它的跨多设备并行处理能力。相关代码托管在GitHub上,有兴趣的读者点击前面的链接即可。

    百度的SVAIL团队大约两年前开始在他们内部的深度学习框架(名叫Gene and Majel,为了向著名的星际旅行创立者Gene Roddenberry和他的第二任妻子Majel Barrett致敬)上使用这个算法,百度研究人员表示,在HPC领域,大家对这个算法早已是老生常谈,但在人工智能和深度学习领域,这个算法却未被充分利用。

    SVAIL团队成员大都来自高性能计算领域。百度研究科学家Shubho Sengupta说:“ring all-reduce算法其实是OpenMPI的一部分,但OpenMPI本身并不是很快,我们在刚用它来进行训练时遇到了不少问题,我们发现它的伸缩能力有限,但我们又很想让它具有良好的伸缩性,因此我们决定研究它的源代码,最终发现这个算法的效率不高,我们就重新实现了这个算法”。

    SVAIL研究人员重写的ring all-reduce算法性能更好,也更稳定,与OpenMPI最大的差别是,SVAIL实现的算法避免了CPU和GPU之间额外的副本传输。

    Sengupta解释,“OpenMPI在这些矩阵通信时,如果矩阵在GPU内存中,它实际上会复制一份到CPU内存中,这种做法是非常浪费资源的,实际上可以不用复制,只需要编写一个小的内核来减少GPU内存空间即可,当你在一个节点内执行all-reduce,并且所有GPU都在一个PCI根复合体中时这种方法特别有用,在GPU内存空间就可以完成一切任务,就是这么一个简单的想法,最终我们的算法实现比OpenMPI自身的要快得多”。

516720dc3fd12b9d50342efc534509cf18c3dcee

Ring all-reduce,所有GPU同时发送数据

    SVAIL除了在算法实现上有突破外,他们还注重高速网络(InfiniBand)和软硬一体设计,最终使GPU纵向扩展到128个,具体细节请查阅2015年12月SVAIL团队发布的论文“Deep Speech 2:中英文端到端语音识别”。通过对ring all-reduce算法的改进,与OpenMPI(v1.8.5)相比,百度SVAIL团队在同等GPU数量的情况下,将速度提升了2.3-21.4倍。

    Sengupta表示,GPU数量很少时速度是最快的,“8颗GPU是快大约20倍,睡着GPU数量的增加,性能反而会有所下降,因为必须通过网络将数据发送给CPU,但在我们内部的框架上,我们可以将GPU数量扩大到128颗,实现线性扩展”。

be1c1c6e1ec53f5561e8e8b40a7374511d004ea4

两种all-reduce算法实现的性能对比(单位:秒)

    Deep Speech 2论文发布后,SVAIL团队开始收到来自社区想了解实现细节的请求,由于这个算法与SVAIL的深度学习框架专利结合得太紧密了,因此,他们就创建了两种实现方法,一个是针对TensorFlow的,另一个就是更通用的。

    领导TensorFlow补丁工作的Gibiansky阐述了他们多管齐下传播信息的方法,“看看这篇博客你就知道了,如果你在使用TensorFlow,可以使用我们提交的补丁版本来训练你的模型,如果你是深度学习的作者,你可以看看我们的C库,并集成它,通过我们内部的尝试结果来看还是非常成功的,我们希望让更多的人受益于此”。

    Sengupta就深挖HPC技术用于深度学习分享了一个有趣的观点, “搞深度学习的人总认为MPI是一项过时的技术,并且好像和深度学习也没什么关系,但我认为使用MPI也可以搭建非常快的集合,并且支持同步梯度下降,使收敛速度更快,不需要用到异步梯度下降就能得到结果”。

    关于百度ring all-reduce算法的详细解释,请看百度研究院的这篇博客文章,对于百度开源的深度学习框架PaddlePaddle来说,它还使用了其它大量的技术来保证高性能节点的扩展,有兴趣的同学可以到PaddlePaddle的主页去看看。

 数十款阿里云产品限时折扣中,赶紧点击领劵开始云上实践吧!

以上为译文。

本文由北邮@爱可可-爱生活 老师推荐,阿里云云栖社区组织翻译。

文章原标题《HPC Technique Propels Deep Learning at Scale

作者:Tiffany Trader,译者:耕牛的人,审校:身形。

文章为简译,更为详细的内容,请查看原文

 

相关文章
|
14天前
|
机器学习/深度学习
深度学习中的正则化技术:防止过拟合的利器
【10月更文挑战第30天】本文将深入探讨深度学习中一个关键概念——正则化,它如同园艺师精心修剪枝叶,确保模型不至于在训练数据的细节中迷失方向。我们将从直观的角度理解正则化的重要性,并逐步介绍几种主流的正则化技术,包括L1和L2正则化、Dropout以及数据增强。每种技术都将通过实际代码示例来展示其应用,旨在为读者提供一套完整的工具箱,以应对深度学习中的过拟合问题。
|
13天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的地面垃圾识别分类技术
AI垃圾分类系统结合深度学习和计算机视觉技术,实现高效、精准的垃圾识别与自动分类。系统集成高精度图像识别、多模态数据分析和实时处理技术,适用于市政环卫、垃圾处理厂和智能回收设备,显著提升管理效率,降低人工成本。
基于深度学习的地面垃圾识别分类技术
|
7天前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能与深度学习:探索未来技术的无限可能
在21世纪,人工智能(AI)和深度学习已经成为推动科技进步的重要力量。本文将深入探讨这两种技术的基本概念、发展历程以及它们如何共同塑造未来的科技景观。我们将分析人工智能的最新趋势,包括自然语言处理、计算机视觉和强化学习,并讨论这些技术在现实世界中的应用。此外,我们还将探讨深度学习的工作原理,包括神经网络、卷积神经网络(CNN)和循环神经网络(RNN),并分析这些模型如何帮助解决复杂的问题。通过本文,读者将对人工智能和深度学习有更深入的了解,并能够预见这些技术将如何继续影响我们的世界。
36 7
|
7天前
|
机器学习/深度学习 算法 自动驾驶
深度学习中的图像识别技术
【10月更文挑战第37天】本文将深入探讨深度学习在图像识别领域的应用,通过解析神经网络模型的构建、训练和优化过程,揭示深度学习如何赋能计算机视觉。文章还将展示代码示例,帮助读者理解并实现自己的图像识别项目。
|
8天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习中的图像识别技术及其应用
【10月更文挑战第36天】在当今科技飞速发展的时代,深度学习已成为人工智能领域的一颗璀璨明珠。本文将深入探讨深度学习在图像识别方面的技术原理和应用实例,旨在为读者提供一个全面而深入的了解。我们将从基础理论出发,逐步揭示深度学习如何革新了我们对图像数据的处理和理解方式。
|
13天前
|
机器学习/深度学习 监控 PyTorch
深度学习工程实践:PyTorch Lightning与Ignite框架的技术特性对比分析
在深度学习框架的选择上,PyTorch Lightning和Ignite代表了两种不同的技术路线。本文将从技术实现的角度,深入分析这两个框架在实际应用中的差异,为开发者提供客观的技术参考。
33 7
|
10天前
|
机器学习/深度学习 算法 TensorFlow
深度学习中的图像识别技术
【10月更文挑战第34天】本文将探讨深度学习在图像识别领域的应用,并介绍如何利用Python和TensorFlow库实现一个简单的图像分类模型。我们将从基本原理出发,逐步讲解数据准备、模型构建、训练过程以及结果评估等关键步骤。通过本文的学习,读者可以了解到深度学习在图像识别中的强大能力,并掌握如何使用现代工具和技术来解决实际问题。
23 2
|
16天前
|
机器学习/深度学习 编解码 算法
什么是超分辨率?浅谈一下基于深度学习的图像超分辨率技术
超分辨率技术旨在提升图像或视频的清晰度,通过增加单位长度内的采样点数量来提高空间分辨率。基于深度学习的方法,如SRCNN、VDSR、SRResNet等,通过卷积神经网络和残差学习等技术,显著提升了图像重建的质量。此外,基于参考图像的超分辨率技术通过利用高分辨率参考图像,进一步提高了重建图像的真实感和细节。
|
23天前
|
机器学习/深度学习 监控 自动驾驶
深度学习中的图像识别技术及其应用
【10月更文挑战第20天】本文将探讨深度学习在图像识别领域的应用,包括其原理、关键技术和实践案例。我们将从基础概念出发,逐步深入到模型构建、训练技巧以及性能评估等高级话题。通过实例分析,揭示深度学习如何革新传统图像处理流程,提升识别准确率和效率。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和实用的知识。
|
26天前
|
机器学习/深度学习 数据采集 人工智能
数据驱动的AI技术:如何通过深度学习提升图像识别精度
【10月更文挑战第18天】 数据驱动的AI技术:如何通过深度学习提升图像识别精度
47 0

热门文章

最新文章