无服务器机器学习:应该在哪里存储他们的模型?

时间:2021-07-03 15:59:03

标签: machine-learning aws-lambda serverless amazon-ecr mlops

我正在部署一个使用 BERT 制作的无服务器 NLP 应用程序。我目前正在使用无服务器框架和 AWS ECR 来克服 250 MB 的 AWS Lambda 部署包限制(PyTorch 已占用超过该空间)。

我对这个解决方案非常满意,因为它让我可以简单地对我的应用进行 dockerize,将其上传到 ECR,而无需担心其他任何事情。

我有一个疑问是我应该在哪里存储模型。我的应用程序使用 3 个不同的已保存模型,每个模型的大小为 422 MB。我有两个选择:

  1. 在 docker 镜像中复制我的模型。

    • 优点:如果我重新训练我的模型,它会在我重新部署应用程序时自动更新,而且我不必使用 AWS 开发工具包从 S3 加载对象
    • 缺点:Docker 镜像非常大
  2. 将我的模型存储在 S3 中:

    • 优点:图像大小小于其他解决方案(1+ GB 对 3+ GB)
    • 缺点:如果我重新训练我的模型,那么我需要在 S3 上手动更新它们,因为它们与应用程序部署管道分离。我还需要使用 AWS SDK 从 S3 加载它们(可能会增加一些开销?)。

所以我的问题最终是:在两个解决方案中,哪个是最佳实践?为什么,为什么不呢?到底有没有最佳实践,还是基于偏好/需求?

1 个答案:

答案 0 :(得分:2)

第三个选项可能对您有用:将您的模型存储在 EFS 卷上

EFS 卷就像可以附加到 Lambda 的附加硬盘驱动器。它们可以大到您想要的大小。

训练模型后,只需将其复制到 EFS 卷。您将 Lambda 配置为在启动时挂载该 EFS 卷,瞧,您的模型可用而无需任何模糊。不得从 S3 复制或将其放入 Docker 映像。并且同一个 EFS 卷可以同时挂载到多个 Lambda。

要了解更多信息,请阅读:

相关问题