PYTORCH调优笔记
实验环境(i59400,1660Ti,32内存,2t固态)GPU模式
实验:SCNN做十分类
DataLoader(train_data, batch_size=batch_size, shuffle=True, drop_last=True,num_workers=4)
num_workers,pin_memory
batch_size=32
num_workers=4,pin_memory=False
单个batch时间:17.51min
num_workers=4,pin_memory=True
单个batch时间:20.20min
num_workers=0,pin_memory=False
单个batch时间:16.26
num_workers=0,pin_memory=True
单个batch时间:20.08
算上计时误差(-30s,+30s),结论是pin_memory=True在当前硬件环境下降速了,并不是像想象中那样将Dataloader的pin_memory设置为True可以将Tensor放入到内存的锁页区,加快训练速度。
(并且pin_memory=True情况下,cpu使用率到了100%(明显变高,False情况下为40%),cuda使用率到了56%(False情况下为57%))
dataloader里面的多线程读取数据一般打开设置一个合适的数值加速还是比较明显的,这里效果不是很明显,本实验设备为4核,8逻辑处理器
Pytorch中,将Dataloader的pin_memory设置为True会提高训练速度吗?.