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

tar*_*tal 5 model machine-learning amazon-web-services 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()函数。

Oli*_*ant 6

所有你需要的是:

  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),或者您可能需要创建自己的。

  • 关于自定义映像创建,请参阅此处的规范和此处Rsklearn的自定义容器的两个示例(sklearn 的相关性较低,因为有一个预构建的docker映像和sagemaker sklearn SDK
  • 关于利用 Sklearn、PyTorch、MXNet、TF 的现有容器,请查看此示例:SageMaker Sklearn 容器中的随机森林。在这个例子中,没有什么能阻止你部署一个在别处训练过的模型。请注意,如果训练/部署环境不匹配,您可能会由于某些软件版本差异而运行错误。

关于您的以下经历:

当使用 deploy 方法时,它使用相同的 s3 位置来部署模型,我们不会在 s3 中手动创建相同的位置,因为它是由 aws 模型创建的,并使用一些时间戳给它命名

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