Google Colab TPU занимает больше времени, чем графический процессор

Ниже приведен код, который я использую. Я закомментировал строку, чтобы преобразовать мою модель в модель TPU. С графическим процессором для того же объема данных требуется 7 секунд для эпохи, а с использованием TPU - 90 секунд.

    Inp = tf.keras.Input(name='input', shape=(input_dim,), dtype=tf.float32)
    x = tf.keras.layers.Dense(900, kernel_initializer='uniform',  activation='relu', input_dim=input_dim, name = 'Dense_01')(Inp)
    x = tf.keras.layers.Dropout(0.3, name = 'Dropout_02')(x)
    output = tf.keras.layers.Dense(stop_criteria, activation='softmax',name = 'Dense_02')(x)

    model = tf.keras.Model(inputs=[Inp], outputs=[output])
    opt = tf.train.AdamOptimizer(.001)
    model.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['acc'])

    '''tpu_model = tf.contrib.tpu.keras_to_tpu_model(model,
                                                  strategy=tf.contrib.tpu.TPUDistributionStrategy(
                                                      tf.contrib.cluster_resolver.TPUClusterResolver(TPU_ADDRESS)))'''
    model.fit(X_tra, y_tra, epochs=5, batch_size=batch_size, shuffle=False,
              validation_split=0.1, verbose=2)

Вот ссылка на записную книжку.


person mjosh    schedule 27.11.2018    source источник
comment
Можете поделиться записной книжкой, которая воспроизводит подтормаживание?   -  person Bob Smith    schedule 27.11.2018
comment
@BobSmith Обновил вопрос и даю ссылку на блокнот colab   -  person mjosh    schedule 28.11.2018
comment
Вы проверили, подходит ли ваш сценарий для сценария использования TPU в соответствии с cloud.google.com/tpu? / docs / tpus # when_to_use_tpus?   -  person Jaroslav    schedule 22.10.2019
comment
@Jaroslav. В итоге я использовал графический процессор, так как мой набор данных не был таким большим.   -  person mjosh    schedule 23.10.2019
comment
@mjosh вы имели в виду TPU или GPU?   -  person Jaroslav    schedule 23.10.2019


Ответы (1)


Вы пробовали использовать метод tpu_model.fit_generator, как в примере ниже? Другая часть выглядит нормально. Также одной проблемой могло быть использование Adam Optimizer. Было что-л. про это, но я забыл где ссылка. Попробуйте другой оптимизатор и приведенный ниже код, и если другой оптимизатор сработал, вы знаете, что это должно быть что-то. с Adam Optimizer.

tf.keras.backend.clear_session()

training_model = lstm_model(seq_len=100, batch_size=128, stateful=False)

tpu_model = tf.contrib.tpu.keras_to_tpu_model(
    training_model,
    strategy=tf.contrib.tpu.TPUDistributionStrategy(
        tf.contrib.cluster_resolver.TPUClusterResolver(TPU_WORKER)))

tpu_model.fit_generator(
    training_generator(seq_len=100, batch_size=1024),
    steps_per_epoch=100,
    epochs=10,
)
tpu_model.save_weights('/tmp/bard.h5', overwrite=True)
person jbuchel    schedule 27.11.2018
comment
Я попробовал RMSPropOptimizer, но результат тот же. - person mjosh; 28.11.2018