01-學(xué)習(xí)Qwen模型架構(gòu)-2024-05-16

本文是《從零手搓大模型實(shí)戰(zhàn)》學(xué)習(xí)的第一篇個(gè)人學(xué)習(xí)筆記,記錄下學(xué)習(xí)內(nèi)容以及相關(guān)心得。

注:相關(guān)學(xué)習(xí)內(nèi)容來(lái)自datawhalechina/tiny-universe

本次的學(xué)習(xí)主要是通過(guò)深入剖析大模型本身原理,進(jìn)一步了解大模型LLM底層的網(wǎng)絡(luò)結(jié)構(gòu),通過(guò)學(xué)習(xí)Qwen2相關(guān)代碼,了解了LLM模型結(jié)構(gòu)內(nèi)部。

1. Qwen模型與Transformer架構(gòu)

Qwen是一個(gè)基于Transformer架構(gòu)的預(yù)訓(xùn)練模型焊切。

Transformer是2017年出現(xiàn)的一種革命性的神經(jīng)網(wǎng)絡(luò)架構(gòu)扮授,主要依賴于注意力機(jī)制來(lái)處理序列數(shù)據(jù)
Transformer的主要特點(diǎn):

  • 自注意力機(jī)制(Self-Attention):這是Transformer的核心部分专肪,允許模型在處理序列數(shù)據(jù)時(shí)能夠關(guān)注到輸入中不同位置的信息刹勃。自注意力通過(guò)計(jì)算Query、Key和Value之間的點(diǎn)積嚎尤,得到一個(gè)權(quán)重分布荔仁,這個(gè)分布表示序列中每個(gè)元素與其他元素的關(guān)系。
  • 多頭注意力(Multi-Head Attention):為了捕捉序列中更復(fù)雜的關(guān)系诺苹,Transformer使用了多個(gè)注意力頭咕晋。每個(gè)頭關(guān)注不同的信息,然后將這些信息合并起來(lái)收奔,形成一個(gè)更加豐富的表示掌呜。
  • 編碼器-解碼器架構(gòu)(Encoder-Decoder):Transformer由編碼器和解碼器兩部分組成。編碼器將輸入序列轉(zhuǎn)換為一個(gè)連續(xù)的表示坪哄,而解碼器則基于這個(gè)表示生成輸出序列质蕉。
  • 位置編碼(Positional Encoding):由于Transformer不使用循環(huán)或卷積結(jié)構(gòu),它需要一種方法來(lái)理解序列中的位置信息翩肌。位置編碼通過(guò)為每個(gè)位置添加特定的向量來(lái)實(shí)現(xiàn)這一點(diǎn)模暗,使得模型能夠識(shí)別序列中的單詞順序。
  • 并行化訓(xùn)練:Transformer的設(shè)計(jì)允許它在不同的序列位置上并行處理信息念祭,這大大提高了訓(xùn)練和推理的效率兑宇。

2. Qwen模型基本架構(gòu)

簡(jiǎn)化的Qwen模型基本架構(gòu)

Qwen模型基本架構(gòu)概述

  1. 文本輸入(Text Input)

    • Tokenizer層:將輸入的文本序列轉(zhuǎn)換為單詞或子詞標(biāo)記的序列。
    • Input_ids層:將Tokenizer生成的標(biāo)記轉(zhuǎn)換為唯一的ID序列粱坤。
  2. Embedding層

    • 將每個(gè)ID映射到一個(gè)固定維度的向量隶糕,生成一個(gè)向量序列作為模型的初始輸入表示。
  3. Decoder Layer

    • 包含多個(gè)重復(fù)的堆疊層(Layers1, Layers..., Layersn)站玄,每層內(nèi)部可能包含以下組件:
      • Self-Attention機(jī)制
        • Query, Key, Value(QKV):計(jì)算輸入序列內(nèi)部的不同部分之間的相關(guān)性枚驻。
        • Dot_attn:計(jì)算Q和K的點(diǎn)積,然后應(yīng)用Softmax函數(shù)得到Attention_weight株旷。
        • Attention_weight:用于縮放Value的權(quán)重再登,生成加權(quán)和作為Attention的輸出。
      • Feed-Forward Network (MLP)
        • 接收Attention的輸出晾剖,并通過(guò)一到兩個(gè)全連接層進(jìn)行變換锉矢。
      • Residual Connection
        • 將輸入(Hidden_states)與MLP的輸出相加,以保持梯度在反向傳播時(shí)的穩(wěn)定性齿尽。
      • Normalization層(如RMSNorm)
        • 對(duì)Hidden_states進(jìn)行歸一化沈撞,以加速訓(xùn)練和提高模型的泛化能力。
      • Rotary Position Embedding
        • 為序列中的每個(gè)位置添加位置信息雕什,以幫助模型理解序列中單詞的順序缠俺。
  4. 輸出層(Output Layer)

    • Linear層:將最后一層Decoder的輸出轉(zhuǎn)換為任務(wù)所需的維度。
    • Softmax或Sigmoid等激活函數(shù):根據(jù)任務(wù)的性質(zhì)(如分類或回歸)贷岸,應(yīng)用適當(dāng)?shù)募せ詈瘮?shù)壹士。
  5. 損失函數(shù)(Loss Function)

    • 根據(jù)任務(wù)的目標(biāo)定義損失函數(shù),如交叉熵?fù)p失(用于分類任務(wù))或均方誤差損失(用于回歸任務(wù))偿警。
  6. 其他優(yōu)化策略

    • Dropout:在訓(xùn)練過(guò)程中隨機(jī)丟棄部分神經(jīng)元躏救,以防止過(guò)擬合。
    • 權(quán)重初始化:使用適當(dāng)?shù)臋?quán)重初始化策略螟蒸,如Xavier或He初始化盒使,以加快訓(xùn)練速度。

注意七嫌,這里上圖只是一個(gè)簡(jiǎn)化的概述少办,Qwen架構(gòu)實(shí)際包含更多的細(xì)節(jié)。

3. Qwen2Model Qwen2Config

Qwen2Config中包含一些自定義的超參數(shù)诵原,例如vocab_size,hidden_size,num_hidden_layers, num_attention_heads等英妓。類似于dict可以調(diào)用里面的超參數(shù):config.pad_token_id

  • vocab_size:詞匯表大小,即模型能夠理解的唯一詞匯的數(shù)量绍赛。這個(gè)參數(shù)決定了模型能夠處理的詞匯范圍蔓纠,對(duì)于不同的語(yǔ)言或任務(wù),可能需要調(diào)整詞匯表的大小以適應(yīng)特定的需求吗蚌。
  • hidden_size:隱藏層的大小腿倚,即模型中隱藏層的神經(jīng)元數(shù)量。這個(gè)參數(shù)影響模型的復(fù)雜度和表示能力蚯妇。較大的隱藏層可以提供更豐富的表示敷燎,但也可能導(dǎo)致過(guò)擬合和計(jì)算成本的增加。
  • num_hidden_layers:隱藏層的數(shù)量侮措。這個(gè)參數(shù)決定了模型的深度懈叹。更深的模型可能具有更強(qiáng)的表示能力,但也可能更難訓(xùn)練分扎,并且需要更多的數(shù)據(jù)和計(jì)算資源澄成。
  • num_attention_heads:注意力機(jī)制中“頭”的數(shù)量。在Transformer架構(gòu)中畏吓,多頭注意力機(jī)制允許模型同時(shí)關(guān)注輸入序列的不同部分墨状。增加注意力頭的數(shù)量可能有助于提高模型的表示能力,但也可能增加計(jì)算復(fù)雜度和訓(xùn)練時(shí)間菲饼。
模型初始化

該方法設(shè)置了模型的兩個(gè)屬性:padding_idx(用于指定填充標(biāo)記的索引)肾砂,vocab_size(詞匯表的大小)并初始化模型的嵌入層宏悦、解碼器層镐确、歸一化層

4. Qwen2DecoderLayer

Qwen2DecoderLayer是模型的核心結(jié)構(gòu)

decoder layer
image.png

5. Qwen2Attention

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末包吝,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子源葫,更是在濱河造成了極大的恐慌诗越,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件息堂,死亡現(xiàn)場(chǎng)離奇詭異嚷狞,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)荣堰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門床未,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人振坚,你說(shuō)我怎么就攤上這事薇搁。” “怎么了屡拨?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,762評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵只酥,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我呀狼,道長(zhǎng)裂允,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,273評(píng)論 1 279
  • 正文 為了忘掉前任哥艇,我火速辦了婚禮绝编,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘貌踏。我一直安慰自己十饥,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布祖乳。 她就那樣靜靜地躺著逗堵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪眷昆。 梳的紋絲不亂的頭發(fā)上蜒秤,一...
    開(kāi)封第一講書(shū)人閱讀 49,046評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音亚斋,去河邊找鬼作媚。 笑死,一個(gè)胖子當(dāng)著我的面吹牛帅刊,可吹牛的內(nèi)容都是我干的纸泡。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼赖瞒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼女揭!你這毒婦竟也來(lái)了蚤假?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,988評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤田绑,失蹤者是張志新(化名)和其女友劉穎勤哗,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體掩驱,經(jīng)...
    沈念sama閱讀 43,476評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評(píng)論 2 324
  • 正文 我和宋清朗相戀三年冬竟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了欧穴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,064評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡泵殴,死狀恐怖涮帘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情笑诅,我是刑警寧澤调缨,帶...
    沈念sama閱讀 33,712評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站吆你,受9級(jí)特大地震影響弦叶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜妇多,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評(píng)論 3 307
  • 文/蒙蒙 一伤哺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧者祖,春花似錦立莉、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,264評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至械巡,卻和暖如春刹淌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背坟比。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,486評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工芦鳍, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人葛账。 一個(gè)月前我還...
    沈念sama閱讀 45,511評(píng)論 2 354
  • 正文 我出身青樓柠衅,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親籍琳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子菲宴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容