大型語言模型 (LLM) 是一類使用 Transformer 網絡構建的生成式 AI 模型,能夠利用非常大的數據集來識別、匯總、翻譯、預測和生成語言。正如我們所知,LLM 有望改變社會,但訓練這些基礎模型極具挑戰性。
此博客闡述了使用 Transformer 網絡構建 LLM 的基本原理,涵蓋模型架構、注意力機制、嵌入技術和基礎模型訓練策略。
模型架構
模型架構定義了 Transformer 網絡的骨干,大致規定了模型的功能和限制。LLM 的架構通常稱為編碼器、解碼器或編碼器 – 解碼器模型。

一些熱門架構包括:
建筑 | 說明 | 適用于 |
Transformer 雙向編碼器表征 (BERT) | 編碼器專用架構,最適合理解語言的任務。 | 分類和情感分析 |
生成式預訓練 Transformer (GPT) | 僅適用于解碼器的架構,適用于生成式任務,并使用判別性任務上的標記數據進行微調。 給定單向架構,上下文只會向前流動。GPT 框架通過生成式預訓練和判別微調,幫助使用與單任務無關的模型實現強大的自然語言理解。 |
文本含、句子相似性、問答。 |
文本轉文本轉換器(序列到序列模型) | 編碼器 – 解碼器架構。它利用遷移學習方法將每個基于文本的語言問題轉換為文本轉文本格式,即以文本作為輸入并生成下一個文本作為輸出。借助雙向架構,上下文可以雙向流動。 | 翻譯、問答、總結。 |
多專家模型 (MoE) | 可應用于任何架構的模型架構決策。旨在大幅擴展模型容量,同時盡可能減少計算開銷,將密集模型轉換為稀疏模型。MoE 層由許多專家模型和稀疏門控函數組成。在推理期間,門會將每個輸入路由給頂級 K (K>=2 或 K=1) 專家。 | 在推理期間有效推廣任務,以實現低延遲的計算效率 |
另一個熱門架構決策是擴展到多模態模型,這些模型結合了來自文本、圖像、音頻和視頻等多種模式或形式的數據的信息。雖然訓練具有挑戰性,但多模態模型提供了來自不同模式的互補信息的關鍵優勢,正如人類通過分析來自多種感官的數據所理解的那樣。
這些模型為每個模式包含單獨的編碼器,例如用于圖像的 CNN 和用于文本的 Transformer,以從各自的輸入數據中提取高級特征表征。從多個模式中提取的特征組合可能是一個挑戰,可以通過融合從每個模式中提取的特征來解決,或者通過使用注意力機制來衡量每個模式相對于任務的貢獻。
聯合表征捕獲模式之間的交互。模型架構可能包含額外的解碼器,用于生成特定于任務的輸出,例如分類、字幕生成、翻譯、給定提示文本的圖像生成、給定提示文本的圖像編輯等。
深入研究 Transformer 網絡
在 Transformer 網絡領域,標記化過程在將文本分割為稱為標記的較小單元方面發揮了關鍵作用。
分詞器
標記化是構建模型的第一步,其中涉及將文本拆分為名為標記的較小單元,這些標記成為 LLM 的基本構建塊。這些提取的標記用于構建詞匯量索引,將標記映射到數字 ID,以數字方式表示適合深度學習計算的文本。在編碼過程中,這些數字標記被編碼為代表每個標記含義的向量。在解碼過程中,當 LLM 執行生成時,標記器將數字向量解碼回可讀的文本序列。
該過程從標準化開始,以處理小寫字母、剪枝標點符號和空格、詞干、引文化、處理收縮和消除重音符號。清理文本后,下一步是通過識別單詞和句子邊界來分割文本。根據邊界,分詞器可以具有詞、子詞或字符級粒度。
雖然基于單詞和字符的分詞器很普遍,但這些分詞器也存在挑戰。基于單詞的分詞器會導致詞匯量較大,而在分詞器訓練過程中未看到的單詞會導致許多詞外分詞。基于字符的分詞器會導致序列較長,單個分詞意義較小。
由于這些缺點,基于子詞的分詞器越來越受歡迎。子詞分詞算法的重點是根據常見的字符 n-gram 和模式將稀有單詞拆分成更小、有意義的子詞。對于此技術,可以通過已知子詞表示稀有和隱藏的單詞,從而縮小詞匯量。在推理過程中,它還可以有效地處理詞匯量,同時在推理過程中優雅地處理詞匯量不足的單詞。
熱門子詞標記化算法包括字節對編碼 (BPE)、WordPiece、Unigram 和 SentencePiece.
- BPE 從字符詞匯開始,并以迭代方式將頻繁的相鄰字符對合并為新詞匯術語,通過將最常見的單詞替換為單個令牌,在解碼時實現文本壓縮,并加快推理速度。
- WordPiece 在執行合并操作時與 BPE 類似,但它利用語言的概率特性來合并字符,以更大限度地提高訓練數據的可能性。
- Unigram 從大量詞匯開始,計算令牌的概率,并根據損失函數刪除令牌,直到它達到所需的詞匯量大小。
- SentencePiece 基于語言建模目標從原始文本中學習子詞單元,并使用 Unigram 或 BPE 標記化算法來構建詞匯表。
注意力機制
由于傳統的序列 2 序列編碼器 – 解碼器語言模型(如遞歸神經網絡 (RNN))不能很好地隨輸入序列的長度而擴展,因此引入了注意力的概念,并且事實證明這是開創性的。注意力機制使解碼器能夠使用輸入序列中最相關的部分(按編碼的輸入序列加權),并為最相關的令牌分配最高權重。通過仔細選擇按重要性劃分的令牌,該概念改進了輸入序列長度的擴展。
自注意力機制在 2017 年引入 Transformer 模型架構,消除了對 RNN 的需求。自注意力機制依靠同一序列中不同詞之間的關系來創建輸入序列的表示。通過包含輸入上下文來增強輸入嵌入的信息內容,自注意力機制在 transformer 架構中發揮著至關重要的作用。

由于自注意力如何實現上下文感知的輸入表示,因此稱為“縮放點積注意力”。輸入序列中的每個令牌使用各自的權重矩陣將自身投射到 Query (Q)、Key (K) 和 Value (V) 序列中。我們的目標是,在將所有其他輸入令牌作為其上下文的情況下,計算每個輸入令牌的注意力加權版本。通過計算 Q 和 K 矩陣的縮放點積,以及由獲得更高權重的 V 矩陣確定的相關對,自注意力機制為每個輸入令牌 (Q) 找到合適的向量,前提是序列中的所有鍵值對都是其他令牌。
自注意力進一步演變為多頭注意力。前面描述的三個矩陣(Q、K、V)可以視為單頭。多頭自注意力是指使用多個此類頭的情況。這些頭的功能就像 CNN 中的多個內核一樣,關注序列的不同部分,與短期依賴關系相比,專注于長期依賴關系。

最后,交叉注意力的概念出現了,它不是像自注意力那樣使用單個輸入序列,而是涉及兩個不同的輸入序列。在 Transformer 模型架構中,這是一個來自編碼器的輸入序列,另一個由解碼器處理。
閃存注意力
更大尺寸的 Transformer 會受到注意力層顯存需求的限制,而注意力層的顯存需求會隨著序列長度的成比例增加。這種增長是二次型的。為了加快注意力層的計算速度并減少其顯存占用,FlashAttention 優化了因從較慢的 GPU 高帶寬顯存 (HBM) 重復讀取和寫入而受到阻礙的樸素實現瓶頸。
FlashAttention 使用經典平鋪將查詢塊、鍵和值從 GPU HBM (其主顯存)加載到 SRAM (其快速緩存)進行注意力計算,然后將輸出回寫到 HBM.它還改進了內存使用情況,即不存儲前向通道中的大型注意力矩陣,而是依賴于 SRAM 中反向傳播期間重新計算的注意力矩陣。通過這些優化,FlashAttention 可顯著加速(2-4 倍)序列,延長序列的時間。

進一步改進的 FlashAttention-2 比 FlashAttention 快 2 倍,通過添加序列并行性的進一步優化、更好的工作分區和減少非 matmul FLOPS.這個較新的版本還支持多查詢注意力以及我們接下來介紹的分組查詢注意力。
多查詢注意力 (MQA)
一種注意力變體,其中多個查詢頭處理相同的關鍵和值預測頭。這降低了 KV 緩存大小,從而降低了增量解碼的顯存帶寬要求。生成的模型在推理過程中支持更快的自回歸解碼,與基準多頭注意力架構相比,質量略有下降。
組查詢注意力 (GQA)

與 MQA 相比,組查詢注意力 (GQA) 是一種改進,可以克服質量下降問題,同時保持推理時的加速。此外,使用多頭注意力訓練的模型不必從頭開始重新訓練。他們可以在推理期間使用 GQA,方法是僅使用原始訓練計算的 5%提升訓練現有模型檢查點。此外,這是使用中間(多個查詢頭,但數量少于)鍵值頭數的 MQA 的泛化。GQA 實現的質量接近基準多頭注意力,且速度與 MQA 相當。
嵌入技術
單詞在句子中的顯示順序非常重要。通過將每個輸入令牌的出現順序分配給 2D 位置編碼矩陣,這些信息在 LLM 中使用位置編碼進行編碼。矩陣的每一行都表示序列的編碼令牌及其位置信息求和。這允許模型區分含義相似但在句子中位置不同的單詞,并支持對單詞的相對位置進行編碼。
原始 Transformer 架構將絕對位置編碼與使用正弦函數的詞嵌入相結合。但是,這種方法不允許外推到推理時間比訓練時看到的更長的序列。相對位置編碼解決了這一挑戰。在此過程中,相對于查詢與剪輯超過一定距離的關鍵幀之間的距離,查詢和關鍵向量的內容表示與可訓練的位置表示相結合。
RoPE

資料來源:
旋轉位置嵌入 (RoPE) 結合了絕對位置嵌入和相對位置嵌入的概念。絕對位置使用旋轉矩陣進行編碼。相對位置依賴關系納入自注意力公式,并以乘法方式添加到上下文表示中。該技術保留了 Transformer 的正弦位置嵌入中引入的序列長度靈活性的優勢,同時為線性自注意力配備相對位置編碼。它還引入了衰減的令牌間依賴關系,增加了相對距離,從而使外推在序列推理時間更長。
AliBi
基于 Transformer 的 LLM 無法很好地擴展到更長的序列,原因是自注意力的二次成本,這限制了上下文令牌的數量。此外,原始 Transformer 架構中引入的正弦位置方法不會外推到比訓練期間看到的更長的序列。這限制了可以應用 LLM 的真實用例集。為了克服這一點,引入了線性偏差 Attention (ALiBi).這項技術不向詞嵌入添加位置嵌入;相反,它將對查詢鍵的注意力分數進行偏差,并根據其距離進行懲罰。
為促進對比訓練時看到的更長的序列進行高效外推,ALiBi 對注意力分數進行了負偏差,并根據相關鍵和查詢之間的距離線性降低懲罰。與正弦模型相比,此方法不需要額外的運行時間或參數,并且會導致可忽略不計的 (0 – 0.7%) 內存增加。ALiBi 相比正弦嵌入的優勢在很大程度上可以解釋為它更好地避免了早期令牌的詛咒。此方法還可以通過更有效地利用更長的上下文歷史來實現進一步的收益。
訓練 Transformer 網絡
在訓練 LLM 時,有幾種技術可以提高效率并優化底層硬件配置的資源使用。擴展這些具有數十億參數和數萬億令牌的大型 AI 模型需要巨大的內存容量。
為了緩解這一需求,模型并行和激活重計算等一些方法很受歡迎。模型并行將模型參數和優化器狀態劃分為多個 GPU,以便每個 GPU 存儲模型參數的子集。它進一步分為張量和管道并行。
- Tensor 并行性在 GPU 上分割運算,通常稱為層內并行性,專注于矩陣乘法等運算中的并行計算。此技術需要額外的通信來確保結果正確。
- 工作流并行在 GPU 中分割模型層(也稱為層間并行化),專注于按層將模型分割成塊。每個設備都計算其數據塊,并將中間激活傳遞到下一階段。這可能會導致泡沫時間,其中一些設備正在進行計算,而另一些則在等待,從而浪費計算資源。
- 序列并行性擴展了張量級模型并行性,因為它注意到先前未并行化的 Transformer 層的區域沿序列維度是獨立的。沿序列維度分割這些層可以在張量并行設備中分配計算和這些區域的激活內存。由于激活是分布式的,并且具有較小的內存占用,因此可以保存更多激活以進行反向傳遞。
- 選擇性激活重新計算與序列并行性并行計算并行執行。它注意到不同的激活需要不同數量的運算來重新計算,從而改善內存限制迫使重新計算部分而非全部激活的情況。它無需檢查點和重新計算完整的 Transformer 層,而是可以僅檢查點和重新計算每個 Transformer 層中占用大量內存但重新計算并不昂貴的部分,而不是檢查點和重新計算。
所有技術都會增加通信或計算開銷。因此,找到可實現最高性能的配置,然后使用數據并行性擴展訓練對于高效的 LLM 訓練至關重要。
在數據并行訓練中,數據集被分割成多個分片,并將每個分片分配給設備。這相當于沿批量維度并行訓練過程。每個設備都將保存模型副本的完整副本,并在分配的數據集分片上進行訓練。反向傳播后,模型的梯度將全部減少,以便不同設備上的模型參數可以保持同步。
其中一種變體稱為全分片數據并行 (FSDP) 技術。該技術可在數據并行 worker 中統一分片模型參數并訓練數據,其中每個微批數據的計算均針對每個 GPU worker 進行本地計算。
FSDP 提供可配置的分片策略,這些策略可以進行定制,以匹配集群的物理互連拓撲,以處理硬件異構性。它可以通過操作重排序和參數預取最大限度地減少氣泡,以通過計算積極地重疊通信。最后,FSDP 通過限制為機上未分片參數分配的塊數量來優化內存占用率。由于這些優化,FSDP 為更大的模型提供支持,在 TFLOPS 方面具有接近線性的可擴展性。
量化感知訓練
量化是指深度學習模型與全精度(浮點)值相比,以降低的精度執行全部或部分計算的過程。此技術可在準確度損失最小的情況下,加快推理速度、節省內存和降低深度學習模型的使用成本。
量化感知訓練 (QAT) 是一種在訓練過程中考慮到量化影響的方法。模型在訓練過程中使用模擬量化過程的量化感知操作進行訓練。模型學習如何在量化表示中表現良好,從而提高與訓練后量化相比的準確性。前向傳遞將權重和激活量化為低精度表示。后向傳遞使用全精度權重和激活來計算梯度。這使得模型能夠學習對前向傳遞中引入的量化誤差可靠的參數。結果是經過訓練的模型可以在對準確性影響最小的情況下進行量化后訓練。
立即訓練 LLM
本文介紹了各種模型訓練技術以及何時使用這些技術。請查看以下博文:掌握大語言模型 (LLM) 技術:定制,繼續您在 LLM 工作流程中的學習之旅。
許多訓練方法都支持 NVIDIA NeMo,它通過 3D 并行技術提供了加速的訓練工作流,并提供了多種自定義技術選項。NeMo 針對語言和圖像工作負載的大規模模型推理進行了優化,支持多 GPU 和多節點配置。下載 NeMo 框架并在您首選的本地和云平臺上訓練 LLM。
?