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

Ste*_*ley 4 tensorflow object-detection-api

我能够在具有 4x 1080Ti 的本地机器上进行训练,正如其他人指出的那样,TF 会占用我机器上的所有可用内存。经过一番探索后,大多数搜索都让我找到了基本 TF 的解决方案,而不是对象检测 API,例如:

如何防止 TensorFlow 分配全部 GPU 内存?

如何在对象检测 API 中访问这些类型的选项?如何在 OD API 中对训练进行类似 TF 风格的控制?在 OD API / slim API 中是否有正确的方法?

我尝试向该 Training.proto 添加 GPUOptions 消息,但这似乎没有什么区别。

Eyp*_*ros 5

我还想添加第二个选择来指示张量流使用一部分可用内存。根据本指南,有 2 个选项:

  • gpu_options.per_process_gpu_memory_fraction = 0.xxx

  • gpu_options.allow_growth

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

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

...通过减少内存碎片,更有效地使用设备上相对宝贵的 GPU 内存资源。

另一方面,如果我们事先不知道 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)
Run Code Online (Sandbox Code Playgroud)

main()model_main.py.

在张量流 1.12.0 上测试。