騰訊機智在GTC 2019

| 導語 騰訊機智團隊在今年的GTC大會上做了介紹機智平臺的報告,本文總結了GTC的一些主要內容以及筆者和同事的見聞。

概述

GPU Technology Conference:GPU技術大會是並行計算和人工智能公司英偉達在美國加州硅谷中心聖荷西舉辦的年度技術大會。自2009年開辦以來已經舉辦十屆,成爲並行計算方面全世界最盛大的技術會議之一。在GTC上進行研究成果的彙報代表了計算加速領域工作的廣泛同行認可以及領先水平。

主題演講

本次GTC十週年的主題演講包括英偉達GPU在圖形學,數據科學和嵌入式領域的最新進展。CUDA下載量和NVIDIA顯卡去年銷量持續增長,如今對於英偉達來說,加速芯片不僅僅是芯片本身,還需要整個生態系統。因此今年NVIDIA發佈了CUDA-X。把旗下所有的GPU加速庫都以CUDA-X的品牌名稱重新整合:


84fa27bbcd2340b59d1a528f90f67e15

[ 黃仁勳介紹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




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章