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