Dataloader 参数设置示例:
Dataloader(dataset, num_workers=8, pin_memory=True)
Dataloader的num_worker设置多少才合适,这个问题是很难有一个推荐的值。有以下几个建议:
- num_workers=0表示只有主进程去加载batch数据,这个可能会是一个瓶颈。
- num_workers = 1表示只有一个worker进程用来加载batch数据,而主进程是不参与数据加载的。这样速度也会很慢。
- num_workers>0 表示只有指定数量的worker进程去加载数据,主进程不参与。增加num_works也同时会增加cpu内存的消耗。所以num_workers的值依赖于 batch size和机器性能。
- 一般开始是将num_workers设置为等于计算机上的CPU数量
- 最好的办法是缓慢增加num_workers,直到训练速度不再提高,就停止增加num_workers的值。