注意力
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.DataLoader
DataPipe
数据加载器2¶
- 类 torchdata.dataloader2.DataLoader2(datapipe: 可选[Union[IterDataPipe, MapDataPipe]], datapipe_adapter_fn: 可选[Union[Iterable[Adapter], Adapter]] = None, reading_service: 可选 [ReadingServiceInterface] = 无)¶
DataLoader2
用于优化和执行给定的图形 基于 和 函数,支持DataPipe
ReadingService
Adapter
用于多进程和分布式数据加载的动态分片
多个后端
ReadingServices
DataPipe
图形就地修改,如 shuffle control、memory pinning 等。快照数据预处理管道 (WIP) 的状态
- 参数
datapipe ( or ) – 从中加载数据。此 DataPipe 将在初始化期间进行,从而允许在不同的状态中重复使用 Input,而无需共享 state。只有在调用 在 DataLoader 创建之后。
IterDataPipe
MapDataPipe
DataPipe
DataLoader2
None
load_state_dict
datapipe_adapter_fn ( 或 , 可选) – 函数 将应用于 DataPipe (default: )。
Iterable[Adapter]
Adapter
Adapter
None
reading_service (ReadingServiceInterface,可选) – 定义应如何执行操作 的 ,例如 multiprocessing/Distributed (默认: )。此 Deep Copy 将是 在初始化期间创建,允许 ReadingService 在不同的状态中重用,而无需共享 state。
DataLoader2
DataPipe
None
DataLoader2
注意
当 a 传入 时,为了遍历 数据将尝试通过 创建迭代器 。 如果对象具有非零索引索引,则可能会失败。 考虑使用 (转换为 ) 或。
MapDataPipe
DataLoader2
DataLoader2
iter(datapipe)
.shuffle()
MapDataPipe
IterDataPipe
datapipe.to_iter_datapipe(custom_indices)
- __iter__() DataLoader2Iterator[T_co] ¶
从适应的图形中返回一个单例迭代器 。 如果为 construct 提供了序列化状态,则将恢复 。而且,并且将会是 在迭代的开头和结尾相应地调用。
DataPipe
ReadingService
DataPipe
DataLoader2
initialize_iteration
finalize_iterator
- 类方法 from_state(state: Dict[str, Any], reading_service: CheckpointableReadingServiceInterface) DataLoader2[T_co] ¶
使用图形新建并恢复 从 serialized 状态。
DataLoader2
DataPipe
ReadingService
- load_state_dict(state_dict: dict[str, any]) 无 ¶
对于现有的 , load serialized state to restore 图 并重置 的内部状态。
DataLoader2
DataPipe
ReadingService
- seed(seed: int) 无 ¶
为 DataLoader2 设置随机种子以控制确定性。
- 参数
seed – 随机 uint64 种子
- shutdown() 无 ¶
关闭并清理 iterator。
ReadingService
- state_dict() Dict[str, Any] ¶
返回一个字典来表示带有键的数据处理管道的状态:
serialized_datapipe
:改编前连载。DataPipe
ReadingService
reading_service_state
: 状态和适应 .ReadingService
DataPipe
注意:不支持 或 .请用相应的以下内容包裹它们中的每一个:
torch.utils.data.Dataset
torch.utils.data.IterableDataset
DataPipe
阅读服务¶
ReadingService
指定数据处理图的执行后端。TorchData 中提供了三种类型:ReadingServices
|
|
默认 ReadingService 在主进程中为图形提供服务,并将确定性控制等图形设置应用于图形。 |
|
生成多个工作进程以从图形加载数据。 |
|
每个 API 都会获取图形并重写它以实现一些功能,例如动态分片、共享随机种子和多/分布式进程的快照。有关这些功能的更多详细信息,请参阅文档。ReadingServices
DataPipe
适配器¶
Adapter
用于配置、修改和扩展 中的图形。它允许就地
修改或替换 PyTorch 域提供的预组装图。例如,可以是
提供给
,这将禁用图形中的任何操作。
DataPipe
DataPipe
Shuffle(False)
shuffle
DataPipes
- 类 torchdata.dataloader2.adapter 中。适配器¶
遵循 python Callable 协议的 Adapter 基类。
- 摘要 __call__(datapipe: Union[IterDataPipe, MapDataPipe]) Union[IterDataPipe, MapDataPipe] ¶
可调用函数,该函数运行 该图表,或返回一个新图表。
DataPipe
DataPipe
- 参数
datapipe – 这需要进行调整。
DataPipe
- 结果
改编的或新的 .
DataPipe
DataPipe
以下是 TorchData 提供的列表:
torchdata.dataloader2.adapter
Shuffle DataPipes 适配器允许控制图形中所有现有的 Shuffler () DataPipe。 |
|
CacheTimeout DataPipes 适配器允许控制图形中所有现有 EndOnDiskCacheHolder () 的超时。 |
此外,我们还将提供更多内容来涵盖数据处理选项:Adapters
PinMemory
:在数据处理图的末尾附加 一个,该图将输出数据转换为固定内存。DataPipe
torch.Tensor
FullSync
:附加 以确保数据处理图在分布式进程之间同步,以防止挂起。DataPipe
ShardingPolicy
:如果图表中显示分片策略,请修改分片策略。sharding_filter
DataPipe
PrefetchPolicy
等。InvalidateCache
如果您对希望提供的功能有要求,请打开 GitHub 问题。对于特定
needs,也接受任何自定义,只要它继承自类即可。Adapters
DataLoader2
Adapter
Adapter