Поток данных Tensorflow: медленно с кэшированием на диск - как улучшить производительность оценки? - PullRequest
0 голосов
/ 01 марта 2019

Я построил конвейер данных.Псевдокод имеет следующий вид:

  1. набор данных ->
  2. набор данных = аугмент (набор данных)
  3. набор данных = набор данных.batch (35) .prefetch (1)
  4. набор данных = set_from_generator (to_feed_dict (набор данных)) # дорогой операционный
  5. набор данных = Cache ('/ tmp', набор данных)
  6. набор данных = набор данных.unbatch ()
  7. dataset = dataset.shuffle (64) .batch (256) .prefetch (1)
  8. to_feed_dict (набор данных)

От 1 до 5 действий, необходимых для генерации предварительно обученныхвыходы модели.Я кеширую их, так как они не меняются на протяжении эпох (весы предварительно обученных моделей не обновляются).5–8 действий подготавливают набор данных к обучению.

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

Первая эпоха медленная, поскольку он должен оценить предварительно обученную модель для каждого элемента ввода, чтобы сгенерировать шаблоны и сохранить их на диск.Более поздние эпохи быстрее, , но все еще довольно медленные - я подозреваю, что узким местом является чтение дискового кэша.

Что можно улучшить в этом конвейере данных, чтобы уменьшить проблему?Спасибо!

1 Ответ

0 голосов
/ 01 марта 2019
  1. prefetch(1) означает, что будет предварительно выбран только один элемент, я думаю, вы можете захотеть, чтобы он был таким же большим, как размер пакета или больше.
  2. После первого кеширования вы можете попытаться поставить его во второй раз, но без указания пути, чтобы оно могло кешировать некоторые данные в памяти.
  3. Может быть, ваш жесткий диск просто медленный?;)
  4. Другая идея заключается в том, что вы можете просто вручную записать в сжатый TFRecord после шагов 1-4 и затем прочитать его с другим набором данных.Сжатый файл имеет более низкое число операций ввода-вывода, но вызывает более высокую загрузку ЦП.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...