TensorFlow Serving 与 TensorFlow Inference(SageMaker 模型的容器类型)

TensorFlow Serving vs. TensorFlow Inference (container type for SageMaker model)

我对 TensorFlow(和 SageMaker)还很陌生,并且一直处于部署 SageMaker 端点的过程中。我最近刚刚成功创建了一个 Saved Model 类型的模型,该模型当前用于服务示例端点(该模型是在外部创建的)。但是,当我检查用于端点的图像时,它显示“.../tensorflow-inference”,这不是我想要进入的方向,因为我想使用 SageMaker TensorFlow 服务容器(我遵循了教程来自官方 TensorFlow 服务 GitHub repo-使用样本模型,并使用 TensorFlow 服务框架部署它们。

我遇到这个问题是因为我保存的模型没有正确的 'serving' 标签吗?我还没有检查我的标签集,但想知道这是否是问题的核心原因。此外,最重要的是,两种容器类型之间有什么区别-我认为更好地理解这两个概念会告诉我为什么我无法生成正确的图像。


这就是我部署示例端点的方式:

model = Model(model_data =...)

predictor = model.deploy(initial_instance_count=...)

当我 运行 代码时,我得到了一个模型、一个端点配置和一个端点。我通过单击 AWS SageMaker 控制台中的模型详细信息获得了容器类型。

有两个用于部署 TensorFlow 模型的 API:tensorflow.Model and tensorflow.serving.Model。从代码片段中不清楚您使用的是哪一个,但 SageMaker 文档建议使用后者从预先存在的 s3 工件进行部署:

from sagemaker.tensorflow.serving import Model

model = Model(model_data='s3://mybucket/model.tar.gz', role='MySageMakerRole')

predictor = model.deploy(initial_instance_count=1, instance_type='ml.c5.xlarge')

参考:https://github.com/aws/sagemaker-python-sdk/blob/c919e4dee3a00243f0b736af93fb156d17b04796/src/sagemaker/tensorflow/deploying_tensorflow_serving.rst#deploying-directly-from-model-artifacts

it says '.../tensorflow-inference', which is not the direction I want to go in because I want to use a SageMaker TensorFlow serving container

如果您没有为 tensorflow.Model 指定 image 参数,SageMaker 应该使用默认的 TensorFlow 服务图像(类似于“../tensorflow-inference”)。

image (str) – A Docker image URI (default: None). If not specified, a default image for TensorFlow Serving will be used.

如果您觉得所有这些都不必要地复杂,我正在开发一个平台,只需一行代码即可完成此设置——我很乐意让您尝试一下,请私信我 https://twitter.com/yoavz_.

框架容器有不同的版本。由于我使用的框架版本是 1.15,所以我得到的图像必须在 tensorflow-inference 容器中。如果我使用 <= 1.13 的版本,那么我将获得 sagemaker-tensorflow-serving 图像。两者不一样,但是没有 'correct' 容器类型。