使用 AWS Lambda 函数将机器学习引入现场生产

Bring machine learning to live production with AWS Lambda Function

我目前正在为实时生产环境实施 Facebook Prophet。我以前没有这样做过,所以我想在这里向您介绍我的计划,并希望您能给我一些反馈,无论这是一个好的解决方案还是您有任何建议。

  1. 在 Django 中,我创建了一个 .csv 导出的相关数据,我需要这些数据来进行预测。这些 .csv 导出将上传到 AWS S3 存储桶。

  2. 从那里我可以使用 AWS Lambda Function 访问这个 S3 存储桶,其中正在进行 "heavy" 计算。

  3. 完成后,我从 2. 中获取预测并再次将它们保存在 forcast.csv export

  4. 现在我的 Django 应用程序可以访问 S3 上的 forecast.csv 并获得相应的预测。

我特别好奇 AWS Lambda Function 在那种情况下是否是正确的 tool。导出可能也可以保存在 DynamoDB (?) 中,但我尽量让我的 v1 保持简单,因此 .csv。为 AWS Lambda 安装正确的 layers/packages 仍然需要一些努力。因此,在深入研究其文档之前,我想确保我正朝着正确的方向前进。

我有点担心使用 AWS Lambda 进行 "heavy" 计算。有几个原因。

  1. 二进制文件大小限制:AWS Lambda 的二进制文件大小限制为 250MB。这是我们面临的最大限制,因为您将无法在该二进制文件中包含所有库,如 numpy、pandas、matplotlib 等。
  2. 磁盘大小限制:AWS 只为 lambda 执行提供最大 500MB 的磁盘大小,如果您想将中间结果保存在磁盘中,这可能会成为一个问题。
  3. 成本可能会飙升:如果您的 lambda 将要 运行 很长时间而不是多次小调用,您最终会付出很多钱。在那种情况下,我认为使用 EC2 和 ECS 之类的东西会更好。

您可以评估将 S3 存储桶链接到 SQS 队列,以及 运行正在侦听队列并执行所有计算的 EC2 机器上的进程。

AWS Lambda Limits