記錄一些平時接觸到的 GPU 知識。由於是筆記而非教程,因此內容不會追求連貫,有基礎的同學可作查漏補缺之用。
水平有限,文中不免有錯誤或過時之處,請酌情參考。
1 術語與基礎
大模型訓練一般都是用單機 8 卡 GPU 主機組成集群,機型包括 8*{A100,A800,p00,H800}
可能還會用最近即將上市的 {4,8}*L40S 等
。 下面一台典型 8*A100 GPU 的主機內硬體拓撲:
典型 8 卡 A100 主機硬體拓撲
本節將基於這張圖來介紹一些概念和術語,有基礎的可直接跳過。
1.1 PCIe 交換芯片
CPU、記憶體、儲存(NVME)、GPU、網卡等 支持 PICe 的裝置 ,都可以連線到 PCIe 匯流排或專門的 PCIe 交換芯片,實作互聯互通。
PCIe 目前有 5 代產品,最新的是 Gen5 。
1.2NVLink
定義
Wikipedia 上 NVLink 上的定義:
NVLink is a wire-based serial multi-lane near-range communications link developed by Nvidia. Unlike PCI Express, a device can consist of multiple NVLinks, and devices use mesh networking to communicate instead of a central hub. The protocol was first announced in March 2014 and uses a proprietary high-speed signaling interconnect (NVHS).
簡單總結:同主機內不同 GPU 之間的一種高速互聯方式,
- 是一種短距離 通訊鏈路 ,保證包的成功傳輸,更高效能,替代 PCIe,
- 支持多 lane,link 頻寬隨 lane 數量線性增長,
- 同一台 node 內的 GPU 透過 NVLink 以 full-mesh 方式(類似 spine-leaf)互聯,
- NVIDIA 專利技術。
演進:1/2/3/4 代
主要區別是單條 NVLink 鏈路的 lane 數量 、每個 lane 的頻寬 (圖中給的都是雙向頻寬)等:
NVLink 演進。Image from: HotChips 2022 [1]
例如,
監控
基於 DCGM 可以采集到即時 NVLink 頻寬:
Metrics from dcgm-exporter [5]
1.3NVSwitch
還是參考下圖,
典型 8 卡 A100 主機硬體拓撲
NVSwitch 是 NVIDIA 的一款 交換芯片 ,封裝在 GPU module 上,並 不是主機外的獨立交換機 。
下面是真機圖,浪潮的機器,圖中 8 個盒子就是 8 片 A100,右邊的 6 塊超厚散熱片下面就是 NVSwitch 芯片:
Inspur NF5488A5 NVIDIA HGX A100 8 GPU Assembly Side View. Image source: [2]
1.4 NVLink Switch
NVSwitch 聽名字像是交換機,但實際上是 GPU module 上的交換芯片,用來 連線同一台主機內的 GPU 。
2022 年,NVIDIA 把這塊芯片拿出來真的做成了交換機,叫 NVLink Switch [3], 用來 跨主機連線 GPU 裝置 。
這倆名字很容易讓人混淆。
1.5 HBM (High Bandwidth Memory)
由來
傳統上,GPU 視訊記憶體和普通記憶體(DDR)一樣插在主機板上,透過 PCIe 連線到處理器(CPU、GPU), 因此速度瓶頸在 PCIe,Gen4 是 64GB/s,Gen5 是 128GB/s。
因此,一些 GPU 廠商(不是只有 NVIDIA 一家這麽做)將 將多個 DDR 芯片堆疊之後與 GPU 封裝到一起 (後文講到 p00 時有圖),這樣每片 GPU 和它自己的視訊記憶體互動時,就不用再去 PCIe 交換芯片繞一圈,速度最高可以提升一個量級。 這種 「高頻寬記憶體」 (High Bandwidth Memory)縮寫就是 HBM。
HBM 的市場目前被 SK 海麗仕和三星等南韓公司壟斷。
演進:HBM 1/2/2e/3/3e
From wikipedia HBM,
Bandwidth |
Year |
GPU |
|
HBM |
128GB/s/package |
||
HBM2 |
256GB/s/package |
2016 |
V100 |
HBM2e |
~450GB/s |
2018 |
A100, ~2TB/s; 華為 Ascend 910B |
HBM3 |
600GB/s/site |
2020 |
p00, 3.35TB/s |
HBM3e |
~1TB/s |
2023 |
p00, 4.8TB/s |
使用了 HBM 的近幾代高端 NVIDIA GPU 視訊記憶體頻寬 (雙向),縱座標是 TB/s。Image source: [3]
1.6 頻寬單位
大規模 GPU 訓練的效能與數據傳輸速度有直接關系。這裏面涉及到很多鏈路,比如 PCIe 頻寬、記憶體頻寬、NVLink 頻寬、HBM 頻寬、網路頻寬等等。
比較頻寬時註意區分和轉換。
2 典型8*A100/8*A800主機
2.1 主機內拓撲:2-2-4-6-8-8
典型 8 卡 A100 主機硬體拓撲
下面這個圖畫的更專業,需要更多細節的可參考:
NVIDIA DGX A100 主機( 官方 8 卡機器 )硬體拓撲。Image source: [4]
儲存網卡
透過 PCIe 直連 CPU 。用途:
- 從分布式儲存讀寫數據,例如 讀訓練數據 、 寫 checkpoint 等;
- 正常的 node 管理,ssh,監控采集等等。
官方推薦用 BF3 DPU。但其實只要頻寬達標,用什麽都行。組網經濟點的話用 RoCE,追求最好的效能用 IB。
NVSwitch fabric:intra-nodefull-mesh
8 個 GPU 透過 6 個 NVSwitch 芯片 full-mesh 連線,這個 full-mesh 也叫 NVSwitch fabric ; full-mesh 裏面的 每根線的頻寬是 n * bw-per-nvlink-lane ,
用nvidia-smi topo檢視拓撲
下面是一台 8*A800 機器上 nvidia-smi 顯示的實際拓撲(網卡兩兩做了 bond,NIC 0~3 都是 bond):
1.2 GPU 訓練集群組網:IDC GPU fabirc
GPU node 互聯架構:
計算網路
GPU 網卡直連到置頂交換機(leaf),leaf 透過 full-mesh 連線到 spine,形成跨主機 GPU 計算網路。
儲存網路
直連 CPU 的兩張網卡,連線到另一張網路裏,主要作用是讀寫數據,以及 SSH 管理等等。
RoCE vs. InfiniBand
不管是計算網路還是儲存網路,都需要 RDMA 才能實作 AI 所需的高效能。RDMA 目前有兩種選擇:
1.3 數據鏈路頻寬瓶頸分析
單機 8 卡 A100 GPU 主機頻寬瓶頸分析
幾個關鍵鏈路頻寬都標在圖上了,
- 同主機 GPU 之間:走 NVLink,雙向 600GB/s,單向 300GB/s ;
- 同主機 GPU 和自己的網卡之間:走 PICe Gen4 Switch 芯片,雙向 64GB/s,單向 32GB/s ;
- 跨主機 GPU 之間:需要透過網卡收發數據,這個就看網卡頻寬了,目前國內 A100/A800 機型配套的主流頻寬是(單向) 100Gbps=12.5GB/s 。 所以跨機通訊相比主機內通訊效能要下降很多。
- 200Gbps==25GB/s:已經 接近 PCIe Gen4 的單向頻寬;
- 400Gbps==50GB/s:已經 超過 PCIe Gen4 的單向頻寬。
- 所以在這種機型裏用 400Gbps 網卡作用不大,400Gbps 需要 PCIe Gen5 效能才能發揮出來。
3 典型8*p00/8*H800主機
GPU Board Form Factor 分為兩種型別:
3.1 p00 芯片 layout
下面是一片 p00 GPU 芯片的內部結構:
單片 p00 GPU 內部邏輯布局。Image source: [3]
3.2 主機內硬體拓撲
跟 A100 8 卡機結構大致類似,區別:
- NVSwitch 芯片從 6 個減少到了 4 個;真機圖如下,
-
- 與 CPU 的互聯從 PCIe Gen4 x16 升級到 PCIe Gen5 x16 ,雙向頻寬 128GB/s ;
3.3 組網
與 A100 也類似,只是標配改成了 400Gbps 的 CX7 網卡, 否則網路頻寬與 PCIe Switch 和 NVLink/NVSwitch 之間的差距更大了。
4 典型4*L40S/8*L40S主機
L40S 是今年(2023)即將上市的新一代「價效比款」多功能 GPU,
對標 A100
。 除了不適合訓練基座大模型之外(後面會看到為什麽),官方的宣傳裏它幾乎什麽都能幹。
價格的話,目前第三方伺服器廠商給到的口頭報價都是 A100 的 8 折左右
。
4.1 L40S vs A100 配置及特點對比
L40S 最大的特點之一是 time-to-market 時間短 ,也就是從訂貨到拿到貨周期比 A100/A800/H800 快很多。 這裏面技術和非技術原因都有,比如:
價格便宜也有幾方面原因,後面會詳細介紹:
- 大頭可能來自 GPU 本身價格降低:因為去掉了一些模組和功能,或者用便宜的產品替代;
- 整機成本也有節省:例如去掉了一層 PCIe Gen4 Swtich;不過相比於 4x/8x GPU,整機的其他部份都可以說送的了;
4.2 L40S 與 A100 效能對比
下面是一個官方標稱效能對比:
具體場景的效能對比網上也有很多官方資料,這裏就不列舉了。簡單來,
需要註意, L40S 主機官方推薦的是單機 4 卡而不是 8 卡 (後面會介紹為什麽), 所以對比一般是用 兩台 4*L40S vs 單台 8*A100。另外,很多場景的效能提升有個 大前提 :網路需要是 200Gbps RoCE 或 IB 網路,接下來介紹為什麽。
4.3 L40S 攢機
推薦架構:2-2-4
相比於 A100 的 2-2-4-6-8-8 架構, 官方推薦的 L40S GPU 主機是 2-2-4 架構,一台機器物理拓撲如下:
推薦單機 4 卡 L40S GPU 主機拓撲
最明顯的變化是 去掉了 CPU 和 GPU 之間的 PCIe Switch 芯片 , 網卡和 GPU 都是直連 CPU 上內建的 PCIe Gen4 x16(64GB/s),
這樣 每片 GPU 平均 200Gbps 網路頻寬 。
不推薦架構:2-2-8
單機 8 卡 L40S GPU 主機拓撲,來自 NVIDIA L40S 官方推介材料
如圖,跟單機 4 卡相比,單機 8 卡需要引入兩片 PCIe Gen5 Switch 芯片:
4.4 組網
官方建議 4 卡機型,搭配 200Gbps RoCE/IB 組網。
4.5 數據鏈路頻寬瓶頸分析
單機 4 卡 L40S GPU 主機頻寬瓶頸分析
以同 CPU 下面的兩種 L40S 為例,這裏面有兩條鏈路可選:
- 直接透過 CPU 處理:GPU0 <--PCIe--> CPU <--PCIe--> GPU1
- PCIe Gen4 x16 雙向 64GB/s,單向 32GB/s ;
- CPU 處理瓶頸?TODO
- 完全繞過 CPU 處理, 透過網卡去外面繞一圈再回來 :GPU0 <--PCIe--> NIC <-- RoCe/IB Switch --> NIC <--PCIe--> GPU1
- PCIe Gen4 x16 雙向 64GB/s,單向 32GB/s ;
- 平均每個 GPU 一個單向 200Gbps 網口,單向折算 25GB/s ;
- 需要 NCCL 支持 ,官方說新版本 NCCL 正在針對 L40S 適配,預設行為就是去外面繞一圈回來;
第二種方式看著長了很多,但官方說其實比方式一還要快很多(這裏還每太搞懂,CPU 那裏是怎麽處理的?)—— 前提是網卡和交換機配到位 :200Gbps RoCE/IB 網路。在這種網路架構下(網路頻寬充足),
如果是方式二,同主機內 GPU 卡間的頻寬瓶頸在網卡速度。即使網路是推薦的 2*CX7 配置,
可以看到, L40S 卡間頻寬還是比 A100 NVLINK 慢了 12 倍 , 比 A800 NVLink 慢了 8 倍,所以 不適合數據密集互動的基礎大模型訓練 。
4.6 測試註意事項
如上,即便只測試單機 4 卡 L40S 機器,也需要搭配 200Gbps 交換機,否則卡間效能發揮不出來。
參考資料
- NVLink-Network Switch - NVIDIA’s Switch Chip for High Communication-Bandwidth SuperPODs, Hot Chips 2022
- ChatGPT Hardware a Look at 8x NVIDIA A100 Powering the Tool, 2023
- NVIDIA Hopper Architecture In-Depth, nvidia.com, 2022
- DGX A100 review: Throughput and Hardware Summary, 2020
- Understanding NVIDIA GPU Performance: Utilization vs. Saturation, 2023
提供p00 SXM5高效能GPU伺服器/A100 SXM4高效能GPU伺服器和IB組網有需求的微信聯系784254884 朱