every blog every motto: Although the world is full of suffering, it is full also of the overcoming of it
0. 前言
LLAMA 1到3梳理
1. LLAMA 1
論文: LLaMA: Open and Efficient Foundation Language Models
時間: 2023.02
1.1 前言
在之前的大語言模型(GPTs)中,基于模型越大效果越好進行實驗。
然而,Hoffmann等人(2022)最近的工作表明,對于給定的計算預算,最佳性能不是由最大的模型實現的,而是由經過更多數據訓練的較小模型實現的。
Hoffmann等人(2022)的縮放定律的目標是確定如何最佳地縮放特定訓練計算預算的數據集和模型大小。然而,這個目標忽略了推理時間,這在大規模服務語言模型時變得至關重要。
因為大部分社區用戶其實沒有訓練 LLM 的資源,他們更多的是拿著訓好的 LLM 來推理。在這種情況下,我們首選的模型應該不是訓練最快的,而應該是推理最快的 LLM。
所以LLAMA的核心指導思想是: 小模型大數據
LLaMA-13B在大多數基準測試中優于GPT-3,盡管體積小了10倍!!!
1.2 預訓練數據
只使用公開數據,沒有使用任何私有數據。數據集包括:
分詞和GPT-3一樣,使用Byte Pair Encoding (BPE)。分詞以后的訓練數據大小為1.4T。對于大多數數據,訓練階段只見過一次,Wikipedia 和 Books 這兩個數據集見過2次。
1.3 模型架構
模型一共有4個版本,分別是6B、13B、32B和65B。具體細節:
總體來說沿用了Transformer的架構,但是做了以下改進:
1.3.1 Pre-normalization
前置歸一化,和GPT-3一樣,在Transformer的每個子層之前都進行Layer Normalization,而不是在之后。前置歸一化可以防止梯度爆炸,并且可以更好地穩定訓練過程。
使用 RMS Norm 歸一化函數。RMS Norm 的全稱為 Root Mean Square layer normalization。與 layer Norm 相比,RMS Norm的主要區別在于去掉了減去均值的部分,計算公式為:
1.3.2 SwiGLU
使用SwiGLU替代了ReLU作為激活函數。和PaLM中不同,維度采用 2 3 4 d \frac{2}{3}4d 32?4d ,而不是 4 d 4d 4d 。
1.3.3 RoPE
RoPE 的核心思想是“通過絕對位置編碼的方式實現相對位置編碼”,可以說是具備了絕對位置編碼的方便性,同時可以表示不同 token 之間的相對位置關系。[5] 不同于原始 Transformers 論文中,將 pos embedding 和 token embedding 進行相加,RoPE 是將位置編碼和 query (或者 key) 進行相乘。
1.4 加速
1.4.1 方法
- 使用了xformers庫。
- 減少了activation checkpointing 中,重新計算 activation 的計算量。手動實現 transformer 層的反向傳遞函數,保存了計算成本高的 activations,例如線性層的輸出。
- 通過使用 model parallelism 和 sequence parallelism 來減少顯存的使用量。
- 盡可能地將 activations 的計算和GPU之間的通訊進行并行。
1.4.2 效果
65B的模型,在2048個80G的A100 GPU上,可以達到380 tokens/sec/GPU的速度。訓練1.4T tokens需要21天。
1.5 實驗結果
論文做了多個實驗,下面摘取其中的自然推理(零樣本)上的結果。
LLaMA-13B 優于 GPT-3(175B),盡管只有1/10大小。 LLaMA-65B 是可以與 Chinchilla-70B 和 PaLM-540B 這種最佳的LLM相競爭的模型。經過微調之后,LLaMA的效果有顯著的提升。
1.6 消耗和排放
論文也比較了訓練LLAMA消耗的能源和排放的二氧化碳量,結果如下:
不得不說,講究!!!!
“開源”使得其他人能在這上面微調,減少能源消耗和排放。牛逼!!!!
1.7 總結
模型方面,和GPT一樣使用的Transformer結構,做了部分改進。
數據方面,本著開源的原則,使用公開的數據,token為1.4T(大約5.6T的原始文本數據,問的GPT)。
做到了小模型大數據。
2. LLAMA 2
論文: Llama 2: Open Foundation and Fine-Tuned Chat Models
時間: 2023.07
2.1 預訓練數據
LLAMA 2 訓練數據采用一個新的公開數據混合,總數據量為2T的token.
2.2 模型結構
模型結構基本沿用LLAMA 1。其中的位置編碼依然是RoPE,主要不同是:
-
增加了上下文長度,從2k增加到4k。
4k的上下文,對于chat、summarization、understanding longer documents 等任務有較好效果,在150B tokens上進行2k和4k的對比,發現SQUAD任務性能沒降低,SCROLLS上有提升(平均長度3.5k)。 -
使用分組注意力
對于更大參數量、更大的 context length、更大的 batchsize 來說,原始的MHA(multi-head attention)的內存占用會更高(因為在計算時要緩存pre token的K、V矩陣)。MQA(multi-query attention)讓所有的 head 共享 1 個 KV projection 矩陣;GQA(grouped-query attention )使用 8 個 KV projections(選擇8是因為A100 8GPUs) 來減少內存占用。在 30B 模型上訓練 150B tokens,發現 GQA 效果和 MHA 差不多,比 MQA 要好;在 1 個node的 8 個 A100 GPUs 上推理速度 GQA 和 MQA差不多,比 MHA 要好(MQA 在推理的時候,要把 KV projections 復制到8張卡上)。
2.3 預訓練效果
2.3.1 與開源模型比較
如表2所示,Llama 2 模型優于 Llama 1 模型。特別是,與 Llama 1 65B 相比,Llama 2 70B 在 MMLU 和 BBH上的結果分別提高了≈5和≈8個點。Llama 2 7B 和 30B 模型在除代碼基準外的所有類別上都優于相應大小的 MPT模型。對于 Falcon 模型,Llama 2 7B 和 34B 在所有類別的基準上都優于 Falcon 7B 和 40B 模型。
2.3.2 與閉源模型比較
如表3所示,Llama 2 70B 在 MMLU 和 GSM8K 上接近 GPT-3.5(OpenAI,2023),但在編碼基準上有顯著差距。Llama 2 70B 的結果在幾乎所有基準上都與 PaLM(540B)相當或更好。但是,Llama 2 70B 與 GPT-4 和 PaLM-2-L 之間仍然存在很大的性能差距。
2.4 有監督微調
高質量的數據集更重要。精標的27k數據比公開的幾百萬的數據要好。
超參數
batch size 64
cosine 學習率調度 + 初始學習率 2 × 10?5
權重衰減(weight decay) of 0.1
序列長度(sequence length) 4096
2.5 基于人類反饋的強化學習
2.5.1 數據收集
RLHF 環節的目標是使模型輸出對齊 align 人類偏好 (human preferences) 和遵循指令 (instruction following)。
我們收集代表經驗采樣的人類偏好的數據,由此人類注釋者選擇他們更喜歡的兩個模型輸出。這種人類反饋隨后被用于訓練獎勵模型,該模型學習人類注釋者的偏好模式,然后可以自動做出偏好決策
收集數據方式采用二元比較協議。(說人化,讓人二選一)
標注過程:
首先,要求標注者寫一個提示,然后根據提供的標準在兩個采樣的模型回應之間進行選擇。
其次,Meta 還要求標注者標記他們對所選回應相對于另一種回應的偏好程度:要么他們的選擇明顯更好(significantly better),更好(better),稍微更好(slightly better),或者微不足道地更好/不確定(negligibly better/unsure)。
Meta 關注有用性(helpfulness )和安全性(safety )兩個方面。有用性指的是 Llama 2-Chat 回應如何滿足用戶的請求和提供所需的信息;安全性指的是 Llama 2-Chat 的回應是否安全,例如,“給出制作炸彈的詳細指示”可以被認為是有用的,但根據 Meta 的安全指南是不安全的。分開兩者可以讓我們更好地指導標注者。
通過這個過程,Meta 收集了一個大型數據集,包含超過100萬個基于人類應用我們指定的指南的二元比較,稱之為 Meta 獎勵建模數據。隨著收集到更多的偏好數據,我們能夠訓練出逐漸更好的 Llama 2-Chat 版本。
Llama 2-Chat 改進也改變了模型的數據分布。由于如果不接觸這種新樣本分布,Reward Model 準確度會很快下降,所以在新一輪 Llama 2-Chat 調優之前收集最新 Llama 2-Chat 迭代版本使用的新偏好數據是很重要的。這一步有助于保持 Reward Model 在分布上,并為最新模型維持準確獎勵。
2.5.2 獎勵模型
Reward Model 將模型 response 和 prompt(包括前幾輪的上下文)作為輸入,輸出一個標量分數來表示模型生成的質量(例如,有用性和安全性)。利用這樣的回應 score 作為獎勵,可以在 RLHF 過程中優化 Llama 2-Chat,以實現更好的人類偏好對齊和提高有用性和安全性。
但是有人發現有用性和安全性有時會相互抵消,這可能使得單個 reward model 難以在兩者上都表現良好。為了解決這個問題,Meta 訓練了兩個單獨的 reward model,一個針對有用性(稱為有用性 RM),另一個針對安全性(稱為安全性 RM)。
Meta 選擇從預訓練模型 checkpoint 初始化 reward model,因為它確保了兩個模型都能從預訓練中獲得的知識中受益。簡而言之,reward model“知道”預訓練模型知道的東西。這可以防止出現信息不匹配的情況,例如,兩個模型可能會偏愛幻覺。
模型架構和超參數與預訓練語言模型相同,除了最后一層[CLS]從預測 next token 換成了 regression 來預測一個scalar score 。
訓練目標。為了訓練 reward model,將收集到的成對人類偏好數據轉換為二元排序標簽格式(即,選擇和拒絕)。使用二元排序損失(binary ranking loss):
考慮到偏好的4種評分,修改為:
規模趨勢:
在同等訓練樣本的情況下,reward model 模型越大,效果越好
在當前的訓練樣本量還不夠,reward model 的性能還有提升空間,增加更多的樣本,會繼續提升
reward model 的性能越好,Llama 2-Chat 模型的效果越好,所以要努力提升 reward model 的準確率
2.5.3 迭代微調
主要用兩種主要算法探索了 RLHF 的微調效果:
- 近端策略優化(PPO)
- 拒絕采樣微調
這部分沒細看
2.6 總結
與開源的模型相比有競爭力,和GPT4相比還是有差距。
3. LLAMA 3
論文: The Llama 3 Herd of Models
時間: 2024.7.31
3.1 預訓練數據
經過一系列剔除個人信息、過濾、清洗等操作以后訓練數據為15.6T(是LLAMA2 的7倍多)
Llama 3的訓練數據包括了大量的代碼token和超過5%的非英語token,來源于30多種語言。這不僅使得模型在處理英語內容時更加高效,也顯著提升了其多語言處理能力,這表明Llama 3在全球多語言環境中的適應性和應用潛力。
為確保數據質量,Meta開發了一系列數據過濾pipeline,包括啟發式過濾器、NSFW過濾器、語義重復數據刪除技術及用于預測數據質量的文本分類器。這些工具的有效性得益于先前版本Llama的表現,特別是在識別高質量數據方面。
3.2 模型結構
模型總體和之前的差不多,依舊是Decoder結構,主要是層數方面的增加。
與LLAMA2相比,有以下不同:
- 分組注意力機制使用8個個頭。
- 使用注意掩碼來防止不同文檔內存在的相同序列
- 詞典增加到128K tokens
- 我們將RoPE基頻超參數增加到500,000
具體的模型結構如下:
3.3 預訓練和微調
文章將其稱為pre-training and post-traing
3.3.1 預訓練
在預訓練階段,為了有效地利用預訓練數據,Llama 3投入了大量精力來擴大預訓練。具體而言,通過為下游基準測試制定一系列擴展法則(scaling laws),使得在訓練之前就能預測出模型在關鍵任務上的性能,進而選擇最佳的數據組合。
在這一過程中,Llama 3對擴展法則有了一些新的發現。例如,根據DeepMind團隊提出的Chinchilla擴展法則,8B模型的最優訓練數據量約為200B token,但實驗發現,即使訓練了兩個數量級的數據后,模型性能仍在繼續提高。在多達15T token上進行訓練后,8B和70B參數的模型都繼續以對數線性的方式提升性能。
為了訓練最大的Llama 3模型,Meta結合了三種并行策略:數據并行、模型并行和流水并行。當同時在16K GPU上進行訓練時,最高效的策略實現了每個GPU超過400 TFLOPS的計算利用率。最后,模型在兩個定制的24K GPU集群上進行了訓練。
3.3.2 微調
包括監督微調(supervised finetuning SFT),拒絕采樣、近似策略優化(Proximal Policy Optimization, PPO)和直接策略優化(Direct Policy Optimization, DPO)
整體結構:
3.4 結果
3.4.1 預訓練
結果:
3.4.2 微調
對比的數據比較多,下面僅顯示coding能力。
3.5 視覺實驗
整個視覺部分分為3部分,image-encoder,image-adapter,video-adapter
其中image-encoder是一個vit結構,用于實現image-text對齊。
image-adapter: 在視頻token和文字token之間引入cross-attention。
We introduce cross-attention layers between the visual token representations produced by the image encoder and the token representations produced by the language model。The cross-attention layers are applied after every fourth self-attention layer in the core language model.
video-adapter:
Our model takes as input up to 64 frames (uniformly sampled from a full video), each of which is processed by the image encoder. We model temporal structure in videos through two components: (i) encoded video frames are aggregated by a temporal aggregator which merges 32 consecutive frames into one, (ii) additional video cross attention layers are added before every fourth image cross attention layer. The temporal aggregator is implemented as a perceiver resampler
3.6 語音實驗(Speech Experiments)
和視覺部分類似
3.7 小結
微調部分沒細看,暫時也用不到。
還是大力出奇跡,越大越牛逼。沒想到模型參數已經來到400B+了,明年或是后面會不會來到8T級別?甚至更大?
果然還是大公司才能玩得起。
通過開源,確實節約了能源,RIS
位置編碼LLAMA1、2、3 都是使用的RoPE。
參考
- https://zhuanlan.zhihu.com/p/643894722
- https://zhuanlan.zhihu.com/p/632102048
- https://zhuanlan.zhihu.com/p/648774481
- https://www.zhihu.com/tardis/zm/art/653303123?source_id=1005