Zappa Update 可以与 Zappa Package 的输出包一起使用吗?
Can Zappa Update be used with the output package from Zappa Package?
我正在尝试使用 Zappa 在 AWS lambda 上加载模型。问题是 Zappa 创建并上传到 S3 的包的总解压缩文件大小约为 550mb,超出了限制。我使用的包之一是 Spacy(一个非常大的 NLP 依赖项),我可以通过手动删除 lang 文件夹中未使用的语言来减小这个包的大小。这样做我可以获得小于 500mb 的解压缩文件大小。问题是 Zappa 在部署和更新时自动下载完整的 Spacy 版本(spacy==2.1.4:使用本地缓存的 manylinux wheel)。
我知道我可以调用 Zappa Package,它会生成一个包,然后我可以自己上传。我所做的是解压缩生成的包并删除不必要的 lang 文件,然后我将其压缩回来。我可以调用 Zappa Deploy/Update 并使用由 Zappa Package 创建的修改后的包和处理程序吗?这样 Zappa 仍然可以处理部署。
对我来说,以下两件事解决了这个问题:
- AWS Lambda 要求您的环境的最大大小为 50mb,但我们打包的环境将在 100mb 左右。对我们来说幸运的是,Lambda 可以从 Amazon S3 加载代码而不会造成太大的性能损失(仅几毫秒)。
要激活此功能,您必须在 zappa_settings.json
中添加一个新行
"slim_handler": true
- 只安装 spacy 和 不 语言包 (
python3 -m spacy download en
)。之后,我手动将语言包上传到 S3,然后加载 spacy 语言 "model" 类似于此处所述:
这是我解决问题的方法,有两种方法:
- 首先是简单地将依赖文件夹从
site-packages 目录到根文件夹,然后制作任何
那里的修改。这将强制 zappa 在上传
依赖项的 linux 版本上不下载轮子
- 更简单的解决方案是删除 *dist 文件夹
您修改的特定模块。删除它会迫使 zappa 绕过 linux 上的 wheels 重新下载模块;这意味着您修改的模块将在部署期间打包。
我正在尝试使用 Zappa 在 AWS lambda 上加载模型。问题是 Zappa 创建并上传到 S3 的包的总解压缩文件大小约为 550mb,超出了限制。我使用的包之一是 Spacy(一个非常大的 NLP 依赖项),我可以通过手动删除 lang 文件夹中未使用的语言来减小这个包的大小。这样做我可以获得小于 500mb 的解压缩文件大小。问题是 Zappa 在部署和更新时自动下载完整的 Spacy 版本(spacy==2.1.4:使用本地缓存的 manylinux wheel)。
我知道我可以调用 Zappa Package,它会生成一个包,然后我可以自己上传。我所做的是解压缩生成的包并删除不必要的 lang 文件,然后我将其压缩回来。我可以调用 Zappa Deploy/Update 并使用由 Zappa Package 创建的修改后的包和处理程序吗?这样 Zappa 仍然可以处理部署。
对我来说,以下两件事解决了这个问题:
- AWS Lambda 要求您的环境的最大大小为 50mb,但我们打包的环境将在 100mb 左右。对我们来说幸运的是,Lambda 可以从 Amazon S3 加载代码而不会造成太大的性能损失(仅几毫秒)。
要激活此功能,您必须在 zappa_settings.json
"slim_handler": true
- 只安装 spacy 和 不 语言包 (
python3 -m spacy download en
)。之后,我手动将语言包上传到 S3,然后加载 spacy 语言 "model" 类似于此处所述:
这是我解决问题的方法,有两种方法:
- 首先是简单地将依赖文件夹从 site-packages 目录到根文件夹,然后制作任何 那里的修改。这将强制 zappa 在上传 依赖项的 linux 版本上不下载轮子
- 更简单的解决方案是删除 *dist 文件夹 您修改的特定模块。删除它会迫使 zappa 绕过 linux 上的 wheels 重新下载模块;这意味着您修改的模块将在部署期间打包。