Определение максимального размера пакета с помощью TensorFlow Object Detection API

#tensorflow #object-detection-api #batchsize

#tensorflow #object-detection-api #размер пакета

Вопрос:

TF Object Detection API по умолчанию использует всю память графического процессора, поэтому трудно сказать, насколько я могу увеличить размер пакета. Обычно я просто продолжаю увеличивать его, пока не получу ошибку CUDA ООМ.

С другой стороны, PyTorch по умолчанию не захватывает всю память графического процессора, поэтому легко увидеть, с каким процентом мне осталось работать, без всех проб и ошибок.

Есть ли лучший способ определить размер пакета с помощью TF Object Detection API, которого мне не хватает? Что-то вроде allow-growth флага для model_main.py ?

Ответ №1:

Я просматривал исходный код и не нашел никакого ФЛАГА, связанного с этим.

Но в файле model_main.py из https://github.com/tensorflow/models/blob/master/research/object_detection/model_main.py вы можете найти следующее определение основной функции:

 def main(unused_argv):
  flags.mark_flag_as_required('model_dir')
  flags.mark_flag_as_required('pipeline_config_path')
  config = tf.estimator.RunConfig(model_dir=FLAGS.model_dir)

  train_and_eval_dict = model_lib.create_estimator_and_inputs(
      run_config=config,
...
  

идея состояла бы в том, чтобы изменить его аналогичным образом, например, следующим образом:

 config_proto = tf.ConfigProto()
config_proto.gpu_options.allow_growth = True

config = tf.estimator.RunConfig(model_dir=FLAGS.model_dir, session_config=config_proto)
  

Итак, добавляя config_proto и изменяя config , но сохраняя все остальное равным.

Кроме того, allow_growth позволяет программе использовать столько памяти GPU, сколько ей необходимо. Итак, в зависимости от вашего графического процессора вы можете в конечном итоге израсходовать всю память. В этом случае вы можете захотеть использовать

 config_proto.gpu_options.per_process_gpu_memory_fraction = 0.9
  

который определяет долю используемой памяти.

Надеюсь, это помогло.

Если вы не хотите изменять файл, кажется, что проблема должна быть открыта, потому что я не вижу никакого ФЛАГА. если ФЛАГ не

 flags.DEFINE_string('pipeline_config_path', None, 'Path to pipeline config '
                    'file.')
  

Означает что-то связанное с этим. Но я так не думаю, потому что, судя по тому, что кажется в model_lib.py , это связано с конфигурациями обучения, оценки и вывода, а не с конфигурацией использования GPU.

Комментарии:

1. Спасибо! Я думаю, что это может быть хорошим обходным путем. Я опробую это завтра утром и отчитаюсь.