huggingface/datatrove

Freeing data processing from scripting madness by providing a set of platform-agnostic customizable pipeline processing blocks.

解決的問題

DataTrove 旨在大規模處理文本數據的處理、過濾和去重,專門用於準備大型語言模型 (LLM) 的訓練數據。它透過提供一個與平台無關的框架,在保持低記憶體佔用的同時支援分散式執行,解決了管理巨量工作負載的挑戰。

工作原理

該庫採用基於流水線 (pipeline) 的架構,數據作為一系列 Document 物件(包含文本、ID 和元數據)進行處理。使用者將 pipeline 定義為一系列處理區塊的列表——例如讀取器 (readers)、提取器 (extractors)、過濾器 (filters) 和寫入器 (writers)——然後由 executor 執行。

透過將總工作負載劃分為 tasks(數據分片)並將其分配給 workers(運算資源)來實現並行執行。該框架支援針對不同環境的多種執行器:

  • LocalPipelineExecutor: 用於單機多進程。
  • SlurmPipelineExecutor: 用於使用作業陣列的 Slurm 集群。
  • RayPipelineExecutor: 用於 Ray 集群。
  • JobsPipelineExecutor: 用於 Hugging Face Jobs。

適用對象

適用於需要為 AI 模型訓練穩健地處理和清洗超大規模文本數據集的研究人員和工程師。

亮點

  • 平台無關性: 同一個流水線可以在本地或集群上執行,無需修改。
  • 容錯性: 透過標記檔案追蹤已完成的任務,允許在發生故障後從中斷處恢復作業。
  • Fsspec 集成: 支援本地、遠端和雲端檔案系統(例如 S3、Hugging Face Hub)。
  • 預建模組: 包括用於文本提取、分詞 (tokenization)、minhash 去重和合成數據生成的即用型工具。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案