如何在AWS sagemaker中运行预训练的模型?

时间:2019-10-10 16:17:41

标签: amazon-web-services machine-learning model amazon-sagemaker

我有一个预先训练的model.pkl文件,以及所有其他与ml模型有关的文件。我希望它将其部署在aws sagemaker上。 但是无需培训,如何将其部署到aws sagmekaer,因为aws sagemaker中的fit()方法运行train命令并将model.tar.gz推到s3位置,并且当使用deploy方法时,它将使用相同的s3位置部署模型时,我们不会在s3中手动创建与aws模型创建的位置相同的位置,也不会使用一些时间戳对其进行命名。如何在s3位置中放置我们自己的个性化model.tar.gz文件,并使用相同的s3位置来调用deploy()函数。

1 个答案:

答案 0 :(得分:0)

您需要的是:

  1. 将模型放置在model.tar.gz存档中的任意S3位置
  2. 在与SageMaker兼容的docker映像中具有推理脚本,该脚本能够读取您的model.pkl,提供服务并处理推理。
  3. 创建将工件与推理代码相关联的端点

当您请求端点部署时,SageMaker将负责下载model.tar.gz并解压缩到服务器的docker映像中的相应位置,即/opt/ml/model

根据您使用的框架,您可以使用预先存在的docker映像(可用于Scikit-learn,TensorFlow,PyTorch,MXNet),或者您可能需要创建自己的Docker映像。

  • 关于自定义映像的创建,请参见here the specification,这里是Rsklearn的两个自定义容器的示例(由于已有预构建的docker映像,因此sklearn不再那么重要了。以及sagemaker sklearn SDK
  • 关于利用Sklearn,PyTorch,MXNet,TF的现有容器,请检查以下示例:Random Forest in SageMaker Sklearn container。在此示例中,没有什么可以阻止您部署在其他地方训练过的模型。请注意,在培训/部署环境不匹配的情况下,由于某些软件版本的差异,您可能会运行错误。

关于您的以下经历:

  

使用deploy方法时,它将使用相同的s3位置来部署   模型,我们不会在s3中手动创建与创建时相同的位置   通过aws模型并使用一些时间戳来命名

我同意,有时使用SageMaker Python SDK(SageMaker的许多 SDK之一)的演示会产生误导,因为它们通常会利用{刚刚训练的{1}}可以在同一会话中部署(Estimator),而不必实例化将推理代码映射到模型工件的中间模型概念。该设计大概代表代码兼容性来完成,但是在现实生活中,给定模型的训练和部署很可能是通过在不同系统中运行的不同脚本来完成的。完全有可能在先前的同一会话中部署经过训练的模型,您需要实例化一个Estimator.deploy(..)对象,然后进行部署。