大語言模型(LLMs) 的出現標志著各行業利用人工智能(AI)增強運營和服務的方式發生了重大轉變。通過自動化日常任務和簡化流程,LLMs 可以釋放人力資源,用于更具戰略性的工作,從而提高整體效率和生產力。
主要由于 LLM 對高質量數據的依賴性, 訓練和定制 LLM 以實現高準確度充滿挑戰。數據質量差和數據量不足會顯著降低模型準確性,因此數據集準備成為 AI 開發者的關鍵任務。
數據集通常包含重復文檔、個人身份信息(PII)和格式問題。一些數據集甚至包含對用戶構成風險的有毒或有害信息。在未進行適當處理的情況下基于這些數據集訓練模型會增加訓練時間并降低模型質量。另一個重大挑戰是數據稀缺。模型構建者公開可用的數據不足以用于訓練,這促使許多模型構建者轉而求助于第三方供應商,或使用高級語言模型生成合成數據。
在本文中,我們將介紹通過提高訓練數據質量來優化 LLM 性能的數據處理技術和最佳實踐。我們將介紹 NVIDIA NeMo Curator 及其如何應對這些挑戰,演示 LLM 的真實數據處理用例。
文本處理流程和最佳實踐?
處理大型數據的預處理并非易事,尤其是當數據集主要由網頁抓取數據組成時,這些數據可能包含大量格式不當、質量低下的數據。

圖 1 顯示了全面的文本處理工作流,其中包含以下高級步驟:
- 從源中下載數據集,并將其提取為所需格式,例如 JSONL。
- 應用初步文本清理,例如 Unicode 固定和語言分離。
- 根據特定質量標準,對數據集應用標準和自定義定義的過濾器。
- 執行不同級別的重復數據刪除(精確、模糊和語義)。
- 有選擇地應用高級質量過濾,包括基于模型的質量過濾、PII 紅票、分布式數據分類和任務去污染。
- 融合來自多個來源的精選數據集,形成統一的數據集。
以下部分將更深入地介紹每個階段。
下載并提取文本?
數據管理的第一步涉及從各種常見來源(例如 Common Crawl)、專業集合(例如 arXiv 和 PubMed)或私有 on-prime 數據集下載和準備數據集,每個數據集可能包含 TB 級的數據。
這一關鍵階段需要仔細考慮存儲格式和提取方法,因為公開托管的數據集通常采用壓縮格式(例如.warc.gz、tar.gz 或 zip 文件),這些格式需要轉換為更易于管理的格式(例如.jsonl 或.parquet)以進行進一步處理。
初步文本清理?
Unicode 修復和語言識別是數據管護流程中的關鍵早期步驟,尤其是在處理大規模網絡抓取文本語料庫時。這一階段解決了兩個基本挑戰:Unicode 字符解碼不當,以及數據集中存在多種語言。
Unicode 格式問題通常源于錯誤的字符編碼或多個編碼/解碼周期。常見問題包括特殊字符顯示為亂碼序列 (例如,“café”顯示為“caf??”)。語言識別和分離同樣重要,尤其是對于那些對整理單語數據集感興趣的策展人而言。此外,一些數據管護步驟 (例如啟發式過濾和基于模型的質量分類器) 因語言而異。
這一初步預處理步驟可確保以識別出的語言編寫清晰、正確編碼的文本,從而為所有后續的數據整理步驟奠定基礎。
啟發式過濾?
啟發式過濾采用基于規則的指標和統計措施來識別和移除低質量內容。
該流程通常評估多個質量維度,例如文檔長度、重復模式、標點分布和文本的結構完整性。常見的啟發式過濾器包括:
- 字數過濾器: 過濾掉過于簡短而無意義或長度可疑的代碼段。
- 模板字符串過濾器: 識別并刪除包含過多模板內容的文本。
- N-gram 重復過濾器(N-gram repetition filter): 識別不同長度的重復短語,并刪除過多重復的文檔,這些文檔可能表明內容質量低下或人為生成。
對于啟發式過濾,最佳實踐是實施級聯方法。這種方法可以實現更細致入微的質量控制,同時保持過濾過程的透明度。為提高性能,可以實施批量過濾,以同時處理多個文檔,從而顯著縮短處理大規模數據集時的計算時間。
重復數據刪除?
重復數據刪除對于提高模型訓練效率、降低計算成本和確保數據多樣性至關重要。它有助于防止模型過擬合重復內容,并改進泛化。該過程可通過三種主要方法實現:精確、模糊和語義重復數據刪除。這些構成了處理大規模數據集中不同類型重復的全面策略,從相同的副本到概念上相似的內容。
精確的重復數據刪除
精確的重復數據刪除專注于識別和刪除完全相同的文檔。該方法為每個文檔生成哈希簽名,并按哈希將文檔分組為桶,每個桶僅保留一個文檔。雖然這種方法在計算方面高效、快速且可靠,但僅限于檢測完全匹配的內容,并且可能會遺漏具有細微變化的語義等效文檔。
模糊重復數據刪除
模糊重復數據刪除使用 MinHash 簽名和局部性敏感散列(LSH)來識別類似文檔,以解決近乎重復的內容。
此過程包括以下步驟:
- 計算文檔的 MinHash 簽名。
- 使用 LSH 將類似文檔分組到不同的存儲桶中。一個文檔可能屬于一個或多個存儲桶。
- 計算同一桶內文檔之間的 Jaccard 相似性(Compute Jaccard similarity between documents within the same buckets).
- 根據 Jaccard 相似性,將相似性矩陣轉換為圖,并識別圖中的連通分量。
- 連接組件中的文檔被視為模糊副本。
- 從數據集中刪除已識別的重復項。
此方法對于識別略有修改的內容、檢測文檔部分重疊以及查找格式不同但內容相似的文檔特別有用。它在計算效率和重復檢測能力之間取得了平衡。
語義重復數據刪除
語義重復數據刪除代表了最為復雜的方法,它采用先進的嵌入模型來捕獲語義含義,并結合聚類技術對語義相似的內容進行分組。研究表明,語義重復數據刪除可以有效減少數據集大小,同時保持或提高模型性能。它對于識別轉述內容、相同材料的翻譯版本以及概念上相同的信息尤其重要。
語義重復數據刪除包含以下步驟:
- 每個數據點都使用預訓練模型嵌入。
- 使用 k-means 聚類將嵌入聚類為 k 個聚類。
- 在每個聚類內,都會計算成對余弦相似性。
- 余弦相似度超過閾值的數據對被視為語義重復數據。
- 從每個集群內的語義重復項組中,保留一個代表性數據點,其余數據點將被刪除。
基于模型的質量過濾?
基于模型的質量過濾利用各種類型的模型來評估和過濾基于質量指標的內容。模型類型的選擇對過濾的有效性和所需的計算資源有著顯著的影響,因此為特定用例選擇合適的模型至關重要。
可用于質量過濾的不同類型的模型包括:
- 基于 N-gram 的分類器: 最簡單的方法是使用基于 n-gram 的詞袋分類器,例如 fastText,該分類器在效率和實用性方面表現出色,因為它們只需要最少的訓練數據(100,000 到 1,000,000 個樣本)。
- BERT 風格的分類器: BERT 風格的分類器代表一種中間方法,通過基于 Transformer 的架構提供更好的質量評估。它們可以捕捉更復雜的語言模式和上下文關系,從而有效地進行質量評估。
- LLMs: LLMs 提供最復雜的質量評估能力,利用其豐富的知識來評估文本質量。雖然它們提供對內容質量的更好的理解,但具有重大的計算要求,因此最適合小規模應用,例如微調數據集。
- 獎勵模型: 獎勵模型是專為評估對話式數據質量而設計的專門類別。這些模型可以同時評估多個質量維度,但與 LLMs 類似,它們具有重要的計算要求。
選擇優質過濾模型時應考慮數據集規模和可用計算資源。對于大規模預訓練數據集,將用于初始過濾的輕量級模型與用于最終質量評估的高級模型相結合,通常可實現效率和效果的最佳平衡。對于質量至關重要的小型專業數據集,使用像 LLMs 或 reward models 等模型變得更加可行和有益。
PII 編輯
個人身份信息(PII)編輯涉及識別和從數據集中刪除敏感信息,以保護個人隱私并確保遵守數據保護法規。
在處理包含個人信息的數據集時,這一過程尤為重要,其中包括姓名和社會安全號碼等直接標識符,以及與其他數據結合使用時可用于識別個人身份的間接標識符。
現代 PII 編輯采用各種技術來保護敏感信息,包括:
- 將敏感信息替換為符號(例如,XXX-XX-1234 表示美國社會安全號碼),同時保持數據格式和結構。
- 將敏感數據替換為保持參考完整性的非敏感等效數據,以用于分析目的。
- 在下游任務不需要敏感信息時消除敏感信息。
總體而言,PII 編輯有助于維護數據隱私、遵守法規并與用戶建立信任,同時保留其數據集用于訓練和分析目的的實用性。
分布式數據分類
數據分類在數據管護中發揮著至關重要的作用。此過程有助于根據領域和質量等各種屬性對數據進行組織和分類,確保數據得到良好平衡并代表不同的知識領域。
域分類通過根據主題識別和分類內容,幫助 LLMs 了解輸入文本的上下文和特定領域。域信息可用作寶貴的輔助數據,使開發者能夠構建更多樣化的訓練數據集,同時識別和過濾潛在的有害或不需要的內容。例如,使用 AEGIS 安全模型(將內容分為 13 個關鍵風險類別),開發者可以有效地識別和過濾訓練數據中的有害內容。
在處理通常包含數十億文檔的預訓練語料庫時,運行分類推理會變得計算密集且耗時。因此,分布式數據分類對于克服這些挑戰至關重要。這是通過在多個 GPU 節點上對數據集進行分塊來實現的,以便以分布式方式加速分類任務。
任務去污
訓練完成后,通常會根據 LLMs 在包含未見測試數據的下游任務上的性能對其進行評估。下游任務去污染這一步驟可解決測試數據向訓練數據集的潛在泄露問題,該問題可能會導致產生錯誤的評估結果。去污過程通常涉及幾個關鍵步驟:
- 識別潛在的下游任務及其測試集。
- 將測試數據轉換為 n-gram 表示。
- 在訓練語料庫中搜索匹配的 n-gram。
- 刪除或修改受污染的部分,同時保持文檔的連貫性。
這種系統化方法有助于確保去污的有效性,同時最大限度地減少對數據質量的意外影響,從而有助于更可靠的模型評估和開發。
混合和混洗?
數據混合和混洗是數據管護工作流中的最后一步,可組合多個精心策劃的數據集,同時確保適當的隨機化,以優化模型訓練。這一過程對于創建多樣化、平衡良好的訓練數據集至關重要,這些數據集可實現更好的模型泛化和性能。數據混合涉及將多個來源的數據合并到統一的數據集中,從而創建更全面、更多樣化的訓練數據。混合過程使用兩種方法實施:
- 在線:訓練期間進行數據組合
- 離線:在訓練之前合并數據集
每種方法都具有獨特的優勢,這取決于訓練過程的具體要求以及最終數據集的預期用途。
合成數據生成?
了解了預處理階段的復雜性后,我們現在在大型語言模型(LLM)開發領域面臨著一個巨大的挑戰:數據稀缺。大型語言模型對大量訓練數據集(即使是用于微調目的)的需求永無止境,往往會超過特定領域或特定語言數據的可用性。為此, 合成數據生成(SDG) 是一種功能強大的方法,可利用大型語言模型創建模擬真實數據特征的人工數據集,同時保護隱私并確保數據效用。此流程使用外部大型語言模型服務生成高質量、多樣化且與上下文相關的數據,這些數據可用于預訓練、微調或評估其他模型。
SDG 通過支持適應低資源語言、支持領域專門化和促進跨模型的知識提煉來增強 LLM 的能力,使其成為擴展模型功能的通用工具。在真實數據稀缺、敏感或難以獲取的情況下,SDG 變得尤為重要。

合成數據管道包含三個關鍵階段:生成、批判和過濾。
- 生成: 使用提示工程為各種任務生成合成數據。以 Nemotron-4 為例,SDG 可用于為五種不同類型的任務生成訓練數據:開放式問答(open-ended QA)、封閉式問答(closed-ended QA)、寫作作業(writing assignments)、編碼和數學問題。
- 批判: 使用 LLM 反射、LLM 作為法官、獎勵模型推理和其他代理等方法來評估合成數據的質量。評估結果可用作對 SDG LLM 的反饋,以生成更好的結果或過濾低質量數據。其中一個典型示例是 Nemotron-4-340B 獎勵 NIM ,它通過五個關鍵屬性評估數據質量:Helpfulness、Correctness、Coherence、Complexity 和 Verbosity。通過為這些屬性分數設置適當的閾值,過濾過程可確保僅保留高質量的合成數據,同時過濾低質量或不當內容。
- 過濾器: 通過重復數據刪除和個人身份信息編輯等步驟進一步提高 SDG 數據質量。
但是請注意,SDG 并非適用于所有情況。來自外部語言模型的大規模語言模型的幻覺可能會引入不可靠的信息,從而損害數據完整性。此外,生成的數據分布可能與目標分布不一致,可能會導致實際性能不佳。在這種情況下,使用 SDG 實際上會損害系統的有效性,而不是改善系統的有效性。
用于構建主權 LLM 的數據處理?
如前所述,開源的大型語言模型在英語方面表現出色,但難以與其他語言 (尤其是東南亞的語言) 交流。這主要是由于缺乏這些語言的訓練數據、對當地文化的理解有限,以及 token 不足以捕捉獨特的語言結構和表達。
為了充分滿足客戶需求,非英語國家的企業必須超越通用模型,并對其進行定制,以捕捉當地語言的細微差別,確保無縫且有影響力的客戶體驗。例如,使用 NeMo Curator,Viettel Solutions 處理了 高質量的越南語數據 ,將準確性提高 10%,將數據集大小減少 60%,并將訓練時間縮短 3 倍。
此用例的主要步驟如下:
- 下載多個越南語和多語種數據集(維基百科、越南語新聞語料庫、 OSCAR 和 C4),并轉換為 Parquet,以高效地處理和處理大型數據集。
- 將多個數據集合并、標準化并分片成一個數據集
- 應用 Unicode 重新格式化、精確重復數據刪除、質量過濾(啟發式和基于分類器的)。
您可以 查看完整教程 。
借助 NVIDIA NeMo Curator 提高數據質量?
到目前為止,我們已經討論了數據質量在提高 LLMs 準確性方面的重要性,并探索了各種數據處理技術。開發者現在可以直接通過 NeMo Curator 嘗試這些技術。它提供了可定制的模塊化界面,使開發者能夠輕松地基于此進行構建。
NeMo Curator 使用 NVIDIA RAPIDS 的 GPU 加速庫 (如 cuDF、cuML 和 cuGraph) 以及 Dask 來加速多節點多 GPU 上的工作負載,從而根據需要減少處理時間和規模。例如,通過使用 GPU 加速數據處理流程, Zyphra 將總擁有成本 (TCO) 降低了 50%,數據處理速度提高了 10 倍 (從 3 周縮短到 2 天)。
要開始使用,請查看 NVIDIA/NeMo-Curator GitHub 資源庫 和 可用教程 ,其中涵蓋各種數據管護工作流,例如:
您還可以通過 NeMo 框架容器 獲得訪問權限,并通過 NVIDIA AI Enterprise 許可證申請企業支持。