要求是我必须在lambda上触发SageMaker端点以获得预测(这很容易)但是必须使用诸如XGBoost和SHAP之类的包对变量重要性进行一些额外的处理。
我能够使用SageMaker Jupyter笔记本点击端点并获得变量重要性。现在,我想在AWS lambda上复制相同的东西。
1)如何在AWS lambda上运行python代码,其中包含Pandas,XGBoost和SHAP的包依赖项(总包大小超过500MB)。解压缩的部署包大小大于250 MB,因此lambda不允许部署。我甚至尝试使用Cloud9中的lambda函数,并且由于大小限制而得到了相同的错误。我也试过lambda图层,但没有运气。
2)有没有办法让我在lambda上或通过lambda运行代码,绕过部署包大小限制为250 MB
3)有没有办法通过lambda触发SageMaker笔记本执行,它会进行计算并将输出返回给lambda?
尝试将依赖项上传到Lambda层。仅供参考:https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html
在进行实际预测之前,您可以尝试使用SageMaker推理管道进行预处理。基本上,您也可以使用相同的预处理脚本进行推理训练。部署管道模型时,将在端点或转换作业中的每个EC2实例上安装并运行具有预处理任务的完整容器集。功能处理和推断以低延迟执行,因为部署在推理管道中的容器共同位于同一EC2实例(端点)上。你可以参考文档here。
以下博客文章/笔记本详细介绍了此功能
我一直遵循的标准是我从不使用lambda函数运送库或外部包,我总是创建图层。
图层是ZIP存档,包含库,自定义运行时或其他依赖项。使用图层,您可以在函数中使用库,而无需将它们包含在部署包中。
如果将每个依赖项(即Pandas,XGBoost和SHAP)打包到它们自己的Lambda层并将其附加到您的函数,则可能会解决您的问题。
在docs中了解有关Lambda图层的更多信息