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