Google Cloud Function / Python 3.7 / requirements.txt 使部署失败

mkr*_*erx 5 python-3.x google-cloud-platform google-cloud-functions

我尝试通过 requirements.txt 部署具有依赖项的谷歌云功能。部署需要很长时间并且失败并显示以下消息:

(gcloud.functions.deploy) OperationError: code=3, message=Build failed: {"cacheStats": [{"status": "MISS", "hash": "ebbabef833cbc5bf98d2562c9f28bd5ab91e1a867134bb0c08f84397510ff774", "type": "docker_layer_cache", "level": "global"}, {"status": "MISS", "hash": "ebbabef833cbc5bf98d2562c9f28bd5ab91e1a867134bb0c08f84397510ff774", "type": "docker_layer_cache", "level": "project"}]}
Run Code Online (Sandbox Code Playgroud)

我发现,requirements.txt 似乎是问题所在,当我通过 Web 控制台(使用 HelloWorld 示例)创建一个 python3.7 云函数并将需求粘贴到那里时,我得到了相同的行为。requirements.txt 看起来像:

Flask==1.0.2
dill>=0.2.8
numpy>=1.15.0
requests>=2.20.0
six==1.12.0
spacy>=2.1.0
torch>=1.0.0
torchtext>=0.3.1
Run Code Online (Sandbox Code Playgroud)

我还有其他几个使用 requirements.txt 的例子,但我没有看到这里的重点。而且我不知道是否有进一步调试的方法。

任何人的想法?

更新

似乎是pytorch导致了问题,它通过直接指向whl文件的URL来工作,例如

...
spacy>=2.1.0
https://download.pytorch.org/whl/cpu/torch-1.0.1.post2-cp37-cp37m-linux_x86_64.whl
torchtext>=0.3.1
Run Code Online (Sandbox Code Playgroud)

问题似乎与cuda有关,上面的URL指向没有cuda的torch版本。

Dus*_*ram 6

默认情况下,PyTorch 在 PyPI 上发布了一个支持 CUDA/Nvidia GPU 的发行版,但 Cloud Functions 运行时没有 GPU 支持,也没有必要的系统库。

相反,您应该在选择时使用https://pytorch.org/提供的 URL :

  • 你的操作系统:Linux
  • 包装:Pip
  • 语言:Python 3.7
  • CUDA:无
pip3 install https://download.pytorch.org/whl/cpu/torch-1.0.1.post2-cp37-cp37m-linux_x86_64.whl
Run Code Online (Sandbox Code Playgroud)

这将使您的requirements.txt

Flask==1.0.2
dill>=0.2.8
numpy>=1.15.0
requests>=2.20.0
six==1.12.0
spacy>=2.1.0
https://download.pytorch.org/whl/cpu/torch-1.0.1.post2-cp37-cp37m-linux_x86_64.whl
torchtext>=0.3.1
Run Code Online (Sandbox Code Playgroud)