Arctic-SnowCoder揭秘:小數(shù)據(jù)如何煉成高性能代碼模型?
一、結(jié)論寫在前面
論文標(biāo)題:Arctic-SnowCoder: Demystifying High-Quality Data in Code Pretraining
論文鏈接:??https://arxiv.org/pdf/2409.02326??
高質(zhì)量數(shù)據(jù)對(duì)于語(yǔ)言模型的有效預(yù)訓(xùn)練至關(guān)重要。然而,“高質(zhì)量”的精確定義仍未得到充分探索。
聚焦于代碼領(lǐng)域,論文引入了Arctic-SnowCoder-1.3B,這是一個(gè)數(shù)據(jù)高效的基礎(chǔ)代碼模型,通過三個(gè)階段的逐步精煉數(shù)據(jù)進(jìn)行預(yù)訓(xùn)練,共處理了555B token:(1) 使用500B個(gè)標(biāo)準(zhǔn)質(zhì)量代碼token進(jìn)行通用預(yù)訓(xùn)練,經(jīng)過基本過濾、去重和去污染預(yù)處理;(2) 使用50B個(gè)高質(zhì)量token進(jìn)行持續(xù)預(yù)訓(xùn)練,這些token從第一階段中通過BERT風(fēng)格的質(zhì)量注釋器選出,該注釋器經(jīng)過訓(xùn)練以區(qū)分優(yōu)質(zhì)代碼與隨機(jī)數(shù)據(jù),使用從高質(zhì)量代碼文件中提取的正例,以及來自Magicoder和StarCoder2-Instruct的指令數(shù)據(jù);(3) 使用5B個(gè)合成數(shù)據(jù)進(jìn)行增強(qiáng)預(yù)訓(xùn)練,這些數(shù)據(jù)由Llama-3.1-70B使用第二階段數(shù)據(jù)作為種子生成,采用Magicoder的預(yù)訓(xùn)練方法。
僅僅訓(xùn)練有限數(shù)據(jù)集,Arctic-SnowCoder-1.3B在BigCodeBench上取得了SOTA的結(jié)果,這是一個(gè)專注于實(shí)際和具有挑戰(zhàn)性的編程任務(wù)的編碼基準(zhǔn),在訓(xùn)練了小于等于 1T tokens的類似大小的模型中。特別是,它比Phi-1.5-1.3B [20]高出36%。盡管訓(xùn)練數(shù)據(jù)量為555B tokens,與其他在萬億tokens上訓(xùn)練的最先進(jìn)的小型代碼模型相比,Arctic-SnowCoder在多個(gè)基準(zhǔn)測(cè)試中達(dá)到了或超過了這些模型的性能。
例如,Arctic-SnowCoder-1.3B在所有評(píng)估的基準(zhǔn)測(cè)試中擊敗了StarCoderBase-3B,后者訓(xùn)練數(shù)據(jù)超過1T tokens。Arctic-SnowCoder-1.3B在HumanEval+ (28.0 vs. 27.4)上優(yōu)于StarCoder2-3B,后者訓(xùn)練數(shù)據(jù)超過3T tokens,這是一個(gè)評(píng)估函數(shù)級(jí)代碼生成的基準(zhǔn),同時(shí)在BigCodeBench(19.4 vs. 21.4)上保持競(jìng)爭(zhēng)力。論文進(jìn)行了全面的消融研究,以驗(yàn)證訓(xùn)練Arctic-SnowCoder背后的設(shè)計(jì)決策:
?首先,論文的研究結(jié)果表明,在一般預(yù)訓(xùn)練中,將文件級(jí)數(shù)據(jù)按編程語(yǔ)言劃分成倉(cāng)庫(kù)后,顯著優(yōu)于僅按倉(cāng)庫(kù)名稱分組數(shù)據(jù)的方法。
?此外,論文確定了最佳的學(xué)習(xí)率計(jì)劃,包括重新預(yù)熱階段后進(jìn)行線性衰減,以及在持續(xù)預(yù)訓(xùn)練期間高質(zhì)量數(shù)據(jù)的理想重復(fù)次數(shù),論文發(fā)現(xiàn)是四次。
?更重要的是,論文對(duì)基于模型的質(zhì)量注釋器的比較,這些注釋器在各種數(shù)據(jù)組合上進(jìn)行訓(xùn)練,強(qiáng)調(diào)了預(yù)訓(xùn)練數(shù)據(jù)與下游任務(wù)的對(duì)齊對(duì)于實(shí)現(xiàn)卓越性能至關(guān)重要。
圖1:Arctic-SnowCoder-1.3B的三階段預(yù)訓(xùn)練,逐步使用更高質(zhì)量的數(shù)據(jù)。
二、論文的簡(jiǎn)單介紹
2.1 論文的背景
預(yù)訓(xùn)練LLMs通常依賴于大量數(shù)據(jù)。在代碼等專業(yè)領(lǐng)域,這種對(duì)數(shù)據(jù)量的重視尤為明顯,研究人員通過抓取GitHub等平臺(tái)獲取大量代碼預(yù)訓(xùn)練數(shù)據(jù)集。然而,最近的研究越來越表明,高質(zhì)量的數(shù)據(jù)對(duì)于有效的預(yù)訓(xùn)練至關(guān)重要, 包括代碼領(lǐng)域。
在通用領(lǐng)域,研究人員探索了多種技術(shù)來策劃高質(zhì)量的語(yǔ)言模型預(yù)訓(xùn)練數(shù)據(jù)。FineWeb-Edu使用基于Snowflake-arctic-embed-m嵌入構(gòu)建的線性回歸器來評(píng)估網(wǎng)頁(yè)的教育價(jià)值并選擇高質(zhì)量?jī)?nèi)容,而DCLM方法則采用基于fastText的過濾器,該過濾器在高質(zhì)量在線資源和指令數(shù)據(jù)的正例以及隨機(jī)負(fù)例網(wǎng)頁(yè)上進(jìn)行訓(xùn)練,以識(shí)別高質(zhì)量文本。與使用未過濾的大規(guī)模數(shù)據(jù)集相比,這些基于模型的質(zhì)量過濾器顯著提高了語(yǔ)言模型在下游任務(wù)中的性能。
同樣,研究人員也認(rèn)識(shí)到高質(zhì)量代碼數(shù)據(jù)對(duì)于預(yù)訓(xùn)練的重要性,Phi-1使用隨機(jī)森林分類器在Code-Gen嵌入上選擇教育性代碼樣本,DeepSeek-Coder-V2采用多階段fastText管道來召回與網(wǎng)絡(luò)相關(guān)的代碼數(shù)據(jù)和GitHub上的高質(zhì)量代碼,實(shí)現(xiàn)了最先進(jìn)的編碼性能。
在本文中,論文介紹了Arctic-SnowCoder-1.3B,這是一個(gè)高性能的小型代碼模型,通過一種新穎的三步訓(xùn)練方法創(chuàng)建,專注于數(shù)據(jù)質(zhì)量的逐步提升。得益于這種方法,Arctic-SnowCoder-1.3B在所有評(píng)估的基準(zhǔn)測(cè)試中均優(yōu)于StarCoderBase-3B [19],并在復(fù)雜且實(shí)用的BigCodeBench基準(zhǔn)測(cè)試 [46] 上超越Phi-1.5-1.3B [20] 36%,該基準(zhǔn)對(duì)實(shí)際編程至關(guān)重要。
2.2 論文的方法--Arctic-SnowCoder
這里論文將詳細(xì)解釋Arctic-SnowCoder-1.3B的訓(xùn)練方法,如圖1所示。論文首先討論原始訓(xùn)練數(shù)據(jù)的組成(見圖1),然后概述通用預(yù)訓(xùn)練階段。接下來,論文描述使用高質(zhì)量數(shù)據(jù)的協(xié)同預(yù)訓(xùn)練過程,最后,論文詳細(xì)闡述使用合成數(shù)據(jù)的增強(qiáng)預(yù)訓(xùn)練。模型架構(gòu)基于Llama-2,具體細(xì)節(jié)見表1。
表1:Arctic-SnowCoder的模型架構(gòu)細(xì)節(jié)。
2.2.1原始數(shù)據(jù)
用于訓(xùn)練Arctic-SnowCoder-1.3B的原始預(yù)訓(xùn)練數(shù)據(jù)僅包含代碼,主要來源于用于訓(xùn)練Snowflake Arctic的編碼數(shù)據(jù)。該數(shù)據(jù)結(jié)合了The Stack v1和GitHub爬取數(shù)據(jù)的清洗后版本。從這些數(shù)據(jù)中,論文選擇了18種流行的編程語(yǔ)言進(jìn)行訓(xùn)練,類似于StarCoder2-3B。這些語(yǔ)言包括Python、Java、C++、C 、JavaScript、PHP、C#、Go、TypeScript、SQL、Ruby、Rust、Jupyter Notebook、Scala、Kotlin、Shell、vart、Swift,總計(jì)400B唯一token。
2.2.2 通用預(yù)訓(xùn)練
在通用預(yù)訓(xùn)練階段,模型使用Adam進(jìn)行訓(xùn)練,訓(xùn)練500B token,序列長(zhǎng)度為8192,批量大小為512。學(xué)習(xí)率在600次迭代后進(jìn)行線性預(yù)熱,隨后遵循余弦衰減。論文設(shè)置最大學(xué)習(xí)率為5.3x 10^{-4},最小學(xué)習(xí)率為5.3 x 10^{-5},這一設(shè)置參考了DeepSeek-Coder。在此階段,論文使用了全部400B原始數(shù)據(jù),未進(jìn)行額外的質(zhì)量過濾。論文首先按編程語(yǔ)言對(duì)代碼文件進(jìn)行分區(qū),按倉(cāng)庫(kù)進(jìn)行分組,然后以隨機(jī)順序連接它們,類似于StarCoder2的方法。論文展示了首先按編程語(yǔ)言對(duì)代碼文件進(jìn)行分區(qū)的優(yōu)勢(shì)。論文將此階段生成的模型命名為Arctic-SnowCoder-alpha。
2.2.3 高質(zhì)量數(shù)據(jù)繼續(xù)預(yù)訓(xùn)練(Continued pretraining)
在通用預(yù)訓(xùn)練之后,論文使用從相同原始預(yù)訓(xùn)練語(yǔ)料庫(kù)中提取的50B高質(zhì)量token繼續(xù)預(yù)訓(xùn)練Arctic-SnowCoder-alpha。這50B高質(zhì)量token是通過將12.5B個(gè)由論文的代碼質(zhì)量注釋器評(píng)分的前百分位代碼文件token重復(fù)4次形成的。
受FineWeb-Edu和DCLM的啟發(fā),論文在基于BERT的先進(jìn)嵌入模型Snowflake-arctic-embed-m之上訓(xùn)練了一個(gè)線性分類頭。訓(xùn)練數(shù)據(jù)包括30萬個(gè)正樣本,采樣自22萬個(gè)高質(zhì)量開源代碼文件、8萬個(gè)來自Magicoder和StarCoder2-Instruct的高質(zhì)量指令數(shù)據(jù),以及從預(yù)訓(xùn)練語(yǔ)料庫(kù)中隨機(jī)選擇的300個(gè)代碼文檔。
關(guān)于代碼質(zhì)量的先前研究,如Phi-1,往往過分強(qiáng)調(diào)代碼的“教育價(jià)值”,使模型偏向于像HumanEva這樣的簡(jiǎn)單基準(zhǔn)。論文展示了論文的注釋方法能夠帶來更平衡的模型能力提升。
此外,鑒于這些代碼文檔通常超過1000個(gè)token,超過了BERT的512個(gè)token的上下文窗口大小,論文改進(jìn)了FineWeb-Edu的流程,通過平均質(zhì)量注釋器產(chǎn)生的頂部、中部和底部部分的分?jǐn)?shù)來計(jì)算每個(gè)文件的分?jǐn)?shù)。在此階段,論文從0到最大預(yù)訓(xùn)練學(xué)習(xí)率5.3x 10^{-4}進(jìn)行1000次迭代的學(xué)習(xí)率預(yù)熱,隨后進(jìn)行線性衰減至0。此階段生成的模型稱為Arctic-SnowCoder-beta。
2.2.4 使用合成數(shù)據(jù)增強(qiáng)預(yù)訓(xùn)練
在增強(qiáng)預(yù)訓(xùn)練階段,論文利用Llama-3.1-70B-Instruct 生成比持續(xù)預(yù)訓(xùn)練階段更高質(zhì)量的數(shù)據(jù),并將Python混合比例提高到約50%,同時(shí)保持其他語(yǔ)言的比例不變。Phi-1 [13]表明,類似教科書的合成預(yù)訓(xùn)練數(shù)據(jù)可以顯著提升模型性能。
然而,過度依賴此類數(shù)據(jù)可能會(huì)導(dǎo)致模型分布偏斜,從而可能損害其在實(shí)際編碼任務(wù)中的有效性。例如,論文后面展示的,Phi-1.5在HumanEvalt和MBPP+上表現(xiàn)出色,這些任務(wù)類似于教科書練習(xí),但在BigCodeBench [46]中更復(fù)雜和實(shí)用的編碼任務(wù)上表現(xiàn)較差。為了解決這個(gè)問題,論文改編了Magicoder的OSS-Instruct方法用于預(yù)訓(xùn)練。最初,OSS-Instruct旨在通過提示模型創(chuàng)建受開源代碼片段啟發(fā)的問答對(duì)來生成現(xiàn)實(shí)的指令調(diào)優(yōu)數(shù)據(jù)。
相比之下,論文通過使用Llama-3.1-70B-Instruct生成高質(zhì)量和面向問題解決的代碼文件來生成高質(zhì)量的合成預(yù)訓(xùn)練數(shù)據(jù),這些代碼文件以持續(xù)預(yù)訓(xùn)練階段中評(píng)分最高的代碼文檔為種子。后面論文展示了每個(gè)預(yù)訓(xùn)練階段都顯著優(yōu)于前一個(gè)階段,突顯了逐步提高數(shù)據(jù)質(zhì)量的有效性。
2.3 論文的效果
這里論文將Arctic-SnowCoder與最先進(jìn)的小型語(yǔ)言模型進(jìn)行比較,并展示了每個(gè)預(yù)訓(xùn)練階段的性能提升,評(píng)估了兩種形成通用預(yù)訓(xùn)練中倉(cāng)庫(kù)級(jí)別數(shù)據(jù)的策略,并對(duì)持續(xù)預(yù)訓(xùn)練中的設(shè)計(jì)選擇進(jìn)行了詳細(xì)的消融分析。
2.3.1 實(shí)驗(yàn)設(shè)置
論文考慮以下四個(gè)多樣化的編程基準(zhǔn),以全面評(píng)估不同代碼模型的代碼生成能力:
?HumanEval+和MBPP+ 。HumanEval和MBPP是用于函數(shù)級(jí)代碼生成的兩個(gè)最廣泛使用的基準(zhǔn)。論文采用了EvalPlus增強(qiáng)的版本,提供了80倍/35倍的更多測(cè)試用例以進(jìn)行嚴(yán)格評(píng)估。HumanEvalt和MBPP+分別包含164和378個(gè)編碼問題。
?EvoEval 是一個(gè)程序合成基準(zhǔn)測(cè)試套件,通過將現(xiàn)有基準(zhǔn)測(cè)試演化為不同的目標(biāo)領(lǐng)域而創(chuàng)建。論文采用了其五個(gè)默認(rèn)的轉(zhuǎn)換類別,即困難、創(chuàng)造性、微妙、組合和工具使用,總計(jì)500個(gè)任務(wù)。
?BigCodeBench 通過實(shí)際且具有挑戰(zhàn)性的編程任務(wù)評(píng)估語(yǔ)言模型。它包含1140個(gè)編程任務(wù),每個(gè)任務(wù)都是通過人類與語(yǔ)言模型的協(xié)作創(chuàng)建的,任務(wù)質(zhì)量由人類專家保證。
2.3.2 基線比較與三階段預(yù)訓(xùn)練的有效性
表 2 :將Arctic-SnowCoder與最先進(jìn)的小型語(yǔ)言模型 ( \mathrm{< 3 B} ) 進(jìn)行比較,按訓(xùn)練計(jì)算量 > 1T 標(biāo)記進(jìn)行劃分。Arctic-SnowCoder-alpha和Arctic-SnowCoder-beta分別是通用預(yù)訓(xùn)練和繼續(xù)使用高質(zhì)量數(shù)據(jù)預(yù)訓(xùn)練后的檢查點(diǎn)。Arctic-SnowCoder是使用合成數(shù)據(jù)增強(qiáng)預(yù)訓(xùn)練后的最終檢查點(diǎn)。
表2展示了多種小型語(yǔ)言模型(參數(shù)少于3B)在多個(gè)編碼基準(zhǔn)上的綜合比較,按其訓(xùn)練計(jì)算是否超過1T tokens進(jìn)行分類。值得注意的是,Arctic-SnowCoder表現(xiàn)出色,特別是在其有限的訓(xùn)練數(shù)據(jù)下。Arctic-SnowCoder-1.3B在BigCodeBench上達(dá)到了與訓(xùn)練數(shù)據(jù)不超過1T token的同類模型相比的最新性能,顯著優(yōu)于StarCoderBase-3B、SmolLM-1.7B和Phi-1.5-1.3B。特別是,盡管Phi-1.5-1.3B在“教科書式”基準(zhǔn)測(cè)試如HumanEval+、MBPP+和EvoEval上具有優(yōu)勢(shì),但Arctic-SnowCoder-1.3B在更復(fù)雜和實(shí)用的Big-CodeBench上以36%的優(yōu)勢(shì)超越了Phi-1.5-1.3B。
此外,Arctic-SnowCoder-1.3B在所有評(píng)估基準(zhǔn)上均擊敗了StarCoderBase-3B,后者是StarCoder2-3B的前身,訓(xùn)練數(shù)據(jù)為1T tokens。盡管僅訓(xùn)練了555B tokens,Arctic-SnowCoder-1.3B在HumanEvalt上與經(jīng)過更廣泛訓(xùn)練的模型如StarCoder2-3B、StableCode-3B、CodeGemma-2B-v1.0和Qwen1.5-1.8B相媲美甚至超越。在EvoEval和BigCodeBench上,Arctic-SnowCoder仍然具有競(jìng)爭(zhēng)力。
此外,該表還突顯了Arctic-SnowCoder在其訓(xùn)練階段的持續(xù)改進(jìn):Arctic-SnowCoder-alpha、Arctic-SnowCoder-beta和最終的Arctic-SnowCoder。每個(gè)階段都建立在前一階段的基礎(chǔ)上,Arctic-SnowCoder在所有基準(zhǔn)測(cè)試中均取得了最高分?jǐn)?shù)。這種穩(wěn)步提升強(qiáng)調(diào)了高質(zhì)量和合成數(shù)據(jù)在最終階段的關(guān)鍵作用。盡管從相同的數(shù)據(jù)開始,Arctic-SnowCoder的每次迭代都縮小了與最先進(jìn)模型的差距,展示了整體訓(xùn)練方法的有效性。
2.3.3 通用預(yù)訓(xùn)練中的倉(cāng)庫(kù)級(jí)數(shù)據(jù)
在通用預(yù)訓(xùn)練階段,論文采用了StarCoder2的方法,通過隨機(jī)拼接文件內(nèi)容將文件級(jí)數(shù)據(jù)隨機(jī)分組到倉(cāng)庫(kù)中。在表3中,論文研究了兩種方法:(1)僅按倉(cāng)庫(kù)名稱對(duì)文件進(jìn)行分組,這意味著每個(gè)訓(xùn)練文檔可以是多語(yǔ)言代碼文件的混合,如果倉(cāng)庫(kù)是用不同語(yǔ)言編寫的;(2)在將文件分組到倉(cāng)庫(kù)之前,先按編程語(yǔ)言對(duì)文件進(jìn)行分區(qū),這意味著每個(gè)訓(xùn)練文檔僅關(guān)注一種單一語(yǔ)言。
表3:兩種預(yù)訓(xùn)練方法對(duì)倉(cāng)庫(kù)級(jí)別數(shù)據(jù)分組的比較。(1)“按倉(cāng)庫(kù)分組”將每個(gè)倉(cāng)庫(kù)視為一個(gè)可能混合多種語(yǔ)言的單一訓(xùn)練單元,以及(2)“按語(yǔ)言和倉(cāng)庫(kù)分組”在按倉(cāng)庫(kù)分組之前先按編程語(yǔ)言對(duì)數(shù)據(jù)進(jìn)行分區(qū)。
論文可以觀察到,第二種方法,即論文在一般預(yù)訓(xùn)練中最終采用的方法,明顯優(yōu)于第一種方法。
2.3.4繼續(xù)預(yù)訓(xùn)練中的設(shè)計(jì)選擇
在繼續(xù)預(yù)訓(xùn)練中,論文從預(yù)訓(xùn)練語(yǔ)料庫(kù)中提取高質(zhì)量的token,并訓(xùn)練一個(gè)改進(jìn)的基礎(chǔ)模型。為了獲得高質(zhì)量的token,論文采用了基于模型的質(zhì)量標(biāo)注器。在本節(jié)中,論文實(shí)驗(yàn)了各種設(shè)計(jì)選擇,包括標(biāo)注器的訓(xùn)練數(shù)據(jù)、繼續(xù)預(yù)訓(xùn)練中使用的學(xué)習(xí)率以及高質(zhì)量token的最佳重復(fù)次數(shù)。
基于模型的質(zhì)量標(biāo)注器 類似于FineWeb-Edu ,論文在Snowf lake-arctic-embed-m嵌入模型之上訓(xùn)練一個(gè)線性頭來為每個(gè)代碼文件評(píng)分。在表4中,論文實(shí)驗(yàn)了4種變體:
?ANN-EDU:論文提示Mixtral-8x7B-Instruct標(biāo)注每個(gè)代碼文件的教育價(jià)值(1到5)。使用400k標(biāo)注數(shù)據(jù)訓(xùn)練一個(gè)線性回歸頭。對(duì)于以下變體,類似于DCLM ,論文隨機(jī)采樣負(fù)文檔并僅更改正部分。使用線性分類頭。
?ANN-INs:正樣本是來自ANN-EDU的100k教育數(shù)據(jù)(3.5+)和來自Magicoder [41]和StarCoder2-Instruct [40]的100k高質(zhì)量指令數(shù)據(jù)的混合。
?ANN-HQ: 正樣本為220k開源、合成、高質(zhì)量代碼文件。
?ANN-HQINs: 正樣本為220k ANN-HQ訓(xùn)練數(shù)據(jù)與80k來自Magicoder[41]和StarCoder2-Instruct[40]的指令數(shù)據(jù)的混合。
表4: 通過應(yīng)用基于模型的質(zhì)量標(biāo)注器(使用不同配方訓(xùn)練)進(jìn)行10B繼續(xù)預(yù)訓(xùn)練的下游性能比較
訓(xùn)練標(biāo)注器后,論文首先將每個(gè)標(biāo)注器應(yīng)用于整個(gè)預(yù)訓(xùn)練語(yǔ)料庫(kù),為每個(gè)文件獲取一個(gè)分?jǐn)?shù)。與僅掃描前2k字符的FineWeb-Edu不同,論文掃描代碼文件的頂部、中部和底部部分,并平均這些分?jǐn)?shù)。然后,論文根據(jù)這些分?jǐn)?shù)按語(yǔ)言對(duì)代碼文件進(jìn)行排名,并選擇前百分位的文檔,直到達(dá)到大約10 B token。論文保持與預(yù)訓(xùn)練中使用的相同混合比例。表中顯示,結(jié)合高質(zhì)量文件和指令數(shù)據(jù)的ANN-HQINS實(shí)現(xiàn)了最佳的下游性能。
論文在圖2中進(jìn)行了額外的分析。對(duì)于每個(gè)標(biāo)注者,論文創(chuàng)建了一個(gè)驗(yàn)證數(shù)據(jù)集,其中正樣本來自代碼解決方案基準(zhǔn),負(fù)樣本來自訓(xùn)練期間未見過的隨機(jī)預(yù)訓(xùn)練數(shù)據(jù)。論文使用ROC-AUC [6](受試者工作特征曲線下面積)分?jǐn)?shù)來評(píng)估標(biāo)注者在基準(zhǔn)數(shù)據(jù)排名中的表現(xiàn)。該圖展示了每個(gè)基準(zhǔn)的ROC-AUC分?jǐn)?shù)與基準(zhǔn)通過率之間的相關(guān)性。幾乎一致的趨勢(shì)是:較高的ROC-AUC分?jǐn)?shù)導(dǎo)致更好的基準(zhǔn)性能。良好的ROC-AUC分?jǐn)?shù)表明標(biāo)注者有效地塑造了下游任務(wù)的分布。因此,高質(zhì)量的關(guān)鍵在于與下游應(yīng)用分布的對(duì)齊。
圖2:注釋者ROC-AUC評(píng)分與基準(zhǔn)測(cè)試pass@1之間的相關(guān)性。
學(xué)習(xí)率調(diào)度 論文還在表5中研究了不同的學(xué)習(xí)率調(diào)度策略,包括(1)從最小預(yù)訓(xùn)練學(xué)習(xí)率線性退火至零,(2)使用最小預(yù)訓(xùn)練學(xué)習(xí)率的恒定調(diào)度,以及(3)重新預(yù)熱至最大預(yù)訓(xùn)練學(xué)習(xí)率后線性衰減至零。根據(jù)經(jīng)驗(yàn),論文發(fā)現(xiàn)重新預(yù)熱方法表現(xiàn)最佳,并在所有其他關(guān)于繼續(xù)預(yù)訓(xùn)練的實(shí)驗(yàn)中一致使用。
高質(zhì)量數(shù)據(jù)重復(fù)次數(shù) 最后,論文將預(yù)訓(xùn)練的token范圍從10 B擴(kuò)展到50 B。剩下的一個(gè)問題是如何確定高質(zhì)量token的最佳重復(fù)次數(shù)。論文通過選擇由ANN-HQINS排名的前百分位token進(jìn)行實(shí)驗(yàn),重復(fù)次數(shù)從1到5,如表6所示。在這種情況下,前百分位token是最高質(zhì)量的token。例如,1 x 50B表示前50B token的一次重復(fù),而4 X12.5B表示前12.5B token的四次重復(fù),確保所選token的質(zhì)量最佳。
根據(jù)表中的結(jié)果,重復(fù)高質(zhì)量token四次(4 x 12.5B)在下游多個(gè)評(píng)估指標(biāo)中任務(wù)中表現(xiàn)最佳,四次重復(fù)(4 x 12.5B)在HumanEval和EvoEval中得分最高。兩次重復(fù)( 2 X25.0B )和三次重復(fù)( 3 X16.7B )也表現(xiàn)出強(qiáng)勁的性能,特別是在mbpp中。五次重復(fù)( 5 x10.0B )在MBPP中得分最高,但在總體指標(biāo)上未超過四次重復(fù)。一次重復(fù)( 1 x50.0B )與多次重復(fù)相比,改進(jìn)最小。
表6:使用ANN-HQINS在50B繼續(xù)預(yù)訓(xùn)練中不同高質(zhì)量數(shù)據(jù)重復(fù)次數(shù)的下游性能。
本文轉(zhuǎn)載自 ??AI帝國(guó)??,作者: 無影寺
