Проблемы с Google Cloud ML и GCS Bucket

Я использую реализации исследовательских работ Tensorflow с открытым исходным кодом, например DCGAN-tensorflow. Большинство используемых мной библиотек настроены для обучения модели локально, но я хочу использовать Google Cloud ML для обучения модели, поскольку у меня нет графического процессора на моем ноутбуке. Мне сложно изменить код для поддержки ведер GCS. На данный момент я сохраняю свои журналы и модели в / tmp, а затем запускаю команду 'gsutil', чтобы скопировать каталог в gs: // my-bucket в конце обучения (пример здесь). Если я попытаюсь сохранить модель непосредственно в gs: // my-bucket, она никогда не появится.

Что касается обучающих данных, один из примеров тензорного потока копирует данные из GCS в / tmp для обучения (пример здесь), но это работает, только если набор данных небольшой. Я хочу использовать CelebA, а он слишком велик, чтобы копировать его в / tmp при каждом запуске. Есть ли какая-либо документация или руководства по обновлению кода, который локально обучает использованию Google Cloud ML?

Реализации используют различные версии Tensorflow, в основном .11 и .12.


person psoulos    schedule 15.03.2017    source источник


Ответы (1)


В настоящее время нет окончательного руководства. Основная идея состоит в том, чтобы заменить все вхождения собственных файловых операций Python эквивалентами в _ 1_, а именно:

Эти функции будут работать локально и в GCS (а также в любой зарегистрированной файловой системе). Однако обратите внимание, что есть некоторые незначительные различия в file_io и стандартных файловых операциях (например, поддерживается другой набор «режимов»).

К счастью, написание контрольной точки и сводки работают из коробки, просто не забудьте передать путь GCS к _ 9_ и tf.summary.FileWriter.

В отправленном вами образце это выглядит потенциально болезненным. Подумайте о том, чтобы обезьяна исправляла функции Python для сопоставления с эквивалентами TensorFlow, когда программе нужно сделать это только один раз (продемонстрировано здесь ).

Кстати, во всех примерах на этой странице показаны файлы для чтения. из GCS.

person rhaertel80    schedule 15.03.2017
comment
Спасибо за эту информацию. У меня проблема при чтении файла изображения. Вместо использования scipy.misc.imread (gs: // BUCKET / PATH), который не работает с URI GCS, я сначала открываю файл, используя file_io: scipy.misc.imread (file_io.FileIO (path, mode = 'р')). Кажется, это возвращает объект ‹PIL.JpegImagePlugin.JpegImageFile› вместо массива. Я не уверен, как решить эту проблему в Cloud ML, поскольку обсуждения в Интернете, похоже, указывают на то, что это проблема с установкой PIL. - person psoulos; 15.03.2017
comment
Это уродливый взлом, но вы можете использовать подпроцесс в файле setup.py, чтобы делать такие вещи, как apt-get и pip install. Тем не менее, позвольте мне исследовать. Возможно, имеет смысл задать отдельный вопрос по этой проблеме. - person rhaertel80; 16.03.2017
comment
Об этом упомянул в своем ответе на ваш другой вопрос здесь (stackoverflow.com/questions/42821093/), но проблема, похоже, связана с ошибкой в ​​версии file_io в TF 0.12.1 и исправлена ​​в TF 1.0 - person Chris Meyers; 16.03.2017
comment
tf.summary.FileWriter, похоже, работает, если указан путь GCS, но tf.train.Saver.save работает только тогда, когда ему задан путь GCS, где родительские каталоги уже существуют. Я считаю, что это ошибка, поскольку GCS должен быть плоским хранилищем, в котором для удобства предоставляется иерархия файлов. - person psoulos; 17.03.2017
comment
В дальнейшем сбой происходит здесь: github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ - person psoulos; 17.03.2017
comment
Это может быть намеренно, но я дважды проверю. Особенно, если поведение сводок и контрольных точек отличается. - person rhaertel80; 17.03.2017
comment
Gcs_file_system.cc в коде TensorFlow реализует интерфейс FileSystem, поэтому ожидается, что код более высокого уровня (включая код Python, такой как saver.py) будет предполагать, что GCS является традиционной файловой системой и не будет иметь никакого значения при взаимодействии с GCS по сравнению с локальным. файловая система. Помня об этом принципе, IsDirectory в GCS возвращает false, если не существует объектов (включая маркеры каталогов нулевой длины) с соответствующим префиксом. - person Alexey Surkov; 20.04.2017
comment
касательно В качестве примечания, все образцы на этой странице показывают чтение файлов из GCS., это правда? Кажется, все эти образцы копируют файлы из gs: в локальный файл в datalab vm, а затем читают файл из локальной файловой системы. Я нашел этот пост, потому что пытаюсь прочитать двоичные файлы из gs: в записную книжку, размещенную в GCP. - person netskink; 09.07.2018
comment
Пример Keras копирует файл .h5 с локального диска на GCS, потому что .h5 не поддерживается на GCS. Но я считаю, что другие образцы считываются непосредственно из GCS. Вы можете указать мне на проблемные образцы? Или я могу помочь вам прочитать файлы из GCS? - person rhaertel80; 10.07.2018