如何将第三方ML模型加载到无服务器功能中

时间:2019-05-04 02:23:02

标签: python lambda scikit-learn serverless-framework

我已经建立了ML模型(使用sklearn模块),并且希望通过AWS API Gateway + Lambda函数为它提供预测。

我的问题是:

  1. 由于lambda容量限制,我无法安装sklearn + numpy等。 (该捆绑包大于140MB)
  2. 也许这是一个愚蠢的问题,但是,您知道是否有更好的方法来完成该任务?

我已经尝试过本教程,以减小捆绑包的大小。但是,由于--use-wheel标志,因此引发了异常。

https://serverlesscode.com/post/scikitlearn-with-amazon-linux-container/

    bucket = s3.Bucket(os.environ['BUCKET'])
    model_stream = bucket.Object(os.environ['MODEL_NAME'])
    model = pickle.loads(model_stream)
    model.predict(z_features)[0]

使用标量后z_features是我的特征

2 个答案:

答案 0 :(得分:0)

只要弄清楚!

该解决方案基本上位于AWS Lambda层之上。

我创建了一个仅包含相关编译库的sklearn层。 然后,我运行sls package来打包包含这些文件以及我自己的handler.py代码的捆绑包。

最后一步是运行  sls deploy --package .serverless

希望对其他人有帮助。

答案 1 :(得分:0)

如果您只是想为您的 sklearn 模型提供服务,您可以跳过设置 lambda 函数和修改 API 网关的麻烦——只需将您的模型作为 pkl 文件上传到 FlashAI.io,这将为您的模型提供服务自动免费。它处理高流量环境和无限的推理请求。对于 sklearn 模型,只需查看 user guide,5 分钟内您就可以将模型作为 API 使用。

免责声明:我是此服务的作者