Python Sagemaker:指定自定义入口点会导致找不到错误
我正在尝试将使用tensorflow训练的对象检测模型部署到sagemaker。在模型创建期间,我可以在不指定任何入口点的情况下部署它,但事实证明,这样做只适用于小尺寸的图像(Sagemaker限制为5MB)。我使用的代码如下: 来自sagemaker.tensorflow.service导入模型的Python Sagemaker:指定自定义入口点会导致找不到错误,python,amazon-web-services,tensorflow,tensorflow-serving,amazon-sagemaker,Python,Amazon Web Services,Tensorflow,Tensorflow Serving,Amazon Sagemaker,我正在尝试将使用tensorflow训练的对象检测模型部署到sagemaker。在模型创建期间,我可以在不指定任何入口点的情况下部署它,但事实证明,这样做只适用于小尺寸的图像(Sagemaker限制为5MB)。我使用的代码如下: 来自sagemaker.tensorflow.service导入模型的 #初始化模型。。。 模型( 模型\数据=s3\路径\对于\模型, 角色=sagemaker\u角色, framework_version=“1.14”, 环境=环境) #部署模型。。。 predic
#初始化模型。。。
模型(
模型\数据=s3\路径\对于\模型,
角色=sagemaker\u角色,
framework_version=“1.14”,
环境=环境)
#部署模型。。。
predictor=model.deploy(初始实例计数=1,
实例(type='ml.t2.medium')
#使用图像进行测试。。。
进口cv2
将numpy作为np导入
image\u content=cv2.imread(“路径到图像”,
1) .astype('uint8').tolist()
正文={“实例”:[{“输入”:图像内容}]}
#适用于小图像。。。
#我完全可以用这个预测。。。
结果=预测值。预测值(身体)
所以,我搜索了一下,发现我需要为Model()
传递一个entry\u点,以便预测更大的图像。比如:
model=model(
entry_point=“inference.py”,
依赖项=[“requirements.txt”],
模型\数据=s3\路径\对于\模型,
角色=sagemaker\u角色,
framework_version=“1.14”,
环境=环境
)
但是这样做会导致FileNotFoundError:[Errno 2]没有这样的文件或目录:“inference.py”。请帮我一点忙。我使用的是sagemaker python sdk
。
我的文件夹结构如下:
model
|__ 001
|__saved_model.pb
|__variables
|__<contents here>
|__ code
|__inference.py
|__requirements.txt
模型
|__ 001
|__已保存的_model.pb
|__变数
|__
|__代码
|__推理机
|__requirements.txt
注意:我也尝试过,./code/inference.py和/code/inference.py
5MB是实时端点的硬限制 您确定需要传递如此大的图像进行预测吗?大多数用例可以很好地处理更小、更低分辨率的图像 如果需要实时预测,一种解决方法是在预测请求中传递图像s3uri(而不是图像本身),然后从S3加载图像
如果您不需要实时预测,那么您应该看看batch transform,它不强制执行大小限制:Hi,谢谢您的回复。我需要实时预测,所以批处理转换不太适合我。你能详细说明一下吗(或者给我提供一些文件或文章)<代码>如果需要实时预测,一种解决方法是在预测请求中传递图像S3URI(而不是图像本身),然后从S3加载图像。没有示例,抱歉。我将使用TF服务的预处理函数从S3复制图像。嗨,普拉梅什,你能解决这个问题吗?@MLDev是的,我相信我能解决这个问题。但是,老实说,我再也不想经历那种痛苦了。我为此写了一篇博客。我希望这有帮助。