最近大語言模型模型LLM很火,大家總是說chatgpt的175Billion參數(shù)。做算法的人更關心網(wǎng)絡的結(jié)構,而我這種做硬件的人一直很好奇這個參數(shù)是怎么計算的。
最近看到了一篇文章,計算了參數(shù)的個數(shù)并且和chatgpt論文里的參數(shù)進行了比較,計算的還是比較準確的,我來總結(jié)一下。
1.Chatgpt背景
Chatgpt(chat generative pre-trained transformer)也是基于google最初的transformer模型,雖然LLM功能很強大,但是理解起來比fasterRCNN和LSTM好很多。
Transformer結(jié)構
Chatgpt結(jié)構
不同于從input到output可以進行翻譯工作的transformer結(jié)構,ChatGPT進行對話,只需要右側(cè)的decoder部分就可以。
2.一張立體圖:
整體的Bert 結(jié)構
看了很多解釋圖,上面的圖是看過的最好的,流程就是
1)inputembedding 分別和key,value,query的矩陣做乘法linear projection,得到的結(jié)果進行attention
2)將多個attention的結(jié)果進行concat拼接,得到的結(jié)果進行再次進行矩陣乘法,linearprojection
3)將得到的結(jié)果輸入feedforwardnetwork,兩層的lineartransform之后,輸出結(jié)果
4)如果有n_layer個layer,那么就重復2)和3)n_layer次
3.具體的參數(shù)個數(shù)計算
先解釋一下參數(shù):
n_head : attention 中head的個數(shù)
d_model: 中間bottlenecklayer的向量的維度
n_vocalulary: 字典的維度
n_context: 上下文的長度
n_layer:網(wǎng)絡的層數(shù)
1)Inputembedding
對應UWe將U的(n_context,n_vocalulary) 維轉(zhuǎn)為UWe(n_context, d_model)維,其矩陣大小為(n_vocabulary,d_model) , 參數(shù)大小即為n_vocabulary* d_model。 ??
此外,??Wp對應(n_context,d_model)。 因此此處的參數(shù)個數(shù)為: n_vocabulary*d_model+ n_context * d_model
2)Attention& MultiHead
a. WiQ, WiK,WiV都是相同的大小投影矩陣,每個都是d_model*d_head維度,這里的d_head就對應上面公式里面的de, ,dk,dv,ChatGPT中他們都是同樣的大小;
b.因此attention部分的計算量就是3*d_model*d_head,因為有三個矩陣WiQ,WiK, WiV;
c.如果有MultiHead,如果head的個數(shù)為n_head,那么即為W矩陣的總參數(shù)3*d_model*d_head*n_head
d. concat的結(jié)果的維度為(n_context,n_head*d_head),經(jīng)過矩陣WO計算后維度變?yōu)?n_context,d_head)維,因此WO的維度為(n_head*d_head,d_head) 對c)和d)的參數(shù)求和,此時參數(shù)個數(shù)為 4*d_model*d_head*n_head
3)feedforward
在chatgpt中,feedforward內(nèi)部由兩層lineartransformer組成,并且d_ff為d_model的4倍。 ???W1??的參數(shù)個數(shù)為(d_model,d_ff), b??1??的參數(shù)個數(shù)為d_ff,W2的為(d_ff,d_model),b2????的參數(shù)個數(shù)為d_model,而d_model又是d_ff的四倍,因此: 2*d_model*d_ff+d_model+d_ff 即 8*d_model2+ 5* d_model 4)將2)和3)重復n_layer次 n_layer * (4*d_model*d_head*n_head+ 8*d_model2 + 5* d_model)
總體的參數(shù)計算:1)+ 4):
n?_vocabulary*d_model-> emb??edding atrix
+n_context * d_model??-> position matrix
+ n_layer *? ????-> layer 重復N次
// multi headattention
(4 * d_model * d_head * n_head ->???
??// feedforward network
??+ 8 * d_model2+ 5* d_mo??del??)
驗證一下:
如果按照chatGPT論文中設置的參數(shù):
n_vocabulary = 50257
d_model = 12288
n_context = 2048
n_layer= 96
d_head= 128
n_head= 96
1)word_embeding +position
50257 * 12288 + 2048 * 12288 = 642723840
2)Attention& MultiHead
單層:4 * 12288 * 128 * 96 = 603979776??
3)feedforward
8 * 12288 * 12288 + 5 * 12288= 1208020992
4)2)和3)重復n_layer次
N_layer = 96 層96*(603979776+1208020992) = 173952073728
1)+2) = 174594797568 也就是所說的175Billion個參數(shù)。
這個方法估計出的參數(shù)和論文中參數(shù)的對比:
審核編輯:劉清
-
LSTM
+關注
關注
0文章
59瀏覽量
3753 -
ChatGPT
+關注
關注
29文章
1561瀏覽量
7673 -
LLM
+關注
關注
0文章
288瀏覽量
338
原文標題:chatGPT的175Billion個參數(shù)是哪兒來的
文章出處:【微信號:處理器與AI芯片,微信公眾號:處理器與AI芯片】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論