TeslaK提供深度学习框架基准测试平台
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Tesla K80提供深度学习框架基准测试平台
案例简介
•本案例中香港浸会大学计算机科学系异构计算实验室使用Tesla K80集群对目前主流的五大深
度学习框架(Caffe,CNTK,MXNet,
TensorFlow和Torch)进行性能基准评测。
•In this case, researchers from the Heterogeneous Computing Laboratory of The Department of
Computer Science, Hong Kong Baptist University
conducted a comprehensive benchmarking and
comparative study on the running performance of
five state-of-the-art deep learning frameworks
(Caffe, CNTK, MXNet, TensorFlow and Torch) by
using the Tesla K80 cluster.
•本案例中用到NVIDIA GPU:16块 Tesla K80
背景
香港浸会大学异构计算实验室从2007年开始则研究GPU并行计算,在GPU计算与高性能计算领域有丰富的科研和实践经验。我们团队在各个应用领域的GPU优化算法都有较丰富的科研成果,如网络编码算法,基因匹配算法,机器学习算法等都取得突破性的性能提升。
我们团队在2014年与华为合作研究的深度学习的分布式计算框架。基于CXXNET框架,研发出基于MPI的分布式深度学习框架。同时,该框架也成功应用于ImageNet大规模图片识别的模型训练。当前,各大知名公司和研究单位开源优秀的深度学习框架,而各个框架在单GPU节点和多GPU节点的性能表现各不相同。香港浸会大学异构计算实验室对各大框架在Tesla GPU集群上进行性能基准评测。
在未来,深度学习框架由于出发点各不相同,在各种硬件资源下表现的性能也表现各异。我们采用取长补短的方式,对相关算法进行优化,使得深度学习框架可以更加充分地利用硬件资源,提高模型训练或测试速度。
挑战
深度学习算法在GPU上的优化很大情况下依赖于NVIDIA提供的cuDNN和cuBLAS软件库,然而不同厂商在设计自己的深度学习框架时在软件库使用和资源调度上存在较大的差异,所以在同样的硬件环境下,所表现出来的性能也有所不同。对于终端用户来讲,在众多深度学习框架中,较难选择较高性能的框架;对于研究人员来讲,每个框架都有自己的实现方法,很难知道哪一种实现方法已经是state-of-the-art。基于这两个问题,提供一个深度学习框架的性能基准评测是很有必要的。
深度学习社区的发展迅速,深度学习框架的更新迭代也非常之快,而每一次新的迭代出现的性能也存在差异。使得用户使用深度学习框架训练模型时间效率低下或无法发挥实际硬件的计算能力。
为快速评估出各个框架在一些通用的深度学习模型上的性能表现,我们设计基于Tesla K80硬件平台的性能基准测试,在同样的硬件环境下,评测5大深度学习框架在同样的深度网络模型的性能表现。以最公平的评测方式为用户展示性能测试结果比较,并持续更进框架版本更新,让用户在选择深度学习框架时对性能的表现有一个直观理解。
我们设计3类主流的深度神经网络(全连接网,卷积网和循环网络),每一种网络应用在主流的公开数据集上(MNIST,Cifar10,ImageNet和PTB)进行模型训练。如果只有一个GPU的情况下,所有测试的Case只能串行执行, 对所有框架的性能评测需要1周左右的时间,如此长的时间周期非常不利于与深度学习框架的更新保持同步,同时也大大地影响对深度学习框架的性能分析。
方案
16个节点的Tesla K80 GPU使我们对多个深度学习框架在性能上的全面评测成为可能。首先,在单GPU节点的性能评估上,可以使用16个节点对不同的深度学习框架并行测试,以快速产生结果。其次,对不同的深度学习框架可以在单机多卡的环境下进行性能评估,以对比不同框架在单机多卡的扩展性。最后,在跨机器的分布式计算的性能评估也成为现实,利用8台服务器,每台服务器部署2个Tesla K80,测试不同框架在分布式环境下的性能表现。
首先,在单GPU的性能评估上,不同的深度学习框架可以利用16块Tesla K80共32个GPU同时进行性能测试。我们总需要对6种不同的深度网络,每种深度网络需要跑5组不同的mini-batch大小,共有5个深度学习框架,即需测试150次。在单GPU的环境下,这150次只能串行进行,需要持续1周左右时间才能测试完毕,而利用Tesla K80的8节点集群(每节点2块K80),把150次测试用例平均到每个GPU上,这样即把测试时间缩短为原来的1/32,大大地提高的测试效率。
其次,不同深度学习框架在多GPU环境下的性能表现也不同,8节点的K80集群为我们提供了单机4个GPU的测试环境,以评估单机多卡的性能表现。在单机多卡的模型训练中,通常需要进行数据同步,而数据同时则需要将数据通过PCI-e进行传输。但目前PCI-e的速度远比GPU的计算性能要差,导致PCI-e的数据传输容易成为性能瓶颈,因此不同框架在数据同步方面会采取一些优化方案以减少PCI-e的数据传输。不同的框架则有不同的优化策略,通过性能的基准评测,我们可以测试出在哪些Case上怎样的策略是最优的。
最后,在深度学习框架的应用上,当需要处理更大型的任务时,往往需要多台GPU服务器协同工作以完成任务。深度学习框架也具备这样的特点,在分布式计算环境下,与单机多卡的环境类似,也需要进行数据同步,这不仅需要依赖于PCI-e的数据传输,还依赖于以太网或IB网的数据传输,使用分布式模型训练带来更大的挑战。因此,每个框架为减少网络传输和PCI-e传输对数据和算法的优化也各不相同。8台K80服务器也为我们提供这样的测试环境,以评估各个框架在分布式环境下的扩展性。
深度学习框架在GPU计算平台上的性能表现直接影响到用户在进行模型训练或推理时的效率,而深度学习的训练过程中,通常需要对深度网络的层数,每层节点数,连接结构和一些超参数等进行调整以达到最佳的表达能力,这就需要进行快速迭代来提高效率。因此,深度学习框架在某一个操作或某一个算法的性能提升直接关系到深度学习研究和开发人员的工作效率。我们使用提供的基于K80硬件环境下的性能基准测试则提供一个全面的评估,使用户更方便选择最优性能的框架,而对开发人员,即可以根据相应的性能劣势进一步地优化,提高硬件资源使用率。
目前,基于18块K80集群,我们只需要3天时间即可对5大深度学习框架进行全面的性能比较。
影响
通过16块K80集群,我们的基准测试可以大大地缩短评测周期,快速地响应深度学习框架的更新,为用户和开发者提供一个全面的性能比较。
目前我们开放的深度学习框架的性能基准评测已引起了Google,微软和亚马逊等大公司和学者的关注。在我们开放的性能评估的基础上,各大公司对其开源的深度学习框架的性能劣势做进一步的优化和性能提升。他们对性能进行优化后便集成进新版本中,我们又可以其新发布的版本快速地进行性能评估。这对整个深度学习框架的研究和开发是一个良性的循环。