一個區塊,不斷重複
我們現在有了一個完整的 transformer 區塊:多頭注意力,接著前饋網路,各自包上正規化、並加進殘差流。一個完整的模型,就是把這個一模一樣的區塊堆疊(stack)很多次——小模型可能疊 12 層,前沿模型疊 80 層以上。詞元在底部以嵌入的形式進入,往上流動,每一層都把滾動的向量再精煉一點。
一个 Transformer 块的示意图:层归一化、多头注意力、残差连接,然后是前馈网络。
因為每個生成式 LLM 都是用這樣的遮罩區塊堆成、上頭不再加別的東西,這整個家族就叫僅解碼器架構(decoder-only architecture)。從 GPT 到 Llama 到 Claude,骨架都一樣;不同的是規模、上一篇講的正規化與位置細節,以及訓練。
# a decoder-only transformer, end to end
x = embed(tokens) + positional_info # tokens -> vectors
for block in range(n_layers): # e.g. 12 ... 80+
x = x + attention(norm(x), causal=True) # mix across positions
x = x + feedforward(norm(x)) # think per position
x = norm(x)
logits = x @ embed.weight.T # vectors -> next-token scores深度把混合變成理解
為什麼要重複區塊?因為每一層只做一輪脈絡混合(context mixing)——詞交換資訊的一次機會。堆疊讓資訊能分階段地傳遞與組合,於是浮現出一個研究者一再看到的粗略層級。
- 早期的層處理表層結構——詞元身分、鄰近的詞、基本文法。位置型和前一詞型的頭在這裡主導。
- 中間的層組裝意義——解決它指什麼、追蹤誰對誰做了什麼、把事實綁在一起。
- 後期的層磨利預測——把累積的理解轉成對下一個詞元的具體猜測。
觀察這個過程的一個漂亮方法是logit 透鏡(logit lens):在每一層、而不只是最後一層,把殘差流解碼成下一個詞元的猜測。你真的能看著模型的預測隨向量爬上堆疊而逐漸定型——底部模糊、頂部篤定。配上第 3 篇的注意力模式視覺化(attention pattern visualization),就能對模型的推理得到一幅出乎意料地好讀的圖像。
為什麼偏偏是這台引擎能擴展
Transformer 勝出,不只是因為注意力聰明。它勝出,是因為它擴展(scale)的能力幾乎前無古人。三個特性疊在一起:
- 平行性。 沒有循環,每個位置一次算完,所以這個架構能餵飽現代 GPU 與 TPU。你能在合理時間內訓練數兆個詞元。
- 穩定的深度。 殘差流(residual stream)與 pre-norm 讓梯度能撐過極大的深度,所以加層持續有幫助,而不是搞壞訓練。
- 統一的單元。 區塊是一個重複的形狀,容易攤分到上千顆晶片上——同一張圖,只是更寬更高。
正是這些特性,讓著名的擴展定律(scaling laws)成為可能:橫跨許多數量級,當你增加參數、資料與算力時,transformer 的損失平滑而可預測地下降。這種可預測性,正是各實驗室願意為更大的訓練砸下重金的原因——他們大致能預估會得到什麼。在很實在的意義上,transformer 是第一個獎勵你把它造得龐大的語言模型架構。
缩放定律:损失随模型规模 N 以平滑的幂律下降——正是这种规律让更大的模型可预测地更好。
你現在能讀懂什麼
退一步,看看你現在能從頭到尾追蹤的東西。詞元變成向量;用查詢、鍵、值的注意力混合脈絡;多個頭各自專精,而因果遮罩讓模型保持誠實;前饋層思考;殘差與正規化讓整體穩定;位置被編碼;區塊不斷重複,直到淺層的模式變成深層的理解。這就是你用過的每個聊天機器人內部的引擎。
自回归生成循环:预测下一个词元,将其追加,然后再次预测。