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 去重和合成数据生成的即用型工具。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目