как хранить очень большую переменную в tenorflow? - PullRequest
2 голосов
/ 16 марта 2019

мне нужно тренировать очень большой врезной дикт (около 1 ТБ). У меня много машин, поэтому я могу использовать распределенное обучение тензорного потока.

Однако я обнаружил, что не могу создать очень большую переменную в Parameter Server. Может ли tenorflow разделить переменную на разные PS автоматически?

Thx.

1 Ответ

1 голос
/ 17 марта 2019

Я пока еще ничего не видел для автоматического разделения (все еще охота на себя), однако, одна мысль будет заключаться в Variable Collections

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

специально смотрит на class VariableV1(Variable) ...


... строк 1511 - 1512 ...

    if collections is None:
        collections = [ops.GraphKeys.GLOBAL_VARIABLES]

... и строки 1528 - 1530 ...

    self._trainable = trainable
    if trainable and ops.GraphKeys.TRAINABLE_VARIABLES not in collections:
      collections = list(collections) + [ops.GraphKeys.TRAINABLE_VARIABLES]

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

Другая мысль будет использовать Iterator для чтения и анализа фрагментов из ваших источников данных вместо загрузки всего сразу.


Я обновлюсь, если мне удастся найти встроенный перед кем-то еще.

...