<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

訓練大語言模型帶來的硬件挑戰

SDNLAB ? 來源:SDNLAB ? 2023-09-01 17:14 ? 次閱讀

01

介紹

生成式AI和大語言模型(LLM)正在以難以置信的方式吸引全世界的目光,本文簡要介紹了大語言模型,訓練這些模型帶來的硬件挑戰,以及GPU網絡行業如何針對訓練的工作負載不斷優化硬件。

02

生成式AI/大語言模型-Generative AI/Large Language Models

生成式AI是人工智能的一個分支,主要聚焦在基于既有的內容、創造和生成諸如圖片、文字和音樂等新的內容,而不僅僅簡單的復制和衍生。它包括訓練深度學習模型,通過學習大型數據集的基本模式和特征,然后利用這些知識來生成新的輸出結果。大語言模型是生成式人工智能的一種,利用先進的深度學習算法在大量的自然語言數據上進行訓練。這些模型可以學習到人類語言的模式和結構,并可以針對各類書面輸入(譯者注:可以理解為提出的各行各業,各種方面的提問)或者提示做成類似人類的反饋(回答)。

大語言模型已經“悄然工作”了十多年,直到openAI發布了ChatGPT,才吸引了廣泛關注。ChatGPT可以讓任何一個可以上網的人,都能和“強悍”的大語言模型-GPT3.5進行交互。隨著更多的個人和組織開始和chatGPT“戲?!逼饋?,我們意識到很多應用會因此發生變化,而這種改變,在一年前無法想象。

ChatGPT以及其他最新的大語言模型產品帶來近乎完美的“人類”表現,得益于架構模型的進步,這些模型就是高效的深度神經網絡(DDN)和數十億訓練參數的大型數據集。大多數參數是用于訓練和推理的權重矩陣。而訓練這些模型的浮點計算次數(FLOP)與參數數量和訓練集的大小幾乎呈現線性增長。這些運算是專為矩陣云端設計的處理器上進行的,如圖形處理器(GPU)、張量處理單元(TPU)和其他專用人工智能芯片。GPU/TPU 和人工智能加速硬件以及它們之間用于通信的互聯技術的進步,使這些巨型模型的訓練成為可能。

03

大語言模型應用(LLM)

大語言模型有很多使用案例(譯者注:后LLM即為大語言模型,后續兩者都可能出現),幾乎每個行業都可以從中獲益。任何組織都可以基于自己領域和特定需求進行微調。微調在特定的數據集上訓練已有的語言模型,使得更具備專業性,來滿足特定任務的要求(譯者注:英文原文為fine-tune,個人覺得是不是叫調優更好一些,不過后面還是寫成微調)。微調可以使企業能夠利用訓練模型的已知能力,同時適應企業的獨特需求。它使得模型可以獲取特定領域的知識,從而提高為組織本身的應用場景創造輸出。有了經過微調的模型,企業可以將大語言模型應用在諸多場景中。

例如,根據公司文檔進行微調的LLM可以用于客戶支持的服務。LLM可以幫助軟件工程師創建代碼,或者幫助他們創建部分代碼,當根據企業的專用代碼庫進行微調之后,LLM還可能生成與現有代碼庫一樣的軟件。(譯者注:在juniper的mist無線管理平臺下,客戶就可以通過AI對話助手,利用chatGPT對juniper的文檔進行查詢,提問一些像“交換機VLAN該如何配置”這樣的問題)。

利用情感分析來了解客戶的反饋,將技術文檔翻譯成其他語言,總結會議和客戶的電話,以及生成工程或營銷內容,這些都是LLM的諸多案例的“灑灑碎”(一點點)。

而隨著LLM的規模不斷呈指數級增長,對計算和互聯的需求也大幅增加。只有當模型的訓練和微調,以及推理更具成本優勢時,LLM才會得到廣泛應用。

04

LLM訓練

使用自然語言文本訓練,通常需要通過網絡抓取,維基百科、GitHub、Stack Exchange(問答網站)、arXiv(一個免費的科學預印論文庫)等網站收集大量數據。大多數模型堅持使用開放數據集進行訓練。首先要對數據集中的大量文本進行標記化,通常是使用字節對編碼等方法。

標記化是將互聯網上的原始文本轉換成一串整數(標記)。一個標記(唯一整數)可以代表一個字符,也可以代表一個詞。標記也可以是單詞的一部分。例如,單詞 "unhappy "可能被分成兩個標記--一個代表子單詞 "un",另一個代表子單詞 "happy"。

wKgZomTxrAuAV0-FAAhbOWT184M231.jpg

圖 1 — 段落的標記化

根據數據集的不同,可能會有數以萬計的獨特標記,而數據集本身也可能映射出數千億個標記。序列或上下文長度是模型在訓練過程中預測下一個標記時,將查看的連續標記的數量。在 GPT-3 和 LLaMA(Meta 的 LLM)中,序列長度約為 2K。有些模型使用的序列長度為 100,000 左右。表 1 比較了 GPT-3 和 LLaMA 模型的訓練參數。

為了訓練模型,標記會被分成大小為 batch_size (B) x 序列長度的數組,這些會批量送入大型神經網絡模型。在這篇文章中,我不會深入探討模型架構,因為這需要對深度學習和轉換器(transformers)有更深入的了解(我不具備這方面的知識)。訓練通常需要數周甚至數月的時間,并且需要大型 GPU 集群。

wKgZomTxrAuAXkT3AADceYy5vBQ696.jpg

|表 1 — 比較GPT-3 和 LLaMA 模型

當基礎模型訓練完成后,通常會進行監督微調- Supervised Fine-Tuning (SFT)。這是可以讓LLM化身助手,根據人類提示回答問的重要步驟。在監督微調的過程中,承包商(供應商)會人工創建一個精致的數據集(數量少,但是質量超高),并利用這個數據集對基礎模型進行重新訓練。對,就是這樣,訓練有素的SFT模型就可以變成助手,能夠對用戶的提示做出類似人類的回應,這是對LLM的一個簡化解釋,目前是為后面的章節提供一些背景信息。

05

數學模型

一個擁有 175B 參數的模型通常需要大于 1TB 的內存來存儲參數和計算過程中的中間狀態。它還需要存儲空間來檢查訓練狀態(在訓練迭代過程中遇到硬件錯誤時回退)。一萬億個標記通常需要 4TB 的存儲空間。像 Nvidia H100 這樣的高端 GPU 集成了 80GB 的 HBM 內存。一個 GPU 的內存無法滿足模型參數和訓練集的需求。

根據維基百科,一個 LLM 的每個參數和標記通常需要 6 個FLOP。這意味著訓練 GPT-3 模型需要 6 x 175B x 300B 或 3.15 x 10^23 FLOP。GPT-3 模型的訓練耗時三周。因此,在這三周的時間里,它需要 5.8 x 10^16 FLOPS(每秒浮點運算)的計算能力。

性能最高的 Nvidia H100 GPU 大約可以實現 60 TeraFLOPS(每秒萬億浮點數)。如果這些 GPU 的利用率達到 100%,那么我們需要約 1000 個 GPU 才能獲得 5.8 x 10^16 FLOPS。但是,在許多訓練工作負載中,由于內存和網絡瓶頸,GPU 的利用率徘徊在 50% 左右或更低。因此,訓練所需的 GPU 數量是原來的兩倍,即大約需要 2000 個 H100 GPU。最初的 LLM 模型(表 1)是使用舊版本的 GPU 進行訓練的,因此需要 10,000 個 GPU。

在使用數千個 GPU 的情況下,模型和訓練數據集需要在 GPU 之間進行分布,以便并行運行。并行可以從多個維度進行。

06

Data parallelism-數據并行

數據并行是在多個 GPU 上分割訓練數據,并在每個 GPU 上訓練模型的副本。

# 典型的流程如下

數據分發:訓練數據被分成多個迷你批次,并分配給多個 GPU。每個 GPU 獲得一個獨特的迷你批次訓練集。

模型拷貝:在每個 GPU(worker)上放置一份模型副本。

梯度計算:每個 GPU 使用其迷你批次對模型進行一次迭代訓練,運行一次前向傳遞來進行預測,一次后向傳遞來計算梯度(表明在下一次迭代之前應如何調整模型參數)。

梯度聚合:然后將所有 GPU 的梯度匯總在一起。通常的做法是取梯度的平均值。

模型更新:聚合梯度被廣播到所有 GPU。GPU 更新其本地模型參數并同步。

重復:這一過程會重復多次迭代,直到模型完全訓練完成。

在使用大型數據集時,數據并行化可以大大加快訓練速度。但是,由于每個 GPU 必須將其結果與參與訓練的其他 GPU 進行通信,因此可能會產生相當大的 GPU 間通信量。在每次訓練迭代中,這種所有GPU全部相互交互的通信會在網絡中產生大量流量。

有幾種方法可以減少這種情況。對于小規模模型,可由專門的服務器(參數服務器)匯總梯度。這可能會造成從眾多 GPU 到參數服務器之間的通信瓶頸。Ring All-Reduce等方案可以用于將梯度以環形模式從一個 GPU 發送到另一個 GPU,其中每個 GPU 將從上一個 GPU 接收到的梯度與本地計算的梯度聚合在一起,然后再發送給下一個 GPU。因為梯度聚合分布在各個 GPU 上,最終結果需要傳回環形拓撲結構中的所有 GPU,因此這個過程非常緩慢。如果網絡出現擁塞,GPU 流量在等待梯度聚合時就會停滯。

此外,單個 GPU 無法處理數十億參數的 LLM。因此,僅靠數據并行性并不適用于 LLM 模型。

(譯者注:數據并行的概念描述,參考baidu大腦的一篇文章:https://baijiahao.baidu.com/s?id=1721295143486708825&wfr=spider&for=pc)

07

Model parallelism--模型并行

模型并行旨在通過在多個 GPU 上分割模型參數(和計算)來解決模型無法在單個 GPU 上運行的問題。

# 典型的流程如下

模型分區: 模型被分為幾個分區。每個分區分配給不同的 GPU。由于深度神經網絡通常包含一堆垂直層,因此將大型模型按層分割是合乎邏輯的,其中一個或一組層可能被分配給不同的 GPU。

前向傳遞:在前向傳遞過程中,每個 GPU 都會使用 "整個 "訓練集計算其模型部分的輸出。一個 GPU 的輸出將作為輸入傳遞給序列中的下一個 GPU。序列中的下一個 GPU 在收到前一個 GPU 的更新之前無法開始處理。

后向傳遞:在后向傳遞過程中,一個 GPU 的梯度被傳遞給序列中的前一個 GPU。收到輸入后,每個 GPU 都會計算模型中自己那部分的梯度。與前向傳遞類似,GPU 之間會建立順序依賴關系。

參數更新:每個 GPU 都會在后向傳遞結束時更新其模型部分的參數。請注意,這些參數無需廣播給其他 GPU。

重復:重復這一過程,直到模型在所有數據上都訓練完成。

模型并行化允許對單個 GPU 難以支撐的大型模型進行訓練。但這也會在前向和后向傳遞過程中引入 GPU 之間的通信。此外,由于數據集規模巨大,上述通過一大批 GPU 運行整個訓練數據集的天真實現方式,對于 LLM 可能并不實用,也會在 GPU 之間產生順序依賴關系,導致大量等待時間和計算資源利用率嚴重不足。這也就產生了下面的流水線并的方式。

08

Pipeline parallelism-流水線并行

流水線并行結合了數據并行和模型并行,其中訓練數據集的每個迷你批次被進一步拆分為多個微型批次。在上面的模型并行例子中,當一個 GPU 使用第一個微批次計算輸出并將數據傳遞給序列中的下一個 GPU 后,它不會閑置,而是開始處理訓練數據集的第二個微批次,以此類推。這就增加了 GPU 之間的通信,因為每個微批次都需要在序列中相鄰的 GPU 之間進行前向傳遞和后向傳遞通信。

09

Tensor parallelism-張量并行

模型和流水線并行技術都會在層邊界垂直分割模型。對于大型 LLM,即使在 GPU 中安裝單層也是一項挑戰!在這種情況下,張量并行技術就派上了用場。它是模型并行的一種形式,但不是在層級上劃分模型,而是在單個操作或 "張量 "級別上劃分模型。這樣可以實現更細粒度的并行,對某些模型來說效率更高。

還有許多其他技術可以在 GPU 上分割數據集和模型參數。這一領域的研究重點是盡量減少 GPU 間的通信,并在訓練大型模型時減少 GPU 的閑置時間(FLOP 利用率)。大多數深度學習框架都內置了對模型和數據集分區的支持(如果用戶不想手動設置的話)。

無論使用哪種并行方式,LLM 都會因為參數和數據集的龐大規模,通過連接這些 GPU 的矩陣產生大量 GPU 間通信。結構中的任何擁塞都可能導致訓練時間過長,使得GPU 利用率極低。

因此,用于 GPU/TPU 集群的互連架構技術和拓撲結構對 LLM 的總成本和性能起著至關重要的作用。讓我們探討一下流行的 GPU/TPU 集群設計,以了解互連技術及其在 LLM 訓練中的應用。

10

GPU/TPU全貌

TPU 是谷歌開發的人工智能加速器,用于加速矩陣乘法、矢量處理以及訓練大規模神經網絡所需的其他計算。谷歌不向其他云提供商或個人出售 TPU。這些 TPU 集群僅由谷歌用于在谷歌云中提供 ML/AI 服務和其他內部應用。

wKgZomTxrAuAfXVBAARihYxtvDk422.jpg

|圖二2 — 2D/3D

谷歌使用二維-2D或三維-3D環形網狀網絡構建 TPU 集群。在二維環形網格中,每個 TPU 與南/北/東/西的四個方向的 TPU 相連。環形網格的特點是網格邊緣環繞(像甜甜圈或環形),因此網格邊緣的 TPU 仍與其他四個 TPU 相連。同樣的概念也可以擴展到三維拓撲結構。這種拓撲結構使相鄰的 GPU 在交換結果時能夠快速通信(張量/管道并行)。

TPU v4 集群在三維環形網絡中擁有超過 4,096 個 TPU。它們使用光交換機(OCS)來轉發TPU 之間的流量。因為消除了轉發過程中光電轉換操作,因此可以節省 OCS 上光模塊的功耗。谷歌在 TPU v4 集群中對其所有 LLM 模型(LaMDA、MUM 和 PaLM)進行了訓練,并聲稱訓練中 TPU 的利用率非常高(超過 55%)。

談到 GPU,Nvidia 是 GPU 供應商的“大佬”,所有大型數據中心和高性能計算(HPC)都使用 Nvidia 系統來訓練大型 DNN。大多數 LLM(谷歌創建的模型除外)都是使用 Nvidia 的 GPU 進行訓練。

Nvidia GPU 配備高速 NVLinks,用于 GPU 與 GPU 之間的通信。與傳統的 PCIe 接口相比,NVLink 提供了更高的帶寬,可加快 GPU 之間的數據傳輸,從而縮短機器學習的訓練時間。第四代 NVlink 可提供每個方向200Gbps 的帶寬。Nvidia 最新的 H100 GPU 有 18 個這樣的鏈路,可提供 900GBps 的總帶寬。此外,NVLink 支持 GPU 內存池,即多個 GPU 可以連接在一起,形成更大的內存資源。這有利于運行需要比本地 GPU 內存大的應用程序,并允許在 GPU 之間靈活劃分模型參數。

wKgaomTxrAuAUVYZAAFbQVhmt9Q733.jpg

| Figure 3 — GPU 服務器(節點) 共計 8個GPUs. 每個網卡會通過每個方向的OSFP承載 400Gbps的數據. The OSFP cage 把GPU的CX7 NIC 上和外部的以太/IB交換機互聯,節點中的 GPU 可以通過 NVLink 交換機系統的層級結構,利用四個 NV 交換機的 OSFP 端口連接到其他 GPU 來源: Nvidia’s Hot Chips 2022 presentation.

GPU 服務器,又稱系統或節點,是一個 8 個 GPU 的集群,集群內的 GPU 通過四個定制的 NVLink 交換機(NVswitches)通過 NVLinks 相互通信。多個 GPU 服務器可通過 GPU 架構連接在一起,形成大型系統。

GPU 矩陣是以葉脊結構(Leaf/Spine)或三級 CLOS 拓撲排列的交換機陣列。為所有連接于此的GPU 服務器之間提供任意對任意的連接。矩陣的葉/脊(Leaf-Spine)交換機通常采用胖樹(fat-tree)拓撲結構。在胖樹拓撲結構中,隨著拓撲結構從節點向上移動到葉子和骨干,鏈路的帶寬也會增加。這是因為每個上行鏈路需要處理來自多個下行鏈路的帶寬。

wKgZomTxrAuAd5cFAAGrzHKERvc264.jpg

| 圖 4 — 數據中心網絡中 GPU 服務器和 GPU 網絡矩陣的概念圖

# GPU網絡矩陣的交換機數量取決于

· 系統規模 (或者說GPU節點的數量)。

· 內部交換機的吞吐量,單個交換機提供的吞吐量越高,構建矩陣所需的交換機數量就越少。

· 矩陣中的額外帶寬(超額配置),以緩解擁塞情況。

# 想要實現最佳訓練性能,就需要

· GPU 結構應具有較低的端到端延遲。由于存在大量 GPU 間通信,降低節點間數據傳輸的整體延遲有助于縮短整體訓練時間。

· 矩陣可以保證節點間無損傳輸數據。無損傳輸是人工智能訓練的一個重要標準,因為梯度或中間結果的任何損失,都會導致整個訓練回到存儲在內存中的上一個檢查點,然后重新開始。這會對訓練性能產生不利影響。

· 系統應具備良好的端到端擁塞控制機制。在任何樹狀拓撲結構中,當多個節點向一個節點傳輸數據時,瞬時擁塞是不可避免的。持續擁塞會增加系統的尾部延遲。由于 GPU 之間的順序依賴關系,即使單個 GPU 的梯度更新在網絡中出現延遲,許多 GPU 也會停滯。一個緩慢的鏈路(譯者注:這里我個人理解為擁塞的交換機物理鏈路)就會導致訓練性能下降!

此外,還應考慮到構建系統的總成本、功耗、冷卻成本等。有鑒于此,讓我們來看看 GPU 架構設計的選擇以及每種方法的優缺點。

11

定制化 NVLink 交換機系統-- Custom NVLink switch system

NVLink交換機既可以用于連接GPU服務器內部的8個GPU,也可以用于構建GPU服務器之間的交換結構,Nvidia 在 Hot Chips 2022 會議上展示了使用 NV switch 矩陣的 32 節點(或 256 個 GPU)拓撲結構。由于 NVLink 被專門設計為連接 GPU 的高速點對點鏈路,因此它比傳統網絡具有更高的性能和更低的開銷。

wKgaomTxrAuAa-U6AAExa_lohxM839.jpg

| 圖5 — 使用NV Switch的GPU矩陣

第三代 NV switch 支持 64 個 NVLink 端口,交換容量為 12.8Tbps。它還支持組播和網內聚合。通過網內聚合,來自所有工作 GPU 的梯度數據會在 NV 交換內部聚合,更新后的梯度會發送回 GPU 以開始下一次迭代。這有可能減少訓練迭代之間的 GPU 間通信量。

Nvidia 聲稱,使用 NV switch矩陣訓練 GPT-3 模型的速度比使用 InfiniBand 交換矩陣快 2 倍。這一性能令人印象深刻,但交換機的帶寬比高端交換機供應商提供的 51.2Tbps 交換機少 4 倍!使用 NV switch構建具有 >1K GPU 的大型系統在經濟上并不可行,而且協議本身在支持更大規模方面可能存在局限性。

此外,Nvidia 并不單獨銷售這些 NV switch。如果數據中心希望通過混合和匹配不同供應商的 GPU 來擴展現有的 GPU 集群,就不能使用 NV switch,因為其他供應商的 GPU 不支持這些接口。

(譯者注:并沒有把NV switch翻譯成NV交換機,是為了保證這個名詞的獨立性)

12

InfiniBand (IB) 矩陣

InfiniBand 于 1999 年推出,被視為 PCI 和 PCI-X 總線技術的高速替代品,用于連接服務器、存儲和網絡。盡管由于其經濟性的因素,InfiniBand 最初的雄心壯志有所收斂,但由于其卓越的速度、低延遲、無損傳輸和遠程直接內存訪問(RDMA)功能,InfiniBand 在高性能計算、人工智能/ML 集群和數據中心中找到了自己的位置。

InfiniBand (IB) 協議設計高效、輕便,避免了與以太網協議相關的典型開銷。它既支持基于通道的通信,也支持基于內存的通信,因此可以高效地處理各種數據傳輸方案。

IB 通過發送和接收設備之間基于信用的流量控制(在每個隊列或虛擬線路層次上)實現無損傳輸。這種逐跳流量控制可確保數據不會因緩沖區溢出而丟失。此外,它還支持端點之間的擁塞通知(類似于 TCP/IP 協議棧中的 ECN)。它提供卓越的服務質量,允許優先處理某些類型的流量,以降低延遲并防止數據包丟失。

此外,所有 IB 交換機都支持 RDMA 協議,該協議允許數據從一個 GPU 的內存直接傳輸到另一個 GPU 的內存,而不牽扯CPU操作系統。這種直接傳輸方式大大提高了吞吐量,減少了端到端延遲。

盡管具備這些優勢,但因為它們更難配置、維護和擴展,InfiniBand 交換機系統卻不如以太網交換機系統受歡迎。InfiniBand 的控制平面通常通過單個子網管理器集中管理。它可以與小型集群配合使用,但對于擁有 32K 或更多 GPU 的 矩陣 而言,擴展難度很大。IB 矩陣還需要主機通道適配器和 InfiniBand 線纜等專用硬件,擴展成本比以太網矩陣高。

目前,Nvidia 是唯一一家為 HPC 和 AI GPU 集群提供高端 IB 交換機的廠商。OpenAI 在微軟的 Azure 云中使用 10,000 個 Nvidia A100 GPU 和 IB 交換機矩陣訓練了他們的 GPT-3 模型。Meta 公司最近利用 Nvidia A100 GPU 服務器和 Quantum-2 IB 交換機 (25.6Tbps 交換容量,400Gbps 端口)構建了一個 16000的 GPU 集群。該集群用于訓練生成式人工智能模型,包括 LLaMA。

請注意,在超過10,000 GPU連接時,每個服務器內部 GPU 之間的切換是通過服務器中的 NV switch進行的。IB/以太網矩陣只是將服務器連接在一起。

wKgZomTxrAuAeN4_AAG_v0Ns8s8651.jpg

| 圖6 — 連接 128 個 GPU 的 GPU 結構概念圖(未顯示所有節點)。GPU-Leaf鏈路: 400Gbps; Leaf-Spine鏈路:800Gbps.

由于對 LLM 訓練工作負載和更大 LLM 模型的需求不斷增加,超大規模廠商正在尋求建立擁有 32K 甚至 64K GPU 的 GPU 集群。在這種規模下,使用以太網 Fabric 在經濟上更有意義,因為以太網已經擁有一個強大的生態系統,包括許多芯片/系統和光學器件供應商,并且正在推動開放標準,以實現供應商之間的互操作性。

13

以太網矩陣--Ethernet fabric

從數據中心到骨干網絡,處處都可以看到以太網的部署,從 1G的低速端口到800G,再到即將到來的 1.6T,應用部署各不相同。Infiniband 在端口帶寬和總交換容量方面都落后于以太網。以太網交換機每G帶寬的成本低于 InfiniBand 交換機,這得益于高端網絡芯片供應商之間的良性競爭,導致供應商在每個 ASIC芯片增加更多帶寬(譯者注:互相PK追逐性能),從而使得不論固定端口交換機和模塊化交換機,每G成本都更優異。

行業領先企業的高端以太網交換機 ASIC芯片,已經可以提供 51.2Tbps 的交換容量和 800G 端口,是 Quantum-2 性能的兩倍。如果每個交換機的吞吐量增加一倍,在相同數量GPU的情況下,構建GPU矩陣所需所需的交換機數量將會減半!

無損傳輸:以太網可以通過優先流量控制(PFC)提供無損傳輸。PFC 允許八類服務,每一類都支持流量控制。其中一些類別可指定為啟用 PFC 的無損傳輸。與有損流量相比,無損流量以更高的優先級通過交換機進行處理和交換。在擁塞期間,交換機/網卡可以對其上游設備進行流量控制,而不是丟棄數據包。

RDMA支持:以太網還可通過 RoCEv2(RDMA over Converged Ethernet,聚合以太網上的 RDMA)支持 RDMA,RDMA 幀封裝在 IP/UDP 內。當 GPU 服務器中的網絡適配器(NIC)接收到發送給 GPU 的 RoCEv2 數據包時,NIC 會繞過 CPU 將 RDMA 數據直接發送到 GPU 的內存中。此外,還可以部署強大的端到端擁塞控制方案(如 DCQCN),以減少 RDMA 的端到端擁塞和數據包丟失。

負載均衡增強:BGP 等路由協議使用等價多路徑路由(ECMP),在源和目的地之間有多條 "成本 "相等的路徑時,將數據包分配到多條路徑上。鏈路成本(cost)就可以簡單理解為設備跳數。ECMP 的目標是分配網絡流量,提高鏈路利用率,防止擁塞。

當數據包到達交換機時,可以多條等價路徑到達目的地,交換機會使用哈希函數來決定發送數據包的路徑(實現負載均衡)。這種哈??梢允褂迷春湍康腎P 地址、源和目的端口號以及協議字段,將數據包映射到不同鏈路的流量上。然而,哈希并不總是完美的,可能會導致某些鏈路流量過載。例如,在圖 7 中,假設單播流量模式為 G0 -> G19、G9 -> G2 ,以及G18 -> G11。理想情況下,網絡應該不會擁塞,因為葉/脊交換機有足夠的帶寬支持這種流量模式。然而,由于哈希的離散不夠,導致所有流量都可能選擇 Spine_switch_0。當出現這種情況時,該交換機的輸出端口就會出現流量超載,1200Gbps 的流量試圖從 800Gbps 的端口流出。(譯者注:此處有一句due to a lack of entropy,我理解為就是hash并沒有把流量分布出去,而是落在一個交換機上)。

wKgaomTxrAuAUwdaAAJS5UIvOxo628.jpg

| 圖 7 — 不完善的哈希計算可能會導致某些鏈路被過度占用(譯者注:在Spine_ switch_0上看,左側三個400G端口進入的流量湊要從右側黑色的800G端口發出)

在這種情況下,端到端擁塞方案(例如ECN/DCQCN 等)可以有效地根據交換機結構內部的擁塞情況對發送方流量進行節流,不過在發送方節流之前仍可能會出現短暫的擁塞情況。

# 還有其他方法可以進一步減少擁塞

1.在脊/葉交換機之間的線路略微超配帶寬。

自適應負載平衡:當有多條路徑到達目的地時,如果一條路徑出現擁塞,交換機可以通過其他端口來路由后續的流量數據,直到擁塞得到解決。為實現這一功能,交換機硬件會監控出口隊列深度和耗盡率,并定期將信息反饋給上游交換機的負載平衡器。許多交換機已經支持這一功能。

RoCEv2 的數據包負載均衡可將這些數據包均勻地分布在所有可用鏈路上,以保持鏈路的有效均衡。通過這種方式,數據包可以不按順序到達目的地。但是,網卡要可以將 RoCE 傳輸層這些不按順序的數據,轉換成有順序的數據,以透明方式向 GPU 傳輸(譯者注:也就是網卡需要做數據的排序工作)。這需要網卡和以太網交換機提供額外的硬件支持。

除上述功能外,網絡內聚合(GPU 的梯度可以在交換機內聚合)也有助于減少訓練期間的 GPU 間流量。Nvidia 在高端以太網交換機集成軟件支持這一功能。

因此,高端以太網交換機/網卡具有強大的擁塞控制/負載平衡功能和 RDMA 支持。與 IB 交換機相比,它們可以擴展到更大的設計規模。一些云服務提供商和超級擴展商已經開始構建基于以太網的 GPU 矩陣,以連接大于 32000(32K)個 GPU。

14

全調度型矩陣Fully-scheduled fabric(VOQ fabric)

最近,幾家交換機/路由器芯片供應商發布了支持全調度或 AI矩陣芯片。全調度矩陣并不新奇,不過是VOQ矩陣的一種,該技術十多年來主要用于許多模塊化機箱設計,包括瞻博網絡的 PTX 系列路由器。這種 VOQ矩陣 概念可以擴展到支持分布式系統,以及更大規模的擴展。

在 VOQ 架構中,數據包只在入口Leaf交換機中緩沖一次,其緩沖隊列與數據包需要離開的最終出口Leaf交換機/廣域網端口/輸出隊列是唯一映射的。入口交換機中的這些隊列稱為虛擬輸出隊列(VOQ)。因此,每個入口Leaf交換機都為整個系統中的每個輸出隊列留有緩沖空間。該緩沖區的大小通??扇菁{每個 VOQ 大概40-70us 的擁塞數據(譯者注:相當于內存)。當隊列較小時,VOQ 會留在芯片緩沖區;當隊列開始增加時,VOQ 會轉移到外部存儲器中的深度緩沖區。

· 在入口Leaf交換機上,一旦 VOQ 積累了一些數據包,它就會向出口交換機發出請求,請求允許通過網絡發送這些數據包。這些請求通過網絡到達出口Leaf交換機。

· 出口Leaf交換機的調度程序會根據嚴格的調度層次和淺層輸出緩沖區的空間來批準這一請求。并授權速率限制,以避免從矩陣中出口交換機的出口鏈路過載。

· 當授權批準到達 入口 Leaf 交換機,它就會將一組數據包(收到授予的數據包)發送到出口,并將負載均衡到矩陣中的所有可用上行鏈路上(譯者注:上行鏈路即是到達spine的鏈路)。

· 針對特定 VOQ 的數據包可以在所有可用的輸出鏈路上均勻分布,以實現完美的負載平衡。這可能會導致數據包重新排序。但是需要注意,在這些數據包傳輸到 GPU 節點之前,出口交換機邏輯上是需要把這些數據包按順序排列完畢。

wKgaomTxrAuAIcn4AAEvaENxtQI006.jpg

| 圖8 — VOQ 矩陣

為避免鏈路帶寬被超額占用,出口調度程序會在確保矩陣中交換機轉發數據時,對這些數據進行計量,確保不會超出。因此它消除了以太網結構中 99% 因非連續傳輸(許多端口試圖向一個輸出端口發送流量)而造成的擁塞,并完全消除了 HOL 阻塞。需要注意的是,在這種架構中,數據(包括請求和授權)仍使用以太網結構傳輸。(譯者注:這段翻譯比較拗口,大家可以參考原文,大概的意思就是VOQ會提前保證帶寬的預留和占用,但是關于控制的信令信息,依然是以太網傳輸)。

還有一些架構(包括瞻博網絡的 Express 和 Broadcom 的 Jericho 系列)通過其專有的信元化矩陣(cellified fabric)支持 VOQ。在這種情況下,Leaf交換機將數據包劃分為固定大小的單元,并將它們平均發送到到所有可用的輸出鏈路上。這比在數據包層面上進行數據負載均衡發送能能提高鏈路利用率,因為在大小數據包混合的情況下,很難保證所有鏈路都得到充分利用。

伴隨信元轉發,我們還避免了輸出鏈路的另一個存儲/轉發延遲(輸出以太網接口的延遲)。在信元矩陣中,Spine交換機被可高效轉發信元的定制交換機所取代。這些矩陣信元交換機在功耗和延遲方面都優于以太網交換機,因為它們沒有支持 L2 交換的開銷。因此,基于信元的矩陣不僅能提高鏈路利用率,還能減少 VOQ矩陣中的端到端延遲。(譯者注:此處我個人的理解是,把整個交換矩陣理解成一個大cell轉發的交換機,來來實現高速的轉發,因為如果是傳統IP架構,交換機之間轉發數據還涉及到二層以太網的封裝和解封裝問題,而cell轉發則簡化了這個步驟,越看越像早期的ATM了,LOL)

wKgZomTxrAuAIyeXAAG3R-Rk3PI754.jpg

| 圖9 — Leaf交換機和cell交換機組成的基于信元的矩陣

# VOQ 架構也有如下局限

· 每個Leaf交換機都需要在入口側為系統中的所有 VOQ 設置合理的緩沖區,以便在擁塞期間緩沖數據包。緩沖區大小與 GPU 數量乘以每個 GPU 的優先級隊列數量成正比。更大規模 GPU 規模就意味著需要更多的入口緩沖(譯者注:個人覺得也是對Leaf交換機性能和成本的挑戰)。

· 出口側的輸出隊列緩沖區應留有足夠的空間,以覆蓋通過矩陣的往返延遲 (RTT),這樣這些緩沖區就不會在請求-授予握手期間空閑。在使用 3 級結構的大型 GPU 集群中,由于光纜較長和交換機的增加,其RTT 可能會增加。如果輸出隊列緩沖區的大小不適合增加的 RTT,輸出鏈路將無法達到 100% 的利用率,從而降低系統性能。(譯者注:個人理解這意味著緩沖區空間的計算,不僅僅是數據包乘以緩沖延遲的計算,也包括數據包在鏈路上的延遲計算得到大小,這樣才能保證數據在傳輸過程中100%傳遞,這個確實我以前沒想過)。

· 盡管 VOQ 系統通過出口調度消除了 HOL 阻塞,大大減少了尾部延遲,但由于入口Leaf交換機在傳輸數據包之前必須進行請求-授予握手,因此數據包的最小延遲確實會增加一個額外的 RTT(譯者注:為了不擁塞,需要協商,因為協商,帶來新的RTT是必然,就看如何RTT有多大,如何tradeoff或優化)。

盡管存在這些瓶頸,但完全調度的 VOQ 結構在減少尾部延遲方面的表現要比典型的以太網流量好得多。如果能使鏈路利用率大于 90%,那么盡管GPU 擴展帶來緩沖區的增加,因而產生額外成本的增加(價格的增加或者RTT的增加等),這個方案依然值得投資。

另外,供應商鎖定可能是 VOQ矩陣的一個問題,因為每個供應商都有自己的專有協議,而且很難在同一矩陣中混搭多品牌交換機使用。

15

關于推理/微調工作負載的一個小說明

LLM 中的推理是使用已完成訓練的模型來生成對用戶提示的響應過程,通常是通過 API 或網絡服務。例如,當我們在 ChatGPT 會話中輸入一個問題時,推理過程會在云端托管的已訓練好的 GPT-3.5 模型副本上運行,從而得到回復。與訓練相比,推理所需的 GPU 資源要少得多。但是,考慮到訓練好的 LLM 模型中有數十億個參數,推理仍然需要多個 GPU(以分散參數和計算)。例如,Meta 的 LLaMA 模型通常需要 16 個 A100 GPU 進行推理(而訓練需要 2000 個)。

同理,利用特定領域的數據集對已經訓練好的模型進行微調所需的資源也較少,通常不超過100+ H100 規模的 GPU?;诖?,推理和微調都不需要同一矩陣上的大規模 GPU 集群。

雖然單個推理工作負載并非計算密集型的,但隨著越來越多的人和組織開始使用 ChatGPT,推理工作負載在不久的將來將呈指數級增長。這些工作負載可以分布在不同的 GPU 集群/服務器上,每個GPU 集群/服務器都承載著已經訓練好的的模型副本。

學術界和工業界都在認真研究如何優化訓練和推理。量化- Quantization(在訓練和/或推理過程中使用精度較低的浮點數或整數)和參數剪枝- parameter pruning(剪除對性能貢獻不大的權重/層)是用于縮小模型規模的一些技術。

Meta 的 LLaMA 模型表明,當使用四倍于 GPT-3 的數據集進行訓練時,比 GPT-3 小 3 倍的模型可以提供更好的性能。如果這一趨勢在未來版本的 LLM 模型中得以延續,我們可以預期訓練出來的模型會逐漸變小,從而減輕推理工作量的壓力。

16

總結/展望

開發和訓練LLM 需要一支由人工智能/機器學習研究人員、工程師、數據科學家組成的高度專業化的團隊,還需要在云資源上投入巨資。缺乏廣泛的 ML專業知識的企業不太可能獨立應對此類挑戰。相反,更多的企業會尋求利用自己的專有數據集對市面上訓練有素的模型進行微調。云服務提供商可能會為企業提供這些服務。

因此,模型訓練工作量預計主要來自學術機構、云服務提供商和人工智能研究實驗室。

與人們的預期相反,未來幾年的訓練工作量預計不會減少或停滯不前。為了讓模型產生準確、最新的結果,而不是產生 "幻覺",必須更頻繁地對模型進行訓練。這將大大增加訓練工作量。

以太網矩陣是構建用于訓練的大型 GPU 集群的“不二之選”。目前市面上的所有高端以太網交換機(模塊化/獨立式)都能應對這種大型集群挑戰。通過一些增強型功能,如通過數據包級的負載均衡,對 RoCEv2 數據包進行重新排序、網內聚合和支持直通模式(cut-through),這些交換機可以獲得比 IB 矩陣更為出色的性能。但是,在這些大型以太網矩陣集群部署和廣泛使用之前,IB Fabric 仍將繼續使用。用于分布式交換機的 VOQ 矩陣方案看起來很有前景,并為這一組合增添了另一種潛在的解決方案!

GPU/網絡交換機的性能和規模每兩年才翻一番。如果模型的規模繼續隨著每個新版本的推出而增加一倍或兩倍,那么它們很快就會撞上硬件墻(譯者注:硬件性能不夠)!AI界必須大力投資研究,使 LLM 更優化、更環保、更可持續。

總之,這是一個令人激動的研究和創新時代!

Sharada Yeluri是瞻博網絡的高級工程總監,負責瞻博網絡 PTX 系列路由器中使用的 Express 系列芯片產品。她在 CPU 和網絡領域擁有 12 項以上的專利。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 人工智能
    +關注

    關注

    1778

    文章

    44243

    瀏覽量

    231109
  • 圖形處理器
    +關注

    關注

    0

    文章

    188

    瀏覽量

    24931
  • TPU
    TPU
    +關注

    關注

    0

    文章

    133

    瀏覽量

    20578
  • 深度神經網絡

    關注

    0

    文章

    42

    瀏覽量

    4475
  • ChatGPT
    +關注

    關注

    27

    文章

    1453

    瀏覽量

    5125

原文標題:大語言模型的硬件互聯

文章出處:【微信號:SDNLAB,微信公眾號:SDNLAB】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    英偉達 H100 vs 蘋果M2 大模型訓練,哪款性價比更高?

    訓練和微調大型語言模型對于硬件資源的要求非常高。目前,主流的大模型訓練
    的頭像 發表于 07-28 16:11 ?2332次閱讀
    英偉達 H100 vs 蘋果M2 大<b class='flag-5'>模型</b><b class='flag-5'>訓練</b>,哪款性價比更高?

    一文詳解知識增強的語言訓練模型

    隨著預訓練語言模型(PLMs)的不斷發展,各種NLP任務設置上都取得了不俗的性能。盡管PLMs可以從大量語料庫中學習一定的知識,但仍舊存在很多問題,如知識量有限、受訓練數據長尾分布影響
    的頭像 發表于 04-02 17:21 ?8958次閱讀

    【大語言模型:原理與工程實踐】探索《大語言模型原理與工程實踐》

    處理中預訓練架構Transformer,以及這些技術在現實世界中的如何應用。通過具體案例的分析,作者展示了大語言模型在解決實際問題中的強大能力,同時也指出了當前技術面臨的挑戰和局限性。
    發表于 04-30 15:35

    【大語言模型:原理與工程實踐】揭開大語言模型的面紗

    用于文本生成,根據提示或上下文生成連貫、富有創造性的文本,為故事創作等提供無限可能。大語言模型也面臨挑戰。一方面,其計算資源需求巨大,訓練和推理耗時;另一方面,
    發表于 05-04 23:55

    【大語言模型:原理與工程實踐】大語言模型的基礎技術

    特定任務對模型進行微調。這種方法的成功不僅是自然語言處理發展的一個轉折點,還為許多現實世界的應用場帶來了前所未有的性能提升。從廣為人知的GPT到BERT,預訓練
    發表于 05-05 12:17

    【大語言模型:原理與工程實踐】大語言模型的預訓練

    語言模型的核心特點在于其龐大的參數量,這賦予了模型強大的學習容量,使其無需依賴微調即可適應各種下游任務,而更傾向于培養通用的處理能力。然而,隨著學習容量的增加,對預訓練數據的需求也相
    發表于 05-07 17:10

    【大語言模型:原理與工程實踐】大語言模型的應用

    問題時,即使輸入不同的提示詞,大語言模型也可能產生截然不同的結果,這體現了其高度的靈活性和創造性。然而,這種靈活性也帶來了一定的挑戰。由于自然語言
    發表于 05-07 17:21

    語言模型:原理與工程時間+小白初識大語言模型

    解鎖 我理解的是基于深度學習,需要訓練各種數據知識最后生成自己的的語言理解和能力的交互模型。 對于常說的RNN是處理短序列的數據時表現出色,耳真正厲害的是Transformer,此框架被推出后直接
    發表于 05-12 23:57

    Pytorch模型訓練實用PDF教程【中文】

    及優化器,從而給大家帶來清晰的機器學習結構。通過本教程,希望能夠給大家帶來一個清晰的模型訓練結構。當模型
    發表于 12-21 09:18

    訓練語言模型設計的理論化認識

    在這篇文章中,我會介紹一篇最新的預訓練語言模型的論文,出自MASS的同一作者。這篇文章的亮點是:將兩種經典的預訓練語言
    的頭像 發表于 11-02 15:09 ?2406次閱讀

    如何向大規模預訓練語言模型中融入知識?

    本文關注于向大規模預訓練語言模型(如RoBERTa、BERT等)中融入知識。
    的頭像 發表于 06-23 15:07 ?3663次閱讀
    如何向大規模預<b class='flag-5'>訓練</b><b class='flag-5'>語言</b><b class='flag-5'>模型</b>中融入知識?

    Multilingual多語言訓練語言模型的套路

    Facebook在Crosslingual language model pretraining(NIPS 2019)一文中提出XLM預訓練語言模型,整體思路基于BERT,并提出了針對多語言
    的頭像 發表于 05-05 15:23 ?2583次閱讀

    一種基于亂序語言模型的預訓練模型-PERT

    由于亂序語言模型不使用[MASK]標記,減輕了預訓練任務與微調任務之間的gap,并由于預測空間大小為輸入序列長度,使得計算效率高于掩碼語言模型
    的頭像 發表于 05-10 15:01 ?1246次閱讀

    訓練語言模型的字典描述

    今天給大家帶來一篇IJCAI2022浙大和阿里聯合出品的采用對比學習的字典描述知識增強的預訓練語言模型-DictBERT,全名為《Dictionary Description Know
    的頭像 發表于 08-11 10:37 ?946次閱讀

    CogBERT:腦認知指導的預訓練語言模型

    另一方面,從語言處理的角度來看,認知神經科學研究人類大腦中語言處理的生物和認知過程。研究人員專門設計了預訓練模型來捕捉大腦如何表示語言的意
    的頭像 發表于 11-03 15:07 ?784次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>