【问题标题】:Deploying a microservice with Tensorflow at AWS Lambda在 AWS Lambda 上使用 TensorFlow 部署微服务
【发布时间】:2020-01-15 23:26:17
【问题描述】:

我被困在这里太久了。我正在尝试部署一个使用 tensorflow 的微服务。有一个名为handler.py 的文件,其简单代码如下:

import json
import tensorflow as tf
import numpy as np

def main(event, context):
    # a = np.arange(15).reshape(3, 5)

    body = {
        "message": "Go Serverless v1.0! Your function executed successfully!",
        "input": event
    }

    response = {
        "statusCode": 200,
        "body": json.dumps(body)
    }

    return response

    # Use this code if you don't use the http event with the LAMBDA-PROXY
    # integration
    """
    return {
        "message": "Go Serverless v1.0! Your function executed successfully!",
        "event": event
    }
    """

为了让我的工作更轻松,我使用了serverless to deploy a microservice,但它没有说,解压缩后的大小太大。这是我的目录的样子:

-- handler.py
-- serverless.yml
-- requirements.txt

requirements.txt 看起来像:

numpy
tensorflow

我还尝试在不安装上述模块的情况下上传,认为 lambda 本身会从 requirements.txt 初始化,但随后会收到 Unable to import module 'handler': No module named 'tensorflow' 的错误。我应该怎么办?我在这方面花了很多时间,但仍然不相信 AWS Lambda 不允许我这样做。

如果你想看serverless.yml,它看起来如下:

service: numpy-new-test

provider:
  name: aws
  runtime: python3.6
  profile: nsp
  role: arn:aws:iam::xxxxxxxxxxx7:role/AdminRole

functions:
  numpy:
    handler: handler.main
    events:
      - http:
          path: test
          method: get 

【问题讨论】:

    标签: python amazon-web-services tensorflow aws-lambda


    【解决方案1】:

    正如您在收到的错误中提到的,您的压缩包看起来太大了。您收到其他错误是因为您的脚本中有模块要求使用 tensorflow。

    请记住,AWS Lambda Limits 的部署包大小限制为 50MB。 Tensorflow package 本身就接近 50MB,因此添加 Numpy 包将远远超出限制。

    看看这个博客,它对 AWS Lambda 中的包限制大小进行了一些调查

    https://hackernoon.com/exploring-the-aws-lambda-deployment-limits-9a8384b0bec3

    【讨论】:

    • 你的意思是我需要压缩包含 python 模块的文件夹,然后再压缩完整的包吗?这是否也意味着,我应该从 local-python 文件夹中读取模块?
    • 不,你只需要压缩一次,是的,你应该从本地 python 文件夹中读取 python 库。在 Lambda 中,您需要使用代码预先打包部署中的库文件。
    • 你需要在你的代码中使用 numpy 吗?也许将 numpy 排除在部署之外可能只会将其保持在此限制之下。在此示例中github.com/jacopotagliabue/tensorflow_to_lambda_serverless 看起来他们可以仅使用 Tensorflow 库成功部署。
    • 也需要 numpy。压缩包的总大小为 330 MB
    • 从您共享的文档看来,无法部署大小为 330 MB 的包
    猜你喜欢
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 2018-05-12
    • 2020-10-20
    • 2016-09-10
    • 1970-01-01
    • 2020-11-24
    • 2021-01-28
    相关资源
    最近更新 更多