Почему Tensorflow's MirroredStrategy и OneDevicestrategy не работают с колабом? - PullRequest
2 голосов
/ 08 января 2020

Я пытаюсь понять Распределенное обучение Tensorflow, используя MirroredStrategy и другие его варианты. У меня уже есть простой скрипт с MNIST на colab, но его нужно протестировать на нескольких графических процессорах. Запуск и реализация кода выдает мне ошибку, так как «ValueError: Аргумент Distribute при компиляции недоступен в TF 2.0, пожалуйста, создайте модель в рамках стратегии распространения». Я тоже пробовал OneDeviceStrategy, но он тоже не работает. Я хочу сравнить сложность и точность времени, используя различные методы распределенного обучения. Вот Скриншот ошибки и Ссылка на код на Colab .

1 Ответ

2 голосов
/ 09 марта 2020

Проблема, по сути, заключается в том, как вы используете область действия стратегии распространения. В TF 2.0 вы не передаете стратегию распространения методу компиляции. Вместо этого вам нужно построить свою модель и скомпилировать ее в рамках стратегии распространения. Обратите внимание, что вызов model.fit (...) не должен быть внутри области стратегии распространения. Например, это отредактированная версия вашего кода Colab, которая должна решить вашу проблему:

...

strategy = tf.distribute.MirroredStrategy()

with strategy.scope():
  input_img = layers.Input(shape=IMG_SIZE)
  model = layers.Conv2D(32, (3, 3), padding='same')(input_img)
  ... # model definition
  output_img = layers.Activation('softmax')(model)

  model = models.Model(input_img, output_img)

  model.compile(optimizers.Adam(lr=0.0001), loss='categorical_crossentropy', metrics=["accuracy"])

...

history = model.fit(...)

Пожалуйста, смотрите Использование tf.distribute.Strategy с Keras раздел Распределенное обучение с руководством TensorFlow для получения дополнительной информации.

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