flo*_*oyd 7 python ram memory-management deep-learning pytorch
1-如果num_workers为2,是否意味着将2批放入RAM中并将其中1批发送到GPU或将3批放入RAM中然后将其中1批发送到GPU?
2-当工作程序的数量大于CPU内核的数量时,实际上会发生什么?我尝试了一下,但效果很好,但是它如何工作?(我认为我可以选择的最大工人数是核心数)
3-如果我设置num_workers为3,并且在训练过程中内存中没有批次用于GPU,主进程是在等待其工作人员读取批次还是在读取单个批次(不等待工作人员)?
Shi*_*han 10
num_workers>0,仅这些工作人员将检索数据,而主过程则不会。因此,当 num_workers=2您最多有2个工作人员同时将数据放入RAM时,而不是3个。DataLoader,不仅从当前RAM中的可用内存随机返回,还用于batch_sampler确定下一个要返回的批次。每个批次都分配给一个工作人员,主流程将等待,直到分配的工作人员检索到所需的批次为止。最后要澄清的是,DataLoader直接将任何内容发送到GPU 并不是您的工作,您明确地要求cuda()它或修改Dataset的__getitem__()方法。
| 归档时间: |
|
| 查看次数: |
4767 次 |
| 最近记录: |