首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用AWS Lambda部署大型python包?

如何使用AWS Lambda部署大型python包?
EN

Stack Overflow用户
提问于 2018-05-24 15:53:54
回答 3查看 2.4K关注 0票数 2

我需要一些建议。

我使用Tensorflow训练了一个图像分类器,并希望使用serverless将其部署到AWS Lambda。该目录包括模型、一些python模块(包括tensorflow和numpy )以及python代码。解压前完整文件夹的大小是340MB,AWS lambda会拒绝它,并显示错误消息"The unzipped state must be smaller than 262144000 bytes"

我应该如何处理这个问题?我不能在AWS Lambda上部署这样的包吗?

注意:在requirements.txt文件中,列出了两个模块,包括numpy和tensorflow。(Tensorflow是一个大模块)

EN

回答 3

Stack Overflow用户

发布于 2019-04-11 15:02:06

我知道我很晚才回复..只是把它放在这里供其他人参考..我做了以下事情-

按建议删除所有核心文件,特别是站点中的两个文件-packages/ here.

  • Strip / _multiarray_umath.cpython-36m-x86_64-linux-gnu.so - _multiarray_tests.cpython-36m-x86_64-linux-gnu.so.和-
  1. / .so /contrib/* /tensorflow/include/unsupported/*文件剥离大大减小了它们的尺寸。
  2. 您可以将模型放入S3存储桶中,并在运行时下载。这将减小拉链的大小。这在here中有详细的解释。

如果这不起作用,那么有一些额外的事情可以做,如删除pyc文件等,如前面提到的here

票数 1
EN

Stack Overflow用户

发布于 2018-05-24 20:32:39

您可以使用限制为512Mb的临时磁盘容量(/tmp),但在您的情况下,内存仍然是一个问题。

最好的选择是使用AWS批处理,如果serverless不管理它,您甚至可以保留一个lambda来触发您的批处理

票数 0
EN

Stack Overflow用户

发布于 2019-01-31 03:49:25

要做到这一点,最好的方法是使用this article中概述的Serverless Framework。这有助于使用docker镜像来压缩它们,该镜像模仿亚马逊的linux环境。此外,它自动使用S3作为您的Lambda的代码库,这增加了大小限制。本文是一个非常有用的指南,与开发人员在AWS上使用tensorflow和其他大型库的方式相同。

如果您仍然遇到250MB大小的限制,您可以尝试使用与上一篇文章相同的python-requirements-pluginthis article,但使用选项-slim: true。这将帮助您通过从包中删除不必要的文件来优化压缩包,这允许您在解压缩前后减小包的大小。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50503912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档