前言
參考視頻:大模型修煉之道(三): Llama系列講解 Llama1,Llama2, Llama3_嗶哩嗶哩_bilibili
本博客是基于視頻的學習筆記,以及相關知識點的擴充
?Llama1
1. 動機
- 使用完全開源數據,性能媲美GPT3
- 研究開源,禁止商用
?2. scaling law
損失曲線圖的解釋:
圖中顯示了兩個模型(10B和50B)的訓練過程。損失(loss)曲線反映了模型在訓練過程中的性能,損失值的降低表示模型的性能在提升。隨著訓練時間的增加,計算成本也在不斷增加。隨著計算時間的增加,兩個模型的Loss都在不斷降低,剛開始小模型的Loss下降更快,但隨著訓練的進行,小模型的性能逐漸飽和下降逐漸變慢,大模型下降速度超過了小模型。
當設定一個期望損失值時,如圖,會發現大模型的訓練花費可能會低于小模型。
但是!!Meta不這樣認為!!!
Meta認為在考慮計算成本時,不僅要關注訓練階段的開銷,更要重視推理時的計算成本。因為訓練過程只能進行一次,而推理是一個重復的過程,影響到實際應用的頻率和資源消耗。
所以從推理計算成本來看,小模型的成本是會小于大模型的。
按照原來的scaling law經驗,原來10B的模型,建議用200B的token訓練。
但是Meta對7B的模型使用了1T的token訓練,發現性能還可以一直增長。
增加數據比擴大參數更有效:在后續的LLaMA系列中,Meta持續采納這一觀點,認為在提升模型性能時,增加訓練數據的數量比擴大模型參數的數量更為有效。
3. 訓練數據?
1. CommonCrawl 2017-2020的數據,對非英文數據進行了去重。
2. 將wikipedia引用的網頁作為正例,其他網頁作為負例訓練線性模型。
3. 將books 和 wikiledia 用兩個epoch訓練,其他數據集只用了一個epoch。
4. 總共1.4T token。
5. 訓練時的上下文長度為2048,用了2048個A100 80G的GPU訓練,用時21天。
?4. 模型結構
Llama模型架構和GPT一樣,都是采用Transformer Decoder架構,做了以下修改。
1. 和GPT2,3一樣將Normalization從每個子層的輸出位置移到了輸入位置。
? ?
? (左GPT1,右GPT2)? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ?
?2. 將Layer Norm 改為了 RMS Norm
RMS Norm的動機是:
在進行normalization的時候,并不能改變特征的分布,所以可以去掉平移相關部分:
RMS Norm通過計算輸入向量的均方根,進行歸一化處理,消除了Layer Norm中計算均值的過程,簡化計算。
RMSNorm(RMS歸一化)介紹-CSDN博客
3. 采用了旋轉位置編碼?
4. 采用了Silu激活函數
Llama2?
1. 改進
- 可商用;
- 加大了數據量;
- 通過微調訓練了chat model,對標chatgpt
2. 訓練數據
- Llama2的訓練數據比Llama1 多了40%,達到了2T的token(Llama1是1.4T? token)
- 上下文token 從2048 翻倍到了4096
- 使用了10萬條數據進行監督微調(人類提出問題并給出回答數據)
- 使用了100萬條偏好數據(對同一個問題讓模型給出多個回答,人工給這些回答進行排序)用來強化學習
- 共三個版本(7B,13B,70B)
- 70B的模型訓練用了172萬的GPU小時,相當于2048個GPU訓練了35天
3. 訓練流程
- ?在處理好的無標注文本數據上進行自回歸預訓練;
- 然后進行監督微調訓練;
- 接下來通過人類偏好數據訓練兩個模型(安全獎勵模型,有用獎勵模型);
- 再利用強化學習對模型訓練;
- 最終得到Llama 2 的chat Model。
4.? Train PPL—Tokens
縱坐標Train PPL-訓練困惑度"(Training Perplexity)
困惑度是一個衡量語言模型預測能力的指標,反映了模型對測試數據的困惑程度。它可以被視為模型在生成文本時的“困惑”程度,數值越低,表示模型對數據的預測能力越強。
交叉熵損失(Cross-Entropy Loss)
- p(i)?是真實分布的概率(通常是一個one-hot編碼的真值分布)。
- q(i)是模型預測的概率分布。
5. GPA (Group Query Attention)
Multi-Head Attention
每個Token都有多個Query、Key和Value:每個輸入Token會生成多個Query(查詢向量)、Key(鍵向量)和Value(值向量)。例如,如果有8個頭,那么每個Token會有8個不同的Query和8個對應的Key和Value。
計算注意力:每個Query會與所有Token的Keys進行相似度計算,從而生成注意力權重,進而加權所有的Values,產生最終的輸出。這種機制允許模型在不同的子空間中學習信息,從而增強表示能力。
Multi-query Attention
生成的特征不同:每個Token仍然生成多個Query,但只生成一個Key和一個Value。這樣,所有的Query都與同一個Key進行相似度計算。這種機制減少了計算的復雜性,使得模型在處理時更加高效。
注意力計算:所有的Query會與自己唯一的Key進行相似度計算,這在一定程度上簡化了計算過程,并可能提高模型的效率。
分組注意力(Group Attention)
Query的分組:在分組注意力中,Query被分為幾個組。例如,可以將每兩個Query分為一組。每組對應一個Key和一個Value。
組合優點:這種方法結合了多頭注意力的優點和Marty Query Attention的計算效率。通過分組,模型可以在保持一定表達能力的同時,減少計算量。
原始Multi-head實現
假設原始的token維度為512,則w_q,w_k,w_v線性層的權重矩陣都為512*512,生成的q,k,v都是512維;
分為八個頭,每個頭的維度就是64:
Group Query Attention的實現
如果每兩個query為1組,那么w_k和w_v矩陣為512*256,這里節省了模型的參數量;
這樣Q有8個頭,K,V只有4個頭:
矩陣乘法的時候,將k,v的頭再復制一份就可以相乘了:
注意:GQA再Llama2中只應用在了70B的模型中
Llama3
1. 性能表現
?2. 改進
- 字典從3萬2000個Token擴充4倍,達到了12萬8。提高推理效率;
原來一個中文被編碼為多個token,現在只需要一個token。
也就意味著原來需要多次推理才能輸出一個漢字,現在只需要一次推理就可以。
但因為字典的增大,導致embedding層和分類頭層增加,所以最小的模型也從7B到了8B.
- 所有模型,包括8B模型也用GQA;
- 序列長度從4096到了8192。
3. 訓練數據
《Llama: The Llama 3 Herd of Models》預訓練數據篇——論文精讀筆記-CSDN博客
- 15T的訓練Token,全部來自公開數據。是Llama2的7倍大小。代碼數據多了4倍;
- 5%高質量非英語數據,涵蓋30多種語言;
- 對數據進行了清洗過濾,llama2生成訓練數據來幫助訓練文本質量分類器;(不是用llama2生成訓練數據)
- 微調階段除了開源數據集,還人工標注了1000萬樣本。
?4. 訓練技能
?5. 指令微調
指令微調是一種通過在特定的指令數據集上對預訓練模型進行進一步訓練的方法,使得模型能夠更有效地處理和響應各種文本指令。這些指令可以包括問答、生成文本、總結、翻譯等多種任務。
- SFT
- 拒接采樣
- PPO
- DPO
SFT(Supervised Fine-Tuning)
定義: SFT是指在預訓練模型的基礎上,通過監督學習的方式對模型進行細化調整。這個過程通常利用帶有標簽的數據集來學習模型在特定任務上的表現。
特點:
- 數據依賴: SFT需要標注數據,通常由人類專家或自動化程序生成。
- 目標明確: 針對特定任務(如分類、問答等)進行微調,以提高模型的準確性和性能。
- 適用性廣: 可以應用于各種NLP任務,如文本生成、文本分類等。
拒接采樣(Reject Sampling)
定義: 拒接采樣是一種用于生成樣本的方法,它通過計算生成樣本的概率并根據該概率進行選擇。具體而言,對于每個生成的樣本,決定是否接受該樣本。
特點:
- 選擇性強: 通過設定閾值來拒絕那些不符合特定條件的樣本,從而提高生成樣本的質量。
- 靈活性: 可以根據模型的輸出概率進行動態調整,適應不同的應用場景。
- 應用: 常用于增強生成模型的質量,特別是在對生成內容有明確標準的時候。
?PPO(Proximal Policy Optimization)
定義: PPO是一種強化學習算法,旨在優化策略的同時確保更新的穩定性。它通過限制每次更新的幅度,避免大幅度的策略變化。
特點:
- 穩定性: 通過使用剪切目標函數(clipped objective function)來限制策略更新,從而增大了訓練的穩定性。
- 易于實現: 相較于其他強化學習算法,PPO的實現較為簡單,且在多種任務上表現良好。
- 廣泛應用: 常用于訓練對話系統、游戲AI等需要動態學習的場景。
DPO(Direct Preference Optimization)
定義: DPO是一種直接優化策略,通常用于模型輸出的偏好學習。DPO通過優化模型對不同輸出的偏好,使模型能夠更好地滿足用戶需求。
特點:
- 直接優化: 通過直接調整模型輸出的偏好,優化模型的生成質量。
- 用戶反饋: DPO通常使用用戶反饋或排序信息來指導模型學習,從而提高用戶體驗。
- 應用場景: 常用于推薦系統和對話系統等需要考慮用戶偏好的任務。