Огромный размер файла записей TF для хранения в Google Cloud - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь изменить проект тензорного потока, чтобы он стал совместимым с TPU.

Для этого я начал с кода, описанного на этом сайте.

Здесь загружается набор данных COCO и сначала извлекаются его характеристики с использованием модели InceptionV3. Я хотел изменить этот код, чтобы он поддерживал TPU.

Для этого я добавил обязательный код для TPU согласно этой ссылке.

С областью действия стратегии TPU, Я создал модель InceptionV3 с использованием библиотеки keras и загрузил модель с весами Imag eNet в соответствии с существующим кодом.

Теперь, поскольку TPU требует хранения данных в хранилище Google Cloud, я создал файл записей tf с помощью tf . Пример с помощью этой ссылки.

Теперь я попытался создать этот файл несколькими способами, чтобы в нем были данные, которые TPU найдет через TFRecordDataset.

Сначала я напрямую добавил данные изображения и путь к изображению в файл и загрузил его в корзину GCP, но при чтении этих данных я понял, что эти данные изображения бесполезны, поскольку они не содержат информации о форме / размере, которая им понадобится, и Я не изменял его размер до необходимого перед хранением. Размер этого файла стал 2,5 ГБ, и это было нормально. Затем я подумал, что можно сохранять только путь к изображению в облаке, поэтому я создал еще один файл записей tf с только путем к изображению, затем я подумал, что это может быть не оптимизированный код, поскольку TPU должен будет открыть изображение индивидуально, изменить его размер до 299299, а затем подать для моделирования, и будет лучше, если у меня будут данные изображения через функцию .map () внутри TFRecordDataset, поэтому я снова попробовал, на этот раз используя ссылку эту , сохранив R, G и B вместе с путем к изображению внутри файла записей tf.

Однако теперь я вижу, что размер файла записей tf слишком велик, например, около 40-45 ГБ, и в конечном итоге я остановил выполнение, поскольку моя память заполнялась на Google Colab TPU .

Исходный размер набора данных COCO не такой большой. Это почти как 13 ГБ ... и из этого набора данных создается только из первых 30 000 записей. поэтому 40 ГБ выглядит странно.

Могу я узнать, в чем проблема с таким способом хранения функций? Есть ли лучший способ сохранить данные изображения в файле записей TF, а затем извлечь их через TFRecordDataset.

1 Ответ

2 голосов
/ 03 августа 2020

Я думаю, что набор данных COCO, обработанный как TFRecords, должен быть около 24-25 ГБ на GCS. Обратите внимание, что TFRecords не предназначены для использования в качестве формы сжатия, они представляют данные как protobufs, поэтому их можно оптимально загрузить в программы TensorFlow.

У вас может быть больше успеха, если вы обратитесь к: https://cloud.google.com/tpu/docs/coco-setup (соответствующий сценарий можно найти здесь ) для преобразования COCO (или подмножества) в TFRecords.

Кроме того, мы реализовали модели обнаружения для COCO с использованием оптимизированных для TF2 / Keras для GPU / TPU здесь , который может оказаться полезным для оптимальных входных конвейеров. Пример руководства можно найти здесь . Спасибо!

...