【问题标题】:Sagemaker: Specifying custom entry point gives not found errorSagemaker:指定自定义入口点会导致未找到错误
【发布时间】:2019-12-17 11:18:15
【问题描述】:

我正在尝试将使用 tensorflow 训练的对象检测模型部署到 sagemaker。我能够在模型创建期间在不指定任何入口点的情况下部署它,但事实证明这样做仅适用于小尺寸图像(Sagemaker 的限制为 5MB)。我用于此的代码如下:

from sagemaker.tensorflow.serving import Model

# Initialize model ...
model = Model(
    model_data= s3_path_for_model,
    role=sagemaker_role,
    framework_version="1.14",
    env=env)

# Deploy model ...
predictor = model.deploy(initial_instance_count=1,
                         instance_type='ml.t2.medium')


# Test using an image ...
import cv2
import numpy as np

image_content = cv2.imread("PATH_TO_IMAGE",
                           1).astype('uint8').tolist()
body = {"instances": [{"inputs": image_content}]}

# Works fine for small images ...
# I get predictions perfectly with this ...
results = predictor.predict(body)

所以,我搜索了一下,发现我需要为Model() 传递一个entry_point 才能预测更大的图像。比如:

model = Model(
        entry_point="inference.py",
        dependencies=["requirements.txt"],
        model_data=  s3_path_for_model,
        role=sagemaker_role,
        framework_version="1.14",
        env=env
)

但是这样做会产生 FileNotFoundError: [Errno 2] No such file or directory: 'inference.py'。请在这里提供一点帮助。我正在使用sagemaker-python-sdk。 我的文件夹结构如下:

model
    |__ 001
          |__saved_model.pb
          |__variables
                |__<contents here>

    |__ code
          |__inference.py
          |__requirements.txt

注意:我也试过,./code/inference.py 和 /code/inference.py。

【问题讨论】:

标签: python amazon-web-services tensorflow tensorflow-serving amazon-sagemaker


【解决方案1】:

5MB 是实时端点的硬性限制。

您确定需要传递如此大的图像进行预测吗?大多数用例都适用于较小、分辨率较低的图像。

如果您需要实时预测,一种解决方法是在预测请求中传递图像 S3 URI(而不是图像本身),然后从 S3 加载图像。

如果您不需要实时预测,您应该查看批量转换,它不会强制执行大小限制:https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform.html

【讨论】:

  • 您好,感谢您的回复。我需要实时预测,所以批量转换不太适合我。您能否详细说明一下(或提供一些文档或文章)? If you need real-time prediction, one workaround would be to pass the image S3 URI in the prediction request (instead of the image itself), and load the image from S3.
  • 没有例子,抱歉。我会使用 TF Serving 的预处理功能从 S3 复制图像。见github.com/aws/sagemaker-tensorflow-serving-container#pre/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-10
相关资源
最近更新 更多