精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
大模型算力推演優(yōu)化實(shí)戰(zhàn)

作者:zhenfei

閱讀幫助

第一部分為看清:大模型的訓(xùn)練及推理過(guò)程是如何的,以及內(nèi)部邏輯

第二部分為理解:大模型的訓(xùn)練及推理和算力的關(guān)系

第三部分為推演:用簡(jiǎn)單的公式量化大模型算力的需求

第四部分為優(yōu)化:我們?nèi)绾翁岣咚懔寐?/span>

一、看清

1.1 大模型訓(xùn)練

我們以投籃訓(xùn)練為例,來(lái)嘗試?yán)斫獯竽P偷挠?xùn)練過(guò)程。

假設(shè)你正在練習(xí)投籃,目標(biāo)是投進(jìn)籃筐。已知的是投籃和你的出手點(diǎn)高度、投籃角度、手腕力度大小有關(guān),作為一個(gè)小白你并不知道出手點(diǎn)高度、投籃角度、手腕力度大小該控制多少,那么你的第一次出手就是一個(gè)隨機(jī)控制,至于籃球進(jìn)不進(jìn)籃筐就交給上帝吧。

有一種可能是你進(jìn)了,那么恭喜你,天才選手;但現(xiàn)實(shí)往往很骨感,你不但沒(méi)有中而且距離籃筐還很遠(yuǎn)。聰明的你就開(kāi)始分析你觀察箭偏離籃筐的方向和距離,然后找出如何調(diào)整你的出手點(diǎn)高度、投籃角度、手腕力度大小等因素,以便下次投籃更接近籃筐。

第二次投籃就根據(jù)第一次的分析結(jié)果,調(diào)整了出手點(diǎn)、高度等,你發(fā)現(xiàn)這次距離籃筐更近了,但是還有優(yōu)化的空間,以此類推直到第 N 次,你發(fā)現(xiàn)幾乎可以百發(fā)百中了。

我們來(lái)看大模型訓(xùn)練包含哪幾部分,以及和投籃訓(xùn)練的過(guò)程類比:

1、前向傳播(forward pass):在前向傳播過(guò)程中,輸入數(shù)據(jù)(例如圖像、文本等)通過(guò)神經(jīng)網(wǎng)絡(luò)的各層進(jìn)行傳遞,直到得到輸出結(jié)果。這個(gè)過(guò)程包括了將輸入數(shù)據(jù)與權(quán)重矩陣相乘、應(yīng)用激活函數(shù)等操作。前向傳播的目的是計(jì)算網(wǎng)絡(luò)的預(yù)測(cè)輸出,并將其與實(shí)際目標(biāo)值進(jìn)行比較,從而計(jì)算損失函數(shù)(loss function)的值。

以上述投籃類比:根據(jù)你目前的技能(神經(jīng)網(wǎng)絡(luò)的權(quán)重)來(lái)投籃,然后觀察籃球距離籃筐的位置(神經(jīng)網(wǎng)絡(luò)的輸出)。這個(gè)過(guò)程告訴你,根據(jù)你現(xiàn)有的技能,你的投籃表現(xiàn)如何。

2、反向傳播(backward pass):反向傳播是一種高效計(jì)算梯度的算法。在這個(gè)過(guò)程中,損失函數(shù)關(guān)于每個(gè)權(quán)重的梯度(偏導(dǎo)數(shù))被計(jì)算出來(lái)。從輸出層開(kāi)始,沿著網(wǎng)絡(luò)的層次結(jié)構(gòu)向輸入層反向傳播,計(jì)算每個(gè)權(quán)重的梯度。這些梯度表示了權(quán)重對(duì)損失函數(shù)的貢獻(xiàn)大小,因此可以用于指導(dǎo)權(quán)重更新。

以上述投籃類比:這就像你分析籃球距離籃筐的位置,并找出如何改進(jìn)你的投籃技巧。你觀察籃球偏離籃筐的方向和距離(損失函數(shù)),然后找出如何調(diào)整你的投籃姿勢(shì)、力量等因素(權(quán)重梯度),以便下次投籃更接近籃筐。這個(gè)過(guò)程涉及到計(jì)算梯度(找出如何調(diào)整技巧)。

3、權(quán)重更新(weight update):在計(jì)算出所有權(quán)重的梯度后,我們使用優(yōu)化算法(如隨機(jī)梯度下降(SGD)、Adam 等)來(lái)更新權(quán)重。這個(gè)過(guò)程中,權(quán)重會(huì)根據(jù)它們的梯度值進(jìn)行調(diào)整,以減小損失函數(shù)的值。這樣,模型就能逐漸學(xué)習(xí)到從輸入數(shù)據(jù)中預(yù)測(cè)目標(biāo)值的能力。

以上述投籃類比:你經(jīng)過(guò)分析找出如何調(diào)整你的投籃姿勢(shì)、力量等因素(權(quán)重梯度),以便下次投籃更接近籃筐。這個(gè)過(guò)程涉及到更新權(quán)重(實(shí)際調(diào)整技巧)。

下面舉例一個(gè)簡(jiǎn)單三層神經(jīng)網(wǎng)絡(luò)模型的推導(dǎo)過(guò)程

神經(jīng)網(wǎng)絡(luò)介紹見(jiàn)下圖,包含三層:輸入層、隱含層、輸出層,以及每層的神經(jīng)元及相互之間權(quán)重,目標(biāo)是使得輸入數(shù)據(jù) x1,x2(0.05 和 0.05),使輸出盡可能與原始輸出 y1,y2(0.25 和 0.15)接近。

第一步:前向傳播

1、輸入層-->>隱含層

計(jì)算神經(jīng)元 h1 的加權(quán)和:

神經(jīng)元 h1 的輸出 out_h1:

同理,可計(jì)算出:out_h2 = 0.63064853

2、隱含層-->>輸出層

一次前向傳播就完成了,我們得到輸出結(jié)果[0.78438045,0.82385737] 與目標(biāo)值[0.25,0.15]相差還很遠(yuǎn),下面進(jìn)行反向傳播,更新權(quán)重值

第二步:反向傳播

1、計(jì)算損失函數(shù)(Loss)

分別計(jì)算 y1 和 y2 的誤差,總誤差為兩者之和。

2、隱含層 -->> 輸出層權(quán)值(w4-w7)更新

w4 對(duì)整體誤差產(chǎn)生的影響,可以由偏導(dǎo)求出:

基于鏈?zhǔn)椒▌t我們推出偏導(dǎo)可以拆分為三個(gè)子公式得到

第一部分

第二部分

enter image description here

第三部分

最后可以得出我們需要的偏導(dǎo):

有了偏導(dǎo)數(shù)據(jù),我們就可以更新 w4 的值:

同理可以計(jì)算 w5-w7 的更新值:

w5'=0.57150144

w6'=0.66939351

w7'=0.76916515

3、隱含層 -->> 隱含層權(quán)值(w0-w3)更新

方法和上面類似,我們先推算下 w0 的更新值:

第一部分

根據(jù)之前的計(jì)算結(jié)果:

同理可以計(jì)算出:

這樣就可以得出:

第二部分

第三部分

綜上三部分,我們可以計(jì)算出:

最后,通過(guò)偏導(dǎo)來(lái)更新 w0 的值:

同理可以計(jì)算 w1-w3 的更新值:

w1'=0.19933483

w2'=0.29922866

w3'=0.39922866

這樣一次反向傳播就完成了,我們?cè)侔迅碌臋?quán)重重新計(jì)算,不停的進(jìn)行迭代,迭代一次 Loss 值由 0.36982311 -> 0.36277389,以此類推,當(dāng)?shù)螖?shù)足夠大,Loss 值不斷變小。

enter image description here

1000 次迭代后,Loss 值已經(jīng)很小了:

1.2 大模型推理

有了一個(gè)訓(xùn)練好的模型,我們就可以進(jìn)行推理上線了,推理過(guò)程主要包括五個(gè)步驟:

官方手冊(cè)

第一步:分詞(Tokenize)將輸入的文本分解為更小的 token,這些部分可以是單個(gè)單詞,字符等,簡(jiǎn)單理解為類似一種編碼算法,把字符映射到 ID。比如下面這句 [Write a story about number 1234567.]就可以映射到一串?dāng)?shù)字[16594, 257, 1621, 546, 1271, 17031, 2231, 3134, 13]

第二步:嵌入(Embedding)將高維度的數(shù)據(jù)(例如文字、圖片、音頻)映射到低維度空間的過(guò)程,最終以多維度向量表示每一個(gè) object(大模型就是指的每一個(gè) token)。

第三步:位置編碼(Positional Encoding)將 token 在句子中的位置信息進(jìn)行編碼,使得輸入 Input = Input_Embedding + Positional_Enbedding 增加位置信息。

至于為何要增加位置編碼,互聯(lián)網(wǎng)上有很多大佬解釋,這里不贅述,簡(jiǎn)單歸因兩點(diǎn):

1、神經(jīng)網(wǎng)絡(luò) RNN 本身是按照序列順序處理句子的,Transformer 模型用 Attention 取代了 RNN ,它對(duì)數(shù)據(jù)的處理是同時(shí)并行處理,不包含時(shí)序信息

2、時(shí)序不同的句子含義會(huì)有很大不同

第四步:Transformer 層 將處理后的 Input 輸入神經(jīng)網(wǎng)絡(luò) +attention 注意力模型進(jìn)行處理:

第五步:Softmax 將多個(gè)神經(jīng)元的輸出映射到(0,1)區(qū)間,進(jìn)而轉(zhuǎn)換為一組概率分布(加和為 1)(convert the decoder output to predicted next-token probabilities)

enter image description here

示例一次計(jì)算過(guò)程如下:

二、理解

2.1 訓(xùn)練過(guò)程

第一章節(jié)第一小節(jié)講述了大模型的通用過(guò)程,包括前向傳播(forward pass)和反向傳播(backward pass),我們以單位計(jì)算 unit 來(lái)計(jì)數(shù),一次前向傳播為 1 unit,一次反向傳播為 2 unit(因?yàn)檫@里需要計(jì)算一份輸出的梯度+參數(shù)的梯度),那么一次完整的訓(xùn)練包含了 1+2 = 3 unit,也就是對(duì)于每個(gè) token、每個(gè)模型參數(shù),需要3 unit 的計(jì)算。

每一個(gè) unit 的計(jì)算都是矩陣運(yùn)算,我們知道對(duì)于一次矩陣運(yùn)算需要進(jìn)行一次乘法及加法,共計(jì) 2 次浮點(diǎn)運(yùn)算。

綜上兩部分,我們可以得出對(duì)于每個(gè) token、每個(gè)模型參數(shù),需要進(jìn)行 3 unit × 2 flops = 6 次浮點(diǎn)運(yùn)算。

補(bǔ)充:訓(xùn)練還有一個(gè)可選流程激活重計(jì)算技術(shù)(本質(zhì)上是時(shí)間換空間),使用激活重計(jì)算技術(shù)來(lái)減少中間激活顯存需要進(jìn)行 1 次額外的前向傳播,如果使用重計(jì)算技術(shù),那么對(duì)于每個(gè) token、每個(gè)模型參數(shù),需要進(jìn)行 4 unit × 2 flops = 8 次浮點(diǎn)運(yùn)算。

2.2 推理過(guò)程

第一章節(jié)第一小節(jié)講述了大模型的推理過(guò)程,主要計(jì)算量在 Transformer 解碼層,這一層對(duì)于每個(gè) token、每個(gè)模型參數(shù)是一個(gè)單位 unit 的計(jì)算量,所以推理過(guò)程每個(gè) token、每個(gè)模型參數(shù),需要進(jìn)行 1 unit × 2 flops = 2 次浮點(diǎn)運(yùn)算。

三、推演

有了如上的兩個(gè)章節(jié)的分析,我們可以得出一個(gè)比較通用的算力評(píng)估,所需的 FLOPs 浮點(diǎn)運(yùn)算量:

3.1 算力底座

得到通用的計(jì)算量評(píng)估,我們需要進(jìn)一步細(xì)化到我們熟知的 GPU 卡算力上,為此我們需要一些算力底座的相關(guān)信息,一些常用 GPU 卡對(duì)比的信息如下:

3.2 算力評(píng)估

有了通用的 GPU 卡的算力信息,我們就有了可以評(píng)估所需 GPU 卡數(shù)量的依據(jù),在上述通用算力評(píng)估的基礎(chǔ)上,我們就有了基于 GPU 卡的算力評(píng)估:

其中 FLOPS utilization 以目前業(yè)界能達(dá)到的最大值來(lái)進(jìn)行推測(cè):

感興趣可查閱 PaLM: Scaling Language Modeling with Pathways

3.3 算力驗(yàn)證

以業(yè)界開(kāi)源大模型為例,我們通過(guò)公式計(jì)算算力基本和公開(kāi)數(shù)據(jù)一致,以下兩個(gè)維度來(lái)推算:

3.3.1、需要的算力

例如 GPT3 參數(shù)規(guī)模 175B,訓(xùn)練 token300B,采用的是稠密(Dense)模型,按照公式計(jì)算 6 × 175B × 300B = 3.15e23 FLOPs 公開(kāi)的 GPT3 運(yùn)算量 3.1e23 FLOPs,二者基本一致。

除此之外,該算力模型對(duì)于公司內(nèi)部的一些大模型評(píng)估也是適用的,業(yè)務(wù)敏感信息這里不展示具體數(shù)據(jù)了。

標(biāo)記紅色的為 7 月 11 號(hào)最新公開(kāi)的 GPT-4 的核心數(shù)據(jù),大家可能會(huì)注意到,GPT-4 好像并不符合算力公式,這是不是說(shuō)我們的公式存在一些邏輯錯(cuò)誤呢?那么我們就深入探討下 GPT-4 的訓(xùn)練過(guò)程:

GPT-4 采用了混合專家(MoE)模型

專家混合模型(Mixture-of-Experts,MoE):MoE 模型是一種深度學(xué)習(xí)架構(gòu),該架構(gòu),通常由多個(gè)專家(Experts)組成,每個(gè)專家負(fù)責(zé)處理輸入數(shù)據(jù)的不同方面,并擁有自己的參數(shù)集(也有一些參數(shù),例如 embedding,可以被所有專家共享,即共享參數(shù))。在模型的推理過(guò)程中,根據(jù)輸入數(shù)據(jù)的不同特征,模型會(huì)將輸入路由到不同的專家,每個(gè)專家根據(jù)其參數(shù)集處理對(duì)應(yīng)分配到的輸入后完成輸出,最終輸出則是各個(gè)專家輸出的集成。

如上圖,簡(jiǎn)單理解 MoE 類比:我把百度拆分為了,醫(yī)學(xué)知識(shí)百度+歷史知識(shí)百度+地理知識(shí)百度等等,實(shí)際我請(qǐng)求百度的時(shí)候,百度路由到對(duì)應(yīng)的 XX 知識(shí)百度上,然后回答我的問(wèn)題。

實(shí)際上 GPT-4 采用了 16 個(gè)專家,每個(gè)專家的 MLP 參數(shù)約為 1110 億,每次前向傳遞有 2 個(gè)專家進(jìn)行路由,還有 550 億共享參數(shù)用于注意力機(jī)制,如上圖每次調(diào)用實(shí)際走到了其中 16 個(gè)專家中的 2 個(gè),大大減少了所需的訓(xùn)練以及推理計(jì)算量。

最后我們?cè)倩剡^(guò)頭看下之前根據(jù)公式計(jì)算不匹配的問(wèn)題,這里就會(huì)有一個(gè)問(wèn)題就是實(shí)際執(zhí)行的參數(shù)規(guī)模變化了:1.8T -> 1110 億 * 2 + 550 億重新計(jì)算得到計(jì)算量為 6×2770 億 ×13T=2.16e25 與公開(kāi) 2.15e25 基本一致。

^^注:1T = 1000B = 10000 億^^

3.3.2、需要的 GPU 卡/時(shí)

例如 GPT3 參數(shù)規(guī)模 175B,訓(xùn)練 token300B,采用的是稠密(Dense)模型,按照下圖公式計(jì)算:

分子為訓(xùn)練所需要的浮點(diǎn)運(yùn)算量:1750 億(參數(shù)規(guī)模) × 6 × 3000 億(token 量);

分母為 312TFLOPS(一張 A100 FP16 精度下的算力) × 46.2%(利用率)× 3600 (1 小時(shí)對(duì)應(yīng)的秒)

得到的結(jié)果就是60.67 萬(wàn) A100/小時(shí) = 2.53 萬(wàn) A100/天,如果是 1000 張 A100,需要的訓(xùn)練時(shí)間約為一個(gè)月,和公開(kāi)的數(shù)據(jù)也基本一致

再說(shuō)到 GPT4 參數(shù)規(guī)模 1.8T,訓(xùn)練 token 13T,采用的是稀疏(MoE)模型,按照下圖公式計(jì)算:

53433642 A100/小時(shí) = 2226402 A100/天,如果用 25000 張 A100 訓(xùn)練,需要 89 天;與公開(kāi)數(shù)據(jù)使用了約 25000 個(gè) A100 進(jìn)行了 90-100 天的訓(xùn)練基本一致

3.3.3、業(yè)界模型推演

有了如上的驗(yàn)證,我們推演下業(yè)界一些公開(kāi)模型的算力數(shù)據(jù):

四、優(yōu)化

至此,所有的算力推演部分結(jié)束,下面我們來(lái)簡(jiǎn)單看一組數(shù)據(jù)

由上圖可以看到,不論是訓(xùn)練還是推理,利用率都不是特別高,這其實(shí)對(duì)于大規(guī)模的模型推廣是一大阻礙:

1、成本阻礙

我們第三章公式,采用 AWS 最具成本效益的 GPU 選擇,擁有 8 個(gè) A100 實(shí)例的有效時(shí)薪 19.22 美元;估計(jì)其成本約為 0.0035 美元/1000 token,OpenAI 的 API 定價(jià)為 0.02 美元/1000 token, 其毛利率約為 80%;假如利用率提升 10%,單位成本就可以降低 30%以上

2、算力阻礙

目前已知的各大互聯(lián)網(wǎng)公司都在囤卡,尋求抓住大模型的機(jī)遇,所以能得到多少?gòu)?GPU 卡也存在一定的不確定性;如何能夠高效利用 GPU 也可以反向推動(dòng)項(xiàng)目的進(jìn)展,從另一個(gè)角度破除算力瓶頸'卡脖子'

優(yōu)化分析的一些現(xiàn)狀:

1、基礎(chǔ)工具

英偉達(dá)提供了 Nsight System(nsys)工具查看模型運(yùn)行時(shí)的 CPU/GPU 執(zhí)行情況,可以幫助發(fā)現(xiàn) GPU 運(yùn)行時(shí)的一些問(wèn)題

2、訓(xùn)練過(guò)程

大模型訓(xùn)練中存在幾種經(jīng)典的分布式并行范式,分別為數(shù)據(jù)并行(Data Parallelism),流水線并行(Pipeline Parallelism)和張量并行(Tensor Parallesim)。

2.1 數(shù)據(jù)并行:ZeRO 優(yōu)化器

ZeRO(Zero Redundancy Optimizer)思想就是拆分 參數(shù)、梯度及優(yōu)化器狀態(tài),使得節(jié)點(diǎn)保存部分參數(shù)、梯度及優(yōu)化器狀態(tài)

2.2 模型并行:張量并行和流水線并行

  • 張量并行 :將模型中的線性層切分到多個(gè)顯卡上,并插入適當(dāng)?shù)?All-reduce 算子實(shí)現(xiàn)數(shù)據(jù)同步(通信量大)
  • 流水線并行 :將模型分為多個(gè) stage,放置在不同的顯卡上計(jì)算

3、推理過(guò)程

像一些公司進(jìn)行了模型的 CPU 和 GPU 運(yùn)算部分拆分,單獨(dú)部署成 CPU/GPU 微服務(wù),減少 CPU 和 GPU 之間的相互干擾,以此提升性能。

目前對(duì)于這部分還是知之甚少,后續(xù)會(huì)對(duì)于這部分再單獨(dú)展開(kāi),歡迎有興趣的小伙伴一起探討。

結(jié)束語(yǔ)

隨著混元的落地,LLama2 的開(kāi)源,會(huì)有更多的預(yù)訓(xùn)練模型和推理模型的資源利用優(yōu)化、評(píng)估的事情,這也是我們下階段工作(算力評(píng)估、性能優(yōu)化)的一個(gè)開(kāi)端,歡迎對(duì)大模型算力及優(yōu)化感興趣的同學(xué)一起交流溝通!

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
這是Meta版ChatGPT雛形?開(kāi)源、一塊GPU就能跑,1/10參數(shù)量打敗GPT-3
距離
重磅!OpenAI被“Open”!GPT-4可復(fù)制!
微軟打造“小芯片云”架構(gòu),欲大幅降低LLM實(shí)現(xiàn)成本
給人工智能“大模型”當(dāng)保姆,都要操哪些心?
ChatGPT相關(guān)黑話,再不知道就太晚了!
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

主站蜘蛛池模板: 伽师县| 都安| 高安市| 北宁市| 佛冈县| 郧西县| 开远市| 新化县| 白银市| 红河县| 茂名市| 黄梅县| 湖北省| 武义县| 新平| 根河市| 宣汉县| 廊坊市| 泰安市| 武山县| 凌云县| 霍林郭勒市| 晋州市| 山东| 吉安市| SHOW| 大庆市| 台东县| 高平市| 饶阳县| 永平县| 天等县| 雅安市| 定襄县| 平邑县| 温州市| 山西省| 永城市| 安丘市| 东山县| 凤翔县|