当前位置: 首页 > 知识库问答 >
问题:

AWS Sagemaker:当您上传自己的、经过本地培训的SKlearn模型tarball时,在入口点文件中需要哪个函数/代码来进行预测?

越正阳
2023-03-14

我们在本地训练sklearn模型,然后将其上传为*。焦油gz文件到S3,以便通过Sagemaker进行部署。在那里,我们使用Sagemaker自己的SKLearnModel docker映像,并将我们的模型部署到Sagemakerendpoint。我们的方法类似于本线程或此处描述的方法。

这基本上就是我们的Sagemaker jupyter笔记本中的代码:

from sagemaker.sklearn.model import SKLearnModel

sagemaker_model = SKLearnModel(model_data='s3://ourModelS3Bucket/ourModelTarball.tar.gz',
                                 role='arn:aws:iam::someNumber:role/OurPredefinedRole',
                                 entry_point='our_entry_point.py')

predictor = sagemaker_model.deploy(initial_instance_count=1,
                                   instance_type='ml.t2.large') #be careful which instance you choose!

我们想知道的是,我们必须如何为我们的模型编写入口点代码(这里称为'our_entry_point.py'),以便Sagemaker能够成功地部署它?

它是否必须包含预测()函数,它是像脚本一样从上到下执行,还是我们必须定义一个,如果__name__ == "__main__":块?这一点尤其相关,因为在我们执行预测本身之前,我们可能希望在这里添加一些额外的特征生成/选择。

任何帮助将是非常欢迎的,无论是直接的答案或一个链接到留档/教程,可能会提供答案。到目前为止,Sagemaker文档和一些Github示例非常有用...

共有1个答案

丌官霖
2023-03-14

我建议看一下:

  • https://sagemaker.readthedocs.io/en/stable/using_sklearn.html#deploy-a-scikit-learn-model
  • https://github.com/awslabs/amazon-sagemaker-examples/blob/master/sagemaker-python-sdk/scikit_learn_randomforest/Sklearn_on_SageMaker_end2end.ipynb

但要直接回答您的问题:对于代码的可移植性,主块始终是一个好主意。SageMaker确实支持但不要求在入口点脚本中指定这样的块(参见上面的示例)。SageMaker将从该文件导入所需的函数,而不是执行主块。

就您需要定义的功能而言,上述单据说明:

必须先加载模型,然后才能提供服务。SageMaker Scikit learn model server通过调用您必须在脚本中提供的model_fn函数来加载您的模型。型号fn应具有以下签名:

SageMaker Scikit学习模型服务器提供这些功能的默认实现。您可以在宿主脚本中为这些函数提供自己的实现。如果省略任何定义,则SageMaker Scikit学习模型服务器将使用该函数的默认实现。

所以看起来你必须定义model_fn但是其他的都是可选的(这也可以在示例中看到)

 类似资料:
  • 我发现很难创建自己的openNLP模型。谁能告诉我,如何拥有自己的模型。培训应该如何进行。 输入应该是什么,输出模型文件将存储在哪里。

  • 我有一个模型。预训练的pkl文件以及与ml模型相关的所有其他文件。我想把它部署到aws sagemaker上。但是在没有培训的情况下,如何将其部署到aws sagmekaer,就像aws sagemaker中的fit()方法一样,运行train命令并推送模型。焦油gz到s3位置,当使用deploy方法时,它使用相同的s3位置来部署模型,我们不会在s3中手动创建与aws模型创建的位置相同的位置,并使

  • 问题内容: 我像这样使用scikit-learn的SVM: 我的问题是,当我使用分类器预测训练集成员的班级时,即使在scikit- learns实现中,分类器也可能是错误的。(例如) 问题答案: 是的,可以运行以下代码,例如: 分数是0.61,因此将近40%的训练数据被错误分类。部分原因是,即使默认内核是(理论上也应该能够对任何训练数据集进行完美分类,只要您没有两个带有不同标签的相同训练点),也可

  • 我想在SageMaker找一份当地的培训工作。 根据这个AWS笔记本(https://github.com/awslabs/amazon-sagemaker-examples/blob/master/sagemaker-python-sdk/mxnet_gluon_mnist/mxnet_mnist_with_gluon_local_mode.ipynb),我能够在本地进行训练和预测。 有没有办法

  • -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  • 我以前在我的Java项目中与Maven一起工作,但今天我开始与AndroidStudio打交道。 我看到它鼓励使用Gradle,我没有问题学习新的工具。所以我开始了一个非常基本的Android手机应用程序的例子,当我点击一个按钮时,它只说“你好世界”。 我把app/src推到一个Git repo中,并尝试将我的作品放到另一台电脑上,但它并不理解我的项目是Android的项目。我可能错过了一个Gra