[ PROMPT_NODE_22246 ]
nemo-curator
[ SKILL_DOCUMENTATION ]
# NeMo Curator - GPU 加速数据清洗
NVIDIA 推出的用于准备高质量大模型训练数据的工具包。
## 何时使用 NeMo Curator
**在以下情况使用 NeMo Curator:**
- 从网页抓取数据(Common Crawl)准备大模型训练数据
- 需要快速去重(比 CPU 快 16 倍)
- 清洗多模态数据集(文本、图像、视频、音频)
- 过滤低质量或有害内容
- 在 GPU 集群上扩展数据处理任务
**性能表现**:
- **16 倍速度**的模糊去重(针对 8TB RedPajama v2 数据集)
- **比 CPU 方案降低 40% 的总拥有成本 (TCO)**
- 在 GPU 节点间实现**近线性扩展**
**可替代方案**:
- **datatrove**:基于 CPU 的开源数据处理工具
- **dolma**:Allen AI 的数据工具包
- **Ray Data**:通用机器学习数据处理(非专门针对清洗)
## 快速入门
### 安装
bash
# 文本清洗 (CUDA 12)
uv pip install "nemo-curator[text_cuda12]"
# 所有模态
uv pip install "nemo-curator[all_cuda12]"
# 仅 CPU (较慢)
uv pip install "nemo-curator[cpu]"
### 基础文本清洗工作流
python
from nemo_curator import ScoreFilter, Modify
from nemo_curator.datasets import DocumentDataset
import pandas as pd
# 加载数据
df = pd.DataFrame({"text": ["Good document", "Bad doc", "Excellent text"]})
dataset = DocumentDataset(df)
# 质量过滤
def quality_score(doc):
return len(doc["text"].split()) > 5 # 过滤短文档
filtered = ScoreFilter(quality_score)(dataset)
# 去重
from nemo_curator.modules import ExactDuplicates
deduped = ExactDuplicates()(filtered)
# 保存
deduped.to_parquet("curated_data/")
## 数据清洗工作流
### 第一阶段:质量过滤
python
from nemo_curator.filters import (
WordCountFilter,
RepeatedLinesFilter,
UrlRatioFilter,
NonAlphaNumericFilter
)
# 应用 30+ 启发式过滤器
from nemo_curator import ScoreFilter
# 单词计数过滤器
dataset = dataset.filter(WordCountFilter(min_words=50, max_words=100000))
# 移除重复内容
dataset = dataset.filter(RepeatedLinesFilter(max_repeated_line_fraction=0.3))
# URL 比例过滤器
dataset = dataset.filter(UrlRatioFilter(max_url_ratio=0.2))
### 第二阶段:去重
**精确去重**:
python
from nemo_curator.modules import ExactDuplicates
# 移除精确重复项
deduped = ExactDuplicates(id_field="id", text_field="text")(dataset)
**模糊去重**(GPU 上快 16 倍):
python
from nemo_curator.modules import FuzzyDuplicates
# MinHash + LSH 去重
fuzzy_d