- Newest
- Most votes
- Most comments
【以下的回答经过翻译处理】 这里的问题是您的推理模型容器URI 763104351884.dkr.ecr.eu-west-3.amazonaws.com/tensorflow-training:2.8-cpu-py39
使用的是训练镜像,而不是TensorFlow的推理镜像。因为这些镜像都为它们自己的功能进行了优化,所以在这种情况下,训练容器中的serving可执行文件不可用。
通常,特定框架的SDK类会为您处理此查找(例如,链接中的笔记本使用的TensorFlowModel(...)
,或在从Estimator类调用sagemaker.tensorflow.TensorFlow.deploy(...)
时)。
但我在这里看到你正在使用通用的“Model”,所以猜测你不知道(或不想依赖框架)Lambda函数运行时的框架和版本?
我的建议是:
-
你可以在调用Lambda部署函数之前使用Pipelines中的
ModelStep
创建你的模型吗?类似于你链接的笔记本使用CreateModelStep
的方式。这将把你的框架和版本构建到流水线定义本身中,应该意味着选择推理容器镜像的处理是正确和自动的。 -
如果你确实需要是动态的,我认为你可能需要找到一种从训练任务中查找至少框架的方法。经过我的测试,你可以使用
estimator = sagemaker.tensorflow.TensorFlow.attach(“training-job-name”)
,然后使用model = estimator.create_model(...)
来正确推断出推理容器的具体版本*来自训练作业,但仍然需要知道TensorFlow是正确的框架。我不知道是否有框架无关的等效方法?所以可以尝试描述训练作业,手动判断试用了什么训练框架的信息,然后根据相对应的框架的estimator类的attach()方法来建立模型。
Relevant content
- asked a month ago
- asked 2 years ago
- Accepted Answerasked a year ago
- AWS OFFICIALUpdated 5 months ago
- AWS OFFICIALUpdated 4 months ago
- AWS OFFICIALUpdated 4 months ago
- AWS OFFICIALUpdated 2 years ago