重要提示
您正在查看 NeMo 2.0 文档。此版本为 API 和新库 NeMo Run 引入了重大更改。我们目前正在将 NeMo 1.0 中的所有功能移植到 2.0。 有关先前版本或 2.0 中尚不可用的功能的文档,请参阅 NeMo 24.07 文档。
数据集#
数据pipeline概述#
注意
用户有责任检查数据集的内容,查看适用的许可证,并确定其是否适合其预期用途。用户应在将数据放在其机器上之前查看与数据集关联的任何适用链接。
对于所有视觉语言预训练模型,我们提供如下详述的通用 pipeline 来下载和准备数据集。该 pipeline 适用于托管在 HuggingFace 数据仓库上的任何多模态数据集,其中数据存储为一个或多个 parquet 文件。该 pipeline 将数据集处理成 WebDataset 格式,该格式由大小相等的 tar 文件组成,以实现高效训练。
以下是 6 个子阶段。
download_parquet: 从 HuggingFace 仓库下载由文本(标题)和图像 URL 组成的 Parquet 文件。
download_images: 从各自的 URL 下载图像,并与标题一起打包成遵循 Webdataset 格式的 tar 文件。
reorganize_tar: (可选)由于各种原因(例如网络不稳定或图像移除),某些图像可能下载失败,导致 tar 文件不均匀,每个文件包含的示例数量不同。如果您使用的训练采样器不支持不均匀的 tar 文件,则需要重新组织 tar 文件的内容,以便每个文件都包含相等数量的图像-文本对。
precache_encodings: (可选)如果您正在训练具有冻结编码器(例如 Stable Diffusion)的模型,您可以选择在此子阶段预缓存(预计算)图像和/或文本编码(嵌入)。预缓存这些编码可以显着提高训练吞吐量。
generate_wdinfo: (可选)生成 wdinfo.pkl 文件,该文件存储有关数据集分片的信息。
merge_source_tar: (可选)预缓存后,此子阶段可以将任何其他对象(例如原始图像或元数据文件)从源 tar 文件复制并附加到结果 tar 文件。
根据您的具体情况,并非所有子阶段都需要一次性运行。例如,对于未托管在 HuggingFace 上或格式不是 parquet 的 parquet 数据集,可以使用子阶段 2-6 来处理本地下载的数据集。 对于已本地下载的 webdataset,可以使用子阶段 4-6 来预缓存编码,以减少训练时间。对于实时编码图像和文本的模型,只需要运行子阶段 1-3。
有关配置每个子阶段的说明,请参阅 download_multimodal.yaml 中每个字段旁边的注释。