Тренировка Tensorflow на GCP с использованием данных, хранящихся в ведре, иногда оказывается узким местом - PullRequest
0 голосов
/ 24 февраля 2019

Я тренирую модель на GCP, используя доступный образ Tensorflow Debian.В соответствии с рекомендацией, я поместил свои тренировочные данные (в формате tfrecords ~ 250 МБ каждый файл в ~ 50 файлов) в одну и ту же область экземпляра Trainer.Я получаю доступ к файлам, используя встроенную способность TensorFlow для указания корзины GCP вместо папки (т. Е. Используя tf.gFile.FastGFile и т. П.).

Я заметил, что иногда обучение сильно замедляется на времясеанс, в 4 раза или более.Такие действия, как заполнение буферов перемешивания и запись / чтение контрольных точек (также в корзину GS), занимают очень много времени - как вы можете видеть в приведенном ниже выводе, заполнение буфера перемешивания с 20 тыс. Элементов заняло почти четыре минуты.В других пробегах это заняло секунды.Это определенно не узкое место GPU - во время «медленного запуска» nvidia-smi сообщает, что GPU бездействует 75% времени.

Как ни странно, похоже, что это связано с сохранением / загрузкой контрольных точек.Если я запускаю запуск с нуля без загрузки каких-либо контрольных точек из GCS, я получаю «быстрый запуск», но как только программа перезагружается с контрольных точек (например, для запуска eval, например), она снова замедляется.Запуск нового запуска, но загрузка с контрольной точки приведет к «медленному запуску».

Вот пример быстрого запуска (с нуля)

2019-02-24 05:53:32.813397: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:98] Filling up shuffle buffer (this
 may take a while): 13102 of 20000
2019-02-24 05:53:35.439741: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:136] Shuffle buffer filled.
INFO:tensorflow:loss = 7.331788, step = 0
INFO:tensorflow:global_step/sec: 0.188288
INFO:tensorflow:loss = 7.0379214, step = 20 (105.878 sec)
INFO:tensorflow:global_step/sec: 2.9655
INFO:tensorflow:loss = 7.1371107, step = 40 (6.744 sec)
INFO:tensorflow:global_step/sec: 3.10018
INFO:tensorflow:loss = 6.97763, step = 60 (6.451 sec)
INFO:tensorflow:global_step/sec: 3.06168
INFO:tensorflow:loss = 6.624346, step = 80 (6.833 sec)
INFO:tensorflow:global_step/sec: 2.89621
INFO:tensorflow:loss = 6.374439, step = 100 (6.605 sec)
INFO:tensorflow:global_step/sec: 3.07356
INFO:tensorflow:loss = 6.3277745, step = 120 (6.506 sec)
INFO:tensorflow:global_step/sec: 3.05334
INFO:tensorflow:loss = 5.9941797, step = 140 (6.550 sec)

Вот как выглядит та же настройка при загрузке с контрольной точки

2019-02-24 01:24:17.863009: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:98] Filling up shuffle buffer (this
 may take a while): 1475 of 20000
2019-02-24 01:24:27.410920: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:98] Filling up shuffle buffer (this
 may take a while): 3036 of 20000
2019-02-24 01:24:37.407969: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:98] Filling up shuffle buffer (this
 may take a while): 4567 of 20000
2019-02-24 01:24:47.512008: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:98] Filling up shuffle buffer (this
 may take a while): 5966 of 20000
2019-02-24 01:24:57.390448: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:98] Filling up shuffle buffer (this
 may take a while): 7442 of 20000
2019-02-24 01:25:07.596700: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:98] Filling up shuffle buffer (this
 may take a while): 8931 of 20000
2019-02-24 01:25:17.642448: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:98] Filling up shuffle buffer (this
 may take a while): 10145 of 20000
2019-02-24 01:25:27.360374: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:98] Filling up shuffle buffer (this
 may take a while): 11292 of 20000
2019-02-24 01:25:37.341567: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:98] Filling up shuffle buffer (this
 may take a while): 12754 of 20000
2019-02-24 01:25:47.510659: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:98] Filling up shuffle buffer (this
 may take a while): 14295 of 20000
2019-02-24 01:25:57.387689: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:98] Filling up shuffle buffer (this
 may take a while): 15723 of 20000
2019-02-24 01:26:07.198808: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:98] Filling up shuffle buffer (this
 may take a while): 16919 of 20000
2019-02-24 01:26:17.202806: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:98] Filling up shuffle buffer (this
 may take a while): 18120 of 20000
2019-02-24 01:26:27.385366: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:98] Filling up shuffle buffer (this
 may take a while): 19506 of 20000
2019-02-24 01:26:31.774001: I tensorflow/core/kernels/data/shuffle_dataset_op.cc:136] Shuffle buffer filled.
INFO:tensorflow:loss = 1.099082, step = 5000
INFO:tensorflow:global_step/sec: 0.160334
INFO:tensorflow:loss = 0.87060547, step = 5020 (125.102 sec)
INFO:tensorflow:global_step/sec: 0.877509
INFO:tensorflow:loss = 1.0365343, step = 5040 (22.429 sec)
INFO:tensorflow:global_step/sec: 0.890049
INFO:tensorflow:loss = 0.9461464, step = 5060 (22.471 sec)
INFO:tensorflow:global_step/sec: 0.880202
INFO:tensorflow:loss = 1.0375876, step = 5080 (22.722 sec)
INFO:tensorflow:global_step/sec: 0.948469
INFO:tensorflow:loss = 0.9984442, step = 5100 (21.087 sec)
INFO:tensorflow:global_step/sec: 0.953351
INFO:tensorflow:loss = 0.6918698, step = 5120 (20.978 sec)
INFO:tensorflow:global_step/sec: 0.819123
INFO:tensorflow:loss = 1.0685252, step = 5140 (24.416 sec)
INFO:tensorflow:global_step/sec: 0.905911
INFO:tensorflow:loss = 0.90230775, step = 5160 (22.077 sec)
INFO:tensorflow:global_step/sec: 0.822452

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...