在 TensorFlow 重新训练诗人期间 GPU 利用率为 0%

Lar*_*son 13 python gpu gpgpu tensorflow pre-trained-model

我正在遵循TensorFlow Retraining for Poets 的说明。GPU 利用率似乎很低,因此我retrain.py按照使用 GPU 中的说明对脚本进行了检测。日志验证了 TF 图是在 GPU 上构建的。我正在重新训练大量的课程和图像。 请帮我调整 TF 中的参数和重新训练脚本以利用 GPU

我知道这个问题,我应该减少批量大小。这个脚本的“批量大小”由什么构成并不明显。我有 60 个班级和 1MM 的训练图像。它首先制作 1MM 瓶颈文件。那部分是 CPU 并且很慢,我理解这一点。然后它以 4,000 个步骤进行训练,在该步骤中每次需要 100 张图像。这是批次吗?如果我减少每一步的图像数量,GPU 利用率会上升吗?

您的帮助将不胜感激!

Max*_*x V 3

我们来一一解答您的疑问:

  1. 批量大小是一次进行训练/测试/验证的图像数量。您可以找到脚本中定义的各个参数及其默认值:
  parser.add_argument(
      '--train_batch_size',
      type=int,
      default=100,
      help='How many images to train on at a time.'
  )
  parser.add_argument(
      '--test_batch_size',
      type=int,
      default=-1,
      help="""\
      How many images to test on. This test set is only used once, to evaluate
      the final accuracy of the model after training completes.
      A value of -1 causes the entire test set to be used, which leads to more
      stable results across runs.\
      """
  )
  parser.add_argument(
      '--validation_batch_size',
      type=int,
      default=100,
      help="""\
      How many images to use in an evaluation batch. This validation set is
      used much more often than the test set, and is an early indicator of how
      accurate the model is during training.
      A value of -1 causes the entire validation set to be used, which leads to
      more stable results across training iterations, but may be slower on large
      training sets.\
      """
  )
Run Code Online (Sandbox Code Playgroud)

因此,如果您想减少训练批量大小,您应该使用以下参数运行脚本:

python -m retrain --train_batch_size=16
Run Code Online (Sandbox Code Playgroud)

我还建议您将批量大小的数字指定为 2 的幂(16、32、64、128,...)。这个数字取决于您使用的 GPU。GPU 的内存越少,您应该使用的批处理大小就越小。在 GPU 为 8Gb 的情况下,您可以尝试批量大小为 16。

  1. 要了解您是否正在使用 GPU,您可以按照您提到的 Tensorflow 文档中的步骤进行操作- 只需输入 tf.debugging.set_log_device_placement(True)

作为脚本的第一条语句

设备放置日志记录会导致打印任何张量分配或操作。