Clienterror: An error occured when calling the CreateModel operation

Clienterror: An error occured when calling the CreateModel operation

我想在 sagemaker 中部署 sklearn 模型。我创建了一个训练脚本。

scripPath='sklearn.py'

sklearn=SKLearn(entry_point=scripPath, train_instance_type='ml.m5.xlarge', role=role, output_path='s3://{}/{}/output'.format(bucket,prefix), sagemaker_session=session) sklearn.fit({"train-dir' : train_input})

当我部署它时 predictor=sklearn.deploy(initial_count=1,instance_type='ml.m5.xlarge')

它抛出, Clienterror: An error occured when calling the CreateModel operation:Could not find model data at s3://tree/sklearn/output/model.tar.gz

谁能说说怎么解决这个问题?

部署模型时,SageMaker 会查找 S3 以找到您训练的模型工件。似乎 s3://tree/sklearn/output/model.tar.gz 处没有经过训练的模型工件。确保在 docker 中适当的本地位置(即 /opt/ml/model)将您的模型工件保存在训练脚本中。 例如,在您的训练脚本中,它可能看起来像:

joblib.dump(model, /opt/ml/model/mymodel.joblib)

训练完成后,SageMaker会将/opt/ml/model的内容复制到s3的output_path位置。

如果您在同一会话中部署,model.deploy() 将自动映射到工件路径。如果你想部署你在别处训练的模型,可能是在不同的会话期间或在不同的硬件中,你需要在部署之前显式实例化模型

from sagemaker.sklearn.model import SKLearnModel

model = SKLearnModel(
    model_data='s3://...model.tar.gz',  # your artifact
    role=get_execution_role(),
    entry_point='script.py')  # script containing inference functions

model.deploy(
    instance_type='ml.m5.xlarge',
    initial_instance_count=1,
    endpoint_name='your_endpoint_name')

在此处查看有关 SageMaker 中 Sklearn 的更多信息https://sagemaker.readthedocs.io/en/stable/using_sklearn.html