返回 登录
0

SenseTime(商汤科技)HPC团队:如何实现Caffe训练GoogLeNet加速近14倍

高性能计算的概念很早就被大家所熟知,但是随着近几年深度学习的发展,高性能计算才开始得到越来越多的关注。SenseTime(商汤科技)作为一家专注于计算机视觉和深度学习原创技术的科技创新公司,为解决深度学习模型大、训练时间长等业界普遍面对的问题,组建了一支在应用算法上造诣深厚的HPC团队,为深度学习训练及应用部署提供高效引擎。本文为SenseTime HPC部门的相关实践经验分享。

目前,SenseTime HPC部门拥有2000片以上NVIDIA GPU,4000多x86 CPU核心,150TB以上内存,以及4000TB硬盘空间的硬件部署,为其基于深度学习的人脸识别、文字识别、人体识别、车辆识别、物体识别、图像处理等技术提供了一个稳定可靠的平台,使其在金融、移动互联网、安防监控三大行业中与商业伙伴携手高效前行。

图片描述

SenseTime HPC团队,左起:孔畅,孙刚,刘文志,高洋,颜深根

CSDN:构建作为深度学习(DL)平台的HPC,与传统HPC有什么不同?其技术水平具体受哪些因素制约?

SenseTime:面对的需求不同。传统HPC需要面对大量不同的应用——比如说,超算中心的用户有石油企业、气象单位等。

作为当下热门的深度学习(DL)平台的HPC,由于应用场景的限定使HPC可以做得非常高效。

例如,SenseTime 以深度学习(DL)见长,HPC可以为其依托深度学习的技术服务的金融、移动互联网、安防监控三大行业做更多贴合应用场景的高效改进,使其技术更高效地服务大众。

对深度学习平台的HPC来说,其技术水平受如下条件制约:

  1. 拥有的硬件数量和质量,巧妇难为无米之炊,要发挥HPC水平,需要足够的高质量硬件。SenseTime HPC部门总共具有2000片以上NVIDIA GPU,4000多x86 CPU核心,150TB以上内存,4000TB硬盘空间。

  2. 拥有的HPC人才数量和质量。人才是将无数个想法真正落地的保障。SenseTime具有十几位在各个领域工作过的HPC员工,近一半来自BAT HPC部门,部分在BAT时已经成为中坚力量。

  3. 拥有的深度学习人才的数量和质量。需求是动力,SenseTime的深度学习部门提出的需求促使HPC部门员工解决困难,更好的完成工作。

CSDN:能否介绍SenseTime在DL方面做了哪些工作?如何克服挑战用HPC来支持这些工作?

SenseTime:我们在DL方面的工作可以从三个角度来看:

  • 人才战略:成功聚集了当下华人中顶级的深度学习、计算机视觉科学家,包括一批来自于谷歌、百度、微软、联想等公司的产业界领军人物。

  • 技术积累:拥有超过十年的积累,包括基于深度学习的人脸识别、文字识别、人体识别、车辆识别、物体识别和图像处理等技术,包括深度学习平台的构建和优化。

  • 市场战略:深耕金融、移动互联网、安防监控三大行业,与银联、京东、拉卡拉、华为、小米、新浪微博、科大讯飞、东方网力、英伟达等各行业巨头深度合作,推动行业产品智能化升级。

深度学习模型大、训练时间长,使用HPC技术来支持的深度学习,主要受硬件计算性能、硬件的搭配(如内存和芯片、主板的配置)、软件环境、算法和员工水平等因素制约。

SenseTime主要通过以下方法来克服这些挑战:

  1. 市场战略合作:SenseTime与各行业领军企业共赢共进的理念为我们赢得了很多深度而长期的战略支持,比如我们与和NVIDIA的合作,为HPC提供了更优的硬件配置;

  2. 集聚精英人才: SenseTime的HPC团队是由曾在NVIDIA、百度、阿里等工作过的优秀人才组成,这些同事在常见的HPC应用算法上具有非常高的造诣。人才为我们的算法研究能力提供了保障。

  3. 提升应用能力:SenseTime演化优化ARM、x86和GPU上应用的能力。我们的一些HPC常见的算法性能已经接近甚至超过了许多开源库,SenseTime优化的多GPU版本Caffe在8卡K80机器(总共16个GPU)在GoogLeNet上获得了近14倍的加速。

目前,我们自主开发了基于GPU的多卡、多机训练系统,训练系统的性能也已经处于世界前列。在技术上,SenseTime拥有x86/GPU/ARM/FPGA全方位的优化人员。

CSDN:关于近14倍的加速,是从哪些方面进行优化的?K80是有两个GPU的,是否单芯片性能更强的K40更适合DL?另外除了Caffe之外,SenseTime针对其他的深度学习框架进行优化的效果如何?

SenseTime:要发挥一个多GPU计算平台的性能,需要综合考虑两个方面的因素:

  1. 充分优化应用,将单GPU的计算能力发挥到极致。为此我们使用了NVIDIA的CUDNN库,将其性能优势发挥到极致,并且给NVIDIA提供了许多建议(比如如何进一步优化卷积性能,如何提升矩阵向量乘性能,一些bug汇报等)。

  2. 对于多GPU应用来说,如何安排异步计算以掩盖PCI-e带宽对多GPU应用的性能非常重要。我们通过吸引并改进现有的算法,能够基本完全掩盖掉PCI-e的延迟。

对于深度学习训练来说,我们关心的是在多长的时间内能够训练完所有数据出结果,而并不关心单个数据多长时间能够训练完,而深度学习的具体应用来说刚好相反(用户关心他的请求多长时间返回)。具体到K80和K40上,我们认为K80更适合训练,而K40更适合来部署应用。

SenseTime除了优化Caffe外,同时也在开发自己的深度学习训练和部署系统,目前来说,无论是训练还是部署应用,我们的优化效果、水平都在中国甚至世界的前列。我们开发的矩阵乘法(卷积神经网络的核心计算)在x86上的性能接近Intel的MKL库;在ARM v7上开发的矩阵乘法性能是OpenBLAS的2倍(已经在HPC2015的展台上公布,得到许多研究人员的好评)。

CSDN:当前不同的硬件,GPU、FPGA、IBM SyNAPSE以及中科院寒武纪,哪种硬件更加符合DL未来的需求?另外能否把DL计算并行在造价低廉的内存计算平台上(如Spark集群),在不减少输入参数和神经网络规模的前提下完成任务?

SenseTime:未来的硬件必须和算法结合起来才有出路,即硬件的设计必须要考虑到其应用场景,通用的硬件设计是没有办法完全解决细分领域的计算需求。

深度学习需要两种不同类型的硬件,一种用于训练,一种用于部署应用。对于训练来说,未来依旧会是GPU占主导,而对于部署来说,未来可能FPGA或寒武纪之类能够获得更多的应用。

把深度学习并行计算在Spark集群上有其意义,但是对于深度学习公司来说并无必要。想象一下:您有200台机器的spark集群,而我只用50台机器的GPU集群就可以做到同样的计算能力,这种情况下,您还会继续坚持要用Spark吗?

CSDN:SenseTime对HPC团队成员的选择有什么要求?这几年CV领域创业非常热,由DL大牛弟子组成的优秀团队也很多,SenseTime如何吸引优秀的团队成员加入并留下?

SenseTime:我们在不断地招纳人才,SenseTime对HPC团队成员的选择非常严格,除了对专业素养和个人经验的要求外,还要考虑HPC领域需要的一些特殊气质,如冷静、逻辑分析能力非常强、对未知事物保持兴趣等。

团队成员选择SenseTime的原因大体概括为如下四点:

  1. SenseTime提供很好的个人发展平台,作为创业公司,我们有许多事情要做,并能自主地安排工作时间;

  2. SenseTime拥有许多领域的精英,和精英一起工作可以更好的提升自己;

  3. SenseTime有许多技术需求、应用空间、商业客户,我们的价值能够得到实实在在的呈现;

  4. SenseTime注重员工的人文关怀,提供一份不辜负才华的薪水。

SenseTime HPC团队介绍:

刘文志:毕业于中国科学院研究生院,现为SenseTime异构并行计算部门主管、总监。曾于2011年至2014年间于英伟达担任并行计算工程师。后就职百度深度学习研究院高级研发工程师,负责异构计算组日常工作。工作期间参与两项美国专利申请。已出版《并行算法设计与性能优化》、《并行编程方法与优化实践》、《科学计算与企业经应用的并行优化》、《OpenCL异构并行计算》等四本个人著作。

颜深根: 博士毕业于中国科学院大学,现为SenseTime主任研究员,香港中文大学博士后。曾于2013年6月至2014年2月在美国北卡州立大学做访问研究,为2015年国际并行处理大会程序委员会委员,2015年网络与并行计算国际会议程序委员会委员。曾就职于百度深度学习研究院,任资深研发工程师。博士期间在并行计算领域发表论文多篇,曾连续两年以第一作者身份在并行处理顶级国际会议PPoPP发表论文(大陆唯一)。硕士期间曾创办自己的公司并盈利几十万元,为著名开源计算机视觉库(OpenCV)OpenCL分支的主要贡献者之一,《OpenCL异构计算》一书译者之一。

孔畅: 深圳大学硕士毕业,SenseTime异构并行计算部门经理。师从陈国良院士,硕士期间在国家高性能中心(深圳分中心)研究并行计算和计算机体系结构方向,国家研究生奖学金获得者。参加国家重大科技项目“基于龙芯3B八核处理器的高性能计算机KD-90”,翻译出版了图书《Intel Parallel Studio环境下的并行程序设计》,并发表了多篇学术论文。毕业后曾就职于百度IDL异构计算组,主要研究方向是基于GPU的并行分布式优化技术和深度学习相关算法。

高洋: 毕业于中国科学院研究生院,现为SenseTime异构并行计算部门高级经理。曾在阿里核心系统部专用计算组担任研发工程师,后于百度深度学习研究员担任高级研发工程师。

孙刚: 中国科学院大学博士,现为SenseTime视觉计算高级研究员。先后在微软亚洲研究院视觉计算组进行研究、百度深度学习研究院异构计算组进行研究实习。博士期间在计算机视觉领域发表多篇论文,在多个公共数据集上取得最好的图像分类结果。

评论