每次AWS Lambda加载库?

时间:2017-03-28 09:33:08

标签: python api amazon-web-services aws-lambda

我正在寻找AWS Lambda来创建一个处理数据的Python函数。 我需要加载一个重型模型来运行我的脚本(训练有素的word2vec模型),例如,在我的计算机上执行它需要大约5分钟。但是一旦加载,该函数的执行速度非常快。 如果我使用AWS Lambda,这个模型只会加载一次,还是每次调用我的函数时都会加载?

谢谢,

2 个答案:

答案 0 :(得分:0)

每次调用Lambda时,它都会加载(感谢Michael-sqlbot进行更正)。

我们可以根据以下内容推断AWS Lambdas是无状态的

  1. Lambda is stateless

      

    “Lambda函数是'无状态',与底层基础架构没有任何关联性,因此Lambda可以根据需要快速启动该函数的多个副本,以扩展到传入事件的速率

  2. Lambda must be coded in stateless style

      

    您的Lambda函数代码必须以无状态样式编写,并且与底层计算基础结构没有任何关联。您的代码应该期望本地文件系统访问,子进程和类似工件仅限于请求的生命周期

  3. 然而Container reuse is possible in Lambda

      

    如果您没有更改代码并且没有太多时间过去,Lambda可能会重复使用以前的容器

    所以基本上回答你的问题,有可能你回到模型,并且它的概率与2个Lambda调用之间的时间跨度成反比。但你根本不能依赖那个

答案 1 :(得分:0)

也许

AWS Lambda使用可重复使用的容器。因此,对于您的用例,如果Lambda函数发生在已经初始化的容器中,它将快速执行。否则它会很慢。但是,你无法预测行为。

相关文件:

  1. 来自here
  2.   

    第一次在创建函数或更新其代码或资源配置后执行该函数时,将创建一个具有适当资源的新容器来执行它,并将该函数的代码加载到容器中。

         

    假设您的功能完成,并且一段时间过去了,那么您再次调用它。 Lambda可以重新创建一个新容器,在这种情况下,体验就像上面所描述的那样。如果您更改代码,情况肯定会如此。但是,如果您没有更改代码并且没有太多时间,Lambda可能会重复使用以前的容器。

         

    请记住,你不能依赖于一个被重用的容器,因为它是Lambda创建新容器的特权。

    1. 更多官方文档here