用于高效生成 AI 模型数据管理的 GPU 加速开源框架?
NeMo Curator 是一个 Python 库,专为快速且可扩展的数据集准备和管理而设计,适用于生成式 AI 使用案例,例如基础语言模型预训练、文本到图像模型训练、领域自适应预训练 (DAPT)、监督微调 (SFT) )和参数高效微调(PEFT)。它通过利用带有 Dask 和 RAPIDS 的 GPU 极大地加速了数据管理,从而节省了大量时间。该库提供可定制和模块化的接口,通过准备高质量的代币来简化管道扩展并加速模型收敛。
NeMo Curator 提供了一系列可扩展的数据管理模块,用于文本和图像管理。
我们所有的文本管道都有强大的多语言支持。
下载并解压
Common Crawl、Wikipedia 和 ArXiv 源的默认实现
轻松定制并扩展到其他来源
语言识别
Unicode 重新格式化
启发式过滤
分类器过滤
快速文本
GPU 加速模型:领域、质量和安全分类
GPU 加速重复数据删除
精确重复数据删除
通过 MinHash 局部敏感哈希进行模糊重复数据删除
语义重复数据删除
下游任务净化
个人身份信息 (PII) 编辑
嵌入创作
分类器过滤
美学和 NSFW 分类
GPU重复数据删除
语义学
这些模块提供灵活性并允许重新排序,只有少数例外。所有模块都会自动扩展到多个节点以提高吞吐量。
文档
示例
教程
博客文章
管理万亿代币数据集:NVIDIA NeMo Data Curator 简介
使用 NVIDIA NeMo Curator 扩展和管理用于 LLM 培训的高质量数据集
使用 NVIDIA NeMo Curator 为 LLM 培训策划自定义数据集
使用 NVIDIA NeMo Curator 管理自定义数据集以实现 LLM 参数高效微调
使用 NVIDIA NeMo Curator 简化域自适应预训练的数据处理
本节介绍如何安装 NeMo Curator 并使用 Python 库、Python 模块和 CLI 脚本。它还包括一系列教程,可帮助您立即入门。最后,本节介绍如何使用 NeMo Framework Launcher 作为与 NeMo Curator 交互的替代方法。
在安装 NeMo Curator 之前,请确保满足以下要求:
Python 3.10
乌班图22.04/20.04
NVIDIA GPU(可选)
Volta™ 或更高版本(计算能力 7.0+)
CUDA 12(或更高版本)
您可以通过 3 种方式获得 NeMo-Curator。
皮皮
来源
NeMo 框架容器
pip 安装 cython pip install --extra-index-url https://pypi.nvidia.com nemo-curator[全部]
git 克隆 https://github.com/NVIDIA/NeMo-Curator.git pip 安装 cython pip install --extra-index-url https://pypi.nvidia.com "./NeMo-Curator[all]"
NeMo Curator 的最新版本预装在 NeMo Framework Container 中。如果您想要容器内的最新提交,您可以使用以下命令重新安装 NeMo Curator:
pip 卸载 nemo-curator rm -r /opt/NeMo-Curator git 克隆 https://github.com/NVIDIA/NeMo-Curator.git /opt/NeMo-Curator pip install --extra-index-url https://pypi.nvidia.com "/opt/NeMo-Curator[all]"
NeMo Curator 有一组附加功能,您可以使用它来仅安装工作负载所需的模块。这些附加功能适用于提供的所有安装方法。
pip install nemo-curator # 安装仅限 CPU 的文本管理模块 pip install --extra-index-url https://pypi.nvidia.com nemo-curator[cuda12x] # 安装 CPU + GPU 文本管理模块 pip install --extra-index -url https://pypi.nvidia.com nemo-curator[image] # 安装 CPU + GPU 文本和图像管理模块 pip install --extra-index-url https://pypi.nvidia.com nemo-curator[all] # 安装以上所有内容
您还可以使用 RAPIDS Nightly Builds 安装 NeMo Curator。为此,您可以设置环境变量RAPIDS_NIGHTLY=1
。
# 从 pypiRAPIDS_NIGHTLY=1 pip install --extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple "nemo-curator[cuda12x]"# 从源安装RAPIDS_NIGHTLY=1 pip install - -extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple “.[cuda12x]”
当RAPIDS_NIGHTLY
变量设置为 0(默认值)时,它将使用 RAPIDS 的稳定版本。
以下代码片段演示了如何创建一个小型数据管理管道,用于下载和管理 Common Crawl 数据集的一小部分子集。
# 下载你的数据集dataset = download_common_crawl("/datasets/common_crawl/", "2021-04", "2021-10", url_limit=10)# 构建你的 pipelinecuration_pipeline = Sequential([ # 修复 unicode Modify(UnicodeReformatter()), # 丢弃短记录 ScoreFilter(WordCountFilter(min_words=80)), # 丢弃低质量记录 ScoreFilter(FastTextQualityFilter(model_path="model.bin")), # 丢弃评估指标中的记录,以防止测试集泄漏。 任务净化([Winogrande(), Squad(), TriviaQA()]) ])# 在数据集上执行管道curated_dataset = curation_pipeline(dataset)
要开始使用 NeMo Curator,您可以按照此处提供的教程进行操作。这些教程包括:
tinystories
专注于从头开始培训法学硕士的数据管理。
peft-curation
专注于 LLM 参数高效微调 (PEFT) 用例的数据管理。
distributed_data_classification
专注于使用质量和领域分类器来帮助数据注释。
single_node_tutorial
演示了用于管理泰语维基百科数据的端到端数据管理管道。
image-curation
探索可扩展的图像管理模块。
NeMo 框架用户指南的 NeMo Curator 部分提供了有关 Python 模块如何工作的深入信息。 GitHub 存储库中的示例目录提供了展示这些模块的脚本。
NeMo Curator 还提供 CLI 脚本供您使用。 nemo_curator/scripts
中的脚本与提供的 Python 模块密切对应。有关 Python 模块和脚本的更多信息,请参阅 NeMo 框架用户指南。
作为与 NeMo Curator 交互的替代方法,您可以使用 NeMo Framework Launcher。启动器使您能够轻松配置参数和集群。它还可以自动生成 Slurm 批处理脚本,这些脚本包含运行管道所需的 CLI 脚本。
此外,还可以使用其他方法在 Slurm 上运行 NeMo Curator。例如,请参阅examples/slurm
中的示例脚本,了解如何在不使用 NeMo Framework Launcher 的情况下在 Slurm 上运行 NeMo Curator 的信息。
NeMo Curator 中的模块主要旨在以可扩展的方式从 Common Crawl 快照中管理高质量文档。为了评估整理的 Common Crawl 文档的质量,我们进行了一系列的消融实验。在这些实验中,我们使用在数据管理管道的各个阶段生成的数据集训练了 357M 参数的 GPT 样式模型,该模型在 NeMo Curator 中实现。
下图显示,使用 NeMo Curator 中实现的不同数据管理模块提高了模型零样本下游任务性能。
在可扩展性和计算性能方面,结合使用 RAPIDS 和 Dask 模糊重复数据删除,我们能够使用 64 个 NVIDIA A100 Tensor Core GPU 在 1.8 小时内对 1.1 万亿代币的 Red Pyjama 数据集进行重复数据删除。
此外,使用基于 CPU 的模块,下表显示了使用 30 个 CPU 节点(硬件类似于c5.24xlarge
Amazon AWS C5)的 2020 年 11 月/12 月的 Common Crawl 快照所需的时间以及由此产生的数据大小减少情况。实例)。
数据集 | 下载和文本提取 | 文字清理 | 质量过滤 | |||
---|---|---|---|---|---|---|
时间 | 输出尺寸 | 时间 | 输出尺寸 | 时间 | 输出尺寸 | |
共同爬行 2020-50 | 36小时 | 2.8TB | 1小时 | 2.8TB | 0.2小时 | 0.52TB |
我们欢迎社区贡献!流程请参考CONTRIBUTING.md。