首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PyTorch管道和RegisterModel部署SageMaker模型时的错误

使用PyTorch管道和RegisterModel部署SageMaker模型时的错误
EN

Stack Overflow用户
提问于 2021-10-11 08:35:57
回答 1查看 307关注 0票数 0

有谁能提供一个使用SageMaker管道来部署火炬模型的示例?

我使用了MLOps模板(用于建模、培训和部署的MLOps模板)来构建MLOps项目。

该模板使用sagemaker管道来构建一个管道,用于模型的预处理、训练和注册。部署脚本在YAML文件中实现,并使用CloudFormation运行。在注册模型时,将自动触发部署脚本。

模板使用xgboost模型来训练数据和部署模型。我想使用毕道尔并部署它。我成功地用xgboost替换了这个手电筒,并成功地对数据进行了预处理,对模型进行了训练并注册了模型。但我没有在我的模型中使用inference.py。所以我得到了模型部署的错误。

更新端点时的错误日志是:

代码语言:javascript
复制
FileNotFoundError: [Errno 2] No such file or directory: '/opt/ml/model/code/inference.py'

我试图找到使用RegisterModel.模型使用inference.py的例子,但是找不到使用sagemaker管道和的示例。

任何帮助都将不胜感激。

在下面,您可以看到一部分用于培训和注册模型的管道。

代码语言:javascript
复制
from sagemaker.pytorch.estimator import PyTorch
from sagemaker.workflow.pipeline import Pipeline
from sagemaker.workflow.steps import (
    ProcessingStep,
    TrainingStep,
)
from sagemaker.workflow.step_collections import RegisterModel

pytorch_estimator = PyTorch(entry_point= os.path.join(BASE_DIR, 'train.py'),
                            instance_type= "ml.m5.xlarge",
                            instance_count=1,
                            role=role,
                            framework_version='1.8.0',
                            py_version='py3',
                            hyperparameters = {'epochs': 5, 'batch-size': 64, 'learning-rate': 0.1})

step_train = TrainingStep(
        name="TrainModel",
        estimator=pytorch_estimator,

        inputs={
                "train": sagemaker.TrainingInput(
                            s3_data=step_process.properties.ProcessingOutputConfig.Outputs[
                            "train_data"
                            ].S3Output.S3Uri,
                            content_type="text/csv",
                        ),
                "dev": sagemaker.TrainingInput(
                            s3_data=step_process.properties.ProcessingOutputConfig.Outputs[
                            "dev_data"
                            ].S3Output.S3Uri,
                            content_type="text/csv"
                        ),
                "test": sagemaker.TrainingInput(
                            s3_data=step_process.properties.ProcessingOutputConfig.Outputs[
                            "test_data"
                            ].S3Output.S3Uri,
                            content_type="text/csv"
                        ),
        },
)
step_register = RegisterModel(
            name="RegisterModel",
            estimator=pytorch_estimator,
            model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts,
            content_types=["text/csv"],
            response_types=["text/csv"],
            inference_instances=["ml.t2.medium", "ml.m5.large"],
            transform_instances=["ml.m5.large"],
            model_package_group_name=model_package_group_name,
            approval_status=model_approval_status,
        )
    
pipeline = Pipeline(
            name=pipeline_name,
            parameters=[
                processing_instance_type,
                processing_instance_count,
                training_instance_type,
                model_approval_status,
                input_data,
            ],
            steps=[step_process, step_train, step_register],
            sagemaker_session=sagemaker_session,
        )
EN

回答 1

Stack Overflow用户

发布于 2022-02-10 05:09:33

PyTorch api使用的是基本的pytorch图像。当sagemaker.pytorch.deploy方法调用时,sagemaker运行‘/opt/ml/model/code/infence.py’

但是在你的基本图像中没有那个文件。

因此,如果您想要使用部署方法,您可以使用sagemaker样式(可以在sagemaker容器中执行)生成'inference.py‘,并构建和推送映像。

然后就可以使用部署方法了!

这是示例代码https://sagemaker-workshop.com/custom/containers.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69523257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档