如何在 lambda 函数中加载大文件模型

chi*_*nuy 5 aws-lambda

比如说,我想要一个 lambda 函数来使用经过训练的模型来预测传入的消息类别。但是,该模型过大(~ 1GB)。

使用当前的架构,我应该将训练好的模型上传到 AWS S3,然后在每次触发 lambda 时加载它。这是不可取的,因为大部分时间都在加载模型。

一些解决方案:

  1. 不要使用 lambda。有一个专用的 ec2 实例可以工作
  2. 通过定期发送虚拟请求来保暖

或者,我怀疑 AWS 会缓存该文件,因此下次加载时间可能会更短?

Col*_*win 2

我认为阅读有关 lambda 中容器重用的内容可能会有所帮助。

https://aws.amazon.com/blogs/compute/container-reuse-in-lambda/

您可以通过在处理函数外部声明和初始化模型来将模型添加为全局缓存变量。如果 Lambda 为后续请求重复使用同一容器,则不会重新下载该文件。

但是否重用容器或启动一个新容器完全取决于 Lambda。由于这是 Lambda 的特权,因此您不能依赖此行为。

如果您想最大程度地减少从 S3 的下载数量,您可以考虑在与您的函数相同的可用区中使用外部托管缓存解决方案(Elasticache、Redis)。