天天看點

大模型開源社群的原子彈Llama2

作者:ChatGPT掃地僧

這個事對于提升開源社群和從業者的技術水準是有劃時代的意義的。

原因有兩個:

1.LLama 2和Llama1的diff,是最好的技術學習資料,尤其是sft和rlhf上。之前llama1在SFT和RLHF上的發力不多,現在2代模型的技術細節和實驗都變得更豐富了。

2.LLama 1代是曾經最好的開源大模型,從使用熱度,開源生态,使用者口碑全方位碾壓其他的模型,LLama 2改進了它。

我們先說第一個,失敗的經驗和找diff是技術人員最希望看到的東西,diff可以讓所有的研究人員驗證他們的差異,并且進行實踐驗證。隻有成功的經驗,但是沒有每一步驟的上分細節和上分權重意義不大,這是另外一種藏着掖着和傲慢。

第二個,llama2終于可以取代llama系列成為新的開源大模型的起始點了,這樣會極大地提升其他llama系開源模型的技術水準,這就是開源社群的力量和存在的意義。

評價一個開源社群的大模型水準如何,關鍵一個名額就是看他的生态,有多少人放出了llama基礎上的新權重,并且效果不錯。在衆多人的實踐檢驗下,是金子總會發光的。

這兩點來看,對于提升開源社群和從業者的技術水準,具有劃時代的意義。

好了,我們看看他的技術細節吧。

權重:HuggingFace:https://huggingface.co/meta-llama

技術報告:https://ai.meta.com/research/publications/llama-2-open-foundation-and-fine-tuned-chat-models/

首頁: https://ai.meta.com/llama/

整個技術報告有76頁:

簡單總結一下:

我們從很多技術細節上能看出,模型的規模越大,上限越高,trick越多。

一、基座模型架構上

1.在attention的實作上,30B以上的模型用GQA代替了MQA和MHA,主要是考慮效果和易擴充性的權衡。

2.上下文長度從2048更新到4096

其他方面大同小異。包括預訓練設定和模型架構, RMSNorm歸一化、SwiGLU 、RoPE等。其他超參數設定細節:

AdamW 其中 β1 =0.9,β2 = 0.95,eps = 10−5。cosin scheduler,warmup 2000 步,衰減最終學習率降至峰值學習率的 10%,使用 0.1 的權重衰減和1.0的梯度裁剪。

二、資料方面:

1.SFT資料有10萬+,RLHF的資料有100萬+

2.預訓練Llama 2訓練語料相比LLaMA多出40%,達到了2萬億token。

大模型開源社群的原子彈Llama2

當然資料的細節在rlhf部分會更講究一些,可以結合下面的來看。

三、SFT和RL對齊方面

  1. 增加了很重的sft和rlhf,并且研究了rm和rl的一些trick,進一步強調了SFT資料品質和多樣性的重要性,技術報告并對資料方面的研究做的很仔細。
大模型開源社群的原子彈Llama2

在SFT的參數設定上,值得注意:(1)對于監督微調,使用cosin scheduler,初始學習率小到 2 × 10−5,decay為 0.1,bs為 64,maxlen為 4096 個标記。

(2)對于微調過程,每個樣本都包含提示和答案, 為了確定正确填充模型序列長度,連接配接訓練集中的所有提示和答案。使用特殊标記來分隔提示和答案部分。

(3) 利用自回歸目标,将使用者提示中的token損失歸零,僅對答案token進行反向傳播。最後對模型進行了 2 個 epoch 的微調。

其實這裡(2)和(3)就是我們前面提到的一個trick大模型微調樣本構造的trick,另外不僅僅在資料組織方面,還有流程上的優化

2.多論對話的SFT用了一種Ghost Attention (GAtt)的tirck。

GAtt是全文篇幅很重的一個trick,原文做了大量的相關實驗。

大模型開源社群的原子彈Llama2

假設我們可以通路兩個人(例如,使用者和助手)之間的多輪對話資料集,其中包含消息清單 [u1, a1, . 。。, un, an],其中 un 和 an 分别對應于第 n 輪的使用者消息和助理消息。然後,我們定義一條指令,inst,在整個對話過程中都應遵守該指令。例如,inst 可以是“充當”。然後我們可以将該指令綜合連接配接到對話的所有使用者消息。構造為 [inst u1, a1, . 。。, inst un, an]。

接下來,可以使用最新的 RLHF 模型從這些合成資料中進行采樣。

我們現在有了一個上下文對話和樣本,可以用來微調模型,其過程類似于拒絕采樣。可以在除第一輪之外的所有輪次中删除它,而不是用指令來增加所有上下文對話輪次,但這會導緻系統消息之間的訓練時間不比對,即最後一個輪次之前出現的所有中間輔助消息 輪到我們的樣品了。

為了解決這個可能會損害訓練的問題,我們隻需将前一輪的所有标記的損失設定為 0,包括輔助消息。

這部分細節和實驗很多,建議仔細閱讀技術報告原文。

3.rm中引入了metric learning中的margin方法。

做過人臉的同學都知道,margin的原則就是類内聚集,類間可分,這樣會讓RM對于好壞有更好的判斷力,當然也有副作用,會讓相似的資料分不開。

大模型開源社群的原子彈Llama2

4.拒絕采樣

RLHF的訓練變成疊代式的,從V1到V5,并且過程中伴随着拒絕采樣,在給定的K個promt中,隻選取一個用于ppo的訓練。不過這個過程也隻用在了70B的llama上,可以看出來,模型的規模越大,上限越高,trick越多...

大模型開源社群的原子彈Llama2

當然這份技術報告需要更多時間來消化和驗證,這可能是這兩個月來大模型方面最突破的事情了。

研究人員有福了。