熟悉LLM的重要機制
1 前言
在前一期里,介紹過大語言模型(LLM)幕后核心的注意力(Attention)機制。本期就來繼續擴大,介紹大名鼎鼎的轉換器(Transformer)模型。其中,要特別闡述:為什么當今主流LLM都采用<僅譯碼器>(Decoder-Only Transformer)模型。
在 2017 年, 首先在「Attention is All You Need」這篇論文中提出了經典的Transformer架構,它內含編碼器(Encoder)和譯碼器(Decoder)兩部分。后來,自從GPT-2之后,整個大趨勢逐漸轉向<僅譯碼器>(Decoder-Only Transformer)模型。隨著LLM的流行,在其應用于下游任務的微調(Fine-tuning) 過程中,經常會看到<僅譯碼器>的身影,所以更深刻領會這個大趨勢,也更熟悉這個重要機制,對于LLM 的各項應用是很有幫助的。
2 從典型的Transformer架構說起
最初在 2017 年的論文「Attention is All You Need」中介紹,Transformer具有譯碼器(Decoder)和編碼器(Encoder)部分,如圖1。
圖1
這圖里的左半部分是編譯程序(Encoder)部分,而右半部分是解釋器(Decoder)部分。
剛才提到了,當今主流的GPT模型,由于其在文字生成方面的出色性能,LLM大趨勢是轉向<僅譯碼器>(Decoder-Only Transformer)模型。這種模型的強大之處在于它們不僅能夠模仿類似人類的文本,而且還能夠創造性地做出回應。他們可以寫故事、回答問題,甚至進行自然流暢的對話。這種功能使它們在廣泛的應用中非常有用,從聊天機器人和數字助理到內容創建、抽象總結和講故事。
如今,這僅譯碼器架構已經是GPT-3、ChatGPT、GPT-4、PaLM、LaMDa和Falcon等主要語言模型的核心了。它專注于生成新內容,而不是解釋或分析所輸入的內容( 如文本)。例如,除了能夠解析人類文本的涵意,還能夠創造性地寫故事、回答問題、以及流暢對話等。這種功能對于這些大語言模型(LLM)在廣泛應用的效益很大。為什么當今的LLM,主要都采用僅譯碼器架構呢?其原因,除了可提升訓練效率之外,還有在生成任務上,引入編譯程序的雙向注意力機制并無太多幫助。于是,大趨勢就逐漸轉向< 僅譯碼器> 模型。
圖2
https://cameronrwolfe.substack.com/p/decoder-only-transformers-the-workhorse
3 認識Decoder-Only Transformer架構
剛才已經看到了,上圖-1里的右半部分是解釋器。所以僅譯碼器模型的核心架構反而必較簡單。它通常是是由多個具有相同結構的區塊按順序堆棧而成的。在每個譯碼器區塊(Decoder Block)都包含兩個主要組件:
1)屏蔽多頭自注意力(Masked, multi-headed attention)層。這是在前一期里介紹過的注意力機制,它在理解輸入序列的涵意方面扮演非常關鍵的角色。其中的< 屏蔽>的用意是要確保其預測標記(Token) 時,僅專注于當前位置之前產生的標記,而不考慮之后的標記,這樣可發揮自回歸(Autoregressive)模型的特性和功能。也就是,它很擅長于從句子中前面的單字收集信息,來預測出下一個詞的機率估計值( 例如文字接龍)。這是生成式AI的魅力源頭。
2)逐位置的前饋網絡(Position-wise feed-forward network) 層。這用來引入非線性的變換,協助注意力機制( 純線性數據變換) 來捕捉更復雜的模式和關系。例如,使用非線性活化函數( 如ReLU 或GeLU 等) 來讓模型能夠逼近任何函數,以便提供更強的表達能力。它常常放在自注意力層之后,并且添加了有關序列中每個標記的位置的信息,這對于理解單字的順序至關重要。其用意是在每個序列的位置單獨應用一個全連接前饋網絡,所以稱為:逐位置(Position-wise)方式。
其中,這個模型背后的真正驅動力,即是上述的多頭自注意力機制。這種機制允許模型在預測每個標記時專注于輸入序列的不同部分,從而促進上下文相關文字的生成。
4 以Gemma的<僅譯碼器>模型為例
剛才已經介紹了,在每個譯碼器區塊里,都包含兩個主要組件:自注意力機制(Attention) 和前饋網絡(FFN)。其結構如圖2 所示。
其中的歸一化層(Layer Normalization),用來對網絡中的每個神經元的輸出進行歸一化,使得網絡中每一層的輸出都具有相似的分布。該技術應用於每個子層(自註意力和前饋)之後,可以標準化激活並穩定訓練過程。
此外,還常添加殘差連接(Residual Connections) 層,它提供了一條捷徑,允許梯度在反向傳播過程中自由流過網路,可緩解梯度消失和爆炸的問題,并有助于學習更強大的特征,以及提高訓練過程的整體易用性和穩定性。
# Gemma 的譯碼器區塊的結構
class RMSNorm(torch.nn.Module):
def __init__(….. ):
#...............................
#...............................
class GemmaMLP(nn.Module):
def __init__( ….. ):
#...............................
#...............................
class GemmaAttention(nn.Module):
def __init__( ….. ):
#...............................
#...............................
class GemmaDecoderLayer(nn.Module):
def __init__( …..):
#...............................
self.self_attn = GemmaAttention(…..)
self.mlp = GemmaMLP(…..)
self.input_layernorm = RMSNorm(…..)
s e l f . p o s t _ a t t e n t ion_ l ayernorm =
RMSNorm(…..)
#...............................
#...............................
基于上述的譯碼器區塊(Decoder Block),就可以依據需求的不同,而有多個彼此堆棧的譯碼器區塊,如圖3所示。
圖3
https://cameronrwolfe.substack.com/p/decoder-only-transformers-the-workhorse
這樣子,就將多個區塊堆棧起來,成為一個僅譯碼器模型了。各層區塊都各負責從輸入數據中提取越來越抽象的特征。例如,前幾層可能捕捉到局部的相關性,而更深的層可以捕捉更復雜的遠程依賴性。這種分層方法讓模型建立輸入數據的豐富表示。
其中,各區塊里的注意機制,讓模型在產生輸出時專注于輸入序列的各個不同部分。然后,將多層的自注意力協同合作,使模型能夠逐步細化這些注意力權重,來提升對輸入有更細致和上下文感知更廣闊的理解。于是,每個區塊在輸入數據的分層處理中都發揮其重要的作用,并協同合作,來提升模型掌握復雜依賴關系的能力,來捕捉各種復雜的模式(Pattern)。
例如,在Gemma 的源碼中,將譯碼器區塊( 名為:GemmaDecoderLayer) 疊加起來,成為僅譯碼器模型( 名為:GemmaModel),如下:
# Gemma 的僅譯碼器模型結構
#...............................
#...............................
class GemmaDecoderLayer(nn.Module):
def __init__( …..):
#...............................
self.self_attn = GemmaAttention(…..)
self.mlp = GemmaMLP(…..)
self.input_layernorm = RMSNorm(…..)
s e l f . p o s t _ a t t e n t ion_ l ayernorm =
RMSNorm(…..)
#...............................
#...............................
class GemmaModel(nn.Module):
def __init__(self, config):
#...............................
self.layers = nn.ModuleList()
for _ in range(config.num_hidden_layers):
self.layers.append( GemmaDecoderLayer(…..) )
#...............................
#...............................
從這Gemma的源碼結構而觀之,盡管這些年來,LLM取得了快速的進步,但是其中的核心組成部分仍然保持不變,就是:僅譯碼器架構。
5 結束語
在僅譯碼器模型中,擁有多層互相迭加的譯碼器區塊,將輸入序列進行分層,透過多層處理來提升從輸入序列中學習和泛化的能力。這種深度讓模型能處理復雜的依賴關系,然后生成高質量的作品,即是LLM 魅力的源頭。
(本文來源于《EEPW》202406)
評論