在 Tensorflow 对象检测中定义 GPU 选项 API

Defining GPU options within Tensorflow Object Detection API

我能够在具有 4x 1080Ti 的本地机器上进行训练,正如其他人所说,TF 占用了我机器上的所有可用内存。在四处寻找之后,大多数搜索让我找到了基本 TF 而不是对象检测的解决方案 API,例如:

如何在对象检测中访问这些选项 API?我怎样才能在 OD API 内对训练进行类似 TF 风格的控制? OD API / slim API?

有没有合适的方法

我尝试向 training.proto 添加 GPUOptions 消息,但这似乎没有什么不同。

我 运行 遇到了类似的问题,并将此属性添加到 trainer.py 中的会话配置中,从而减少了视频内存的使用量:

session_config.gpu_options.per_process_gpu_memory_fraction = 0.6

使用

确认效果
watch nvidia-smi

我还想添加第二个选项,用于指示 tensorflow 使用一部分可用内存。根据此 guide 有 2 个选项:

  • gpu_options.per_process_gpu_memory_fraction = 0.xxx

  • gpu_options.allow_growth

对于第一个(正如之前在答案中提到的),定义了整个可用 GPU 内存的百分比,而对于第二个,您指示 tensorflow 仅使用必要的内存。

根据文档,如果我们事先知道必要的内存要求,第一个应该更好,因为它允许

... more efficiently use the relatively precious GPU memory resources on the devices by reducing memory fragmentation.

另一方面,如果我们事先不知道 GPU 内存要求,我宁愿选择第二种,即使性能稍有牺牲。

至于在tensorflow最近的API变化中的实际使用我是这样插入的:

session_config = tf.ConfigProto()
session_config.gpu_options.allow_growth = True
# or use
# session_config.gpu_options.per_process_gpu_memory_fraction = 0.xxx

tf.logging.set_verbosity(tf.logging.INFO)
config = tf.estimator.RunConfig(model_dir=FLAGS.model_dir, session_config=session_config)

main()model_main.py.

在 tensorflow 1.12.0 上测试。