Colab TPU上的RNN以与本地CPU版本相同的速度运行

问题描述

我实现了RNN的本地版本和RNN的Colab TPU版本(代码如下)。当执行Colab TPU版本(如下代码)时,培训速度非常慢,就像在笔记本计算机的cpu上运行本地版本一样。

Colab TPU是否支持RNN网络?

在这里想念东西吗?

import tensorflow as tf
import os
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense,SimpleRNN

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

strategy = tf.distribute.TPUStrategy(resolver)

with strategy.scope():  
  model = Sequential()
  model.add(SimpleRNN(units=32,input_shape=(1,step),activation="relu"))
  model.add(Dense(16,activation="relu"))
  model.add(Dense(1))
  model.compile(loss='mean_squared_error',optimizer='rmsprop')

model.fit(X,y,epochs=50,batch_size=16,verbose=0)

解决方法

RNN的this page上的

ctrl-f。如果您可以使RNN足够静态,则似乎应该可以使用。

通常,动态操作无法与TPU配合使用,因为它需要为每个新的训练示例重新编译模型图。