luk*_*kas 7 object-detection tensorflow
令我惊讶的是,增加批处理大小并不会提高GPU的总处理速度。我的测量:
我的期望是,由于GPU上的并行化,该步骤的时间将(几乎)保持不变。但是,它几乎与批量大小成线性比例关系。为什么?我误会了吗?
我正在使用Tensorflow Object Detection API,重新训练了预先训练的fast_rcnn_resnet101_coco模型,预定义的batch_size为1,我们的GPU(Nvidia 1080 Ti)最多可以处理4张图像,因此我想利用它来加快训练速度。
人们经常错误地提到批量学习与在线训练一样快或更快。事实上,批量学习是在将完整的数据集(批次)呈现给网络后改变权重。因此,权重更新频率相当慢。这解释了为什么测量中的处理速度与您观察到的一样。
要进一步了解训练技术,请查看 2003 年的论文《梯度下降学习的批量训练的一般低效率》。它涉及批量学习和在线学习的比较。
关于您的评论:
我认为单个 GPU 上不会发生模型或数据并行化。GPU并行化训练算法中涉及的向量和矩阵运算,但批量学习算法仍然计算如下:
loop maxEpochs times
for each training item
compute weights and bias deltas for curr item
accumulate the deltas
end for
adjust weights and bias deltas using accumulated deltas
end loop
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,虽然权重调整仅对整个批次应用一次,但仍然必须为批次中的每个元素计算权重和偏差增量。因此,恕我直言,与在线学习相比,批量学习算法没有很大的性能优势。
| 归档时间: |
|
| 查看次数: |
2487 次 |
| 最近记录: |