一. 什么是阿里云HPC
阿里云HPC是阿里云高性能计算的简称,有两重含义,一重含义是阿里云高性能计算产品,另一重含义是指阿里云高性能计算团队。
作为产品来讲,是中国第一个在公共云上推出的高性能计算的产品,也是中国首个推出公共云上的Nvidia Maxwell GPU + Intel Broadwell CPU 架构的强强组合的产品,单节点单精度计算能力超过16Tflops,初期提供物理机 + Tesla GPU加速卡形式。
推出阿里云HPC主要基于HPC用户的特点:(1)对高性能计算有永无止境的需求,不可以做多租户的共享,不可以把一台物理机分给多个用户来用,无论多少高的计算能力,都需要更高,无论多少集中的计算密集,都需要更集中的计算密集;(2)对GPU加速卡完整功能的需求,不能有功能的阉割;(3)需要和其他云产品互通,打通数据处理的上下游;(4)需要计算可以弹性扩展。因此催生了阿里云上HPC产品的诞生。
作为团队来讲,是指阿里云HPC的团队,我们是飞天八部技术创新团队,目前主要负责集团内GPU集群的建设、客户服务和应用的优化;以及公共云上HPC产品的运营、客户的服务和应用优化;同时我们还负责做一些前沿技术的研究,例如Nvidia/AMD GPU、Intel Xeon Phi、FPGA等在深度学习方面的技术预研。
二. 什么是人工智能加速利器
要了解什么是人工智能的加速利器,首先需要了解一下人工智能的发展简史:
- 1950年,人们提出图灵测试,这是人工智能的萌芽阶段;
- 1950年~1980年,人工智能进展缓慢;
- 90年代~2000年,浅层机器学习模型的兴起,如SVM、LR、Boosting等算法;
- 2006年,加拿大多伦多大学教授、机器学习领域泰斗——Geoffrey Hinton在《Science》上发表了一篇文章,开启了深度学习在学术界和工业界的浪潮;
- 2011年,Google Brain项目取得了惊人的进展,机器通过看YouTube视频学会了识别猫和人,但需要2000个CPU的规模,NVidia和斯坦福大学的Andrew Ng合作,用12片GPU的深度学习能力替代了2000个CPU;
- 2012年,多伦多大学的Alex在ImageNet图像识别比赛上获得冠军,Alex和他的团队没有编写任何视觉方面的专业代码,仅靠GPU驱动的深度神经网络,机器就学会了自己辨认图像;
- 2015年,Google和微软靠GPU加速的深度神经网络,在ImageNet比赛中获得了多项击败工人辨识的准确度,人工智能的一个重大里程碑;
- 2016年,谷歌旗下Deepmind团队研发的机器人AlphaGo以4比1战胜世界围棋冠军职业九段棋手李世石,这是人工智能历史上又一重大里程碑,AlphaGo在50块GPU上,训练了3.4亿步,用了3周的时间,AlphaGo的走棋网络是在176片GPU运行策略神经网络和估值神经网络。
从人工智能的简史可以看出,人工智能加速利器就是两个,一个是深度学习,或者称为为深度神经网络,另外一个就是GPU加速卡。因为训练深度神经网络的计算量非常非常大,例如大概需要30个Eflops的计算量,可以把一个人脸识别的模型训练出来,所以就非常需要除了CPU之外,单精度浮点能力特别强的计算的利器,这种利器就是GPU加速卡,深度学习和GPU是相辅相成缺一不可的。
阿里云HPC既提供Maxwell GPU加速卡,同时也提供深度学习性能优化和整套基础设施,下面介绍一下阿里云HPC在集团内和公共云上的深度学习实践。
三. 集团内深度学习实践
集团内有很多深度学习的业务场景,例如商品分类、拍照购物、商品风格的预测、商品质量的控制、反黄、人脸识别、图象搜索、OCR、标签识别、语音识别等。
阿里云HPC负责建设阿里巴巴深度学习集群,这个集群的业务主要是大规模深度学习训练、在线和离线预测等业务,我们负责该集群的统一化资源管理、调度和监控。目前集群的规模有上千片的K40和M40的GPU,通过Infiniband的网络互联。
同时我们也会对集团内的客户做深度学习方面的性能优化,有下面三个方面的优化。
第一点是系统层面,把单机的训练扩展到多机多卡的训练,以及提高图像、语音、视频等预测、分类的吞吐量;
第二点是针对GPU的微架构做优化。例如我们会对CNN卷积层做针对GPU微架构的优化,包括减少显存占用率,以及通过我们的性能优化工具优化;
第三点就是前面提到的优化工具的增强。我们会提供GPU极致性能优化工具AsKepler,目前支持SM35和SM37,它可以让用户自由的使用原生指令、自由的使用寄存器的映射、自由控制指令的调度,可以让我们更好了解微架构的特点,从而指导我们进行人工的优化或者编辑器的后端优化。例如,我们优化的2D卷积神经网络在Kepler架构上的性能世界第一,如图1所示,ourConv_sass 性能是cuDNNv2的2.1倍,是cuDNNv3的1.75倍。详情参考@长仁的文章:为什么要写一个GPU的汇编器 和 @念鸿的文章:Nvidia Kepler GPU上的性能极致优化。
图1. 2D卷积神经网络性能优化
此外还有集团内其他客户机器学习的深度优化案例,包括阿里妈妈LR和MLR的优化、IDST参数服务器优化、神马语音识别优化、IDST语音识别优化等实践案例后面都会单独发文章介绍,敬请期待。
四. 公共云上阿里云HPC深度学习实践
4.1 阿里云HPC深度学习基础设施
首先介绍一下阿里云HPC为深度学习提供的整套基础设施,如图2所示,阿里云HPC通过物理机CPU+GPU+ECS提供计算服务,通过阿里云众多产品打通深度学习的上下游处理链路:
- OSS,分布式存储
- NAS,并行文件系统
- ODPS,实现高性能计算和大数据计算结合
- ECS,在线预测服务
- CDN,图像、视频在线、离线预测
- SLB,高吞吐在线预测
图2. 阿里云HPC基础设施
如图3所示是一个典型的深度学习流程:分为离线训练、离线预测和在线预测三个业务场景,首先把要训练的数据存储在OSS/NAS上,通过ODPS做特征的提取和数据标注,然后将特征数据和标注好的数据传给HPC做离线训练,训练好的模型通过OSS/NAS传给离线预测或在线预测,在线预测部分由SLB将用户的请求分发到ECS或者HPC上做在线预测、分类,将结果直接返回给用户或者通过CDN分发给其他用户,另外分类好的数据也可以反馈给离线做进一步训练,形成一个深度学习的闭环链路。 图3. 阿里云HPC深度学习闭环链路
4.2 阿里云HPC深度学习应用一键部署
如图4所示,阿里云HPC通过阿里云容器服务来一键部署深度学习应用,首先打好深度学习应用镜像并上传到Docker Hub上,然后创建容器集群,通过容器管理中心起Agent、Routing、Volume、Monitor、Log等容器,然后通过Agent容器按照容器编排从Docker Hub下载镜像并起应用服务容器;服务请求通过容器服务的SLB和Routing容器传到相应的应用服务容器上,应用服务处理和响应请求。通过这种方式实现深度学习应用的一键部署和弹性扩容。
图4. 阿里云HPC深度学习应用一键部署
此外,阿里云HPC上通过主机或者Docker镜像提供整套流行的深度学习工具,包括Caffe,cuDnn v4,Digits2, Torch,Theano,Mxnet, Tensorflow等,应有尽有,并且开箱即用,方便之极。
4.3 阿里云HPC深度学习客户应用案例
阿里云HPC上有很多深度学习的实际客户案例,例如Dress+、深图智服、神州租车、新浪微博等。
Dress+是一家专门做视觉搜索引擎的公司,他们把电商上数千万的商品和网络视频等产品联系起来,比如在看优酷视频的时候,发现一件很喜欢的衣服,用鼠标一点就能跳到相应的电商产品如淘宝、天猫里面找到相同或者类似的衣服。
如图5所示是Dress+的业务架构图,他们通过SLB做多实例负载均衡,通过HPC和ECS做图像和视频的预测和分类。
图5. Dress+的业务架构图
另外一个喜讯就是由于阿里云HPC的出色服务能力,Dress+的业务从AWS迁移到阿里云HPC上来了 :)
同时,我们也服务和支持很多集团内用户迁移到阿里云HPC上来了,如神马语音、IDST语音、搜索语言技术、搜索推荐、搜索OCR、搜索数据实验室、B2B翻译等团队。
五. 总结及展望
阿里云HPC致力于加速集团内和公共云上所有客户的人工智能应用的发展,希望更多的人了解我们的产品和我们这支团队的能力,如果有深度学习或者高性能计算方面的加速需要,我们会全力支持并加速您的业务发展速度!
阿里云HPC官网网址是:https://cn.aliyun.com/product/hpc
感谢阅读!
昀龙
阿里云HPC