创建端点时出错。

0

【以下的问题经过翻译处理】 在尝试从训练成功的模型创建端点时发生以下错误:

  • 在Web控制台中:

顾客:生产变体AllTraffic的主要容器未通过ping健康检查。请检查此端点的CloudWatch日志。

  • CloudWatch日志:

执行:“serve”:$PATH中找不到可执行文件

我正在使用Lambda步骤部署模型,就像在这个笔记本中一样。Lambda步骤成功,我可以在控制台中看到模型配置创建成功。

在AWS Web控制台中,当我为已注册的模型创建端点时,出现完全相同的错误,在推理->模型下。在控制台中,我可以看到为模型创建了推理容器,具有以下特征:

  • 映像:763104351884.dkr.ecr.eu-west-3.amazonaws.com/tensorflow-training:2.8-cpu-py39
  • 模式:单个模型
  • 环境变量(键值):

SAGEMAKER_CONTAINER_LOG_LEVEL20

SAGEMAKER_PROGRAM inference.py

SAGEMAKER_REGION eu-west-3

SAGEMAKER_SUBMIT_DIRECTORY/opt/ml/model/code

我不知道出了什么问题,也找不到任何有关此问题的相关信息。需要提供用于推理的自定义Docker映像或其他内容吗?

有关更多详细信息,请查找下面的管道模型步骤代码。非常感谢任何帮助!

model = Model(
    image_uri=estimator.training_image_uri(),
    model_data=step_training.properties.ModelArtifacts.S3ModelArtifacts,
    sagemaker_session=sagemaker_session,
    role=sagemaker_role,
    source_dir='code',
    entry_point='inference.py'
)
step_model_create = ModelStep(
        name="CreateModelStep",
        step_args=model.create(instance_type="ml.m5.large")
 )

register_args = model.register(
        content_types=["*"],
        response_types=["application/json"],
        inference_instances=["ml.m5.large"],
        transform_instances=["ml.m5.large"],
        model_package_group_name="test",
        approval_status="Approved"
)
step_model_register = ModelStep(name="RegisterModelStep", step_args=register_args)
profile picture
EXPERTE
gefragt vor 8 Monaten23 Aufrufe
1 Antwort
0

【以下的回答经过翻译处理】 这里的问题是您的推理模型容器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()方法来建立模型。

profile picture
EXPERTE
beantwortet vor 8 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen