【问题标题】:Deploying Google Cloud Function with Tensorflow fails使用 TensorFlow 部署 Google Cloud 功能失败
【发布时间】:2020-05-10 14:15:10
【问题描述】:

我正在尝试部署一个谷歌云功能来使用universal-sentence-encoder 模型。

但是,如果我将依赖项添加到我的 requirements.txt:

tensorflow==2.1
tensorflow-hub==0.8.0

然后函数部署失败并出现以下错误:

Build failed: {"error": {"canonicalCode": "INTERNAL", "errorMessage": "gzip_tar_runtime_package gzip /tmp/tmpOBr2rZ.tar -1\nexited with error [Errno 12] Cannot allocate memory\ngzip_tar_runtime_package is likely not on the path", "errorType": "InternalError", "errorId": "F57B9E18"}}

这个错误是什么意思? 我该如何解决?

请注意,函数本身的代码只是您在 Web 控制台中单击“创建函数”时 google 提供的演示代码。当我删除这些要求时它会部署,当我添加它们时它会中断。

【问题讨论】:

标签: python tensorflow google-cloud-functions


【解决方案1】:

当部署文件的大小大于可用的 Cloud Function 内存时,可能会发生此错误。由于无法分配内存,无法安装 gzip_tar_runtime_package。

确保您只使用所需的依赖项。如果您要上传静态文件,请确保只上传必要的文件。

之后,如果您仍然遇到问题,请尝试增加云功能内存,在gcloud functions deploy 命令中设置--memory 标志,如here 所述

编辑:

目前在 Cloud Functions 中有一个带有 Tensorflow 2.1 的 known issue。 当前的解决方法是使用 Tensorflow 2.0.0 或 2.0.1

【讨论】:

  • 感谢@jose-v 我已经在使用 2Gb 内存实例。我的函数只有 20 行代码。我确实设法通过降级到较旧的 tensorflow 版本来部署它,但是在尝试下载我的模型时内存不足。我将找到另一个解决方案来运行它,因为这是行不通的。
  • Cloud Run 也有 2 GB 内存的限制 (source),App Engine 的最大内存实例类也有 2 GB (source)。也许像 Compute Engine 这样的东西会更适合您的需求
猜你喜欢
  • 2019-11-02
  • 2021-12-31
  • 1970-01-01
  • 2018-12-06
  • 2021-10-05
  • 2020-09-26
  • 2021-09-25
  • 2019-08-22
  • 2020-10-19
相关资源
最近更新 更多