Tensorflow 服务器 returns 在 S3 上使用模型时出错

Tensorflow server returns an error when using model on S3

我正在试验 tensorflow 服务器,我成功地在最简单的设置中请求了 half_plus_two 模型示例(参见文档 here)。通过简单设置,我的意思是在我的 docker 容器中嵌入模型(更准确地说是包含版本子目录和该子目录下的所有模型文件的目录)并使用 [=24= 启动 tensorflow_model_server ] 和 model_base_path 作为参数或使用 model_config 文件参数。

当我尝试将模型放在 S3(私有 S3 存储,而不是 AWS)上时,服务器启动并找到了日志中看到的模型:

I tensorflow_serving/sources/storage_path/file_system_storage_path_source.cc:403] File- 
system polling update: Servable:{name: half_plus_two version: 1}; Servable path: 
s3://tftest/half_plus_two/1; Polling frequency: 1 

不过,对模型的请求不再成功。我得到的错误是:

Attempting to use uninitialized value b\n\t [[{{node b/read}}]]

这就像使用 S3 没有给模型足够的时间来初始化它的值一样。有谁知道如何解决这个问题?

我终于解决了。问题是 S3 内容不正确。它包含所有需要的文件(好)+ 目录(不好)。问题的根源是我从 GCP 到 S3 的复制过程。本程序基于google.cloud存储客户端。所以当我这样做时:

blobs = storage_client.list_blobs(bucketName, prefix=savedDir)

并遍历 blob 以复制 S3 中的每个对象,我也在复制目录。显然来自 tensorflow-server 的 S3 连接器不喜欢它。