Google Cloud Functions 上的 Numpy 错误不会在本地发生

Numpy error on Google Cloud Functions which does not happen locally

下面google 云函数在本地运行良好,但部署到云端时失败。

from flask import escape
import functions_framework
import numpy as np

@functions_framework.http
def test_func(request):
    np_array = np.zeros(172128250, dtype=np.complex64)
    print('np_array shape: ', np_array.shape)
    abs_array = np.abs(np_array)
    print('abs_array shape: ', abs_array.shape)
    return 'Hello World'

Python 尝试过的版本:3.7、3.8 和 3.9.

超时:540s

内存:8GB

np_array创建成功,但计算abs失败。函数打印第一个日志 np_array shape: (172128250,) 但无法打印第二个日志。函数突然退出打印 Function execution took 2408 ms, finished with status: 'connection error'。它适用于本地的所有大小,但在云上,它特别适用于以下 10 种大小的 NumPy 数组 [172128241, 172128242, ..., 172128250].

您的执行环境是沙盒化的,您无法获得某些 CPU 功能(有关详细信息,请查看 gVisor project)。

为了解决这个问题,我建议您切换到云 运行(只需将您的代码包装在 Web 服务器中,请参阅我的 old article here) and use execution runtime gen2(仍处于预览状态)

发现错误出现在云上的Numpy版本:1.19.4。在云上使用 1.21.5 后,错误消失了。仍然很奇怪为什么它在本地使用 1.19.4 但在云端失败。