InProcessReadingService¶
- class torchdata.dataloader2.InProcessReadingService(prefetch_cnt: int = 0, init_fn: Optional[Callable[[Union[IterDataPipe, MapDataPipe], WorkerInfo], Union[IterDataPipe, MapDataPipe]]] = None, reset_fn: Optional[Callable[[Union[IterDataPipe, MapDataPipe], WorkerInfo, SeedGenerator], Union[IterDataPipe, MapDataPipe]]] = None)¶
默认的 ReadingService 用于在主进程中提供
DataPipe
图,并将图设置(如确定性控制)应用于图。- 参数:
prefetch_cnt – (int,默认为 0):将在主进程中预取的数据数量。
init_fn – (Callable,可选):当主进程开始遍历
DataPipe
图时调用的自定义函数。reset_fn – (Callable,可选):在每个 epoch 开始时调用的自定义函数,其预期参数为
DataPipe
、WorkerInfo
和SeedGenerator
。
- initialize(datapipe: Union[IterDataPipe, MapDataPipe]) Union[IterDataPipe, MapDataPipe] ¶
ReadingService
获取一个DataPipe
图,并根据自定义需求将其适配成一个新的DataPipe
图。在第一次创建DataLoader2
迭代器时调用一次。在调用此方法之前,ReadingService
对象必须是可 pickle 的。- 参数:
datapipe – 原始的
DataPipe
图。- 返回值:
一个已适配或新的
DataPipe
图。
- initialize_iteration(seed_generator: SeedGenerator, iter_reset_fn: Optional[Callable[[Union[IterDataPipe, MapDataPipe]], Union[IterDataPipe, MapDataPipe]]] = None) Optional[Callable[[Union[IterDataPipe, MapDataPipe]], Union[IterDataPipe, MapDataPipe]]] ¶
ReadingService
为一个 epoch 启动服务。每次获取DataLoader2
迭代器时开始调用。- 参数:
seed_generator – 由 DataLoader2 创建和管理的 SeedGenerator 对象。作为随机性的唯一来源,它将控制 DataPipes 图中所有随机操作的确定性。
iter_reset_fn – 当
SequentialReadingService
将多个ReadingServices
连接起来时,来自先前ReadingServcie
的可选重置函数。
- 返回值:
后续
ReadingService
将使用的新的iter_reset_fn
示例
MultiProcessingReadingService 开始为每个进程设置工作进程种子,并从图中预取项目。