GTC CHINA 2017 大會上,輝達(NVIDIA, NVDA-US)創始人兼 CEO 黃仁勛表示,AI 已無處不在,兩股力量正推動電腦領域的未來。第一、摩爾定律已終結,設計人員無法再創造出可以實現更高指令集並行性的 CPU 架構;第二、深度學習正在引領軟體和電腦領域的變革。深度學習、大數據和 GPU 運算的結合引爆了 AI 革命。
30 億美元研發投入 GV100 劍指 AI
AI 晶片也被稱為 AI 加速器或運算卡,即專門用於處理人工智慧應用中的大量運算任務的模組 (其他非運算任務仍由 CPU 負責) 。當前, AI 晶片主要分為 GPU (既滲透數據中心,橫掃 DL 訓練端,亦是 DL 推理端大頭) 、FPGA (可編程,適用於疊代升級、各類場景化應用) 、ASIC (終端 AI 利器) 。
勤業 (Deloitte) TMT 最新報告顯示,2016 年面向深度學習 (DL) 售出的 GPU 晶片數量約為 10 萬到 20 萬;預計 2018 年面向 DL 應用售出的 GPU 將達 50 萬片,FPGA 約 20 萬片,ASIC 約 10 萬片;2020 年, DL 加速器市場規模或達 45 億到 91 億美元。
(勤業 2017 年 TMT 報告預計全球深度學習晶片市場)
份額最高的 GPU 市場龍頭,就是輝達,其次是 AMD;而目前,數據中心/HPC 和 DL 加速器方面,輝達幾乎佔據了絶對優勢。可以說,在過去的幾年,尤其是 2015 年以來,人工智慧大爆發就是由於輝達公司的 GPU 得到廣泛應用,使得並行運算變得更快、更便宜、更有效。
2017 年 5 月 GTC 2017 大會上,輝達發佈了面向高性能運算的新一代 Volta 架構加速器, Tesla V100。Tesla V100 加速器採用 12nm FFN 工藝,搭載新款圖形處理器 GV100,擁有 5120 CUDA 、640 個 Tensor 內核,分 PCle 和 SXM2 兩版,雙精度浮點運算能力分別可達 7 TFLOPS 和 7.8 TFLOPS,單精度則為 14 TFLOPS 和 15.7 TFLOPS。 (翻譯一下就是:堆了很多運算器,性能特別兇殘。)
Tesla V100 沒有公開售價,不過典型的服務器大概要 100 萬元。
(Tesla V100 中的新技術)
(Tesla V100 配備全新 Tensor 核心後深度學習運算能力達 125Tensor TFLOPS)
Tesla V100 不僅僅是數據中心/HPC 加速器,更針對深度學習算法和 Caffe2、MXNet、CNTK、TensorFlow 等框架新版本進行了設計,新的流多處理器 (SM) 架構提供獨立、並行整數和浮點數據通路,配備全新 Tensor 核心,運算能力達 125 Tensor TFLOPS,單精度矩陣-矩陣乘法比 Tesla P100 快 1.8 倍,混合精度矩陣-矩陣乘法比 Tesla P100 快 9 倍。據稱, Tesla V100 由數千名工程師經數年開發,研發投入相當於 30 億美元。
Tesla V100 軟硬體架構解讀
(Tesla V100 的正面與背面)
Tesla V100 採用與 Tesla P100 相同的 SXM2 主板外形,大小為 140×78 毫米,主要區別在於 GPU 由 GV100 代替了 GP100 。SXM2 主板支持 NVLink 和 PCIe 3.0 連接功能,包含可為 GPU 供應各種所需電壓的高效電壓調節器,額定為 300 瓦熱設計功耗 (TDP) 。工作站、服務器和大型運算系統中可應用一個或多個 Tesla V100 加速器。
從架構來看, Tesla V100 不僅僅堆了更多更密集的運算單元以實現超強運算性能,也打通了更多的鏈路來實現資源更為高效的利用,降低功耗,並配套以 CUDA 9 提供了更為靈活的調度。下文提供一些 Tesla V100 架構思路以供啟發。
GV100:堆了 84 個 SM 640 個 Tensor 核心
(含 84 個 SM 單元的完整 Volta GV100 GPU)
與上一代 Pascal GP100 GPU 一樣,GV100 GPU 由 6 個 GPU 處理集群 (GPC) 和 8 個 512 位內存控制器組成,每個 GPC 擁有 7 個紋理處理集群 (TPC) ,每個 TPC 含 2 個流多處理器 (SM) 。
含 84 個 SM 的完整 GV100 GPU ,總共擁有 5,376 個 FP32 核心,5,376 個 INT32 核心、2,688 個 FP64 核心、672 個 Tensor 核心以及 336 個紋理單元。每個 HBM2 DRAM 堆棧由一對內存控制器控制。完整的 GV100 GPU 總共包含 6144KB 的 L2 緩存。
(NVIDIA Tesla 系列各 GPU 比較)
GV100 新增的流多處理器 (SM) 架構提供了性能、能效和可編程方面的重大改進,主要特性包括:
1. 新增專為深度學習矩陣算法構建的混精度 Tensor 核心,相較 GP100 在同一功率電路下訓練可提升 12 倍 TFLOPS;
2. 在通用運算工作負載中的能效提高 50%;
3. L1 數據緩存性能大幅提升;
4. 新增 SIMT 線程模型,可消除之前的 SIMT 和 SIMD 處理器設計中存在的限制。
(Volta GV100 流多處理器 (SM) )
Tensor 核心:大型神經網路訓練的關鍵
Tesla V100 包含 640 個 Tensor 核心 (密集運算器) ,這是支持大型神經網路訓練的關鍵,可為訓練和推理應用提供 125 Tensor TFLOPS:每個 SM 有 8 個核心,SM 內每塊處理器 (分區) 有 2 個,每個 Tensor 核心每時鐘執行 64 次浮點 FMA 運算。
Tensor 核心及其關聯的數據路徑經自定義設計,可以較高能效大幅增加浮點運算吞吐量。每個 Tensor 核心都在 4X4 矩陣中運行,並執行以下運算:
(Tensor 核心執行矩陣乘積累加運算,D=AXB+C)
其中,A、B、C 和 D 為 4X4 矩陣,矩陣乘法輸入 A 和 B 為 FP16,而累加矩陣 C 和 D 可以是 FP16 或 FP32 矩陣。特別指出的是,與無法同時執行 FP32 和 INT32 指令的 Pascal GPU 不同,Volta GV100 SM 包含單獨的 FP32 和 INT32 核心,允許以完整吞吐量同時執行 FP32 和 INT32 運算,並且還可增加指令發送吞吐量。
(Tensor 核心中的混合精度乘積累加運算)
事實上,Tensor 核心會用於執行更大型的二維或更高維的矩陣運算,這種運算都是由這些較小元素構建而成。
(Pascal 和 Volta 4×4 矩陣乘法運算)
Volta Tensor 核心可在 CUDA 9 C++ API 中存取並作為線程數級矩陣運算公開。該 API 公開專門化矩陣負載、矩陣乘積累加和矩陣存儲運算,以高校使用 CUDA 9 C++ 程序中的 Tensor 核心。此外,cuBLAS 和 cuDNN 庫也已經更新,以提供新的庫接口將 Tensor 核心用於深度學習程序和框架。
L1 數據緩存和性能共享
將數據緩存和共享內存功能整合進單一內存塊中,可為兩種類型內存訪問提供出色的整體性能,帶來更低延遲和更高頻寬。整合後的容量可達 128 KB/SM ,比 GP100 數據緩存大了七倍以上,不使用共享內存的程序可將其作為緩存,紋理單元也可使用該緩存。
(Pascal 與 Volta 數據緩存的比較)
運算能力 7.0
GV100 GPU 支持新的 Compute Capability 7.0,詳情參見下表。
(GK180、GM200、 GP100 和 GV100 運算能力對比)
NVLink:第二代高速互聯
NVLink 最早於 2016 年隨 Tesla P100 加速器和 Pascal GP100 GPU 一起推出,是輝達的高速互聯技術。 Tesla V100 引入了第二代 NVLink,可以提供更高的鏈路速度 (從 20GB/s 增加到 25GB/s) 以及每個 GPU 更多的鏈路 (從 4 條增至 6 條) ,並在 CPU 主控、緩存一致性和可擴展性方面實現改進。
(“配備 V100 的 DGX-1”中使用的混合立體網路 NVLink 拓撲)
優化 HBM2 內存架構
Tesla P100 是首個支持高頻寬 HBM2 內存技術的 GPU 架構。 Tesla V100 的 HBM2 更快、更高效:HBM2 內存由內存堆棧 (與 GPU 位於同樣的物理包) 組成,每個堆棧使用四個存儲器晶片,從而獲得最大為 16GB 的 GPU 內存,與傳統 GDDR5 設計相比,可顯著節省能耗和占用空間,從而允許在服務器中安裝更多 GPU 。
此外,Tesla V100 HBM2 內存子系統支持通過糾一位檢二位 (SECDED) 糾錯碼 (ECC) 來保護數據,為已受數據損壞影響的運算應用程式提供更高可靠性。這在大型集群運算環境中尤為重要,因為其中的 GPU 需處理非常大的數據集亦或長時間運行應用程式。
(V100 上 HBM2 內存加速與 P100 的對比)
複製引擎支持多處理器數據傳輸
輝達 GPU 複製引擎可在多個 GPU 間或 GPU 與 CPU 間傳輸數據。
之前的複製引擎需要固定 (不可分頁) 源內存區域和目標內存區域,而新的 Volta GV100 GPU 複製引擎可為沒有映射至分頁表的地址生成分頁錯誤,然後內存子系統可處理分頁錯誤,並將地址映射至分頁表,之後複製引擎便可執行傳輸。目前,此功能可用於 ATS 系統中。
CUDA :通用並行運算架構的改進
(基於 CUDA 平台的深度學習創新時間線)
CUDA 是輝達建立的並行運算平台和編程模型,為開發者提供基於輝達 GPU 的開發環境,以便其使用 C 和 C++ 擴展構建大規模並行應用程式。Volta 架構的改進將進一步增強 CUDA 應用程式中並行線程的功能,使 CUDA 平台的能力、靈活性、生產力和可移植性實現下述提高:
1. 獨立線程調度優化
(Volta 獨立線程調度功能:可交錯執行離散分支中的語句,幫助執行精細並行運算)
Volta GV100 是首款支持獨立線程調度的 GPU ,允許 GPU 執行任何線程,從而程序中的並行線程之間實現更精細的同步與協作。
Pascal 和早期輝達 GPU 均以 SIMT 形式執行含 32 個線程的線程組,雖然減少跟蹤線程狀態所需的資源數量,重收斂線程以最大化並行性,但離散去相同線程束或不同執行狀態的線程無法互相發送訊號或交換數據,從而產生不一致性。
Volta 調度優化器通過在所有線程之間實現等效並發 (通過無饑餓現象算法,確保所有線程對爭用資源擁有相應的訪問權限,將同一線程束中的活動線程一併分組到 SIMT 單元,以子線程數粒度進行離散和重新收斂,執行相同的代碼) ,避免了上述問題。
2. 多進程服務
(Pascal 中的基於軟體的 MPS 服務和 Volta 中硬體加速 MPS 服務對比)
多進程服務 (MPS) 是 Volta GV100 架構的一項新功能 (Pascal 的 CUDA MPS 是一個 CPU 進程) ,專門用於在單一用戶的應用程式中貢共享 GPU 。
Volta MPS 可為 MPS 服務器的關鍵組件實現硬體加速,使 MPS 客戶端將工作直接提交至 GPU 中的工作隊列,降低提交延遲並增加總吞吐量 (特別是用於高效推理部署) ,從而提升性能並改進隔離 (服務質量和獨立地址空間) ,增加 MPS 客戶端的最大數量,將其從 Pascal 上的 16 個增加為 Volta 上的 48 個。
3. 統一內存定址和地址轉換服務
CUDA 6 曾推出有限形式的統一內存定址,以簡化 GPU 編程,該功能在 Pascal GP100 中通過硬體頁面錯誤和更大的地址空間得到改進。 Volta GV100 中,全新的存取計數器功能可追蹤 GPU 存取其他處理器內存的頻率,幫助確保內存頁面移動至訪問頁面最頻繁的處理器的物理內存。此外,Volta 還通過 NVLink 支持地址轉換服務 (ATS) ,為 GPU 提供對 CPU 內存的完整訪問權限。
4. 協作組
(協作組在粒子模擬中的應用)
並行算法中,線程通常需要通過協作來執行集群運算。構建這些寫作代碼需要對協作線程進行分組和同步。因此, CUDA 9 引入了協作組,用於組織線程組的全新編程模式。協作組編程元素由以下元素組成:
1. 專為深度學習矩陣算法構建的全新混合精度 FP16/FP32 Tensor 核心;
2. 表示協作線程組的數據類型;
3. CUDA 啟動 API 定義的默認組 (例如,線程塊和網格) ;
4. 將現有組劃分為新組的運算;
5. 同步組中所有線程的障礙運算;
6. 檢查群組屬性以及特定於組的集合運算。
協作組以子線程塊和多線程塊粒度顯示定義線程組,並且可以執行集合運算,讓開發者以安全、可支持的方式通過靈活同步功能針對硬體快速進行各種優化;協作組還實現了抽象化,讓開發者能夠編寫靈活、可擴展的代碼,該代碼可在不同的 GPU 架構中安全運行,包括擴展至未來 GPU 功能; Volta 獨立線程調度也以任意交叉線程束和子線程數粒度,為線程組實現更靈活的選擇和劃分; Volta 同步真正實現了每線程操作。
推薦 GV100 的理由
GPU 比 CPU 擁有更多的運算器,只需要進行高速運算而不需要邏輯判斷,其海量數據並行運算的能力與深度學習需求不謀而合,也成為了高性能運算進一步發展的主流方案。而 GV100,作為 GPU 界佔據絶對優勢的輝達的新力作,具備了以下特點:
1. 運算能力超強
GV100 堆了 84 個 SM 、640 個 Tensor 核心,相較 GP100 在同一功率下訓練可提升 12 倍的 TFLOPS。相應的,Telsa V100 運算能力達 125 Tensor TFLOPS,可以說是深度學習上游訓練端的一個殺手鐧。
截至目前,Telsa V100 已經用於輝達首款深度學習和分析專用工作站 DGX Station;阿里雲、百度(Baidu, BIDU-US)和騰訊等企業均已在其雲端服務中部署 Tesla V100 ;華為、浪潮和聯想等原始設備製造商也已採用 Tesla V100 來構建新一代加速數據中心。
2. 新架構提升效能
Volta 新增流多元處理 (SM) 架構,使用新的分區方法來提升 SM 利用率和整體性能。
全新的 Volta SM 的節能效率相較上一代 Pascal 產品提升 50%,在同一功率電路下可顯著提高 FP32 和 FP64 的性能;專為深度學習設計的 Tensor 核心在訓練方面可提供高達 12 倍的 TFLOPS 峰值,推理方面可提供 6 倍的 TFLOPS 峰值。
相比之前幾代的 GPU ,GV100 支持同時運行更多的線程、線程束和線程塊,實現了性能、效能、可編程性方面的重大改進。
3. 開發生態成熟
CUDA 因統一而完整的開發套件,豐富的庫,以及對輝達 GPU 的原生支持而成為開發主流,目前已開發至第 9 代,開發者人數超過 51 萬。
CUDA 工具包 9.0 版包含新的 API 以及對 Volta 功能的支持,並可以實現更輕鬆的編程。Caffe 2、MXNet、CNKT、TensorFlow 等深度學習框架新版本以及其他框架皆可發揮出 Volta 的強大性能,縮短訓練時間並獲得更高的多節點訓練。
4. 有 1 萬 9,439 家合作組織
剽悍的硬體配上成熟的 CUDA 開發環境,輝達已經形成,並正在鞏固自己的 AI 生態。據稱,在深度學習方面與輝達有合作的組織已有 1 萬 9,439 家,覆蓋金融、汽車、教育、網路等各類領域。
(在深度學習方面與輝達有合作的組織)
(輝達 GPU 平台)
Tesla V100 的架構設計中,我們看到了輝達強大的硬實力積累 (堆運算器的能力) ,以及“並行思維”的啟發 (分類、同步等) ,結果就是非常兇殘的浮點運算能力。而對於企業而言,浮點運算能力、功耗和成本是選擇 GPU 的三個主要考量,再加上面對 AI 新藍海的野心,所以我們會看到諸如百度這樣,既和輝達哥倆好,又跟 AMD 搞 GPU 技術聯合實驗室。毋庸置疑的是, AI 晶片戰已經打響,傳統晶片商、新入玩家已經開始在占山頭了。
深度學習上游訓練端來看, GPU 是當仁不讓的第一選擇,而輝達先發的構架升級以及廣泛成熟的開發生態環境優勢明顯,佔據了絶對優勢。目前來看,輝達數據中心 GPU 的主要競爭對手有 GPU 市場佔有率第二的 AMD 、手握 FPGA 的英特爾(Intel, INTC-US)和手握 TPU的Google。
深度學習的下游推理端來看,除了主流的 GPU 晶片之外,還包括 CPU 、FPGA (linx、英特爾 Altera、Lattice 及 Microsemi 等) 、ASIC (英特爾 Nervana Engine、Wave Computing 數據流處理單元、輝達的 DLA、GoogleTPU、寒武紀 NPU 等) ,競爭態勢中輝達依然占大頭。但隨著 AI 的發展,FPGA 的低延遲、低功耗、可編程性和 ASIC 的特定優化和效能優勢將滿足一些特定方向的需求。
封面來源:https://goo.gl/7GdbWM
《雪球》授權轉載
【延伸閱讀】