當前位置: 華文世界 > 科技

高效能 GPU 伺服器硬件拓撲與集群組網(2023)

2024-02-15科技

記錄一些平時接觸到的 GPU 知識。由於是筆記而非教程,因此內容不會追求連貫,有基礎的同學可作查漏補缺之用。

水平有限,文中不免有錯誤或過時之處,請酌情參考。

  • 1 術語與基礎1.1 PCIe 交換芯片1.2 NVLink定義演進:1/2/3/4 代監控1.3 NVSwitcp.4 NVLink Switcp.5 HBM (High Bandwidth Memory)由來演進:HBM 1/2/2e/3/3e1.6 頻寬單位
  • 2 典型 8*A100/8*A800 主機2.1 主機內拓撲:2-2-4-6-8-8儲存網卡NVSwitch fabric: intra-node full-mesh用 nvidia-smi topo 檢視拓撲1.2 GPU 訓練集群組網:IDC GPU fabirc計算網絡儲存網絡RoCE vs. InfiniBand1.3 數據鏈路頻寬瓶頸分析
  • 3 典型 8*p00/8*H800 主機3.1 p00 芯片 layout3.2 主機內硬件拓撲3.3 組網
  • 4 典型 4*L40S/8*L40S 主機4.1 L40S vs A100 配置及特點對比4.2 L40S 與 A100 效能對比4.3 L40S 攢機推薦架構:2-2-4不推薦架構:2-2-84.4 組網4.5 數據鏈路頻寬瓶頸分析4.6 測試註意事項
  • 參考資料
  • 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 之間的一種高速互聯方式,

    1. 是一種短距離 通訊鏈路 ,保證包的成功傳輸,更高效能,替代 PCIe,
    2. 支持多 lane,link 頻寬隨 lane 數量線性增長,
    3. 同一台 node 內的 GPU 透過 NVLink 以 full-mesh 方式(類似 spine-leaf)互聯,
    4. NVIDIA 專利技術。

    演進:1/2/3/4 代

    主要區別是單條 NVLink 鏈路的 lane 數量 、每個 lane 的頻寬 (圖中給的都是雙向頻寬)等:

    NVLink 演進。Image from: HotChips 2022 [1]

    例如,

  • A100 是 2 lanes/NVSwitch * 6 NVSwitch * 50GB/s/lane= 600GB/s 雙向頻寬(單向 300GB/s)。註意:這是 一個 GPU 到所有 NVSwitch 的總頻寬
  • A800 被閹割了 4 條 lane,所以是 8 lane * 50GB/s/lane = 400GB/s 雙向頻寬(單向 200GB/s)。
  • 監控

    基於 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]

  • AMD MI300X 采用 192GB HBM3 方案,頻寬 5.2TB/s
  • HBM3e 是 HBM3 的增強版,速度從 6.4GT/s 到 8GT/s。
  • 1.6 頻寬單位

    大規模 GPU 訓練的效能與數據傳輸速度有直接關系。這裏面涉及到很多鏈路,比如 PCIe 頻寬、記憶體頻寬、NVLink 頻寬、HBM 頻寬、網絡頻寬等等。

  • 網絡習慣用 bits/second (b/s) 表示之外,並且一般說的都是 單向 (TX/RX);
  • 其他模組頻寬基本用 byte/sedond (B/s) 或 transactions/second (T/s) 表示,並且一般都是 雙向總頻寬
  • 比較頻寬時註意區分和轉換。

    2 典型8*A100/8*A800主機

    2.1 主機內拓撲:2-2-4-6-8-8

  • 2 片 CPU(及兩邊的記憶體,NUMA)
  • 2 張 儲存網卡 存取分布式儲存 ,帶內管理等)
  • 4 個 PCIe Gen4 Switch 芯片
  • 6 個 NVSwitch 芯片
  • 8 個 GPU
  • 8 個 GPU 專屬網卡
  • 典型 8 卡 A100 主機硬件拓撲

    下面這個圖畫的更專業,需要更多細節的可參考:

    NVIDIA DGX A100 主機( 官方 8 卡機器 )硬件拓撲。Image source: [4]

    儲存網卡

    透過 PCIe 直連 CPU 。用途:

    1. 從分布式儲存讀寫數據,例如 讀訓練數據 寫 checkpoint 等;
    2. 正常的 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

  • A100 用的 NVLink3, 50GB/s/lane ,所以 full-mesh 裏的每條線就是 12*50GB/s=600GB/s ,註意這個是雙向頻寬,單向只有 300GB/s。
  • A800 是閹割版, 12 lane 變成 8 lane ,所以每條線 8*50GB/s=400GB/s,單向 200GB/s。
  • 用nvidia-smi topo檢視拓撲

    下面是一台 8*A800 機器上 nvidia-smi 顯示的實際拓撲(網卡兩兩做了 bond,NIC 0~3 都是 bond):

  • GPU 之間(左上角區域):都是 NV8 ,表示 8 條 NVLink 連線;
  • NIC 之間:
  • 在同一片 CPU 上: NODE ,表示 不需要跨 NUMA,但需要跨 PCIe 交換芯片
  • 不在同一片 CPU 上: SYS ,表示 需要跨 NUMA
  • GPU 和 NIC 之間:
  • 在同一片 CPU 上,且在同一個 PCIe Switch 芯片下面: NODE ,表示 只需要跨 PCIe 交換芯片
  • 在同一片 CPU 上,且不在同一個 PCIe Switch 芯片下面: NODE ,表示 需要跨 PCIe 交換芯片和 PCIe Host Bridge
  • 不在同一片 CPU 上: SYS ,表示 需要跨 NUMA、PCIe 交換芯片,距離最遠
  • 1.2 GPU 訓練集群組網:IDC GPU fabirc

    GPU node 互聯架構:

    計算網絡

    GPU 網卡直連到置頂交換機(leaf),leaf 透過 full-mesh 連線到 spine,形成跨主機 GPU 計算網絡。

  • 這個網絡的目的是 GPU 與其他 node 的 GPU 交換數據
  • 每個 GPU 和自己的網卡之間透過 PCIe 交換芯片連線 :GPU <--> PCIe Switch <--> NIC。
  • 儲存網絡

    直連 CPU 的兩張網卡,連線到另一張網絡裏,主要作用是讀寫數據,以及 SSH 管理等等。

    RoCE vs. InfiniBand

    不管是計算網絡還是儲存網絡,都需要 RDMA 才能實作 AI 所需的高效能。RDMA 目前有兩種選擇:

  • RoCEv2:公有雲賣的 8 卡 GPU 主機基本都是這種網絡,比如 CX6 8*100Gbps 配置;在效能達標的前提下,(相對)便宜;
  • InfiniBand (IB):同等網卡頻寬下,效能比 RoCEv2 好 20% 以上,但是價格貴一倍。
  • 1.3 數據鏈路頻寬瓶頸分析

    單機 8 卡 A100 GPU 主機頻寬瓶頸分析

    幾個關鍵鏈路頻寬都標在圖上了,

    1. 同主機 GPU 之間:走 NVLink,雙向 600GB/s,單向 300GB/s
    2. 同主機 GPU 和自己的網卡之間:走 PICe Gen4 Switch 芯片,雙向 64GB/s,單向 32GB/s
    3. 跨主機 GPU 之間:需要透過網卡收發數據,這個就看網卡頻寬了,目前國內 A100/A800 機型配套的主流頻寬是(單向) 100Gbps=12.5GB/s 。 所以跨機通訊相比主機內通訊效能要下降很多。
    4. 200Gbps==25GB/s:已經 接近 PCIe Gen4 的單向頻寬;
    5. 400Gbps==50GB/s:已經 超過 PCIe Gen4 的單向頻寬。
    6. 所以在這種機型裏用 400Gbps 網卡作用不大,400Gbps 需要 PCIe Gen5 效能才能發揮出來。

    3 典型8*p00/8*H800主機

    GPU Board Form Factor 分為兩種類別:

  • PCIe Gen5
  • SXM5:效能更高一些
  • 3.1 p00 芯片 layout

    下面是一片 p00 GPU 芯片的內部結構:

    單片 p00 GPU 內部邏輯布局。Image source: [3]

  • 4nm 工藝;
  • 最下面一排是 18 根 Gen4 NVLink;雙向總頻寬 18 lanes * 25GB/s/lane = 900GB/s
  • 中間藍色的是 L2 cache;
  • 左右兩側是 HBM 芯片,即視訊記憶體;
  • 3.2 主機內硬件拓撲

    跟 A100 8 卡機結構大致類似,區別:

    1. NVSwitch 芯片從 6 個減少到了 4 個;真機圖如下,

    2. 與 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 快很多。 這裏面技術和非技術原因都有,比如:

  • 不存在被美國禁售的功能 (根據 2023.10 的新規定,已經禁售了),比如 FP64 和 NVLink 都幹掉了
  • 使用 GDDR6 視訊記憶體,不依賴 HBM 產能(及先進封裝);
  • 價格便宜也有幾方面原因,後面會詳細介紹:

    1. 大頭可能來自 GPU 本身價格降低:因為去掉了一些模組和功能,或者用便宜的產品替代;
    2. 整機成本也有節省:例如去掉了一層 PCIe Gen4 Swtich;不過相比於 4x/8x GPU,整機的其他部份都可以說送的了;

    4.2 L40S 與 A100 效能對比

    下面是一個官方標稱效能對比:

    具體場景的效能對比網上也有很多官方資料,這裏就不列舉了。簡單來,

  • 效能 1.2x ~ 2x(看具體場景)。
  • 功耗:兩台 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),

  • 2 片 CPU(NUMA)
  • 2 張雙口 CX7 網卡(每張網卡 2*200Gbps
  • 4 片 L40S GPU
  • 另外,儲存網卡只配 1 張(雙口),直連在任意一片 CPU 上
  • 這樣 每片 GPU 平均 200Gbps 網絡頻寬

    不推薦架構:2-2-8

    單機 8 卡 L40S GPU 主機拓撲,來自 NVIDIA L40S 官方推介材料

    如圖,跟單機 4 卡相比,單機 8 卡需要引入兩片 PCIe Gen5 Switch 芯片:

  • 說是現在 PCIe Gen5 Switch 單片價格 1w 刀 (不知真假),一台機器需要 2 片;價格不劃算;
  • PCIe switch 只有一家在生產,產能受限,周期很長;
  • 平攤到每片 GPU 的網絡頻寬減半;
  • 4.4 組網

    官方建議 4 卡機型,搭配 200Gbps RoCE/IB 組網。

    4.5 數據鏈路頻寬瓶頸分析

    單機 4 卡 L40S GPU 主機頻寬瓶頸分析

    以同 CPU 下面的兩種 L40S 為例,這裏面有兩條鏈路可選:

    1. 直接透過 CPU 處理:GPU0 <--PCIe--> CPU <--PCIe--> GPU1
    2. PCIe Gen4 x16 雙向 64GB/s,單向 32GB/s
    3. CPU 處理瓶頸?TODO
    4. 完全繞過 CPU 處理, 透過網卡去外面繞一圈再回來 :GPU0 <--PCIe--> NIC <-- RoCe/IB Switch --> NIC <--PCIe--> GPU1
    5. PCIe Gen4 x16 雙向 64GB/s,單向 32GB/s
    6. 平均每個 GPU 一個單向 200Gbps 網口,單向折算 25GB/s
    7. 需要 NCCL 支持 ,官方說新版本 NCCL 正在針對 L40S 適配,預設行為就是去外面繞一圈回來;

    第二種方式看著長了很多,但官方說其實比方式一還要快很多(這裏還每太搞懂,CPU 那裏是怎麽處理的?)—— 前提是網卡和交換機配到位 :200Gbps RoCE/IB 網絡。在這種網絡架構下(網絡頻寬充足),

  • 任何兩片 GPU 的通訊頻寬和延遲都是一樣的 ,是否在一台機器內或一片 CPU 下面並不重要,集群可以 橫向擴充套件 (scaling up,compared with scaling in);
  • GPU 機器成本降低;但其實對於那些對網絡頻寬要求沒那麽高的業務來說,是 把 NVLINK 的成本轉嫁給了網絡 ,這時候必須要組建 200Gbps 網絡,否則發揮不出 L40S 多卡訓練的效能。
  • 如果是方式二,同主機內 GPU 卡間的頻寬瓶頸在網卡速度。即使網絡是推薦的 2*CX7 配置,

  • L40S: 200Gbps(網卡單向線速)
  • A100: 300GB/s(NVLINK3 單向) == 12x 200Gbps
  • A800: 200GB/s(NVLINK3 單向) == 8x 200Gbps
  • 可以看到, L40S 卡間頻寬還是比 A100 NVLINK 慢了 12 倍 , 比 A800 NVLink 慢了 8 倍,所以 不適合數據密集互動的基礎大模型訓練

    4.6 測試註意事項

    如上,即便只測試單機 4 卡 L40S 機器,也需要搭配 200Gbps 交換機,否則卡間效能發揮不出來。

    參考資料

    1. NVLink-Network Switch - NVIDIA’s Switch Chip for High Communication-Bandwidth SuperPODs, Hot Chips 2022
    2. ChatGPT Hardware a Look at 8x NVIDIA A100 Powering the Tool, 2023
    3. NVIDIA Hopper Architecture In-Depth, nvidia.com, 2022
    4. DGX A100 review: Throughput and Hardware Summary, 2020
    5. Understanding NVIDIA GPU Performance: Utilization vs. Saturation, 2023

    提供p00 SXM5高效能GPU伺服器/A100 SXM4高效能GPU伺服器和IB組網有需求的微信聯系784254884 朱