我应该 运行 使用 AWS lambda 还是 sagemaker 预测预测模型?

Should I run forecast predictive model with AWS lambda or sagemaker?

我已经阅读了一些关于这个主题的文章,并且对我应该如何处理有了初步的想法,但仍然想看看是否有人可以分享评论,如果你对 运行ning 机器有更多的经验在 AWS 上学习。我正在为学校的一位教授做一个项目,我们决定使用 AWS。我需要找到一种经济高效的方法来在其上部署预测模型。

我们要实现的是:

我首先想到的是 AWS sagemaker。但是,我们将使用 "fb prophet" 模型来预测结果,并且我们构建了一个自定义包以在模型中使用,因此,我认为笔记本实例不会帮助我们。 (如果我错了请纠正我)我的理解是sagemaker是一个构建和训练模型的环境,但是我们已经构建和训练了模型。另外,无论如何我们都不会使用 AWS 预建模型。

另一件事是,如果我们想使用自定义构建的包,我们将需要创建容器镜像,而我以前从未这样做过,不确定这样做的努力。

第二个选项是创建多个 lambda 函数

第三个选项将结合两个选项: - 当新文件进入时,使用 lambda 函数触发 S3 存储桶中 python 脚本的执行。 - 使用 sagemaker 端点推送结果,这意味着我们将模型托管在 sagemaker 上并从那里部署。

我仍然不完全确定如何将预构建模型和 python 脚本从那里放到 sagemaker 实例和主机上。

我希望对 AWS 服务有更多经验的人可以帮助我提供一些指导,以更具成本效益和更高效的方式 运行 建模。

谢谢!!

我想说这完全取决于您的模型有多重/您要通过它 运行 处理多少数据。您确定 Lambda 可能会减少工作量是正确的。启动 lambda 并 运行 执行您需要的操作非常容易,然后 Lambda has a very generous free tier。问题是:

  1. Lambda 函数的处理能力从根本上受到限制(它们在 max 15 分钟后超时)。

  2. 您的模型加载成本可能很高。

如果您有大量数据要通过您的模型 运行,您将需要多个 lambda。多个 lambda 意味着你必须多次加载你的模型,这是浪费的工作。如果您使用的是 "big data",一旦您通过了免费套餐,这将变得昂贵。

如果您没有太多数据,Lambda 就可以正常工作。我会按如下方式对其进行观察:假设您的数据处理步骤由您的模型步骤主导,并且如果您的所有模型交互(加载模型 + 评估所有数据)花费的时间少于 15 分钟,那么您肯定没问题。如果他们需要更多,您将需要进行粗略计算以确定您是否要离开 Lambda 免费套餐。

关于 Lambda:您可以直接复制粘贴代码来设置原型。如果所有数据的执行时间超过 15 分钟,您将需要一种在多个 Lambda 之间拆分数据的方法。为此考虑Step Functions

SageMaker 是一组服务,每个服务负责机器学习过程的不同部分。您可能想要使用的是 SageMaker 中 Jupyter 笔记本的托管版本。您在使用的实例大小(CPU/GPU、内存和磁盘)方面有很大的自由度,并且可以在该实例上安装各种包(例如 FB Prophet)。如果您每月需要一次,则可以在这些时间之间停止和启动笔记本实例,并 "Run all" 此实例上笔记本中的单元格。它只会花费你执行的时间。

关于其他选择,运行 Lambda 中的 FB Prophet 并非微不足道,因为您可以在 Lambda 上安装的库有大小限制(以避免冷启动时间过长)。您还可以使用 ECS(容器服务),在那里您可以拥有更大的图像,但您需要知道如何构建代码和端点的 Docker 图像才能调用它。