資料去重
3 秒看懂
資料去重(Data Deduplication)是大型模型訓練的核心預處理工序,通過識別並剔除語料中重複或高度相似的文本樣本,降低模型記憶冗餘、緩解隱私洩露風險、減少訓練 FLOPs 消耗,並提升泛化能力。它不是簡單的精確字串匹配,而是一套涵蓋雜湊、區域性敏感雜湊(SimHash/MinHash)、字尾陣列、嵌入聚類等方法的工程系統,直接左右千億 Token 級資料集的淨質量。
3 分鐘產業解釋
在訓練 GPT‑4、Llama 3 等大語言模型時,網際網路爬取的原始語料(如 Common Crawl)中,近重複文件比例可高達數十個百分點。這些重複來源於模板生成的內容、映象網站、版權宣告、多次轉載的新聞等。若不經去重直接訓練,模型會反覆“背誦”冗餘片段,導致:
- 記憶化加劇:模型對高頻片段產生逐字記憶,測試時洩露訓練資料,引發隱私與版權爭議。
- 有效資料規模虛高:看似龐大的資料集實際資訊增量有限,增加訓練成本卻未帶來對應能力提升。
- 評估失真:訓練集與測試集之間的重複會導致基準分數虛高,誤判模型真實水平。
產業實踐中,去重已從早期的“相同文本刪除”演進為多層次流水線:先用語言無關的雜湊方法(如 MinHash)快速標記候選重複對,再通過精確比對或字尾陣列確認邊界,最後結合模型語義去重(如基於嵌入的聚類)。當前主流訓練架構(Meta 的 Llama 3、Mistral、Falcon 等)公開的預處理流程均將去重作為必選項,相關開源工具(如 datatrove、text-dedup、CCNet 管道)已成為 LLM 基礎設施的重要組成部分。
15 分鐘專家深入
去重的定義不止於“刪除”
嚴格意義上,資料去重在大型模型語境中特指從訓練語料中移除整篇重複文件或高度重疊的段落,使保留的每個樣本對模型引數更新的邊際資訊貢獻最大化。與儲存系統中的塊級去重不同,這裡的操作物件是非結構化自然語言序列,衡量標準是文件級或段落級的語義/字面相似度,而非位元組級指紋。
去重決策直接影響模型四條生命線
- 泛化:相同或極相似樣本在多個 epoch 中出現,會讓模型喪失從相似但不同樣本中抽象規則的能力,等價於變相減少訓練資料多樣性。
- 記憶化:大量實驗顯示,重複樣本數每增加一個數量級,模型逐字記憶該片段的機率顯著上升([基於公開論文的定性結論])。這對醫療、程式碼等敏感領域尤為危險。
- 效率:去重可削減數十分之一的語料量但不明顯犧牲下游效能。例如,某些公開方案(如 RefinedWeb)通過激進去重,僅保留約 2.5% 的原始文本(從約 200T tokens 中提取約 5T tokens),卻訓練出效能不降的模型。
- 評估可信度:MMLU、HellaSwag 等基準若被汙染,會製造“虛假 SOTA”。去重後的資料集需配合 n‑gram 重疊檢測排除訓練集與測試集的重複。
常見流水線拓撲
Raw crawl → Language filter → MinHash dedup (inter‑doc)
→ Exact substring dedup (inter‑doc) → Fuzzy dedup (e.g., SimHash)
→ Heuristic filtering → Final dataset
每一層解決不同的重複粒度:MinHash 高效召回 Jaccard 相似度高的文件對;精確子串去重用字尾陣列移除跨文件的複製貼上段落;SimHash 對短文本模糊去重;最後結合模型嵌入的聚類去重可捕獲改寫或翻譯後的語義重複,但計算成本高、閾值敏感。
產業痛點
- 閾值調優非黑即白:Jaccard 閾值選 0.8 還是 0.9 對召回量和質量影響巨大,需針對下游任務反覆實驗,目前尚缺統一標準。
- 多語言場景:不同語言的語法結構導致固定 n‑gram 特徵的 minhash 效果差異明顯,阿拉伯語、中文等需要定製分詞或使用字元級 shingles。
- 長尾文件丟失:過度去重易誤刪長尾事實(如小眾維基條目僅被少量映象),削弱模型知識邊界。
技術原理
1. 核心數學構件
資料去重本質是將文件對映到可比較空間中,尋找高相似度對。最關鍵的相似度度量是 Jaccard 相似度:兩個集合的交集大小除以並集大小。對於文件,集合可以是一組 n‑gram 片段(shingles)。
MinHash
MinHash 是估計 Jaccard 相似度的有效演算法。步驟:
- 將文件轉換成 k‑shingle 集合(如字元 5‑grams)。
- 使用多個獨立雜湊函式,對每個文件計算雜湊值最小的簽名(每個函式產生一個簽名值)。
- 兩個文件 MinHash 簽名相等比例近似等於其 Jaccard 相似度。
- 利用 LSH(Local Sensitive Hashing)將簽名分桶,只有落入相同桶的文件才進行精確相似度計算,複雜度大幅降低。
虛擬碼:
for doc in docs:
shingles = extract_shingles(doc, k)
for i in range(num_hashes):
minhash[i] = min(h_i(s) for s in shingles)
store(doc.id, minhash)
LSH 通過將簽名陣列切分為多個 band,每個 band 內雜湊至桶,當文件 pair 在任意 band 上簽名完全一致時視為候選對。
SimHash
SimHash 用於餘弦相似度或漢明距離下的近重複檢測。核心是超平面的隨機投影:
- 對文件的每個特徵(如詞項)雜湊到固定長度二進位制向量,特徵權重決定向量方向。
- 按加權求和方式聚合,得到該文件的 SimHash 指紋。
- 兩個文件的 SimHash 漢明距離反比於原文件的餘弦相似度。
在去重中,通常結合布隆過濾器或 B‑tree 查詢海明距離≤k 的所有對。
字尾陣列 (Suffix Array) 與 精確子串去重
建置整個語料的廣義字尾陣列(或將多文件拼接),可在 O(N log N) 內找出所有重複公共子串。具體:
- 將所有文件拼接,中間用唯一分隔符隔開,建置字尾陣列和 LCP 陣列。
- LCP ≥ 某閾值(如 50 tokens)表明在這些字尾起始位置,不同文件間存在至少 50 tokens 的完全相同片段。
- 去除其中一份文件或基於規則保留一份。
這種方法對完全一致的複製貼上片段非常精準,主要服務於去重流水線的“精確去重”階段。
模型嵌入聚類(語義去重)
用預訓練句子嵌入(如 all‑mpnet‑base)對文件或段落編碼,再使用 k‑Means 或近似最近鄰(FAISS)查詢嵌入空間中高度聚集的樣本,設定餘弦相似度閾值(如 0.95)去重。優點是可發現改寫、翻譯等非字面重複,缺點是計算昂貴、閾值依賴模型選擇。
2. 並行與擴充套件挑戰
面對數百 TB 級語料,去重必須分散式執行。常見策略:
- MapReduce 模式:MinHash 階段 Map 計算簽名,Reduce 將相同 LSH 桶文件傳送到同一節點進行精確比對。Spark/Databricks 上經典實現。
- 流式架構:CCNet 的流水線採用分片排序與合併,將 MinHash 簽名分桶後直接寫磁碟,然後獨立進行每個桶的精匹配,可橫向擴充套件至數千節點。
- Bloom Filter 全域性去重:當只需要判斷某文件是否與全球已知語料集重複時,可預計算現有語料的海量 SimHash 並存入分散式 Bloom Filter,用極低記憶體實現裁決,缺陷是存在誤判率。
3. 去重粒度與效果關係
| 粒度 | 方法 | 優點 | 缺點 | 代表性工具/論文 |
|---|---|---|---|---|
| 文件級 | MinHash + LSH | 速度快,發現成段改寫 | 短文件誤報率高 | CCNet, datatrove |
| 子串級 | 字尾陣列 | 精確揪出複製貼上片段 | 僅限字面重複,語序顛倒無效 | Dedupac (Lee et al.) |
| 句子級 | SimHash + 漢明距離 | 召回高頻模板句 | 中文等閾值調優複雜 | text-dedup, RefinedWeb |
| 語義級 | 嵌入聚類 | 跨語言/改寫 | 計算成本極高,閾值敏感 | SemDeDup (CC) |
任何流水線都會組合多種粒度,以期平衡去重率和資訊儲存。
技術演進史
第一階段 (2015‑2019):簡單正則與雜湊
早期 NLP 任務(如機器翻譯)使用 MD5/SHA1 對完整文件去重,刪除完全相同的檔案,僅能處理位元組級重複。
第二階段 (2020):近似去重紙上提出
隨著 C4、OSCAR 等大規模資料集的出現,研究者開始引入 MinHash 和 LSH。Google 的 C4 資料集論文使用了 MinHash 來減少 Common Crawl 的冗餘。
第三階段 (2021‑2022):去重與模型效能的因果關聯確立
Katherine Lee 等人的《Deduplicating Training Data Makes Language Models Better》首次系統驗證:僅僅在 C4 上使用 MinHash 去重,就可以使 1.5B 引數的 LM 在多個下游任務上的困惑度降低,且訓練出更快的收斂。同期,字尾陣列被引入去重子串,進一步壓下記憶化。
第四階段 (2023 至今):多層次流水線與工業化
LLaMA、Falcon、Mistral 等開源模型的訓練洩露的技術報告揭示,他們的資料管道普遍採用“粗去重 → 精去重 → 啟發式過濾”的多級架構。工具棧如 datatrove、text-dedup、CommonCrawl 官方的 CCNet 管道成為開源標準。語義去重和可擴充套件分散式實現成為前沿熱點。
技術路線對比
| 路線 | 代表方法 | 檢測粒度 | 複雜度 | 典型應用 | 混淆文本適應性 | 供應鏈成熟度 |
|---|---|---|---|---|---|---|
| 雜湊精確匹配 | SHA/MD5, 布隆過濾器 | 文件級 | 極低 | 完全複製檢測 | 無 | 高 |
| 近重複簽名 | MinHash+LSH | 文件/段落 | 中 | 大規模網際網路語料初去重 | 低 | 極高(CCNet, Spark庫) |
| 海明距離指紋 | SimHash | 句子級 | 低 | 模板依賴去重 | 低 | 高(Google經典) |
| 字尾陣列子串 | 廣義字尾陣列 | 子串精確匹配 | 中高 | 長篇精準去重 | 低 | 中(實現複雜) |
| 嵌入語義去重 | Sentence-BERT + FAISS | 段落語義 | 極高 | 改寫/多語言去重 | 高 | 低(閾值難定) |
| 注:混淆文本適應性指能發現轉述、翻譯等非字面重複的能力。所有方法都可結合,共同築成資料清洗的防火牆。 |
上下游
上游
- 原始資料來源:Common Crawl、新聞網站、書籍、程式碼倉庫(GitHub)、學術論文。網頁爬蟲的質量決定去重的起始難度。
- 語言識別與過濾:langdetect、fastText 語言分類器在上游篩選語種,避免無效計算。
- HTML 解析與文本提取:trafilatura、readability、jusText 等工具提取正文,去除導航欄、廣告等噪聲,該步驟直接影響 shingling 質量。
下游
- 資料配比與取樣:去重後的資料集若某種類別的重複率被清除,可能導致各領域佔比改變(如新聞類大幅減少),需要通過取樣重新平衡。
- Tokenizer 訓練:去重直接影響 tokenizer 的詞頻統計,進而改變 BPE 合併順序。去重不足會導致 tokenizer 偏向高頻模板。
- 模型訓練:最終影響訓練 FLOPs、收斂速度、模型記憶化程度和基準測試分數。
關鍵指標
- 重複文件比例 (Dedup Ratio):去除的文件數 / 原始文件總數。高比例可能同時大幅縮小資料集,需監測下游效能變化。
- Jaccard 閾值:決定 MinHash 召回粒度,常見範圍 0.5‑0.9,閾值越低越激進,能去掉更多改寫內容,但資訊損失風險加大。
- Shingle 大小 (k):MinHash 中的 k 值,字元級通常 5‑10,詞級通常 1‑3。k 越小,召回率高但誤報增加。
- Phrase PPL/記憶化分數:用訓練後模型在特定專有文本上的 next‑token 困惑度衡量記憶化程度,去重後該分數應顯著下降。
- 下游任務準確率變化:核心判定標準;若去重導致長尾知識缺失,需啟用白名單或最小保留策略。
- 計算吞吐量(GB/小時/核):反映分散式去重流水線的效率,是工程化的硬指標。
當前業界尚缺乏統一的資料質量標準去衡量去重的“恰到好處”,多依賴人工抽檢和下游消融實驗。
供需與市場資料
由於 LLM 訓練熱潮,資料去重工具和清洗服務市場快速擴張。公開資訊顯示:
- 需求端:全球數千個語言模型團隊(從巨頭到初創公司)都需要處理數 PB 級的預訓練語料,每次迭代升級均要重新執行去重流水線。
- 供給端:開源工具(datatrove、text-dedup、CCNet)與雲端服務商(AWS、GCP、Azure)的託管大數據處理方案競爭。專業資料清洗公司(如 Scale AI、Defined.ai)提供商業去重服務,但規模尚難精確統計([未充分揭露])。
- 成本結構:一次典型的 1TB 級文本去重需數百至數千核心小時,雲端上成本可達數千到數萬美元。大規模預訓練語料(如 15 萬億 tokens)的去重賬單可能超過百萬美元,驅動對高效分散式演算法的投資。
- 趨勢:隨著多模態、多語言模型推進,跨模態去重與跨語言去重成為新興需求,但尚無成熟商業化方案。
代表公司與資本對映
- 資料基礎設施層:Hugging Face (datatrove 工具的維護者,推動開源資料集清洗標準)、Common Crawl 基金會(提供原始資料與去重建議)。
- 大型模型廠商:只要釋出過技術報告(Meta、Mistral、Falcon 團隊等)均揭露了自研內部去重管線,但未單獨資本化。
- 專業清洗服務:Scale AI(提供 RLHF 資料,但涉及資料清理鏈)、Defined.ai、Appen 均將資料預處理與去重作為增值服務,但並非核心業務。
- 工具鏈公司:如 Databricks 提供 Spark 環境執行去重作業,是間接受益者。
資本層面關注點在於:誰掌握高效、可復現、多語言的去重能力,誰就能以更低成本建置高質量訓練資料,構成模型競爭力的隱性壁壘。
投資邏輯
- 成本彈性:去重能削減訓練語料規模 20%‑50%([據公開研究,未精確量化]),直接節省 GPU 算力費用。對千卡叢集數月訓練專案,ROI 顯著。
- 合規護城河:去重可降低記憶化風險,減輕 GDPR“被遺忘權”爭議,減少法律訴訟可能。合規趨勢下,強去重能力有望成為頭部模型的標配。
- 資料飛輪:去重後資料質量更高,模型生成的迴流資料(合成數據)也需去重,閉環中工具價值持續存在。
- 競爭差異:同等引數規模下,擁有極致去重流水線的團隊可以釋放更多資訊密度,拉開效能差距,這本質上是資料工程的專利化競爭。
風險點:過度去重導致長尾知識缺失而損害專業領域表現;多語言與多模態的去重工具尚不成熟,技術路線存在不確定性。
常見誤讀糾偏
誤讀 1:資料去重等於刪除完全相同的文件
完全相同的文件僅佔去重的一小部分,更關鍵的是發現並處理經模板改寫、多語言翻譯或細微修改後的近似重複,這部分需要 MinHash、SimHash 甚至語義模型,但基於 MinHash+LSH 的去重複雜度近似線性,SimHash 指紋查詢也可實現亞線性,並非指數級上升。
誤讀 2:去重率越高越好,資料越乾淨模型越強
激進去重可能系統性剔除小眾領域(如地方新聞、罕見語言)所有近重複版本,導致模型在這些領域完全喪失了知識。例如稀有疾病資料可能只在少數文件出現,去重若誤傷則會破壞專業知識覆蓋。去重需配合下游領域評測微調閾值。
誤讀 3:去重可以在任何階段做,不影響訓練效率
若在 tokenizer 訓練後才去重,高頻 token 的分佈已經被重複樣本扭曲,導致 tokenizer 次優。正確順序應先做大規模去重,再訓練 tokenizer,最後微調去重策略並復篩訓練集,順序錯亂難以挽回。
誤讀 4:只有文本資料需要去重,程式碼、多模態等不用
程式碼訓練集(如 The Stack)中同樣充滿複製貼上程式碼塊和許可證註釋重複,使用字尾陣列去重可大幅壓縮重複函式定義,防止模型生成侵權程式碼。多模態(圖文對)則面臨圖片 URL 指向相同內容的問題,需結合感知雜湊等技術去重。
學習路徑
- 入門:閱讀《Mining of Massive Datasets》第3章(Shingling, MinHash, LSH);實踐用 Python 的
datasketch庫對小型文本集合進行 MinHash 去重。 - 進階論文:Katherine Lee, et al. “Deduplicating Training Data Makes Language Models Better” (2022);高劍等 “Deduplicating Training Data Mitigates Privacy Risks in Language Models” (2022);Raffel et al. “Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer”(C4 資料集介紹)。
- 動手實現:部署
text-dedup或datatrove對 OSCAR 子集進行多級去重,分析不同閾值帶來的下游模型困惑度變化。 - 深入系統:研究 CCNet 流水線程式碼 (GitHub 開源),理解如何用分片、排序和記憶體對映處理萬億級文件的 MinHash+LSH。
- 前沿探索:SemDeDup 等基於嵌入的去重方法論文,嘗試利用 FAISS 實現可擴充套件語義去重原型。
一句話總結
資料去重不只是簡單的“刪除重複”,而是大型模型時代關乎泛化、記憶化、算力效率與法律合規的資料工程中樞,其演算法選擇和流水線設計決定了訓練資料的資訊密度,進而深刻影響最終模型智慧的邊界。
延伸閱讀與來源
- 學術論文:Lee et al. “Deduplicating Training Data Makes Language Models Better” (ACL 2022)
- 技術報告:Meta “Llama 3 Technical Report” (2024);Falcon “The RefinedWeb Dataset” (2023);Mistral 技術報告提及的模糊去重方案
- 開源工具:Hugging Face
datatrove;text-dedup(https://github.com/ChenghaoMou/text-dedup);CCNet 管道 (https://github.com/facebookresearch/cc_net) - 綜述:MinHash 教程 (https://web.stanford.edu/class/cs246/);LSH 原理 (Leskovec, Rajaraman, Ullman)
- 市場視角:未公開的產業調研資料多需付費,此處僅引用定性趨勢。具體資料集規模與成本均為基於公開資訊估算,精確數值請查閱各廠商財報及技術報告。
(由於本次檢索未能獲得聯網資源,本頁面所有技術事實均來自公開文獻與工具文件,未引用的指標、閾值等均統稱為[未充分揭露],實際產品引數請以對應專案最新說明為準。)