python - Cloud ML Engine 在线预测性能

标签 python tensorflow machine-learning google-cloud-platform google-cloud-ml

我创建了一个 Cloud ML Engine 模型并尝试生成在线/HTTP 预测,但发现运行预测的延迟仍然相当高。下面是我用来生成预测的 Python 脚本(来自 here ):

def predict_json(project, model, instances, version=None):
    service = googleapiclient.discovery.build('ml', 'v1')
    name = 'projects/{}/models/{}'.format(project, model)

    if version is not None:
        name += '/versions/{}'.format(version)

    response = service.projects().predict(
        name=name,
        body={'instances': instances}
    ).execute()

    if 'error' in response:
        raise RuntimeError(response['error'])

    return response['predictions']

当模型在我的笔记本电脑上运行时,一旦我有了一个包含图形和恢复的所有变量的 tf.Session,通过网络的前向传递大约需要 0.16 秒(批量大小为1)。但是,当我使用 Cloud ML 输入相同的数据时,即使我多次运行相同的脚本,前向传递也需要大约 3.6 秒。

我怀疑每次我尝试进行预测时,模型都会从头开始重新加载 - 有没有办法让相同的 tf.Session 在后台运行,以便预测生成速度快得多?还是我做错了什么?

预先感谢您的帮助!

最佳答案

  1. 测量您的计算机和 Google 云之间的延迟?尝试发送格式错误的 URL 并测量响应时间。

  2. 检查服务部署的区域。

  3. 每隔 30 秒向服务发送 5 个请求。延迟会降低吗?

关于python - Cloud ML Engine 在线预测性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48253024/

相关文章:

python - 如何从 Docker 容器中的 python 脚本连接到 Ubuntu 上的本地 SQL 服务器

opencv - 需要opencv SVM的快速示例

database - 如何将数据分成训练集和测试集?

python - 随机森林的可解释性

python - Django:合并对象

python - 在 jupyter notebook 中使用 joblib 时不显示打印输出

python - 我将如何创建一个可以用 x 和 y 或以度为单位的角度初始化的二维矢量对象?

python - 如何在 tensorflow 中对二维数组应用 unique_with_counts

tensorflow - 如何找到 Tensorflow 最大值索引,但该值是重复的

tensorflow - 在 Keras 中使用 Lambda 层对具有可变索引的张量进行切片