【发布时间】:2018-06-23 11:53:50
【问题描述】:
我创建了一个 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 在后台运行,以便更快地生成预测?还是我做错了什么?
提前感谢您的帮助!
【问题讨论】:
-
根据this doc,可以使用模型的默认版本,也可以每次指定不同的版本。你每次都用同一个版本吗?查看有关Managing Models and Jobs 的文档。也许this general troubleshooting doc 也有帮助 - 检查为预测配置云资源的方式。
-
感谢您的回复。我使用的模型只有 1 个版本(我已将其设置为默认版本),所以这不应该是问题 - 故障排除文档中的问题也不适用。
标签: python tensorflow machine-learning google-cloud-platform google-cloud-ml