目录

数据加载器2

轻量级DataLoader2用于将重载的数据作功能从 to作中分离出来。此外,某些功能只能通过torch.utils.data.DataLoaderDataPipeDataLoader2例如快照和切换后端服务以执行高性能作。

数据加载器2

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

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

  • 动态分片,支持多进程和分布式数据加载

  • 多个后端ReadingServices

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

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

参数
  • datapipe ( or ) – 从中加载数据。在此期间将对此进行深层复制 初始化,允许 Input 在不同的环境中重用,而无需共享 state。IterDataPipeMapDataPipeDataPipeDataLoader2

  • datapipe_adapter_fn ( 或 , 可选) – 将应用的函数 添加到 DataPipe (默认: )。Iterable[Adapter]AdapterAdapterNone

  • reading_serviceReadingServiceInterface可选) – 定义应如何执行作 的 ,例如 multiprocessing/Distributed (默认: )。在此期间将对此进行深层复制 初始化,允许 Input 在不同的环境中重用,而无需共享 state。DataLoader2DataPipeNoneDataLoader2

__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[str Any]

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

shutdown

关闭并清理 iterator。ReadingService

state_dict Dict[str Any]

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

  • serialized_datapipe:改编前连载。DataPipeReadingService

  • reading_service_state: 状态和适应 .ReadingServiceDataPipe

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

阅读服务

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

DistributedReadingService

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

MultiProcessingReadingService

MultiProcessingReadingService它利用来启动 Graph 的子进程。torch.utils.data.DataLoaderDataPipe

PrototypeMultiProcessingReadingService

PrototypeMultiProcessingReadingService这会生成多个子进程来迭代图形。DataPipe

每个 S 都会获取图形并对其进行修改,以实现一些功能,例如动态分片、共享随机种子和多/分布式进程的快照。ReadingServicesDataPipe

这也允许数据预处理管道更轻松地从研究过渡到生产。创建图形并使用 验证图形后,配置并连接到生产服务/基础设施的不同工具,例如可以提供给DataPipeReadingServicesReadingServiceAIStoreDataLoader2作为直接替代品。这可能会搜索图形,并找到可以委托给生产服务/基础设施的作,然后相应地修改图形以实现更高性能的执行。ReadingServiceDataPipe

以下是自定义的接口。ReadingService

torchdata.dataloader2.ReadingServiceInterface

的接口。请基于此接口类扩展自定义。ReadingServiceReadingService

finalize()

ReadingService清理内部状态并完全关闭服务。 在 的 和 中调用 。DataLoader2shutdown__del__

finalize_iteration

ReadingService在 epoch 完成后结束服务。调用时间 的迭代器已耗尽。DataLoader2

抽象 initializedatapipe Union[IterDataPipe MapDataPipe] Union[IterDataPipe] MapDataPipe]

ReadingService获取一个图形,根据自定义需求将其调整为新图形。 首次创建 iterator 时调用一次。DataPipeDataPipeDataLoader2

参数

datapipe – 原始图形。DataPipe

结果

改编的图表或新图表。DataPipe

initialize_iteration

ReadingService为一个 epoch 启动 service。开始时被调用 每次获取 iterator 的DataLoader2

检查点/快照功能正在开发中。下面是初步界面(可能会有小的更改):

torchdata.dataloader2.CheckpointableReadingServiceInterface

使用两种附加方法进行扩展,以保存/恢复数据处理图的状态。ReadingServiceInterface

抽象 checkpoint 字节

ReadingService序列化内部状态。已调用 。DataLoader2.state_dict

抽象还原datapipe Union[IterDataPipe MapDataPipe]serialized_state: bytes Union[IterDataPipe MapDataPipe]

ReadingService根据序列化状态调整 Graph。 首次创建 iterator 时调用一次。 的对应项 ,它从头开始调整 graph。DataPipeDataLoader2initializeDataPipe

参数
  • DataPipe – 改编者DataPipeReadingService

  • serialized_state – 用于恢复状态的内部状态的序列化状态 适应的图形。DataPipe

结果

改编自 serialized 状态。DataPipe

并且,中提供了图形实用程序函数来帮助用户定义自己的图形和修改图形:torchdata.dataloader.graphReadingService

traverse_dps

遍历 DataPipes 及其属性以提取 DataPipe 图形。

find_dps

给定 function 生成的 DataPipe 图,返回提供的 DataPipe 类型的 DataPipe 实例。traverse_dps

replace_dp

给定 function 生成的 DataPipe 图和需要替换的 DataPipe 以及新的 DataPipe,返回新的 DataPipe 图。traverse_dps

remove_dp

给定 function 生成的 DataPipe 图和需要移除的 DataPipe,返回新的 DataPipe 图。traverse_dps

适配器

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

torchdata.dataloader2.adapter 中。适配器

遵循 python Callable 协议的 Adapter 基类。

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

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

参数

datapipe – 这需要进行调整。DataPipe

结果

改编的或新的 .DataPipeDataPipe

以下是Adapter由 TorchData 提供:torchdata.dataloader2.adapter

Shuffle

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

CacheTimeout

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

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

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

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

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

  • PrefetchPolicy等。InvalidateCache

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

文档

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

查看文档

教程

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

查看教程

资源

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

查看资源