从 GCS 在 Tensorflow TPU 中加载 tfdev.hub 个模型

loading tfdev.hub models in Tensorflow TPU from GCS

我正在使用

在 colab TPU 实例中从 GCS 加载 tfhub.dev 模型

os.environ["TFHUB_CACHE_DIR"] = "gs://BUCKETNAME/model-cache-dir/"

with strategy.scope():
     layer = hub.KerasLayer("https://tfhub.dev/google/inaturalist/inception_v3/feature_vector/4",trainable=True)

但是花了将近 15 分钟的时间,最后我也得到了警告

WARNING:absl:Deleting lock file gs://BUCKETNAME/model-cache-dir/a6cc63f37ce9d4a026a90b8d56f20a387de46a3f.lock due to inactivity.

知道这是为什么吗

我的猜测tensorflow 有某种锁定,因此只有一个会话可以编辑或修改缓存文件,但在完成其操作后hub.KerasLayer 没有删除导致不活动的锁。

这可能是由于通过 colab 运行 所在的机器将文件从 GCS 复制到 GCS 的延迟所致。

有一种为 TFHUB_CACHE_DIR 使用默认 /tmp 位置的方法可能会更快。尝试不显式设置 TFHUB_CACHED_DIR,而是使用 experimental_io_device='/job:localhost' 将 LoadOptions 传递给 hub.KerasLayer,例如

load_options = tf.saved_model.LoadOptions(experimental_io_device='/job:localhost') 图层 = hub.KerasLayer(..., load_options=load_options)