【问题标题】:Can Zappa Update be used with the output package from Zappa Package?Zappa 更新可以与 Zappa 包的输出包一起使用吗?
【发布时间】:2019-11-09 19:11:05
【问题描述】:

我正在尝试使用 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 仍然可以处理部署。

【问题讨论】:

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


    【解决方案1】:

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

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

    要激活此功能,您必须在zappa_settings.json 中添加一个新行

    "slim_handler": true
    
    1. 只安装 spacy 和 语言包 (python3 -m spacy download en)。之后,我手动将语言包上传到 S3,然后加载类似于此处描述的 spacy 语言“模型”:Sklearn joblib load function IO error from AWS S3

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-12
        • 2017-11-27
        • 2021-11-23
        • 1970-01-01
        相关资源
        最近更新 更多