问题描述
我正在使用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进行了某种锁定,因此只有一个会话可以编辑或修改缓存文件,但在完成其操作中心后,KerasLayer不会删除导致不活动的锁。
解决方法
这可能是由于通过运行colab的计算机将文件从GCS复制到GCS的延迟所致。
有一种方法可以为TFHUB_CACHE_DIR使用默认的/ tmp位置,这可能会更快。尝试不显式设置TFHUB_CACHED_DIR,而是将LoadOptions传递给带有实验性io_device ='/ job:localhost'的hub.KerasLayer,例如
load_options = tf.saved_model.LoadOptions(experimental_io_device ='/ job:localhost') layer = hub.KerasLayer(...,load_options = load_options)