偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

7B?13B?175B?解讀大模型的參數(shù)

原創(chuàng) 精選
人工智能
在工程實踐中,理解大模型的參數(shù)是有意義的。參數(shù)在大模型中起著決定性的作用,它們定義了大模型的行為、性能、實現(xiàn)的成本以及對資源的需求。在工程上理解大模型的參數(shù),就是要把握模型的復(fù)雜度、性能和能力之間的關(guān)系。

大模型也是有大有小的,它們的大小靠參數(shù)數(shù)量來度量。GPT-3就有1750億個參數(shù),而Grok-1更是不得了,有3140億個參數(shù)。當(dāng)然,也有像Llama這樣身材苗條一點(diǎn)的,參數(shù)數(shù)量在70億到700億之間。

這里說的70B可不是指訓(xùn)練數(shù)據(jù)的數(shù)量,而是指模型中那些密密麻麻的參數(shù)。這些參數(shù)就像是一個個小小的“腦細(xì)胞”,越多就能讓模型更聰明,更能理解數(shù)據(jù)中那些錯綜復(fù)雜的關(guān)系。有了這些“腦細(xì)胞”,模型在處理任務(wù)時可能就會表現(xiàn)得更好。

大模型的這些參數(shù)就像是模型內(nèi)部的“建筑師”,通過復(fù)雜的算法和訓(xùn)練過程,一點(diǎn)一滴地搭建起這個龐大的語言世界。每個參數(shù)都有它的作用,它們共同協(xié)作,讓模型能夠更準(zhǔn)確地理解我們的語言,并給出更合適的回答。

那么,大模型中的參數(shù)是怎樣構(gòu)成的呢?

1. 大模型中的參數(shù)

大模型參數(shù)是其“內(nèi)部零件”,這些零件各有各的用途,通常包括但不限于以下幾類:

  • 權(quán)重(Weights):權(quán)重就像神經(jīng)網(wǎng)絡(luò)里的“電線”,連接著各個神經(jīng)元。它們負(fù)責(zé)調(diào)整信號傳遞時的“音量”,讓重要的信息傳得更遠(yuǎn),不那么重要的信息就小聲點(diǎn)。比如在全連接層里,權(quán)重矩陣W就是一張“地圖”,告訴我們哪些輸入特征和輸出特征關(guān)系最密切。
  • 偏置(Biases):偏置就像是神經(jīng)元的“小助手”,負(fù)責(zé)給神經(jīng)元的響應(yīng)定個基準(zhǔn)。有了它,神經(jīng)元就知道自己該在什么水平上活躍了。
  • 注意力機(jī)制的參數(shù)(Attention Parameters):在基于Transformer的模型中,這些參數(shù)就像是“指南針”,告訴模型哪些信息最值得關(guān)注。它們包括查詢矩陣、鍵矩陣和值矩陣等,就像是在一大堆信息中找出最關(guān)鍵的“線索”。
  • 嵌入矩陣(Embedding Matrices):在處理文本數(shù)據(jù)時,嵌入矩陣就是模型的“字典”。每一列都代表一個詞匯,用一個數(shù)來表示這個詞。這樣,模型就能理解文本的意思了。
  • 隱藏狀態(tài)初始化參數(shù)(Initial Hidden State Parameters):這些參數(shù)就是用來設(shè)置模型最初的隱藏狀態(tài)的,就像是給模型定個基調(diào),讓它知道從哪里開始“思考”。
  • ......

這些參數(shù)一般會使用4種表達(dá)和存儲的格式:

  1. Float: 32比特的浮點(diǎn)數(shù),即4字節(jié)
  2. Half/BF16: 16比特的浮點(diǎn)數(shù),即2字節(jié)
  3. Int8: 8比特的整數(shù),即1字節(jié)
  4. Int4: 4比特的整數(shù),即0.5字節(jié)

一般來說,參數(shù)的數(shù)量是影響大模型性能的主要因素。例如,13B-int8模型通常優(yōu)于同一體系結(jié)構(gòu)的7B-BF16模型。

2. 大模型參數(shù)對內(nèi)存的需求

對于工程師而言,面對的是大模型訓(xùn)練或推理時會使用多少的內(nèi)存資源。盡管 V100(有32 GB 的 GPU 內(nèi)存)或 A100(有40 GB 的 GPU 內(nèi)存)很強(qiáng)大,然而,大模型卻并不能使用 Tensorflow 或 PyTorch 的單個 GPU 上進(jìn)行訓(xùn)練。

2.1 訓(xùn)練階段的內(nèi)存需求

在模型訓(xùn)練期間,主要體現(xiàn)為模型狀態(tài)和激活過程對內(nèi)存的存儲需求。模型狀態(tài)包括由優(yōu)化器狀態(tài)、梯度和參數(shù)組成的張量。激活過程中包括在正向通道中創(chuàng)建的任何張量,這些張量是在反向通道中梯度計算所必需的。

在訓(xùn)練的任何時候,對于每個模型參數(shù),總是需要有足夠的 GPU 內(nèi)存來存儲:

  • 模型參數(shù)復(fù)制的字節(jié)數(shù)x
  • 梯度復(fù)制的字節(jié)數(shù)y
  • 優(yōu)化器狀態(tài)一般為12個字節(jié),主要是參數(shù)、方差等的拷貝,會將所有優(yōu)化器狀態(tài)保存在 FP32中,以保持穩(wěn)定訓(xùn)練并避免數(shù)值異常。

這意味著,訓(xùn)練時需要如下內(nèi)存來存儲所有的模型狀態(tài)和過程數(shù)據(jù):(x+y+12 ) * model_size

2.2 推理階段的內(nèi)存需求

推理階段利用預(yù)先訓(xùn)練好的 LLM 完成文本生成或翻譯等任務(wù)。在這里,內(nèi)存需求通常較低,主要的影響因素:

  • 有限的上下文: 推理通常處理較短的輸入序列,需要較少的內(nèi)存來存儲與較小的文本塊相關(guān)的激活。
  • 無反向傳播: 在推理過程中,LLM 不需要保留反向傳播的中間值,這是一種用于訓(xùn)練調(diào)整參數(shù)的技術(shù)。這消除了大量的內(nèi)存開銷。

推理階段所需的內(nèi)存不會高于相同參數(shù)計數(shù)和類型的訓(xùn)練階段所需內(nèi)存的四分之一。例如,對于一個7B的模型而言,大體上,使用浮點(diǎn)精度需要28GB內(nèi)存,使用BF16精度需要14GB內(nèi)存,使用int8精度需要7GB內(nèi)存。這個粗略的估計方式可以相應(yīng)地應(yīng)用到其他版本的模型。

另外,當(dāng)根據(jù)特定任務(wù)調(diào)整 LLM 時,微調(diào)需要更高的內(nèi)存占用。微調(diào)通常包括更長的訓(xùn)練序列來捕捉目標(biāo)任務(wù)的細(xì)微差別。當(dāng) LLM 處理更多的文本數(shù)據(jù)時,這將導(dǎo)致更大的激活。反向傳播過程需要存儲用于梯度計算的中間值,這些中間值用于在訓(xùn)練期間更新模型的權(quán)重。與推理相比,這增加了大量的內(nèi)存負(fù)擔(dān)。

2.3 基于Transformer的大模型的內(nèi)存估算

具體而言, 對應(yīng)基于Transformer的大模型,嘗試計算一下訓(xùn)練時所需的內(nèi)存,其中設(shè):

  • l :transformer的層數(shù)
  • a:attention 的head 數(shù)量
  • b:批次大小
  • s:序列長度
  • h:隱藏層的維度大小
  • p:精度

這里, bshp = b * s * h * p 代表了輸入數(shù)據(jù)量的大小。在transformer 的線性層部分,大概需要9bshp+bsh 的空間來用于后面的激活。在attention 部分,self-attention 可以表達(dá)為:softmax((XQ)(XK)^T)XV

那么,XQ,XK,XV均需bshp大小的空間。在標(biāo)準(zhǔn)self-attention中,乘法(XQ) * (XK) ^ T 的結(jié)果只是一個包含 logit 的 b * s * s 矩陣。然而在實踐中,由于使用了多頭注意力機(jī)制,需要為每個頭都要建立一個單獨(dú)的 s * s 存儲空間。這意味著需要 abssp 字節(jié)的空間,而存儲 softmax 的輸出也同樣需要 abssp 字節(jié)。在 softmax 之后還一般需要額外的 abss 字節(jié)來存儲掩碼,所以 attention部分需要2abssp+abss的存儲空間。

此外,transformer中還有兩個Norm layer,每個仍需bshp的存儲空間,共2個bshp。

所以,基于Transformer 的大模型訓(xùn)練所需內(nèi)存大約為:L(9bshp+bsh+2abssp+abss +2bshp) = Lbshp[16+2/p+(as/h)(2+1/p)]

解釋一下,訓(xùn)練基于Transformer 的大模型所需內(nèi)存大約是:模型的層數(shù) x 訓(xùn)練批次的大小 x 序列長度 x 隱藏層的維度 x 精度 x 大于16的整數(shù)

這或許就是基于Transfromer的大模型參數(shù)對訓(xùn)練時內(nèi)存需求的一個理論下界。

3. 大模型參數(shù)對GPU 的需求

有了大模型參數(shù)對內(nèi)存的要求, 可以進(jìn)一步估算大模型在訓(xùn)練和推理中所需的GPU數(shù)量。但由于GPU數(shù)量估算依賴的參數(shù)稍多,有人(Dr. Walid Soula,https://medium.com/u/e41a20d646a8)給出了一個粗略估算的簡單公式, 在工程上同樣有一定的參考意義。

圖片圖片

其中,

  • Model’s parameters in billions 是以B為單位的模型參數(shù)數(shù)量;
  • 18是訓(xùn)練期間不同組件的內(nèi)存占用因子;
  • 1.25 代表了激活過程所需的內(nèi)存數(shù)量因子,激活是隨著模型處理輸入數(shù)據(jù)而變化的動態(tài)數(shù)據(jù)結(jié)構(gòu)。
  • GPU Size in GB是可用的 GPU 內(nèi)存總量

舉個實際的例子,假設(shè)使用的是 NVIDIA RTX 4090 GPU,它有24GB 的 VRAM,計算一下訓(xùn)練‘ Llama3 7B’模型所需的 GPU 數(shù)量,大約為 :

GPU 的總數(shù)≈(7 * 18 * 1.25)/24,大約等于7

對于推理而言, 可以簡化為訓(xùn)練階段的1/8~1/9 , 當(dāng)然,這些只是一般意義的粗略估計。

4. 由大模型參數(shù)到分布式訓(xùn)練

理解大模型參數(shù)的組成及其對內(nèi)存和GPU的需求,有助于深入掌握分布式訓(xùn)練在工程實踐中所面臨的挑戰(zhàn)。

采用專為分布式訓(xùn)練設(shè)計的框架,例如TensorFlow或PyTorch,可以顯著簡化分布式訓(xùn)練策略的實施過程,這些框架提供了豐富的工具和API。通過運(yùn)用梯度累積等技術(shù)在更新模型前,或利用梯度壓縮等技術(shù)減少節(jié)點(diǎn)間的數(shù)據(jù)交換量,可以有效降低通信成本。確定分布式訓(xùn)練的最佳批次大?。辞拔奶岬降膮?shù)b)至關(guān)重要;b值過小可能增加通信開銷,而過大則可能導(dǎo)致內(nèi)存不足。

LLMOps的重要性日益凸顯。定期監(jiān)控為分布式訓(xùn)練配置的性能指標(biāo),調(diào)整超參數(shù)、分區(qū)策略和通信設(shè)置以優(yōu)化性能,是提升訓(xùn)練效率的關(guān)鍵。實施模型的檢查點(diǎn)機(jī)制并在發(fā)生故障時進(jìn)行有效的恢復(fù),可以確保訓(xùn)練過程在無需從頭開始的情況下繼續(xù)進(jìn)行。

換句話說,大模型的訓(xùn)練/推理本質(zhì)上是一個復(fù)雜的分布式系統(tǒng)架構(gòu)工程挑戰(zhàn),例如:

  • 通信開銷:在執(zhí)行梯度計算和數(shù)據(jù)更新時,通信所需時間可能會影響整體的加速效果。
  • 同步復(fù)雜性:多臺機(jī)器并行訓(xùn)練時,同步的復(fù)雜性需要謹(jǐn)慎設(shè)計。
  • 容錯與資源管理:單點(diǎn)故障對模型訓(xùn)練和推理的影響,以及CPU與GPU的資源分配與調(diào)度策略。
  • ......

然而,實際上大多數(shù)工程師可能并不直接參與具體的訓(xùn)練工作,而是關(guān)注在構(gòu)建應(yīng)用時可以如何利用大模型的參數(shù)。

圖片圖片

5. 大模型應(yīng)用中使用的參數(shù)

這里主要關(guān)注在使用大模型輸出文本時,可以配置的三個參數(shù):Temperature、Top-K和Top-P。

Temperature參數(shù)通常被誤解為僅控制模型創(chuàng)造性的開關(guān),但其實它更深層的作用是調(diào)節(jié)概率分布的“軟性”。當(dāng)Temperature值設(shè)置較高時,概率分布變得更柔和、均勻,這促使模型生成更多樣化、具創(chuàng)造性的輸出。反之,較低的Temperature值會使分布更尖銳,峰值更明顯,從而傾向于產(chǎn)生與訓(xùn)練數(shù)據(jù)類似的輸出。

Top-K參數(shù)用于限制模型在每個步驟中輸出最可能的Top-K個標(biāo)記,通過這種方式可以減少輸出中的不連貫或無意義內(nèi)容。這種策略在維持輸出的最有可能的一致性與允許一定程度的創(chuàng)造性抽樣之間形成平衡。

Top-P是另一種解碼方法,它根據(jù)設(shè)定的P值(0≤P≤1)來選擇一組累積概率超過P值的最小單詞集合作為輸出。這種方法使得選中的單詞數(shù)量能夠根據(jù)下一個單詞的概率分布動態(tài)地增加或減少。特別地,當(dāng)P值為1時,Top-P會選擇所有單詞,相當(dāng)于從整個分布中抽樣,從而產(chǎn)生更加多樣的輸出;而當(dāng)P值為0時,Top-P僅選擇概率最高的單詞,類似于貪婪解碼,使輸出更加集中和一致。

這三個參數(shù)共同作用,影響模型的行為。例如,當(dāng)設(shè)置Temperature=0.8、Top-K=36以及Top-P=0.7時,模型首先基于上下文計算整個詞匯表的完整非規(guī)范化對數(shù)概率分布。Temperature=0.8意味著每個對數(shù)概率除以0.8,這在歸一化前有效地增加了模型對其預(yù)測的信心。Top-K=36表示選擇具有最高頻比例對數(shù)概率的36個標(biāo)記。接著,Top-P=0.7在這個Top-K=36集合中應(yīng)用過濾,按概率從高到低保持排序,直到累積概率達(dá)到0.7。最后,將這個過濾后的集合重新歸一化,用于后續(xù)的采樣過程。

6. 小結(jié)

在工程實踐中,理解大模型的參數(shù)是有意義的。參數(shù)在大模型中起著決定性的作用,它們定義了大模型的行為、性能、實現(xiàn)的成本以及對資源的需求。在工程上理解大模型的參數(shù),就是要把握模型的復(fù)雜度、性能和能力之間的關(guān)系。從存儲和計算的視角合理配置和優(yōu)化這些參數(shù),可以在實際應(yīng)用中更好地選擇和優(yōu)化模型,以適應(yīng)不同的任務(wù)需求和資源限制。

【參考資料】

  • ZeRO: Memory Optimizations Toward Training Trillion Parameter Models ,https://arxiv.org/pdf/1910.02054v3.pdf
  • Reducing Activation Recomputation in Large Transformer Models,https://arxiv.org/pdf/2205.05198.pdf
  • https://timdettmers.com/2023/01/30/which-gpu-for-deep-learning/
  • https://blog.eleuther.ai/transformer-math/
責(zé)任編輯:武曉燕 來源: 喔家ArchiSelf
相關(guān)推薦

2023-10-13 19:58:33

Mistral7B模型

2024-02-22 10:09:00

開源模型

2024-02-04 08:00:00

Zephyr 7B大語言模型算法

2024-03-18 07:01:42

2025-01-02 12:48:36

2024-07-09 00:00:06

RAG參數(shù)模型

2024-09-05 14:25:00

訓(xùn)練代碼

2024-03-25 08:00:00

2024-04-02 09:17:50

AI數(shù)據(jù)開源

2023-02-28 07:03:09

AIMeta大型語言

2024-07-18 12:53:13

2023-10-31 10:11:50

昆侖萬維大模型

2024-01-10 17:10:53

數(shù)據(jù)訓(xùn)練

2023-10-21 12:42:06

數(shù)據(jù)模型

2023-11-18 09:37:49

2024-06-11 14:30:18

2024-08-13 15:40:00

2023-10-17 19:43:03

RACE排序數(shù)據(jù)

2025-03-11 13:07:58

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號