Zappa Update可以与Zappa软件包的输出软件包一起使用吗?

时间:2019-06-27 18:04:10

标签: python-3.x amazon-web-services aws-lambda spacy zappa

我正在尝试使用Zappa在AWS lambda上加载模型。问题是Zappa创建并上传到S3的程序包中的总解压缩文件大小约为550mb,超过了限制。我正在使用的软件包之一是Spacy(非常大的NLP依赖项),我可以通过手动删除lang文件夹中未使用的语言来减小此软件包的大小。这样做,我可以将解压缩后的文件大小控制在500mb以下。问题是Zappa会在部署和更新时自动下载完整的Spacy版本(spacy == 2.1.4:使用本地缓存的manylinux轮)。

我了解到我可以调用Zappa软件包,它将生成一个软件包,然后可以自己上传。我要做的是解压缩生成的程序包并删除不必要的lang文件,然后将其压缩回来。我可以调用Zappa Deploy / Update并使用由Zappa Package创建的修改后的软件包和处理程序吗?这样Zappa仍然可以处理部署。

2 个答案:

答案 0 :(得分:0)

对我来说,以下两件事解决了该问题:

  1. AWS Lambda要求您的环境最大大小为50mb,但我们打包的环境大约为100mb。对于我们来说幸运的是,Lambda可以从Amazon S3加载代码而不会造成很大的性能损失(仅几毫秒)。

要激活此功能,必须在zappa_settings.json

中添加新行。
"slim_handler": true
  1. 仅使用语言包(python3 -m spacy download en)进行安装,而安装。之后,我将语言包手动上传到S3,然后加载了如下所示的伪语言“模型”:Sklearn joblib load function IO error from AWS S3

答案 1 :(得分:0)

这是我解决问题的方法,有两种方法:

  1. 首先是简单地将依赖文件夹从 site-packages目录到根文件夹,然后进行任何 在那里修改。这将迫使zappa在上传时不下载依赖项的linux版本的轮子
  2. 更简单的解决方案是删除* dist文件夹 您修改的特定模块。删除此选项将迫使zappa绕过linux上的轮子重新下载模块;意味着修改后的模块将在部署期间打包。