我需要一些建议。
我使用Tensorflow训练了一个图像分类器,并希望使用serverless将其部署到AWS Lambda。该目录包括模型,一些python模块,包括tensorflow和numpy,以及python代码。解压缩前完整文件夹的大小为340 MB,AWS lambda会拒绝该文件,并显示错误消息"The unzipped state must be smaller than 262144000 bytes"
。
我该如何处理?我可以不在AWS Lambda上部署这样的软件包吗?
注意:在requirements.txt文件中,列出了2个模块,包括numpy和tensorflow。 (Tensorflow是一个很大的模块)
答案 0 :(得分:0)
您可以使用限制为512Mb的临时磁盘容量(/ tmp),但在您的情况下,内存仍然是个问题。
最佳选择可以是使用AWS批次,如果无服务器无法管理,您甚至可以保留lambda来触发批次
答案 1 :(得分:0)
最好的方法是使用Serverless Framework中概述的this article。它有助于使用模仿亚马逊Linux环境的docker映像对它们进行压缩。此外,它会自动使用S3作为Lambda的代码存储库,这会增加大小限制。提供的文章是非常有用的指南,并且与开发人员在AWS上使用tensorflow和其他大型库的方式相同。
如果仍然遇到250MB的大小限制,则可以尝试遵循this article,它使用与上一篇文章相同的python-requirements-plugin
,但带有选项-slim: true
。这将帮助您通过从文件中删除不必要的文件来最佳地压缩文件包,从而使您可以在解压缩之前和之后减小文件包的大小。
答案 2 :(得分:0)
我知道我回答得很晚..只是把它放在这里供其他人参考。 我做了以下事情-
如果这不起作用,那么还有其他一些事情可以完成,例如删除here
中的pyc文件等。