Karpathy點贊,這份報告教你如何用 LLaMa 3建立高質量網路資料集

机器之心發表於2024-06-04
眾所周知,對於 Llama3、GPT-4 或 Mixtral 等高效能大語言模型來說,構建高質量的網路規模資料集是非常重要的。然而,即使是最先進的開源 LLM 的預訓練資料集也不公開,人們對其建立過程知之甚少。
最近,AI 大牛 Andrej Karpathy 推薦了一項名為 FineWeb-Edu 的工作。

圖片

這項工作將原始 15 萬億個 FineWeb token,經 Llama 3 70B 評判,過濾為 1.3 萬億個高質量(教科級)token。

事實證明,LLM 從教育內容中學習會更好更快。部分原因是普通的網際網路爬取文章的價值不是很高,並且會分散訓練的注意力,包含太多不相關的資訊。

網際網路上的網頁是如此隨機和糟糕,這些奇怪的資料轉儲、廣告垃圾郵件、數兆位元組的股票行情更新等等,裡面混雜著「鑽石」(重要內容),那麼挑戰就是把「鑽石」挑出來。

預訓練資料集對於微調可能非常有用,因為當你將模型微調到特定領域時,就會慢慢失去一般能力。模型開始慢慢忘記目標域之外的事物。並且這不僅限於知識,模型還會失去原始資料所需的一般「思維」技能。也就是說,除了廣泛的知識消失之外,計算電路也會慢慢退化。

FineWeb 是什麼?

FineWeb 是一個用於 LLM 預訓練的全新大規模資料集(15 萬億 token,44TB 磁碟空間)。該資料集源自 96 個 CommonCrawl 快照,與其他開放的預訓練資料集相比,它能生成效能更好的 LLM。為了提高機器學習的清晰度,推進對如何訓練高質量大型語言模型的公開理解,團隊記錄並刪除了 FineWeb 中使用的所有設計選擇,包括對重複資料刪除和過濾策略的深入研究。

圖片

資料集獲取地址:https://huggingface.co/datasets/HuggingFaceFW/fineweb

在上述資料集的基礎上,團隊推出了 FineWeb-Edu,它是 FineWeb 的一個子集,利用可擴充套件的自動化高質量註釋來實現教育價值。在一些教育基準(如 MMLU、ARC 和 OpenBookQA)上,FineWeb-Edu 優於所有可公開訪問的網路資料集。FineWeb-Edu 有兩種大小 / 過濾級別:1.3 萬億(特高階教育內容)和 5.4 萬億(高階教育內容)token(所有 token 均使用 GPT2 tokenizer)。

圖片

資料集獲取地址:https://huggingface.co/datasets/HuggingFaceFW/fineweb-edu

這兩個資料集均根據許可的 ODC-By 1.0 協議釋出。

在對應的長篇報告中,團隊深入探討了如何建立一個用於 LLM 預訓練的大型高質量網路規模資料集,並討論了大規模資料質量的處理和評估、FineWeb 配方(列出並解釋了所有的設計選擇)以及建立 FineWeb-Edu 子集的過程。

大規模資料質量的處理和評估

關於用於訓練 LLM 的網路資料集,一個常見問題是:他們從哪裡獲得這些資料?

通常有兩種選擇:

  • 自己抓取,如 OpenAI 或 Anthropic 等公司;
  • 使用抓取網頁的公共資源庫,如非營利組織 CommonCrawl 維護的資源庫。

為了構建 FineWeb,團隊沿用了一些 LLM 訓練團隊過去的做法,比如將 CommonCrawl(CC)作為起點。Common Crawl 非營利組織自 2007 年以來一直在抓取網頁,通常每 1 到 2 個月釋出一次新的抓取,包含 200 到 400 TiB 透過自動網路抓取獲得的文字內容。

例如,最新的 CC 抓取(2024 年 4 月)包含 27 億個網頁,總計 386 TiB 的未壓縮 HTML 文字內容。自 2013 年以來已釋出了 96 次抓取,2008 年至 2012 年釋出了 3 次抓取,採用的是不同(較舊)的格式。

接下來是評估問題。在大多數情況下,尤其是在大語言模型預訓練的情況下,「高質量」並不是一個定義明確的術語,甚至不是一個僅透過人類直接觀察就能清楚感知的文件屬性。

在一個被認為「乾淨」的特定語料庫(通常是維基百科)上訓練一個模型,並用它來檢查試圖整理的資料集的易錯性,這仍然是很常見的做法。遺憾的是,這並不總能提高下游相關任務的效能,因此,另一種常用的方法是在資料集的代表性子集上訓練小型模型,並在一組評估任務上對其進行評估。之所以使用小型模型,是因為訓練成本和時間是模型大小的函式。在第二種方法中,重要的是要選擇一組多樣化且具有代表性的資料集 - 評估任務,儘量不要過度擬合任何一個單獨的基準,因為這有可能損害預訓練後獲得的 LLM 的通用性。

在這項工作中,團隊採用了訓練小模型並在一組「early-signal」基準任務上對其進行評估的方法。考慮到上述關於評估基準過度擬合的注意事項,這可以合理地代表用於訓練這些模型的資料的質量。

最終,團隊選擇了以下幾個基準:

  • CommonSense QA
  • HellaSwag
  • OpenBook QA
  • PIQA
  • SIQA
  • WinoGrande
  • ARC
  • MMLU

FineWeb 資料處理

CommonCrawl 資料有兩種主要格式:WARC 和 WET。WARC(Web ARChive 格式)檔案包含爬取網頁的原始資料,包括完整頁面 HTML 和請求後設資料。WET(WARC 封裝文字)檔案提供這些網站的純文字版本。

大量資料集以 WET 檔案為起點。但作者認為:Common Crawl 建立這些 WET 檔案的預設文字提取對於 LLM 預訓練來說並不是最佳選擇,有多種開源庫可以提供更好的文字提取。作者團隊使用 trafilatura 庫從 WARC 檔案中提取文字內容,從結果來看,它提供了良好的提取質量。

基礎過濾

過濾是資料審編(curation)過程的重要組成部分。它包括刪除部分資料(單詞、文字行,甚至完整文件),這些資料會降低模型的效能,因此在作者團隊評估驅動的資料集製作過程中被視為「質量較低」的資料。

作為過濾的基礎,作者使用了 RefinedWeb 的部分設定,包括:

  • 應用 URL 過濾;
  • 應用 fastText 語言分類器,僅保留分數≥0.65 的英文文字;
  • 應用來自 MassiveText 的質量和重複過濾器(使用預設閾值)。

作者團隊將這種過濾應用於每個文字提取的轉儲(目前有 96 個轉儲)後,獲得了大約 36 萬億個 token 的資料。

重複資料刪除

重複資料刪除是為 LLM 預訓練建立大型 Web 資料集的最重要步驟之一,旨在從資料集中識別並刪除冗餘 / 重複的資料。

重複資料刪除能夠改進模型效能,並使模型更好地泛化。透過重複資料刪除獲得的效能提升可以等同於訓練效率的提升,因為透過刪除重複的內容,模型可以透過更少的訓練迭代達到相同的效能水平,或者等效地,對於給定數量的訓練 token,模型將看到更加多樣化的資料。

經過上述幾個步驟,作者團隊已經實現了類似於 RefinedWeb 的資料效能,但是與 C4(Colossal Clean Crawled Corpus)資料集相比還是遜色一些。

因此,作者團隊從 C4 資料集本身的處理過程開始,探索了更多過濾步驟,旨在達到並超越 C4 的效能。

最終的 FineWeb 資料集包含 15T token,主要按順序經歷如下步驟:

  • 基礎過濾
  • 每個轉儲獨立的 MinHash 重複資料刪除
  • 精選 C4 過濾器
  • 自定義過濾器

圖片

FineWeb-Edu 子集

圖片

FineWeb-Edu 子集基於最近出現的一種過濾 LLM 訓練資料集的新方法:使用合成資料來開發識別教育內容的分類器。

這項技術在 Llama 3 和 Phi3 的訓練中得到了顯著應用,但它對網路資料過濾的大規模影響迄今為止尚未得到充分的公開發掘。

Phi3 模型分別在 3.3 萬億和 4.8 萬億個 token 上進行了訓練,論文中指出:

我們的訓練資料包括經過嚴格過濾的公開網路資料(根據「教育程度」),這些資料來自各種開放的網際網路資源,以及 LLM 生成的合成資料。


同樣,Llama 3 部落格文章也指出:

我們發現,前幾代 Llama 擅長識別高質量資料,因此我們使用 Llama 2 來幫助構建文字質量分類器,為 Llama 3 提供動力。


然而,這些分類器和過濾後的資料集並未公開。團隊為了進一步提高 FineWeb 的質量,利用 Llama-3-70B-Instruct 生成的註釋開發了一個教育質量分類器,建立了 FineWeb-Edu。

團隊使用 Llama-3-70B-Instruct 對來自 FineWeb 的 500k 個樣本進行了註釋,按照 0 到 5 的評分標準對每個樣本的教育質量進行評分。圖片 用於 Llama-3 教育分數註釋的提示。
關於用於標註資料的開放權重模型,團隊嘗試了多種模型,包括 Mixtral-8x7B-Instruct 和 Mixtral-8x22B-Instruct、Llama-3-70B-Instruct 以及一個收集了這三種模型分數的評審團。在實驗中,他們發現僅使用 Llama3 得出的結果最為可靠。

為了將註釋擴充套件到 FineWeb 中的數萬億詞條,團隊使用 Llama3-70B 註釋來訓練一個小型分類器。他們使用了「Snowflake-arctic-embed」模型,該模型帶有一個分類頭,上面有一個迴歸輸出,然後在 450000 個 Llama 3 註釋上對該模型進行了 20 次訓練,凍結嵌入層和編碼器層。此處將 「Llama 3」註釋視為 ground-truth,儲存了在 45k 個樣本的保留驗證集上 F1 分數最高的檢查點。訓練結束後,將分數四捨五入為 0 至 5 的整數。

然後,團隊將問題轉換為二元分類任務,使用固定閾值來確定檔案是否具有教育意義。閾值為 3 時,模型在驗證集上的 F1 得分為 82%,這表明它在區分高質量教育內容方面表現出色。

最後,團隊進行了消融研究。以下是主要亮點:

  • FineWeb-Edu 超越了 FineWeb 和所有其他開放網路資料集,在教育基準(如 MMLU、ARC 和 OpenBookQA)方面取得了顯著改進。
  • 與 C4 和 Dolma 相比,它需要的 token 數量減少了 10 倍,才能與 MMLU 的結果相媲美。
  • 這證明了使用在 LLM 註釋上訓練的分類器進行大規模資料過濾的有效性。

圖片

圖片

相關文章