Karpathy 點贊,這份報告教你如何用 LLaMa 3 創建高質量網絡數據集
眾所周知,對于 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 注釋上訓練的分類器進行大規模數據過濾的有效性。