Bert重大創新,RAG突破512長度限制
當前RAG的檢索、召回模塊,受到了傳統BERT模型只支持512長度的極大限制。導致文檔切分后的chunksize,極大影響RAG的性能。
本文介紹的ModernBERT,在BERT的基礎上進行了重大改進,以提高下游任務的性能和效率,尤其是在更長序列長度上的表現。
ModernBERT在2萬億個token上進行訓練,原生支持8192序列長度,展現了在多樣化分類任務和單向、多向檢索任務上的卓越性能。
ModernBERT解決的問題
- 問題1:傳統Bert序列長度512的限制
ModernBERT通過增加序列長度到8192個token,顯著提高了模型處理長文本的能力。
- 問題2:傳統BERT注意力機制效率低下
為了提高模型的運行速度和內存效率,ModernBERT引入了一系列現代模型優化技術,包括交替的全局和局部注意力機制、無填充(unpadding)策略以及Flash Attention技術。
- 問題3:傳統Bert架構陳舊
ModernBERT采用了最新的模型架構改進,例如GeGLU激活函數、RoPE位置編碼和預標準化(pre-normalization)技術
突破性能的關鍵技術
- 在相同的參數數量下,具有更多窄層的模型(深而窄)與具有較少寬層的模型(淺而寬)具有不同的學習模式。
- 深而窄的語言模型比其較淺的對應模型具有更好的下游性能,但代價是推理速度較慢。
- 為了獲得更好的下游性能,ModernBERT設計的目標是盡可能深而窄。
- ModernBERT的基礎模型和大型模型分別具有22層和28層,參數總數分別為1.49億和3.95億,在后續性能和硬件效率之間取得了平衡。
- ModernBERT基礎模型的隱藏層大小為768,GLU擴展為2304;大型模型的隱藏層大小為1024a,GLU擴展為5248。 這些比例允許跨張量核心的最佳平鋪。
transformer架構的改進
- GeGLU激活函數:替代原有的GeLU激活函數,提供更好的非線性表達能力。
- RoPE位置編碼:使用旋轉位置編碼(RoPE)代替絕對位置編碼,以提高模型對序列順序的理解能力。
- 預標準化(pre-normalization):在每個Transfaormer塊中使用預標準化技術,有助于穩定訓練過程。
- 在嵌入層之后添加了一個層歸一化。 為避免重復,去除了第一個注意力層中的第一個層歸一化。
- 交替注意力機制:在模型中交替使用全局和局部注意力,以平衡計算效率和性能。
- 全局注意力:序列中的每個token都關注其他每個token
- 局部注意力:token僅關注一個小滑動窗口內的token。
- 在ModernBERT中,每三層使用RoPE theta為160,000的全局注意力,其余層使用具有128個token、RoPE theta為10,000的局部滑動窗口注意力。
模型訓練的改進
- 在2萬億個token上進行訓練,數據來源包括網頁文檔、代碼和科學文獻。模型采用了現代的BPE分詞器,并設置了50,368的詞匯量,以優化GPU利用率。
- 訓練采用了Masked Language Modeling(MLM),并去除了Next-Sentence Prediction(NSP)目標,因為后者并未帶來性能上的提升。
- 模型使用了StableAdamW優化器,并采用了改進的梯形學習率計劃
- 采用去除填充策略,去除填充token,減少計算資源的浪費
- encoder-only語言模型通常使用填充符元來確保批次中統一的序列長度,從而浪費在語義上為空的符元上的計算資源。
- 去除填充通過移除填充token、將小批量中的所有序列連接成單個序列并將其作為單個批次進行處理來避免這種低效。
- 之前的去除填充實現會在不同的模型層內部去除填充并重新填充序列,從而浪費計算資源和內存帶寬。
- 使用Flash Attention的可變長度注意力和RoPE實現,允許在單個未填充序列上使用不規則的注意力掩碼和RoPE應用。
- ModernBERT在嵌入層之前去除輸入的填充,并可以選擇性地重新填充模型輸出,這使得其性能比其他去除填充方法提高了10%到20%。
- 使用Flash Attention技術,提高了注意力計算的內存和計算效率。
- ModernBERT結合使用Flash Attention 3進行全局注意力層
- 使用Flash Attention 2進行局部注意力
- 利用PyTorch的torch.compile編譯功能,提高了訓練的吞吐量10%。
- 通過增加全局注意力層的RoPE theta值,將原生上下文長度512擴展到8192個token,并在額外的3000億個token上進行訓練,以優化長文本處理能力。
訓練參數的配置
- MLM:
a.使用30%的掩碼率,原始的15%掩碼率再次被證明是次優的
- StableAdamW優化器:
a.StableAdamW的學習率裁剪在下游任務中優于標準梯度裁剪,并導致更穩定的訓練。
- 梯形學習率 (LR) :
a.在預訓練期間,我們使用改進的梯形學習率 (LR) schedule,也稱為預熱-穩定-衰減 (WSD)。
b.在短暫的LR預熱之后,梯形schedule在大部分訓練中保持LR不變,然后進行短暫的LR衰減。
c.此schedule已被證明可以匹配余弦schedule的性能。
d.并且可以對任何檢查點進行持續訓練而不會出現冷啟動問題。
e.使用1-sqrt的LR衰減,要優于線性衰減和余弦衰減
f.ModernBERT-base 以8e-4的恒定LR訓練了1.7萬億個token,預熱了30億個token
g.預熱20億個token后,以5e-4的LR訓練了ModernBERT-large,訓練了9000億個符元。
h.在large的損失在5e-4下保持穩定了幾百億個token后,將學習率回滾到5e-5,并重新訓練剩余的8000億個token。
- 批量大小調度:
a.批量大小調度從較小的梯度累積批量開始,隨著時間的推移逐漸增加到完整的批量大小,能加快訓練進度
b.ModernBERT-base和-large的批量大小分別在500億個token內從768增加到4608,在100億個token內從448增加到4928,采用不均勻的token調度,以便每個批量大小具有相同數量的更新步驟。
- 權重初始化和平鋪:
a.使用中心平鋪和Gopher層縮放,直接從ModernBERT-base的預訓練權重初始化ModernBERT-large
b.由于Base的權重矩陣小于Large的權重矩陣,對Base的權重進行了中心化處理,考慮了每個token嵌入和注意力頭,然后使用環繞填充其余權重。
- 上下文長度擴展:
a.以1024個序列長度和10,000的RoPE theta對1.7萬億個token進行訓練后,通過將全局注意力層的RoPE theta增加到160,000并將額外訓練3000億個token來擴展ModernBERT的原生上下文長度到8192個token。
b.首先,以3e-4的恒定較低學習率對8192個token的原始預訓練數據集混合體進行2500億個token的訓練
c.接下來,對更高質量的來源進行上采樣,并在500億個token上進行具有1-sqrt學習率調度的衰減階段。
??https://github.com/AnswerDotAI/ModernBERT??
??https://arxiv.org/pdf/2412.13663??
本文轉載自??CourseAI??,作者: CourseAI
