目录

注意力

2024 年 6 月状态更新:删除 DataPipes 和 DataLoader V2

我们将 torchdata 存储库重新调整为torch.utils.data.DataLoader的迭代增强。我们不打算 继续开发或维护 [DataPipes] 和 [DataLoaderV2] 解决方案,它们将从 torchdata 存储库。我们还将重新访问 pytorch/pytorch 中的 DataPipes 引用。在 torchdata==0.8.0(2024 年 7 月)版本中,它们将被标记为已弃用,而在 0.9.0(2024 年 10 月)中,它们将被删除。现存 建议用户固定到 torchdata==0.8.0 或更旧版本,直到他们能够迁移出去。随后的 版本将不包含 DataPipes 或 DataLoaderV2。 如果您有建议或评论,请联系我们(请使用此问题进行反馈)

数据加载器2

引入了一种新的轻量级功能,用于将重载的数据操作功能与 操作 分离。此外,某些功能只能通过快照和切换后端服务来实现,以执行高性能操作。torch.utils.data.DataLoaderDataPipe

数据加载器2

torchdata.dataloader2.DataLoader2datapipe 可选[Union[IterDataPipe MapDataPipe]], datapipe_adapter_fn 可选[Union[Iterable[Adapter] Adapter]] = Nonereading_service 可选 [ReadingServiceInterface] = )

DataLoader2用于优化和执行给定的图形 基于 和 函数,支持DataPipeReadingServiceAdapter

  • 用于多进程和分布式数据加载的动态分片

  • 多个后端ReadingServices

  • DataPipe图形就地修改,如 shuffle control、memory pinning 等。

  • 快照数据预处理管道 (WIP) 的状态

参数
  • datapipe ( or ) – 从中加载数据。此 DataPipe 将在初始化期间进行,从而允许在不同的状态中重复使用 Input,而无需共享 state。只有在调用 在 DataLoader 创建之后。IterDataPipeMapDataPipeDataPipeDataLoader2Noneload_state_dict

  • datapipe_adapter_fn ( 或 , 可选) – 函数 将应用于 DataPipe (default: )。Iterable[Adapter]AdapterAdapterNone

  • reading_serviceReadingServiceInterface可选) – 定义应如何执行操作 的 ,例如 multiprocessing/Distributed (默认: )。此 Deep Copy 将是 在初始化期间创建,允许 ReadingService 在不同的状态中重用,而无需共享 state。DataLoader2DataPipeNoneDataLoader2

注意

当 a 传入 时,为了遍历 数据将尝试通过 创建迭代器 。 如果对象具有非零索引索引,则可能会失败。 考虑使用 (转换为 ) 或。MapDataPipeDataLoader2DataLoader2iter(datapipe).shuffle()MapDataPipeIterDataPipedatapipe.to_iter_datapipe(custom_indices)

__iter__ DataLoader2Iterator[T_co]

从适应的图形中返回一个单例迭代器 。 如果为 construct 提供了序列化状态,则将恢复 。而且,并且将会是 在迭代的开头和结尾相应地调用。DataPipeReadingServiceDataPipeDataLoader2initialize_iterationfinalize_iterator

类方法 from_statestate Dict[str Any]reading_service: CheckpointableReadingServiceInterface DataLoader2[T_co]

使用图形新建并恢复 从 serialized 状态。DataLoader2DataPipeReadingService

load_state_dictstate_dict: dict[str any]

对于现有的 , load serialized state to restore 图 并重置 的内部状态。DataLoader2DataPipeReadingService

seedseed int

为 DataLoader2 设置随机种子以控制确定性。

参数

seed – 随机 uint64 种子

shutdown

关闭并清理 iterator。ReadingService

state_dict Dict[str Any]

返回一个字典来表示带有键的数据处理管道的状态:

  • serialized_datapipe:改编前连载。DataPipeReadingService

  • reading_service_state: 状态和适应 .ReadingServiceDataPipe

注意:不支持 或 .请用相应的以下内容包裹它们中的每一个:torch.utils.data.Datasettorch.utils.data.IterableDatasetDataPipe

  • torch.utils.data.Dataset

  • torch.utils.data.IterableDataset

阅读服务

ReadingService指定数据处理图的执行后端。TorchData 中提供了三种类型:ReadingServices

分布式阅读服务

DistributedReadingSerivce处理 Graph 上的分布式分片,并通过在分布式进程之间共享相同的种子来保证随机性。DataPipe

InProcessReadingService

默认 ReadingService 在主进程中为图形提供服务,并将确定性控制等图形设置应用于图形。DataPipe

MultiProcessingReadingService (多处理阅读服务)

生成多个工作进程以从图形加载数据。DataPipe

SequentialReadingService 服务

每个 API 都会获取图形并重写它以实现一些功能,例如动态分片、共享随机种子和多/分布式进程的快照。有关这些功能的更多详细信息,请参阅文档ReadingServicesDataPipe

适配器

Adapter用于配置、修改和扩展 中的图形。它允许就地 修改或替换 PyTorch 域提供的预组装图。例如,可以是 提供给 ,这将禁用图形中的任何操作。DataPipeDataPipeShuffle(False)shuffleDataPipes

torchdata.dataloader2.adapter 中。适配器

遵循 python Callable 协议的 Adapter 基类。

摘要 __call__datapipe Union[IterDataPipe MapDataPipe] Union[IterDataPipe MapDataPipe]

可调用函数,该函数运行 该图表,或返回一个新图表。DataPipeDataPipe

参数

datapipe – 这需要进行调整。DataPipe

结果

改编的或新的 .DataPipeDataPipe

以下是 TorchData 提供的列表torchdata.dataloader2.adapter

洗牌

Shuffle DataPipes 适配器允许控制图形中所有现有的 Shuffler () DataPipe。shuffle

缓存超时

CacheTimeout DataPipes 适配器允许控制图形中所有现有 EndOnDiskCacheHolder () 的超时。end_caching

此外,我们还将提供更多内容来涵盖数据处理选项:Adapters

  • PinMemory:在数据处理图的末尾附加 一个,该图将输出数据转换为固定内存。DataPipetorch.Tensor

  • FullSync:附加 以确保数据处理图在分布式进程之间同步,以防止挂起。DataPipe

  • ShardingPolicy:如果图表中显示分片策略,请修改分片策略。sharding_filterDataPipe

  • PrefetchPolicy等。InvalidateCache

如果您对希望提供的功能有要求,请打开 GitHub 问题。对于特定 needs,也接受任何自定义,只要它继承自类即可。AdaptersDataLoader2AdapterAdapter

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

获取面向初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并解答您的问题

查看资源