Обучение модели Шекспира на GPU вместо TPU

Я пытаюсь увидеть разницу между обучением модели с TPU и GPU.

Это часть обучающей модели:

import time

start = time.time()
tf.keras.backend.clear_session()

resolver = tf.distribute.cluster_resolver.TPUClusterResolver(tpu='grpc://' + os.environ['COLAB_TPU_ADDR'])
tf.config.experimental_connect_to_cluster(resolver)
#TPU initialization
tf.tpu.experimental.initialize_tpu_system(resolver)
print("All devices: ", tf.config.list_logical_devices('TPU'))

strategy = tf.distribute.experimental.TPUStrategy(resolver)

with strategy.scope():
  training_model = lstm_model(seq_len=100, stateful=False)
  training_model.compile(
      optimizer=tf.keras.optimizers.RMSprop(learning_rate=0.01),
      loss='sparse_categorical_crossentropy',
      metrics=['sparse_categorical_accuracy'])

training_model.fit(
    input_fn(),
    steps_per_epoch=100,
    epochs=10
)
training_model.save_weights('/tmp/bard.h5', overwrite=True)

end = time.time()
elapsed_TPU = end - start

print(elapsed_TPU)

(Источник: https://colab.research.google.com/github/tensorflow/tpu/blob/master/tools/colab/shakespeare_with_tpu_and_keras.ipynb).

Верхняя часть кода предназначена для инициализации TPU. Есть ли способ изменить это так, чтобы его можно было адаптировать для работы на графическом процессоре?


person Gaston    schedule 25.03.2021    source источник
comment
Проверьте здесь colab.research.google.com/notebooks/gpu.ipynb.   -  person albert    schedule 25.03.2021
comment
Спасибо за ответ, но это все еще не помогло адаптироваться к следующему алгоритму для графического процессора. Как я мог достичь strategy.scope () с помощью графического процессора вместо TPU   -  person Gaston    schedule 25.03.2021


Ответы (1)


Вам не нужно использовать tf.distribute.Strategy, если у вас нет TPU или нескольких процессоров / графических процессоров. См. здесь. Вы можете запустить это как стандартный код Tensorflow без стратегии.

import time

start = time.time()
tf.keras.backend.clear_session()

training_model = lstm_model(seq_len=100, stateful=False)
training_model.compile(
    optimizer=tf.keras.optimizers.RMSprop(learning_rate=0.01),
    loss='sparse_categorical_crossentropy',
    metrics=['sparse_categorical_accuracy'])

training_model.fit(
    input_fn(),
    steps_per_epoch=100,
    epochs=10
)
training_model.save_weights('/tmp/bard.h5', overwrite=True)

end = time.time()
elapsed_TPU = end - start

print(elapsed_TPU)
person albert    schedule 25.03.2021
comment
Я вижу спасибо за вашу помощь - person Gaston; 25.03.2021