| 导语 腾讯机智团队在今年的GTC大会上做了介绍机智平台的报告,本文总结了GTC的一些主要内容以及笔者和同事的见闻。

概述

GPU Technology Conference:GPU技术大会是并行计算和人工智能公司英伟达在美国加州硅谷中心圣荷西举办的年度技术大会。自2009年开办以来已经举办十届,成为并行计算方面全世界最盛大的技术会议之一。在GTC上进行研究成果的汇报代表了计算加速领域工作的广泛同行认可以及领先水平。

主题演讲

本次GTC十周年的主题演讲包括英伟达GPU在图形学,数据科学和嵌入式领域的最新进展。CUDA下载量和NVIDIA显卡去年销量持续增长,如今对于英伟达来说,加速芯片不仅仅是芯片本身,还需要整个生态系统。因此今年NVIDIA发布了CUDA-X。把旗下所有的GPU加速库都以CUDA-X的品牌名称重新整合:


腾讯机智在GTC 2019_第1张图片

[ 黄仁勋介绍CUDA-X技术栈 ]

整个技术栈底层是四个专用领域的显卡系统:

  • RTX类显卡,用于图形渲染

  • DGX系统,用于深度学习训练

  • HGX系统,用于高性能计算

  • AGX片上系统,用于自动驾驶的AI计算

在CUDA这个开发框架之上,也整合了针对不同领域的库,包括:

  • Rtx: 图形渲染

  • Hpc: 高性能计算

  • AI: 深度学习加速

  • Dr: 自动驾驶

  • Is: Issac 机器人

  • Cl: Clara 健康医疗

  • Me: metropolis 智慧城市

另外,CUDA库家族里新增并做出重大改进的一些加速库包括:

  • cuDF,数据分析库

  • cuDNN,深度学习加速库

  • cuML,传统机器学习加速库

  • DALI,数据预处理加速库

同时黄仁勋提出了公司的新口号:

PRADA (PRogrammable Acceleration Domains Architecture),即:针对不同领域,基于同一架构的可编程的加速方案。

在推广RTX显卡方面,世界上两个最大的主流商业游戏引擎Unreal虚幻以及Unity都支持了新的光线追踪功能。数个AAA级游戏大作也在游戏中开始支持实时的光线追踪。另外,也有开发者提出能否公开RTX的调用接口让开发者对其进行创新的使用。另外十分激动人心的是主题演讲上公开的经典游戏雷神之锤II使用RTX添加现代光线追踪效果的demo。源代码也会在一个月内公开!

在数据科学方面,英伟达发布RAPIDS: 一个开源的数据科学库软件集合。RAPIDS专注通用的数据处理,包括DataFrame API和一些常用的机器学习算法整合,以及端到端的管线加速。同时支持多机多卡部署。世界级的云服务及数据分析公司databricks和数据分析可视化公司omni-sci都开始使用NVIDIA的RAPIDS加速技术。传统的NVIDIA显卡支持超算,属于scale-up,让单机性能达到极限。高性能计算是主要的应用领域;而分布式计算领域属于scale-out,专注容错和可扩展性,不同机器计算性能不同。数据科学的应用属于这两个极端的中间。也是NVIDIA以后要着重提升的能力,需要既能scale-up,也能scale-out。为了这一目标,英伟达发布了新的为数据处理设计的服务器,装有4个T4芯片,260TFLOPs的FP16算力,以及64GB的GDDR6显存。

最后,英伟达为了支持IoT和边缘计算的应用,发布了支持AI应用的SoC Jetson Nano。

GTC主会

Tensor Core

自从Volta架构引入Tensor Core以来,英伟达一直在大力推广Tensor Core的使用,因为在V100 GPU上,每个Streaming Multi-Processor上都配备8个Tensor Core,以每个clock cycle运行64个浮点FMA操作来看,一个clock cycle总共可以运行512个FMA操作。让Volta架构获得最大的使用率,良好的使用Tensor Core是非常关键的步骤。Turing架构上的Tensor Core更是增加了对int8和int4的支持,能进一步提高推理的性能。英伟达宣称使用Tensor Core进行矩阵运算可以轻易的在训练时达到2-5倍的提速,同时降低一半的内存访问和存储。在介绍Tensor Core性能和调试方法的一场报告里,英伟达工程师提到了几种使用Tensor Core的方法,从底层到高层依次为:

  • 使用CUDA中的wmma API;

  • 使用诸如cublas和cutlass这样的矩阵运算库;

  • 通过框架内打开tensor core的开关使用,包括pyTorch和TensorFlow;

  • 使用框架上的高层库,例如pytorch的Apex矩阵运算库。

  • 同时,报告中还提到了调试Tensor Core的方法。主要使用的工具是NSight System。可以通过命令行的:

nsys profile /path/to/python train.py

  • 运行并生成report.qdrep的文件。在V100卡上,使用tensor core的kernel在名字内会包含s884,可以用这个简单的办法来确认系统是否使用了tensor core。

  • 同时,还可以使用NSight Compute来对Tensor Core的性能进行监测:

  • nv-nsight-cu-cli /path/to/python train.py 这个工具还可以设定只监测第N次运行的tensor core的kernel性能:

--kernel-id ::s884:5
  • 表示只监测所有的stream上第5次运行的包含s884 的kernel(tensor core kernel)性能。

  • 或者通过设定监测的指标来过滤tensor core的信息:

--devices 0 --query-metrics | grep -i tensor CUDA新特性

CUDA作为GPU上主要的编程语言,其技术细节和介绍历来都是GTC非常重要的一部分。今年,CUDA的首席架构师Stephen Jones进行了一小时的报告,详细描述了图灵架构下的新的Tensor Core以及CUDA 10里的一些新的特性。新的图灵架构的Tensor Core能提供65TFLOPS的FP16算力、130TeraOPS的INT8算力,以及260TeraOPS的INT4算力。通过调用nvcuda::wmma::experimental,研究者们可以试验各种低精度训练方法。

基于模板类,能够灵活构建不同类型的矩阵乘法、element-wise操作和简单的kernel fusion的CUTLASS 1.3的性能在一些常用的情况下也都达到或超过矩阵乘法专用库cuBlas性能的80%。同时,改进的线程调度机制也让一些并发算法如Trie查找的性能在Volta/Turing架构上大幅提高。另外,CUDA一改以往只能通过stream来启动的方式,增加了通过有向无环图来描述任务,并启动的方式,对于超过15个节点的任务图来说,能够体现任务启动时的优势。这项新的特性用来迅速的把一个任务图里的kernel工作流映射到CUDA,主要能够使推理模型的运行速度加快。另外,CUDA的编译器nvcc也进行了很多性能改动。CUDA库家族还推出了包括张量计算库cuTensor、轻量级矩阵计算库cuBLASLt、JPEG解码库nvJPEG、以及图计算库cuGraph在内的多个新的库。

腾讯机智的报告

国内公司阿里、百度、京东、旷世、平安保险等均派出团队参会并分享在AI、HPC领域的最新研究和应用成果。

我的同事戎海栋和我在3月20日下午一点给与会听众做了标题为:《Training ImageNet in Four Minutes with Tencent Jizhi》的主题报告。

在50分钟的时间里,我们介绍了去年夏天发布在ArXiv上,打破最快ImageNet训练记录,并在去年底被收录在NeurIPS 2018的Workshop on Systems for ML and Open Source Software的论文:

Highly Scalable Deep Learning Training System with Mixed-Precision: Training ImageNet in Four Minutes。


这篇论文的技术创新点我的同事周飞虎已经在这篇文章中详细阐述。我们不仅利用算法、模型、通信上的创新,第一次将分布式ImageNet训练的batch size突破了64K,并且还第一次将训练时间降低到分钟级别。之后的数次纪录提升,均整合了我们在模型改造和通信策略方面的优化。同时在扩展率和性价比上我们仍然以ResNet-50模型的1024卡训练99.2%扩展率和在相对较低性能的P40上达到6.6分钟训练时间成为近期不断涌现的各类分布式ImageNet训练算法中的冠军。我们分享了一些关键技术的细节,包括结合LARS算法的半精度训练、梯度融合、以及混合分层和环形规约的通信优化。这些通用的优化策略已经被整合进腾讯机智,以服务公司内部更广大的用户群体。

我们不止关注理论研究,也重视理论研究在实际产品中的应用。分享的后半段,我的同事海栋介绍了机智平台作为以分布式和性能加速为特性的分布式训练平台在公司内部的多项典型应用,包括王者荣耀强化学习游戏AI模型的训练加速,我们在128K超大batchsize基础上,128卡训练速度相对基线8卡提升13.8倍,接近”线性”扩展,1v1场景样本吞吐量超过OpenAI 1v1场景; 同时,在大规模语音识别训练方面,机智平台实现了107倍的训练加速,将原有3个月训练时间缩短到仅有20小时,大幅提升业务部门算法迭代速度。

过去一年,机智平台的多项研究成果在公司内多个产品落地,产生了实际价值,在训练加速方面积累了丰富的理论和工程经验。在理论研究成果应用于工程实践的过程中,我们克服了不断出现的新问题,比如算力容灾、调参调优成本高、如何满足亲和性等问题,在分享中,我们给出了机智平台在这些问题上的解决方案。

最后,我们展望了基于目前的优势,平台上还在开展的诸如AutoML、模型分析、半异步同步训练等新功能,这些内容引起了听众的极大兴趣。分享后,我们与阿里、旷世科技、索尼以及百度等旁听的同行们进行了长时间交流。从反馈的信息来看,我们的分布式训练通用优化加速技术在很多公司的业务上都有强烈的需求,我们公开的论文和技术也一定程度上帮助了这些同行搭建他们自己的训练系统。

更多精彩的报告内容,读者可以在会议结束一个月之后的官方网站上找到。

腾讯报告pdf链接:

https://on-demand.gputechconf.com/gtc/2019/presentation/_/s9146-training-imagenet-in-four-minutes.pdf

腾讯报告视频解读版:请关注「腾讯技术课」小程序卡片看论文视频解读

机智平台入口:

http://c.oa.com/r/home