如何从 GCS 存储桶加载 TensorFlow 模型

How to load a TensorFlow model from a GCS bucket

问题: 目前,我在 GCS 中有一个 public 存储桶,用于存储我的 TensorFlow 模型,我想将这些模型加载到我的 python没有任何身份验证的脚本。我该怎么做?

模型位于具有以下结构的文件夹中:

my-bucket
├── model_1
|   ├── assets
|   |   └── (this is an empty folder)
|   ├── saved_model.pb
|   ├── variables
|   |   ├── variables.data-00000-of-00001
|   |   └── variables.index

我知道我可以使用

tf.keras.models.load_model("gs://my_bucket/model_1")

但这需要身份验证,即使存储桶是 public。

注意:我使用的是 Python Tensorflow 而不是 Tensorflow.js。

您确定存储桶中的对象也是 public 吗?一个简单的检查,看看是否是这种情况:

gcloud auth revoke --all
gsutil ls -r gs://my-bucket

另一种可能是您需要帐户密钥,即使存储桶是 public。 keras 文档说明如下:

GCloud authentication happens entirely through your authentication key, without project specification. An example workflow using TensorFlow Cloud from a notebook is provided in the "Putting it all together" section of this guide.

这意味着您需要一个帐户密钥,即使存储桶是 public。这意味着您只需要使用以下命令登录您自己的 gcp 帐户:

gcloud auth application-default login

最后一个选项(需要更多工作)是您可以使用 google-cloud-storage 客户端从存储桶中本地下载模型,无需身份验证。然后从本地目录加载模型。这绝对可行,但这是最不可行的选择。