为什么在 Google Cloud ML 上训练的 TensorFlow 模型比在本地训练的模型更准确?
Why are TensorFlow models trained on Google Cloud ML more accurate than models trained locally?
我训练了一个对象检测 API 模型(Mask RCNN with COCO / Inception v2 from the Zoo),具有相同的配置、TensorFlow 和模型版本,以及用于相同步数的相同(自定义)数据集.
在本地机器上(1080 TI 上的 tensorflow-gpu)我使用 object_detection/train.py,而在云端我使用 google ml-engine 作业调用 object_detection.train 模块。两者使用相同的学习率。
云 运行 使用了 5 个 worker,而本地只有 1 个 GPU。它们都设置为批量大小 1。
为什么本地训练的模型的准确度要低得多?与云端训练的模型相比,本地训练的模型往往有更多的误报。
更重要的是,我怎样做才能使我在本地机器上的训练达到云端的水平?
看起来你在云端使用了 5 个 worker,而你在本地只使用了一个 GPU?那么,batch size就不同了。
有效批大小是您在命令行上设置的批大小除以工作人员数。并且看起来较低的批量在您的模型上确实效果很好。因此,为了让您的本地训练准确度更高,请将 batchsize 减少到该值的 1/5。
此外,如果差异如此之大,您可以明显看出云模型更好,那么也许您应该进行超参数调整以找到更好的参数。在 BASIC_GPU 设置上执行此操作,以便云上的相同设置也可以在本地工作。
我训练了一个对象检测 API 模型(Mask RCNN with COCO / Inception v2 from the Zoo),具有相同的配置、TensorFlow 和模型版本,以及用于相同步数的相同(自定义)数据集.
在本地机器上(1080 TI 上的 tensorflow-gpu)我使用 object_detection/train.py,而在云端我使用 google ml-engine 作业调用 object_detection.train 模块。两者使用相同的学习率。
云 运行 使用了 5 个 worker,而本地只有 1 个 GPU。它们都设置为批量大小 1。
为什么本地训练的模型的准确度要低得多?与云端训练的模型相比,本地训练的模型往往有更多的误报。
更重要的是,我怎样做才能使我在本地机器上的训练达到云端的水平?
看起来你在云端使用了 5 个 worker,而你在本地只使用了一个 GPU?那么,batch size就不同了。
有效批大小是您在命令行上设置的批大小除以工作人员数。并且看起来较低的批量在您的模型上确实效果很好。因此,为了让您的本地训练准确度更高,请将 batchsize 减少到该值的 1/5。
此外,如果差异如此之大,您可以明显看出云模型更好,那么也许您应该进行超参数调整以找到更好的参数。在 BASIC_GPU 设置上执行此操作,以便云上的相同设置也可以在本地工作。