gpt4 book ai didi

tensorflow - 为什么训练速度不随批大小成比例?

转载 作者:行者123 更新时间:2023-12-03 14:44:47 24 4
gpt4 key购买 nike

我很惊讶增加批量大小并没有提高 GPU 的总处理速度。我的测量:

  • batch_size=1:0.33 秒/步
  • batch_size=2:0.6 秒/步
  • batch_size=3:0.8 秒/步
  • batch_size=4:1.0 秒/步

  • 我的期望是由于 GPU 上的并行化,该步骤的时间将保持(几乎)恒定。然而,它几乎与批量大小成线性比例。为什么?我是不是误会了什么?

    我正在使用 Tensorflow Object Detection API ,重新训练预训练的 fast_rcnn_resnet101_coco 模型,预定义的 batch_size 为 1,我们的 GPU(Nvidia 1080 Ti)最多可以处理 4 张图像,所以我想利用它来加速训练。

    最佳答案

    人们经常错误地提到批量学习与在线培训一样快或更快。事实上,批量学习只是改变权重一次,完整的数据集(批量)已经呈现给网络。因此,权重更新频率比较慢。这解释了为什么测量中的处理速度表现得像您观察到的那样。

    要进一步了解训练技术,请查看 2003 年的论文 The general inefficiency of batch training for gradient descent learning .它处理批处理和在线学习的比较。

    编辑:

    关于你的评论:

    我认为在单个 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

    如您所见,虽然权重调整仅对整个批次应用一次,但仍然需要为批次中的每个元素计算权重和偏差增量。因此,恕我直言,与在线学习相比,批量学习算法没有很大的性能优势。

    关于tensorflow - 为什么训练速度不随批大小成比例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48267891/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com