我们有一个生产场景,用户调用了昂贵的NLP功能,这些功能在短时间内(例如30秒)运行。由于高负载和间歇使用,我们正在研究Lambda函数部署。但是-我们的包裹很大。
我试图将AllenNLP装入lambda函数中,该函数又取决于pytorch,scipy,spacy和numpy以及其他一些库。
按照here和示例here的建议,测试和其他文件被删除。我还使用了Pytorch的非cuda版本,可减小其尺寸。我可以将AllenNLP部署打包到大约512mb。目前,对于AWS Lambda而言,这仍然太大了。
我想知道是否有人有以下潜在途径之一的经验:
从AllenNLP中切出PyTorch。没有Pytorch,我们可以将其扩展到250mb。我们只需要在生产中加载存档的模型,但这似乎确实使用了一些PyTorch基础架构。也许还有其他选择?
在AllenNLP的一个分支中调用PyTorch作为第二个lambda函数。
使用S3交付某些依赖项:SIMlink链接一些较大的.so
文件并从S3存储桶提供服务可能会有所帮助。这确实带来了另一个问题:我们从AllenNLP使用的Semnatic角色标签还需要一些大约500mb的语言模型,可以使用这些语言模型的临时存储-但也许可以将这些模型直接从S3流式传输到RAM中?
也许我缺少一个简单的解决方案。任何方向或经验将不胜感激!
答案 0 :(得分:1)
您可以将模型部署到AWS内的SageMaker,然后运行Lambda-> Sagemaker以避免必须在Lambda内加载非常大的功能。