01
介紹
生成式AI和大語(yǔ)言模型(LLM)正在以難以置信的方式吸引全世界的目光,本文簡(jiǎn)要介紹了大語(yǔ)言模型,訓(xùn)練這些模型帶來(lái)的硬件挑戰(zhàn),以及GPU和網(wǎng)絡(luò)行業(yè)如何針對(duì)訓(xùn)練的工作負(fù)載不斷優(yōu)化硬件。
02
生成式AI/大語(yǔ)言模型-Generative AI/Large Language Models
生成式AI是人工智能的一個(gè)分支,主要聚焦在基于既有的內(nèi)容、創(chuàng)造和生成諸如圖片、文字和音樂(lè)等新的內(nèi)容,而不僅僅簡(jiǎn)單的復(fù)制和衍生。它包括訓(xùn)練深度學(xué)習(xí)模型,通過(guò)學(xué)習(xí)大型數(shù)據(jù)集的基本模式和特征,然后利用這些知識(shí)來(lái)生成新的輸出結(jié)果。大語(yǔ)言模型是生成式人工智能的一種,利用先進(jìn)的深度學(xué)習(xí)算法在大量的自然語(yǔ)言數(shù)據(jù)上進(jìn)行訓(xùn)練。這些模型可以學(xué)習(xí)到人類(lèi)語(yǔ)言的模式和結(jié)構(gòu),并可以針對(duì)各類(lèi)書(shū)面輸入(譯者注:可以理解為提出的各行各業(yè),各種方面的提問(wèn))或者提示做成類(lèi)似人類(lèi)的反饋(回答)。
大語(yǔ)言模型已經(jīng)“悄然工作”了十多年,直到openAI發(fā)布了ChatGPT,才吸引了廣泛關(guān)注。ChatGPT可以讓任何一個(gè)可以上網(wǎng)的人,都能和“強(qiáng)悍”的大語(yǔ)言模型-GPT3.5進(jìn)行交互。隨著更多的個(gè)人和組織開(kāi)始和chatGPT“戲耍”起來(lái),我們意識(shí)到很多應(yīng)用會(huì)因此發(fā)生變化,而這種改變,在一年前無(wú)法想象。
ChatGPT以及其他最新的大語(yǔ)言模型產(chǎn)品帶來(lái)近乎完美的“人類(lèi)”表現(xiàn),得益于架構(gòu)模型的進(jìn)步,這些模型就是高效的深度神經(jīng)網(wǎng)絡(luò)(DDN)和數(shù)十億訓(xùn)練參數(shù)的大型數(shù)據(jù)集。大多數(shù)參數(shù)是用于訓(xùn)練和推理的權(quán)重矩陣。而訓(xùn)練這些模型的浮點(diǎn)計(jì)算次數(shù)(FLOP)與參數(shù)數(shù)量和訓(xùn)練集的大小幾乎呈現(xiàn)線(xiàn)性增長(zhǎng)。這些運(yùn)算是專(zhuān)為矩陣云端設(shè)計(jì)的處理器上進(jìn)行的,如圖形處理器(GPU)、張量處理單元(TPU)和其他專(zhuān)用人工智能芯片。GPU/TPU 和人工智能加速硬件以及它們之間用于通信的互聯(lián)技術(shù)的進(jìn)步,使這些巨型模型的訓(xùn)練成為可能。
03
大語(yǔ)言模型應(yīng)用(LLM)
大語(yǔ)言模型有很多使用案例(譯者注:后LLM即為大語(yǔ)言模型,后續(xù)兩者都可能出現(xiàn)),幾乎每個(gè)行業(yè)都可以從中獲益。任何組織都可以基于自己領(lǐng)域和特定需求進(jìn)行微調(diào)。微調(diào)在特定的數(shù)據(jù)集上訓(xùn)練已有的語(yǔ)言模型,使得更具備專(zhuān)業(yè)性,來(lái)滿(mǎn)足特定任務(wù)的要求(譯者注:英文原文為fine-tune,個(gè)人覺(jué)得是不是叫調(diào)優(yōu)更好一些,不過(guò)后面還是寫(xiě)成微調(diào))。微調(diào)可以使企業(yè)能夠利用訓(xùn)練模型的已知能力,同時(shí)適應(yīng)企業(yè)的獨(dú)特需求。它使得模型可以獲取特定領(lǐng)域的知識(shí),從而提高為組織本身的應(yīng)用場(chǎng)景創(chuàng)造輸出。有了經(jīng)過(guò)微調(diào)的模型,企業(yè)可以將大語(yǔ)言模型應(yīng)用在諸多場(chǎng)景中。
例如,根據(jù)公司文檔進(jìn)行微調(diào)的LLM可以用于客戶(hù)支持的服務(wù)。LLM可以幫助軟件工程師創(chuàng)建代碼,或者幫助他們創(chuàng)建部分代碼,當(dāng)根據(jù)企業(yè)的專(zhuān)用代碼庫(kù)進(jìn)行微調(diào)之后,LLM還可能生成與現(xiàn)有代碼庫(kù)一樣的軟件。(譯者注:在juniper的mist無(wú)線(xiàn)管理平臺(tái)下,客戶(hù)就可以通過(guò)AI對(duì)話(huà)助手,利用chatGPT對(duì)juniper的文檔進(jìn)行查詢(xún),提問(wèn)一些像“交換機(jī)的VLAN該如何配置”這樣的問(wèn)題)。
利用情感分析來(lái)了解客戶(hù)的反饋,將技術(shù)文檔翻譯成其他語(yǔ)言,總結(jié)會(huì)議和客戶(hù)的電話(huà),以及生成工程或營(yíng)銷(xiāo)內(nèi)容,這些都是LLM的諸多案例的“灑灑碎”(一點(diǎn)點(diǎn))。
而隨著LLM的規(guī)模不斷呈指數(shù)級(jí)增長(zhǎng),對(duì)計(jì)算和互聯(lián)的需求也大幅增加。只有當(dāng)模型的訓(xùn)練和微調(diào),以及推理更具成本優(yōu)勢(shì)時(shí),LLM才會(huì)得到廣泛應(yīng)用。
04
LLM訓(xùn)練
使用自然語(yǔ)言文本訓(xùn)練,通常需要通過(guò)網(wǎng)絡(luò)抓取,維基百科、GitHub、Stack Exchange(問(wèn)答網(wǎng)站)、arXiv(一個(gè)免費(fèi)的科學(xué)預(yù)印論文庫(kù))等網(wǎng)站收集大量數(shù)據(jù)。大多數(shù)模型堅(jiān)持使用開(kāi)放數(shù)據(jù)集進(jìn)行訓(xùn)練。首先要對(duì)數(shù)據(jù)集中的大量文本進(jìn)行標(biāo)記化,通常是使用字節(jié)對(duì)編碼等方法。
標(biāo)記化是將互聯(lián)網(wǎng)上的原始文本轉(zhuǎn)換成一串整數(shù)(標(biāo)記)。一個(gè)標(biāo)記(唯一整數(shù))可以代表一個(gè)字符,也可以代表一個(gè)詞。標(biāo)記也可以是單詞的一部分。例如,單詞 "unhappy "可能被分成兩個(gè)標(biāo)記--一個(gè)代表子單詞 "un",另一個(gè)代表子單詞 "happy"。
圖 1 — 段落的標(biāo)記化
根據(jù)數(shù)據(jù)集的不同,可能會(huì)有數(shù)以萬(wàn)計(jì)的獨(dú)特標(biāo)記,而數(shù)據(jù)集本身也可能映射出數(shù)千億個(gè)標(biāo)記。序列或上下文長(zhǎng)度是模型在訓(xùn)練過(guò)程中預(yù)測(cè)下一個(gè)標(biāo)記時(shí),將查看的連續(xù)標(biāo)記的數(shù)量。在 GPT-3 和 LLaMA(Meta 的 LLM)中,序列長(zhǎng)度約為 2K。有些模型使用的序列長(zhǎng)度為 100,000 左右。表 1 比較了 GPT-3 和 LLaMA 模型的訓(xùn)練參數(shù)。
為了訓(xùn)練模型,標(biāo)記會(huì)被分成大小為 batch_size (B) x 序列長(zhǎng)度的數(shù)組,這些會(huì)批量送入大型神經(jīng)網(wǎng)絡(luò)模型。在這篇文章中,我不會(huì)深入探討模型架構(gòu),因?yàn)檫@需要對(duì)深度學(xué)習(xí)和轉(zhuǎn)換器(transformers)有更深入的了解(我不具備這方面的知識(shí))。訓(xùn)練通常需要數(shù)周甚至數(shù)月的時(shí)間,并且需要大型 GPU 集群。
|表 1 — 比較GPT-3 和 LLaMA 模型
當(dāng)基礎(chǔ)模型訓(xùn)練完成后,通常會(huì)進(jìn)行監(jiān)督微調(diào)- Supervised Fine-Tuning (SFT)。這是可以讓LLM化身助手,根據(jù)人類(lèi)提示回答問(wèn)的重要步驟。在監(jiān)督微調(diào)的過(guò)程中,承包商(供應(yīng)商)會(huì)人工創(chuàng)建一個(gè)精致的數(shù)據(jù)集(數(shù)量少,但是質(zhì)量超高),并利用這個(gè)數(shù)據(jù)集對(duì)基礎(chǔ)模型進(jìn)行重新訓(xùn)練。對(duì),就是這樣,訓(xùn)練有素的SFT模型就可以變成助手,能夠?qū)τ脩?hù)的提示做出類(lèi)似人類(lèi)的回應(yīng),這是對(duì)LLM的一個(gè)簡(jiǎn)化解釋?zhuān)壳笆菫楹竺娴恼鹿?jié)提供一些背景信息。
05
數(shù)學(xué)模型
一個(gè)擁有 175B 參數(shù)的模型通常需要大于 1TB 的內(nèi)存來(lái)存儲(chǔ)參數(shù)和計(jì)算過(guò)程中的中間狀態(tài)。它還需要存儲(chǔ)空間來(lái)檢查訓(xùn)練狀態(tài)(在訓(xùn)練迭代過(guò)程中遇到硬件錯(cuò)誤時(shí)回退)。一萬(wàn)億個(gè)標(biāo)記通常需要 4TB 的存儲(chǔ)空間。像 Nvidia H100 這樣的高端 GPU 集成了 80GB 的 HBM 內(nèi)存。一個(gè) GPU 的內(nèi)存無(wú)法滿(mǎn)足模型參數(shù)和訓(xùn)練集的需求。
根據(jù)維基百科,一個(gè) LLM 的每個(gè)參數(shù)和標(biāo)記通常需要 6 個(gè)FLOP。這意味著訓(xùn)練 GPT-3 模型需要 6 x 175B x 300B 或 3.15 x 10^23 FLOP。GPT-3 模型的訓(xùn)練耗時(shí)三周。因此,在這三周的時(shí)間里,它需要 5.8 x 10^16 FLOPS(每秒浮點(diǎn)運(yùn)算)的計(jì)算能力。
性能最高的 Nvidia H100 GPU 大約可以實(shí)現(xiàn) 60 TeraFLOPS(每秒萬(wàn)億浮點(diǎn)數(shù))。如果這些 GPU 的利用率達(dá)到 100%,那么我們需要約 1000 個(gè) GPU 才能獲得 5.8 x 10^16 FLOPS。但是,在許多訓(xùn)練工作負(fù)載中,由于內(nèi)存和網(wǎng)絡(luò)瓶頸,GPU 的利用率徘徊在 50% 左右或更低。因此,訓(xùn)練所需的 GPU 數(shù)量是原來(lái)的兩倍,即大約需要 2000 個(gè) H100 GPU。最初的 LLM 模型(表 1)是使用舊版本的 GPU 進(jìn)行訓(xùn)練的,因此需要 10,000 個(gè) GPU。
在使用數(shù)千個(gè) GPU 的情況下,模型和訓(xùn)練數(shù)據(jù)集需要在 GPU 之間進(jìn)行分布,以便并行運(yùn)行。并行可以從多個(gè)維度進(jìn)行。
06
Data parallelism-數(shù)據(jù)并行
數(shù)據(jù)并行是在多個(gè) GPU 上分割訓(xùn)練數(shù)據(jù),并在每個(gè) GPU 上訓(xùn)練模型的副本。
# 典型的流程如下
數(shù)據(jù)分發(fā):訓(xùn)練數(shù)據(jù)被分成多個(gè)迷你批次,并分配給多個(gè) GPU。每個(gè) GPU 獲得一個(gè)獨(dú)特的迷你批次訓(xùn)練集。
模型拷貝:在每個(gè) GPU(worker)上放置一份模型副本。
梯度計(jì)算:每個(gè) GPU 使用其迷你批次對(duì)模型進(jìn)行一次迭代訓(xùn)練,運(yùn)行一次前向傳遞來(lái)進(jìn)行預(yù)測(cè),一次后向傳遞來(lái)計(jì)算梯度(表明在下一次迭代之前應(yīng)如何調(diào)整模型參數(shù))。
梯度聚合:然后將所有 GPU 的梯度匯總在一起。通常的做法是取梯度的平均值。
模型更新:聚合梯度被廣播到所有 GPU。GPU 更新其本地模型參數(shù)并同步。
重復(fù):這一過(guò)程會(huì)重復(fù)多次迭代,直到模型完全訓(xùn)練完成。
在使用大型數(shù)據(jù)集時(shí),數(shù)據(jù)并行化可以大大加快訓(xùn)練速度。但是,由于每個(gè) GPU 必須將其結(jié)果與參與訓(xùn)練的其他 GPU 進(jìn)行通信,因此可能會(huì)產(chǎn)生相當(dāng)大的 GPU 間通信量。在每次訓(xùn)練迭代中,這種所有GPU全部相互交互的通信會(huì)在網(wǎng)絡(luò)中產(chǎn)生大量流量。
有幾種方法可以減少這種情況。對(duì)于小規(guī)模模型,可由專(zhuān)門(mén)的服務(wù)器(參數(shù)服務(wù)器)匯總梯度。這可能會(huì)造成從眾多 GPU 到參數(shù)服務(wù)器之間的通信瓶頸。Ring All-Reduce等方案可以用于將梯度以環(huán)形模式從一個(gè) GPU 發(fā)送到另一個(gè) GPU,其中每個(gè) GPU 將從上一個(gè) GPU 接收到的梯度與本地計(jì)算的梯度聚合在一起,然后再發(fā)送給下一個(gè) GPU。因?yàn)樘荻染酆戏植荚诟鱾€(gè) GPU 上,最終結(jié)果需要傳回環(huán)形拓?fù)浣Y(jié)構(gòu)中的所有 GPU,因此這個(gè)過(guò)程非常緩慢。如果網(wǎng)絡(luò)出現(xiàn)擁塞,GPU 流量在等待梯度聚合時(shí)就會(huì)停滯。
此外,單個(gè) GPU 無(wú)法處理數(shù)十億參數(shù)的 LLM。因此,僅靠數(shù)據(jù)并行性并不適用于 LLM 模型。
(譯者注:數(shù)據(jù)并行的概念描述,參考baidu大腦的一篇文章:https://baijiahao.baidu.com/s?id=1721295143486708825&wfr=spider&for=pc)
07
Model parallelism--模型并行
模型并行旨在通過(guò)在多個(gè) GPU 上分割模型參數(shù)(和計(jì)算)來(lái)解決模型無(wú)法在單個(gè) GPU 上運(yùn)行的問(wèn)題。
# 典型的流程如下
模型分區(qū): 模型被分為幾個(gè)分區(qū)。每個(gè)分區(qū)分配給不同的 GPU。由于深度神經(jīng)網(wǎng)絡(luò)通常包含一堆垂直層,因此將大型模型按層分割是合乎邏輯的,其中一個(gè)或一組層可能被分配給不同的 GPU。
前向傳遞:在前向傳遞過(guò)程中,每個(gè) GPU 都會(huì)使用 "整個(gè) "訓(xùn)練集計(jì)算其模型部分的輸出。一個(gè) GPU 的輸出將作為輸入傳遞給序列中的下一個(gè) GPU。序列中的下一個(gè) GPU 在收到前一個(gè) GPU 的更新之前無(wú)法開(kāi)始處理。
后向傳遞:在后向傳遞過(guò)程中,一個(gè) GPU 的梯度被傳遞給序列中的前一個(gè) GPU。收到輸入后,每個(gè) GPU 都會(huì)計(jì)算模型中自己那部分的梯度。與前向傳遞類(lèi)似,GPU 之間會(huì)建立順序依賴(lài)關(guān)系。
參數(shù)更新:每個(gè) GPU 都會(huì)在后向傳遞結(jié)束時(shí)更新其模型部分的參數(shù)。請(qǐng)注意,這些參數(shù)無(wú)需廣播給其他 GPU。
重復(fù):重復(fù)這一過(guò)程,直到模型在所有數(shù)據(jù)上都訓(xùn)練完成。
模型并行化允許對(duì)單個(gè) GPU 難以支撐的大型模型進(jìn)行訓(xùn)練。但這也會(huì)在前向和后向傳遞過(guò)程中引入 GPU 之間的通信。此外,由于數(shù)據(jù)集規(guī)模巨大,上述通過(guò)一大批 GPU 運(yùn)行整個(gè)訓(xùn)練數(shù)據(jù)集的天真實(shí)現(xiàn)方式,對(duì)于 LLM 可能并不實(shí)用,也會(huì)在 GPU 之間產(chǎn)生順序依賴(lài)關(guān)系,導(dǎo)致大量等待時(shí)間和計(jì)算資源利用率嚴(yán)重不足。這也就產(chǎn)生了下面的流水線(xiàn)并的方式。
08
Pipeline parallelism-流水線(xiàn)并行
流水線(xiàn)并行結(jié)合了數(shù)據(jù)并行和模型并行,其中訓(xùn)練數(shù)據(jù)集的每個(gè)迷你批次被進(jìn)一步拆分為多個(gè)微型批次。在上面的模型并行例子中,當(dāng)一個(gè) GPU 使用第一個(gè)微批次計(jì)算輸出并將數(shù)據(jù)傳遞給序列中的下一個(gè) GPU 后,它不會(huì)閑置,而是開(kāi)始處理訓(xùn)練數(shù)據(jù)集的第二個(gè)微批次,以此類(lèi)推。這就增加了 GPU 之間的通信,因?yàn)槊總€(gè)微批次都需要在序列中相鄰的 GPU 之間進(jìn)行前向傳遞和后向傳遞通信。
09
Tensor parallelism-張量并行
模型和流水線(xiàn)并行技術(shù)都會(huì)在層邊界垂直分割模型。對(duì)于大型 LLM,即使在 GPU 中安裝單層也是一項(xiàng)挑戰(zhàn)!在這種情況下,張量并行技術(shù)就派上了用場(chǎng)。它是模型并行的一種形式,但不是在層級(jí)上劃分模型,而是在單個(gè)操作或 "張量 "級(jí)別上劃分模型。這樣可以實(shí)現(xiàn)更細(xì)粒度的并行,對(duì)某些模型來(lái)說(shuō)效率更高。
還有許多其他技術(shù)可以在 GPU 上分割數(shù)據(jù)集和模型參數(shù)。這一領(lǐng)域的研究重點(diǎn)是盡量減少 GPU 間的通信,并在訓(xùn)練大型模型時(shí)減少 GPU 的閑置時(shí)間(FLOP 利用率)。大多數(shù)深度學(xué)習(xí)框架都內(nèi)置了對(duì)模型和數(shù)據(jù)集分區(qū)的支持(如果用戶(hù)不想手動(dòng)設(shè)置的話(huà))。
無(wú)論使用哪種并行方式,LLM 都會(huì)因?yàn)閰?shù)和數(shù)據(jù)集的龐大規(guī)模,通過(guò)連接這些 GPU 的矩陣產(chǎn)生大量 GPU 間通信。結(jié)構(gòu)中的任何擁塞都可能導(dǎo)致訓(xùn)練時(shí)間過(guò)長(zhǎng),使得GPU 利用率極低。
因此,用于 GPU/TPU 集群的互連架構(gòu)技術(shù)和拓?fù)浣Y(jié)構(gòu)對(duì) LLM 的總成本和性能起著至關(guān)重要的作用。讓我們探討一下流行的 GPU/TPU 集群設(shè)計(jì),以了解互連技術(shù)及其在 LLM 訓(xùn)練中的應(yīng)用。
10
GPU/TPU全貌
TPU 是谷歌開(kāi)發(fā)的人工智能加速器,用于加速矩陣乘法、矢量處理以及訓(xùn)練大規(guī)模神經(jīng)網(wǎng)絡(luò)所需的其他計(jì)算。谷歌不向其他云提供商或個(gè)人出售 TPU。這些 TPU 集群僅由谷歌用于在谷歌云中提供 ML/AI 服務(wù)和其他內(nèi)部應(yīng)用。
|圖二2 — 2D/3D
谷歌使用二維-2D或三維-3D環(huán)形網(wǎng)狀網(wǎng)絡(luò)構(gòu)建 TPU 集群。在二維環(huán)形網(wǎng)格中,每個(gè) TPU 與南/北/東/西的四個(gè)方向的 TPU 相連。環(huán)形網(wǎng)格的特點(diǎn)是網(wǎng)格邊緣環(huán)繞(像甜甜圈或環(huán)形),因此網(wǎng)格邊緣的 TPU 仍與其他四個(gè) TPU 相連。同樣的概念也可以擴(kuò)展到三維拓?fù)浣Y(jié)構(gòu)。這種拓?fù)浣Y(jié)構(gòu)使相鄰的 GPU 在交換結(jié)果時(shí)能夠快速通信(張量/管道并行)。
TPU v4 集群在三維環(huán)形網(wǎng)絡(luò)中擁有超過(guò) 4,096 個(gè) TPU。它們使用光交換機(jī)(OCS)來(lái)轉(zhuǎn)發(fā)TPU 之間的流量。因?yàn)橄宿D(zhuǎn)發(fā)過(guò)程中光電轉(zhuǎn)換操作,因此可以節(jié)省 OCS 上光模塊的功耗。谷歌在 TPU v4 集群中對(duì)其所有 LLM 模型(LaMDA、MUM 和 PaLM)進(jìn)行了訓(xùn)練,并聲稱(chēng)訓(xùn)練中 TPU 的利用率非常高(超過(guò) 55%)。
談到 GPU,Nvidia 是 GPU 供應(yīng)商的“大佬”,所有大型數(shù)據(jù)中心和高性能計(jì)算(HPC)都使用 Nvidia 系統(tǒng)來(lái)訓(xùn)練大型 DNN。大多數(shù) LLM(谷歌創(chuàng)建的模型除外)都是使用 Nvidia 的 GPU 進(jìn)行訓(xùn)練。
Nvidia GPU 配備高速 NVLinks,用于 GPU 與 GPU 之間的通信。與傳統(tǒng)的 PCIe 接口相比,NVLink 提供了更高的帶寬,可加快 GPU 之間的數(shù)據(jù)傳輸,從而縮短機(jī)器學(xué)習(xí)的訓(xùn)練時(shí)間。第四代 NVlink 可提供每個(gè)方向200Gbps 的帶寬。Nvidia 最新的 H100 GPU 有 18 個(gè)這樣的鏈路,可提供 900GBps 的總帶寬。此外,NVLink 支持 GPU 內(nèi)存池,即多個(gè) GPU 可以連接在一起,形成更大的內(nèi)存資源。這有利于運(yùn)行需要比本地 GPU 內(nèi)存大的應(yīng)用程序,并允許在 GPU 之間靈活劃分模型參數(shù)。
| Figure 3 — GPU 服務(wù)器(節(jié)點(diǎn)) 共計(jì) 8個(gè)GPUs. 每個(gè)網(wǎng)卡會(huì)通過(guò)每個(gè)方向的OSFP承載 400Gbps的數(shù)據(jù). The OSFP cage 把GPU的CX7 NIC 上和外部的以太/IB交換機(jī)互聯(lián),節(jié)點(diǎn)中的 GPU 可以通過(guò) NVLink 交換機(jī)系統(tǒng)的層級(jí)結(jié)構(gòu),利用四個(gè) NV 交換機(jī)的 OSFP 端口連接到其他 GPU 來(lái)源: Nvidia’s Hot Chips 2022 presentation.
GPU 服務(wù)器,又稱(chēng)系統(tǒng)或節(jié)點(diǎn),是一個(gè) 8 個(gè) GPU 的集群,集群內(nèi)的 GPU 通過(guò)四個(gè)定制的 NVLink 交換機(jī)(NVswitches)通過(guò) NVLinks 相互通信。多個(gè) GPU 服務(wù)器可通過(guò) GPU 架構(gòu)連接在一起,形成大型系統(tǒng)。
GPU 矩陣是以葉脊結(jié)構(gòu)(Leaf/Spine)或三級(jí) CLOS 拓?fù)渑帕械慕粨Q機(jī)陣列。為所有連接于此的GPU 服務(wù)器之間提供任意對(duì)任意的連接。矩陣的葉/脊(Leaf-Spine)交換機(jī)通常采用胖樹(shù)(fat-tree)拓?fù)浣Y(jié)構(gòu)。在胖樹(shù)拓?fù)浣Y(jié)構(gòu)中,隨著拓?fù)浣Y(jié)構(gòu)從節(jié)點(diǎn)向上移動(dòng)到葉子和骨干,鏈路的帶寬也會(huì)增加。這是因?yàn)槊總€(gè)上行鏈路需要處理來(lái)自多個(gè)下行鏈路的帶寬。
| 圖 4 — 數(shù)據(jù)中心網(wǎng)絡(luò)中 GPU 服務(wù)器和 GPU 網(wǎng)絡(luò)矩陣的概念圖
# GPU網(wǎng)絡(luò)矩陣的交換機(jī)數(shù)量取決于
· 系統(tǒng)規(guī)模 (或者說(shuō)GPU節(jié)點(diǎn)的數(shù)量)。
· 內(nèi)部交換機(jī)的吞吐量,單個(gè)交換機(jī)提供的吞吐量越高,構(gòu)建矩陣所需的交換機(jī)數(shù)量就越少。
· 矩陣中的額外帶寬(超額配置),以緩解擁塞情況。
# 想要實(shí)現(xiàn)最佳訓(xùn)練性能,就需要
· GPU 結(jié)構(gòu)應(yīng)具有較低的端到端延遲。由于存在大量 GPU 間通信,降低節(jié)點(diǎn)間數(shù)據(jù)傳輸?shù)恼w延遲有助于縮短整體訓(xùn)練時(shí)間。
· 矩陣可以保證節(jié)點(diǎn)間無(wú)損傳輸數(shù)據(jù)。無(wú)損傳輸是人工智能訓(xùn)練的一個(gè)重要標(biāo)準(zhǔn),因?yàn)樘荻然蛑虚g結(jié)果的任何損失,都會(huì)導(dǎo)致整個(gè)訓(xùn)練回到存儲(chǔ)在內(nèi)存中的上一個(gè)檢查點(diǎn),然后重新開(kāi)始。這會(huì)對(duì)訓(xùn)練性能產(chǎn)生不利影響。
· 系統(tǒng)應(yīng)具備良好的端到端擁塞控制機(jī)制。在任何樹(shù)狀拓?fù)浣Y(jié)構(gòu)中,當(dāng)多個(gè)節(jié)點(diǎn)向一個(gè)節(jié)點(diǎn)傳輸數(shù)據(jù)時(shí),瞬時(shí)擁塞是不可避免的。持續(xù)擁塞會(huì)增加系統(tǒng)的尾部延遲。由于 GPU 之間的順序依賴(lài)關(guān)系,即使單個(gè) GPU 的梯度更新在網(wǎng)絡(luò)中出現(xiàn)延遲,許多 GPU 也會(huì)停滯。一個(gè)緩慢的鏈路(譯者注:這里我個(gè)人理解為擁塞的交換機(jī)物理鏈路)就會(huì)導(dǎo)致訓(xùn)練性能下降!
此外,還應(yīng)考慮到構(gòu)建系統(tǒng)的總成本、功耗、冷卻成本等。有鑒于此,讓我們來(lái)看看 GPU 架構(gòu)設(shè)計(jì)的選擇以及每種方法的優(yōu)缺點(diǎn)。
11
定制化 NVLink 交換機(jī)系統(tǒng)-- Custom NVLink switch system
NVLink交換機(jī)既可以用于連接GPU服務(wù)器內(nèi)部的8個(gè)GPU,也可以用于構(gòu)建GPU服務(wù)器之間的交換結(jié)構(gòu),Nvidia 在 Hot Chips 2022 會(huì)議上展示了使用 NV switch 矩陣的 32 節(jié)點(diǎn)(或 256 個(gè) GPU)拓?fù)浣Y(jié)構(gòu)。由于 NVLink 被專(zhuān)門(mén)設(shè)計(jì)為連接 GPU 的高速點(diǎn)對(duì)點(diǎn)鏈路,因此它比傳統(tǒng)網(wǎng)絡(luò)具有更高的性能和更低的開(kāi)銷(xiāo)。
| 圖5 — 使用NV Switch的GPU矩陣
第三代 NV switch 支持 64 個(gè) NVLink 端口,交換容量為 12.8Tbps。它還支持組播和網(wǎng)內(nèi)聚合。通過(guò)網(wǎng)內(nèi)聚合,來(lái)自所有工作 GPU 的梯度數(shù)據(jù)會(huì)在 NV 交換內(nèi)部聚合,更新后的梯度會(huì)發(fā)送回 GPU 以開(kāi)始下一次迭代。這有可能減少訓(xùn)練迭代之間的 GPU 間通信量。
Nvidia 聲稱(chēng),使用 NV switch矩陣訓(xùn)練 GPT-3 模型的速度比使用 InfiniBand 交換矩陣快 2 倍。這一性能令人印象深刻,但交換機(jī)的帶寬比高端交換機(jī)供應(yīng)商提供的 51.2Tbps 交換機(jī)少 4 倍!使用 NV switch構(gòu)建具有 >1K GPU 的大型系統(tǒng)在經(jīng)濟(jì)上并不可行,而且協(xié)議本身在支持更大規(guī)模方面可能存在局限性。
此外,Nvidia 并不單獨(dú)銷(xiāo)售這些 NV switch。如果數(shù)據(jù)中心希望通過(guò)混合和匹配不同供應(yīng)商的 GPU 來(lái)擴(kuò)展現(xiàn)有的 GPU 集群,就不能使用 NV switch,因?yàn)槠渌?yīng)商的 GPU 不支持這些接口。
(譯者注:并沒(méi)有把NV switch翻譯成NV交換機(jī),是為了保證這個(gè)名詞的獨(dú)立性)
12
InfiniBand (IB) 矩陣
InfiniBand 于 1999 年推出,被視為 PCI 和 PCI-X 總線(xiàn)技術(shù)的高速替代品,用于連接服務(wù)器、存儲(chǔ)和網(wǎng)絡(luò)。盡管由于其經(jīng)濟(jì)性的因素,InfiniBand 最初的雄心壯志有所收斂,但由于其卓越的速度、低延遲、無(wú)損傳輸和遠(yuǎn)程直接內(nèi)存訪(fǎng)問(wèn)(RDMA)功能,InfiniBand 在高性能計(jì)算、人工智能/ML 集群和數(shù)據(jù)中心中找到了自己的位置。
InfiniBand (IB) 協(xié)議設(shè)計(jì)高效、輕便,避免了與以太網(wǎng)協(xié)議相關(guān)的典型開(kāi)銷(xiāo)。它既支持基于通道的通信,也支持基于內(nèi)存的通信,因此可以高效地處理各種數(shù)據(jù)傳輸方案。
IB 通過(guò)發(fā)送和接收設(shè)備之間基于信用的流量控制(在每個(gè)隊(duì)列或虛擬線(xiàn)路層次上)實(shí)現(xiàn)無(wú)損傳輸。這種逐跳流量控制可確保數(shù)據(jù)不會(huì)因緩沖區(qū)溢出而丟失。此外,它還支持端點(diǎn)之間的擁塞通知(類(lèi)似于 TCP/IP 協(xié)議棧中的 ECN)。它提供卓越的服務(wù)質(zhì)量,允許優(yōu)先處理某些類(lèi)型的流量,以降低延遲并防止數(shù)據(jù)包丟失。
此外,所有 IB 交換機(jī)都支持 RDMA 協(xié)議,該協(xié)議允許數(shù)據(jù)從一個(gè) GPU 的內(nèi)存直接傳輸?shù)搅硪粋€(gè) GPU 的內(nèi)存,而不牽扯CPU的操作系統(tǒng)。這種直接傳輸方式大大提高了吞吐量,減少了端到端延遲。
盡管具備這些優(yōu)勢(shì),但因?yàn)樗鼈兏y配置、維護(hù)和擴(kuò)展,InfiniBand 交換機(jī)系統(tǒng)卻不如以太網(wǎng)交換機(jī)系統(tǒng)受歡迎。InfiniBand 的控制平面通常通過(guò)單個(gè)子網(wǎng)管理器集中管理。它可以與小型集群配合使用,但對(duì)于擁有 32K 或更多 GPU 的 矩陣 而言,擴(kuò)展難度很大。IB 矩陣還需要主機(jī)通道適配器和 InfiniBand 線(xiàn)纜等專(zhuān)用硬件,擴(kuò)展成本比以太網(wǎng)矩陣高。
目前,Nvidia 是唯一一家為 HPC 和 AI GPU 集群提供高端 IB 交換機(jī)的廠(chǎng)商。OpenAI 在微軟的 Azure 云中使用 10,000 個(gè) Nvidia A100 GPU 和 IB 交換機(jī)矩陣訓(xùn)練了他們的 GPT-3 模型。Meta 公司最近利用 Nvidia A100 GPU 服務(wù)器和 Quantum-2 IB 交換機(jī) (25.6Tbps 交換容量,400Gbps 端口)構(gòu)建了一個(gè) 16000的 GPU 集群。該集群用于訓(xùn)練生成式人工智能模型,包括 LLaMA。
請(qǐng)注意,在超過(guò)10,000 GPU連接時(shí),每個(gè)服務(wù)器內(nèi)部 GPU 之間的切換是通過(guò)服務(wù)器中的 NV switch進(jìn)行的。IB/以太網(wǎng)矩陣只是將服務(wù)器連接在一起。
| 圖6 — 連接 128 個(gè) GPU 的 GPU 結(jié)構(gòu)概念圖(未顯示所有節(jié)點(diǎn))。GPU-Leaf鏈路: 400Gbps; Leaf-Spine鏈路:800Gbps.
由于對(duì) LLM 訓(xùn)練工作負(fù)載和更大 LLM 模型的需求不斷增加,超大規(guī)模廠(chǎng)商正在尋求建立擁有 32K 甚至 64K GPU 的 GPU 集群。在這種規(guī)模下,使用以太網(wǎng) Fabric 在經(jīng)濟(jì)上更有意義,因?yàn)橐蕴W(wǎng)已經(jīng)擁有一個(gè)強(qiáng)大的生態(tài)系統(tǒng),包括許多芯片/系統(tǒng)和光學(xué)器件供應(yīng)商,并且正在推動(dòng)開(kāi)放標(biāo)準(zhǔn),以實(shí)現(xiàn)供應(yīng)商之間的互操作性。
13
以太網(wǎng)矩陣--Ethernet fabric
從數(shù)據(jù)中心到骨干網(wǎng)絡(luò),處處都可以看到以太網(wǎng)的部署,從 1G的低速端口到800G,再到即將到來(lái)的 1.6T,應(yīng)用部署各不相同。Infiniband 在端口帶寬和總交換容量方面都落后于以太網(wǎng)。以太網(wǎng)交換機(jī)每G帶寬的成本低于 InfiniBand 交換機(jī),這得益于高端網(wǎng)絡(luò)芯片供應(yīng)商之間的良性競(jìng)爭(zhēng),導(dǎo)致供應(yīng)商在每個(gè) ASIC芯片增加更多帶寬(譯者注:互相PK追逐性能),從而使得不論固定端口交換機(jī)和模塊化交換機(jī),每G成本都更優(yōu)異。
行業(yè)領(lǐng)先企業(yè)的高端以太網(wǎng)交換機(jī) ASIC芯片,已經(jīng)可以提供 51.2Tbps 的交換容量和 800G 端口,是 Quantum-2 性能的兩倍。如果每個(gè)交換機(jī)的吞吐量增加一倍,在相同數(shù)量GPU的情況下,構(gòu)建GPU矩陣所需所需的交換機(jī)數(shù)量將會(huì)減半!
無(wú)損傳輸:以太網(wǎng)可以通過(guò)優(yōu)先流量控制(PFC)提供無(wú)損傳輸。PFC 允許八類(lèi)服務(wù),每一類(lèi)都支持流量控制。其中一些類(lèi)別可指定為啟用 PFC 的無(wú)損傳輸。與有損流量相比,無(wú)損流量以更高的優(yōu)先級(jí)通過(guò)交換機(jī)進(jìn)行處理和交換。在擁塞期間,交換機(jī)/網(wǎng)卡可以對(duì)其上游設(shè)備進(jìn)行流量控制,而不是丟棄數(shù)據(jù)包。
RDMA支持:以太網(wǎng)還可通過(guò) RoCEv2(RDMA over Converged Ethernet,聚合以太網(wǎng)上的 RDMA)支持 RDMA,RDMA 幀封裝在 IP/UDP 內(nèi)。當(dāng) GPU 服務(wù)器中的網(wǎng)絡(luò)適配器(NIC)接收到發(fā)送給 GPU 的 RoCEv2 數(shù)據(jù)包時(shí),NIC 會(huì)繞過(guò) CPU 將 RDMA 數(shù)據(jù)直接發(fā)送到 GPU 的內(nèi)存中。此外,還可以部署強(qiáng)大的端到端擁塞控制方案(如 DCQCN),以減少 RDMA 的端到端擁塞和數(shù)據(jù)包丟失。
負(fù)載均衡增強(qiáng):BGP 等路由協(xié)議使用等價(jià)多路徑路由(ECMP),在源和目的地之間有多條 "成本 "相等的路徑時(shí),將數(shù)據(jù)包分配到多條路徑上。鏈路成本(cost)就可以簡(jiǎn)單理解為設(shè)備跳數(shù)。ECMP 的目標(biāo)是分配網(wǎng)絡(luò)流量,提高鏈路利用率,防止擁塞。
當(dāng)數(shù)據(jù)包到達(dá)交換機(jī)時(shí),可以多條等價(jià)路徑到達(dá)目的地,交換機(jī)會(huì)使用哈希函數(shù)來(lái)決定發(fā)送數(shù)據(jù)包的路徑(實(shí)現(xiàn)負(fù)載均衡)。這種哈??梢允褂迷春湍康腎P 地址、源和目的端口號(hào)以及協(xié)議字段,將數(shù)據(jù)包映射到不同鏈路的流量上。然而,哈希并不總是完美的,可能會(huì)導(dǎo)致某些鏈路流量過(guò)載。例如,在圖 7 中,假設(shè)單播流量模式為 G0 -> G19、G9 -> G2 ,以及G18 -> G11。理想情況下,網(wǎng)絡(luò)應(yīng)該不會(huì)擁塞,因?yàn)槿~/脊交換機(jī)有足夠的帶寬支持這種流量模式。然而,由于哈希的離散不夠,導(dǎo)致所有流量都可能選擇 Spine_switch_0。當(dāng)出現(xiàn)這種情況時(shí),該交換機(jī)的輸出端口就會(huì)出現(xiàn)流量超載,1200Gbps 的流量試圖從 800Gbps 的端口流出。(譯者注:此處有一句due to a lack of entropy,我理解為就是hash并沒(méi)有把流量分布出去,而是落在一個(gè)交換機(jī)上)。
| 圖 7 — 不完善的哈希計(jì)算可能會(huì)導(dǎo)致某些鏈路被過(guò)度占用(譯者注:在Spine_ switch_0上看,左側(cè)三個(gè)400G端口進(jìn)入的流量湊要從右側(cè)黑色的800G端口發(fā)出)
在這種情況下,端到端擁塞方案(例如ECN/DCQCN 等)可以有效地根據(jù)交換機(jī)結(jié)構(gòu)內(nèi)部的擁塞情況對(duì)發(fā)送方流量進(jìn)行節(jié)流,不過(guò)在發(fā)送方節(jié)流之前仍可能會(huì)出現(xiàn)短暫的擁塞情況。
# 還有其他方法可以進(jìn)一步減少擁塞
1.在脊/葉交換機(jī)之間的線(xiàn)路略微超配帶寬。
自適應(yīng)負(fù)載平衡:當(dāng)有多條路徑到達(dá)目的地時(shí),如果一條路徑出現(xiàn)擁塞,交換機(jī)可以通過(guò)其他端口來(lái)路由后續(xù)的流量數(shù)據(jù),直到擁塞得到解決。為實(shí)現(xiàn)這一功能,交換機(jī)硬件會(huì)監(jiān)控出口隊(duì)列深度和耗盡率,并定期將信息反饋給上游交換機(jī)的負(fù)載平衡器。許多交換機(jī)已經(jīng)支持這一功能。
RoCEv2 的數(shù)據(jù)包負(fù)載均衡可將這些數(shù)據(jù)包均勻地分布在所有可用鏈路上,以保持鏈路的有效均衡。通過(guò)這種方式,數(shù)據(jù)包可以不按順序到達(dá)目的地。但是,網(wǎng)卡要可以將 RoCE 傳輸層這些不按順序的數(shù)據(jù),轉(zhuǎn)換成有順序的數(shù)據(jù),以透明方式向 GPU 傳輸(譯者注:也就是網(wǎng)卡需要做數(shù)據(jù)的排序工作)。這需要網(wǎng)卡和以太網(wǎng)交換機(jī)提供額外的硬件支持。
除上述功能外,網(wǎng)絡(luò)內(nèi)聚合(GPU 的梯度可以在交換機(jī)內(nèi)聚合)也有助于減少訓(xùn)練期間的 GPU 間流量。Nvidia 在高端以太網(wǎng)交換機(jī)集成軟件支持這一功能。
因此,高端以太網(wǎng)交換機(jī)/網(wǎng)卡具有強(qiáng)大的擁塞控制/負(fù)載平衡功能和 RDMA 支持。與 IB 交換機(jī)相比,它們可以擴(kuò)展到更大的設(shè)計(jì)規(guī)模。一些云服務(wù)提供商和超級(jí)擴(kuò)展商已經(jīng)開(kāi)始構(gòu)建基于以太網(wǎng)的 GPU 矩陣,以連接大于 32000(32K)個(gè) GPU。
14
全調(diào)度型矩陣Fully-scheduled fabric(VOQ fabric)
最近,幾家交換機(jī)/路由器芯片供應(yīng)商發(fā)布了支持全調(diào)度或 AI矩陣芯片。全調(diào)度矩陣并不新奇,不過(guò)是VOQ矩陣的一種,該技術(shù)十多年來(lái)主要用于許多模塊化機(jī)箱設(shè)計(jì),包括瞻博網(wǎng)絡(luò)的 PTX 系列路由器。這種 VOQ矩陣 概念可以擴(kuò)展到支持分布式系統(tǒng),以及更大規(guī)模的擴(kuò)展。
在 VOQ 架構(gòu)中,數(shù)據(jù)包只在入口Leaf交換機(jī)中緩沖一次,其緩沖隊(duì)列與數(shù)據(jù)包需要離開(kāi)的最終出口Leaf交換機(jī)/廣域網(wǎng)端口/輸出隊(duì)列是唯一映射的。入口交換機(jī)中的這些隊(duì)列稱(chēng)為虛擬輸出隊(duì)列(VOQ)。因此,每個(gè)入口Leaf交換機(jī)都為整個(gè)系統(tǒng)中的每個(gè)輸出隊(duì)列留有緩沖空間。該緩沖區(qū)的大小通??扇菁{每個(gè) VOQ 大概40-70us 的擁塞數(shù)據(jù)(譯者注:相當(dāng)于內(nèi)存)。當(dāng)隊(duì)列較小時(shí),VOQ 會(huì)留在芯片緩沖區(qū);當(dāng)隊(duì)列開(kāi)始增加時(shí),VOQ 會(huì)轉(zhuǎn)移到外部存儲(chǔ)器中的深度緩沖區(qū)。
· 在入口Leaf交換機(jī)上,一旦 VOQ 積累了一些數(shù)據(jù)包,它就會(huì)向出口交換機(jī)發(fā)出請(qǐng)求,請(qǐng)求允許通過(guò)網(wǎng)絡(luò)發(fā)送這些數(shù)據(jù)包。這些請(qǐng)求通過(guò)網(wǎng)絡(luò)到達(dá)出口Leaf交換機(jī)。
· 出口Leaf交換機(jī)的調(diào)度程序會(huì)根據(jù)嚴(yán)格的調(diào)度層次和淺層輸出緩沖區(qū)的空間來(lái)批準(zhǔn)這一請(qǐng)求。并授權(quán)速率限制,以避免從矩陣中出口交換機(jī)的出口鏈路過(guò)載。
· 當(dāng)授權(quán)批準(zhǔn)到達(dá) 入口 Leaf 交換機(jī),它就會(huì)將一組數(shù)據(jù)包(收到授予的數(shù)據(jù)包)發(fā)送到出口,并將負(fù)載均衡到矩陣中的所有可用上行鏈路上(譯者注:上行鏈路即是到達(dá)spine的鏈路)。
· 針對(duì)特定 VOQ 的數(shù)據(jù)包可以在所有可用的輸出鏈路上均勻分布,以實(shí)現(xiàn)完美的負(fù)載平衡。這可能會(huì)導(dǎo)致數(shù)據(jù)包重新排序。但是需要注意,在這些數(shù)據(jù)包傳輸?shù)?GPU 節(jié)點(diǎn)之前,出口交換機(jī)邏輯上是需要把這些數(shù)據(jù)包按順序排列完畢。
| 圖8 — VOQ 矩陣
為避免鏈路帶寬被超額占用,出口調(diào)度程序會(huì)在確保矩陣中交換機(jī)轉(zhuǎn)發(fā)數(shù)據(jù)時(shí),對(duì)這些數(shù)據(jù)進(jìn)行計(jì)量,確保不會(huì)超出。因此它消除了以太網(wǎng)結(jié)構(gòu)中 99% 因非連續(xù)傳輸(許多端口試圖向一個(gè)輸出端口發(fā)送流量)而造成的擁塞,并完全消除了 HOL 阻塞。需要注意的是,在這種架構(gòu)中,數(shù)據(jù)(包括請(qǐng)求和授權(quán))仍使用以太網(wǎng)結(jié)構(gòu)傳輸。(譯者注:這段翻譯比較拗口,大家可以參考原文,大概的意思就是VOQ會(huì)提前保證帶寬的預(yù)留和占用,但是關(guān)于控制的信令信息,依然是以太網(wǎng)傳輸)。
還有一些架構(gòu)(包括瞻博網(wǎng)絡(luò)的 Express 和 Broadcom 的 Jericho 系列)通過(guò)其專(zhuān)有的信元化矩陣(cellified fabric)支持 VOQ。在這種情況下,Leaf交換機(jī)將數(shù)據(jù)包劃分為固定大小的單元,并將它們平均發(fā)送到到所有可用的輸出鏈路上。這比在數(shù)據(jù)包層面上進(jìn)行數(shù)據(jù)負(fù)載均衡發(fā)送能能提高鏈路利用率,因?yàn)樵诖笮?shù)據(jù)包混合的情況下,很難保證所有鏈路都得到充分利用。
伴隨信元轉(zhuǎn)發(fā),我們還避免了輸出鏈路的另一個(gè)存儲(chǔ)/轉(zhuǎn)發(fā)延遲(輸出以太網(wǎng)接口的延遲)。在信元矩陣中,Spine交換機(jī)被可高效轉(zhuǎn)發(fā)信元的定制交換機(jī)所取代。這些矩陣信元交換機(jī)在功耗和延遲方面都優(yōu)于以太網(wǎng)交換機(jī),因?yàn)樗鼈儧](méi)有支持 L2 交換的開(kāi)銷(xiāo)。因此,基于信元的矩陣不僅能提高鏈路利用率,還能減少 VOQ矩陣中的端到端延遲。(譯者注:此處我個(gè)人的理解是,把整個(gè)交換矩陣?yán)斫獬梢粋€(gè)大cell轉(zhuǎn)發(fā)的交換機(jī),來(lái)來(lái)實(shí)現(xiàn)高速的轉(zhuǎn)發(fā),因?yàn)槿绻莻鹘y(tǒng)IP架構(gòu),交換機(jī)之間轉(zhuǎn)發(fā)數(shù)據(jù)還涉及到二層以太網(wǎng)的封裝和解封裝問(wèn)題,而cell轉(zhuǎn)發(fā)則簡(jiǎn)化了這個(gè)步驟,越看越像早期的ATM了,LOL)
| 圖9 — Leaf交換機(jī)和cell交換機(jī)組成的基于信元的矩陣
# VOQ 架構(gòu)也有如下局限
· 每個(gè)Leaf交換機(jī)都需要在入口側(cè)為系統(tǒng)中的所有 VOQ 設(shè)置合理的緩沖區(qū),以便在擁塞期間緩沖數(shù)據(jù)包。緩沖區(qū)大小與 GPU 數(shù)量乘以每個(gè) GPU 的優(yōu)先級(jí)隊(duì)列數(shù)量成正比。更大規(guī)模 GPU 規(guī)模就意味著需要更多的入口緩沖(譯者注:個(gè)人覺(jué)得也是對(duì)Leaf交換機(jī)性能和成本的挑戰(zhàn))。
· 出口側(cè)的輸出隊(duì)列緩沖區(qū)應(yīng)留有足夠的空間,以覆蓋通過(guò)矩陣的往返延遲 (RTT),這樣這些緩沖區(qū)就不會(huì)在請(qǐng)求-授予握手期間空閑。在使用 3 級(jí)結(jié)構(gòu)的大型 GPU 集群中,由于光纜較長(zhǎng)和交換機(jī)的增加,其RTT 可能會(huì)增加。如果輸出隊(duì)列緩沖區(qū)的大小不適合增加的 RTT,輸出鏈路將無(wú)法達(dá)到 100% 的利用率,從而降低系統(tǒng)性能。(譯者注:個(gè)人理解這意味著緩沖區(qū)空間的計(jì)算,不僅僅是數(shù)據(jù)包乘以緩沖延遲的計(jì)算,也包括數(shù)據(jù)包在鏈路上的延遲計(jì)算得到大小,這樣才能保證數(shù)據(jù)在傳輸過(guò)程中100%傳遞,這個(gè)確實(shí)我以前沒(méi)想過(guò))。
· 盡管 VOQ 系統(tǒng)通過(guò)出口調(diào)度消除了 HOL 阻塞,大大減少了尾部延遲,但由于入口Leaf交換機(jī)在傳輸數(shù)據(jù)包之前必須進(jìn)行請(qǐng)求-授予握手,因此數(shù)據(jù)包的最小延遲確實(shí)會(huì)增加一個(gè)額外的 RTT(譯者注:為了不擁塞,需要協(xié)商,因?yàn)閰f(xié)商,帶來(lái)新的RTT是必然,就看如何RTT有多大,如何tradeoff或優(yōu)化)。
盡管存在這些瓶頸,但完全調(diào)度的 VOQ 結(jié)構(gòu)在減少尾部延遲方面的表現(xiàn)要比典型的以太網(wǎng)流量好得多。如果能使鏈路利用率大于 90%,那么盡管GPU 擴(kuò)展帶來(lái)緩沖區(qū)的增加,因而產(chǎn)生額外成本的增加(價(jià)格的增加或者RTT的增加等),這個(gè)方案依然值得投資。
另外,供應(yīng)商鎖定可能是 VOQ矩陣的一個(gè)問(wèn)題,因?yàn)槊總€(gè)供應(yīng)商都有自己的專(zhuān)有協(xié)議,而且很難在同一矩陣中混搭多品牌交換機(jī)使用。
15
關(guān)于推理/微調(diào)工作負(fù)載的一個(gè)小說(shuō)明
LLM 中的推理是使用已完成訓(xùn)練的模型來(lái)生成對(duì)用戶(hù)提示的響應(yīng)過(guò)程,通常是通過(guò) API 或網(wǎng)絡(luò)服務(wù)。例如,當(dāng)我們?cè)?ChatGPT 會(huì)話(huà)中輸入一個(gè)問(wèn)題時(shí),推理過(guò)程會(huì)在云端托管的已訓(xùn)練好的 GPT-3.5 模型副本上運(yùn)行,從而得到回復(fù)。與訓(xùn)練相比,推理所需的 GPU 資源要少得多。但是,考慮到訓(xùn)練好的 LLM 模型中有數(shù)十億個(gè)參數(shù),推理仍然需要多個(gè) GPU(以分散參數(shù)和計(jì)算)。例如,Meta 的 LLaMA 模型通常需要 16 個(gè) A100 GPU 進(jìn)行推理(而訓(xùn)練需要 2000 個(gè))。
同理,利用特定領(lǐng)域的數(shù)據(jù)集對(duì)已經(jīng)訓(xùn)練好的模型進(jìn)行微調(diào)所需的資源也較少,通常不超過(guò)100+ H100 規(guī)模的 GPU。基于此,推理和微調(diào)都不需要同一矩陣上的大規(guī)模 GPU 集群。
雖然單個(gè)推理工作負(fù)載并非計(jì)算密集型的,但隨著越來(lái)越多的人和組織開(kāi)始使用 ChatGPT,推理工作負(fù)載在不久的將來(lái)將呈指數(shù)級(jí)增長(zhǎng)。這些工作負(fù)載可以分布在不同的 GPU 集群/服務(wù)器上,每個(gè)GPU 集群/服務(wù)器都承載著已經(jīng)訓(xùn)練好的的模型副本。
學(xué)術(shù)界和工業(yè)界都在認(rèn)真研究如何優(yōu)化訓(xùn)練和推理。量化- Quantization(在訓(xùn)練和/或推理過(guò)程中使用精度較低的浮點(diǎn)數(shù)或整數(shù))和參數(shù)剪枝- parameter pruning(剪除對(duì)性能貢獻(xiàn)不大的權(quán)重/層)是用于縮小模型規(guī)模的一些技術(shù)。
Meta 的 LLaMA 模型表明,當(dāng)使用四倍于 GPT-3 的數(shù)據(jù)集進(jìn)行訓(xùn)練時(shí),比 GPT-3 小 3 倍的模型可以提供更好的性能。如果這一趨勢(shì)在未來(lái)版本的 LLM 模型中得以延續(xù),我們可以預(yù)期訓(xùn)練出來(lái)的模型會(huì)逐漸變小,從而減輕推理工作量的壓力。
16
總結(jié)/展望
開(kāi)發(fā)和訓(xùn)練LLM 需要一支由人工智能/機(jī)器學(xué)習(xí)研究人員、工程師、數(shù)據(jù)科學(xué)家組成的高度專(zhuān)業(yè)化的團(tuán)隊(duì),還需要在云資源上投入巨資。缺乏廣泛的 ML專(zhuān)業(yè)知識(shí)的企業(yè)不太可能獨(dú)立應(yīng)對(duì)此類(lèi)挑戰(zhàn)。相反,更多的企業(yè)會(huì)尋求利用自己的專(zhuān)有數(shù)據(jù)集對(duì)市面上訓(xùn)練有素的模型進(jìn)行微調(diào)。云服務(wù)提供商可能會(huì)為企業(yè)提供這些服務(wù)。
因此,模型訓(xùn)練工作量預(yù)計(jì)主要來(lái)自學(xué)術(shù)機(jī)構(gòu)、云服務(wù)提供商和人工智能研究實(shí)驗(yàn)室。
與人們的預(yù)期相反,未來(lái)幾年的訓(xùn)練工作量預(yù)計(jì)不會(huì)減少或停滯不前。為了讓模型產(chǎn)生準(zhǔn)確、最新的結(jié)果,而不是產(chǎn)生 "幻覺(jué)",必須更頻繁地對(duì)模型進(jìn)行訓(xùn)練。這將大大增加訓(xùn)練工作量。
以太網(wǎng)矩陣是構(gòu)建用于訓(xùn)練的大型 GPU 集群的“不二之選”。目前市面上的所有高端以太網(wǎng)交換機(jī)(模塊化/獨(dú)立式)都能應(yīng)對(duì)這種大型集群挑戰(zhàn)。通過(guò)一些增強(qiáng)型功能,如通過(guò)數(shù)據(jù)包級(jí)的負(fù)載均衡,對(duì) RoCEv2 數(shù)據(jù)包進(jìn)行重新排序、網(wǎng)內(nèi)聚合和支持直通模式(cut-through),這些交換機(jī)可以獲得比 IB 矩陣更為出色的性能。但是,在這些大型以太網(wǎng)矩陣集群部署和廣泛使用之前,IB Fabric 仍將繼續(xù)使用。用于分布式交換機(jī)的 VOQ 矩陣方案看起來(lái)很有前景,并為這一組合增添了另一種潛在的解決方案!
GPU/網(wǎng)絡(luò)交換機(jī)的性能和規(guī)模每?jī)赡瓴欧环?。如果模型的?guī)模繼續(xù)隨著每個(gè)新版本的推出而增加一倍或兩倍,那么它們很快就會(huì)撞上硬件墻(譯者注:硬件性能不夠)!AI界必須大力投資研究,使 LLM 更優(yōu)化、更環(huán)保、更可持續(xù)。
總之,這是一個(gè)令人激動(dòng)的研究和創(chuàng)新時(shí)代!
Sharada Yeluri是瞻博網(wǎng)絡(luò)的高級(jí)工程總監(jiān),負(fù)責(zé)瞻博網(wǎng)絡(luò) PTX 系列路由器中使用的 Express 系列芯片產(chǎn)品。她在 CPU 和網(wǎng)絡(luò)領(lǐng)域擁有 12 項(xiàng)以上的專(zhuān)利。
審核編輯:劉清
-
人工智能
+關(guān)注
關(guān)注
1796文章
47734瀏覽量
240444 -
圖形處理器
+關(guān)注
關(guān)注
0文章
201瀏覽量
25675 -
TPU
+關(guān)注
關(guān)注
0文章
145瀏覽量
20788 -
深度神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
0文章
61瀏覽量
4565 -
ChatGPT
+關(guān)注
關(guān)注
29文章
1570瀏覽量
8097
原文標(biāo)題:大語(yǔ)言模型的硬件互聯(lián)
文章出處:【微信號(hào):SDNLAB,微信公眾號(hào):SDNLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
一文詳解知識(shí)增強(qiáng)的語(yǔ)言預(yù)訓(xùn)練模型
【大語(yǔ)言模型:原理與工程實(shí)踐】探索《大語(yǔ)言模型原理與工程實(shí)踐》
【大語(yǔ)言模型:原理與工程實(shí)踐】揭開(kāi)大語(yǔ)言模型的面紗
【大語(yǔ)言模型:原理與工程實(shí)踐】大語(yǔ)言模型的基礎(chǔ)技術(shù)
【大語(yǔ)言模型:原理與工程實(shí)踐】大語(yǔ)言模型的預(yù)訓(xùn)練
【大語(yǔ)言模型:原理與工程實(shí)踐】大語(yǔ)言模型的應(yīng)用
Pytorch模型訓(xùn)練實(shí)用PDF教程【中文】
關(guān)于語(yǔ)言模型和對(duì)抗訓(xùn)練的工作
![關(guān)于<b class='flag-5'>語(yǔ)言</b><b class='flag-5'>模型</b>和對(duì)抗<b class='flag-5'>訓(xùn)練</b>的工作](https://file.elecfans.com/web1/M00/CE/2A/pIYBAF-fs4-AbHaXAAGqjDte9-I109.png)
超大Transformer語(yǔ)言模型的分布式訓(xùn)練框架
![超大Transformer<b class='flag-5'>語(yǔ)言</b><b class='flag-5'>模型</b>的分布式<b class='flag-5'>訓(xùn)練</b>框架](https://file.elecfans.com/web2/M00/17/60/pYYBAGFj-qiAPd3iAAARA9q0LDI270.png)
評(píng)論