是的,您可以使用 App Engine 与Google Cloud Machine Learning进行通信(以下简称CloudML
)。
要从 Python 与 CloudML 通信,您可以使用Google API 客户端库,您可以将其与任何 Google 服务一起使用。这个客户端库也可以在 App Engine 上使用,它甚至在此处有专门的文档。
我建议先在本地试验 API 客户端,然后再在 App Engine 上进行测试。对于此答案的下一部分,我将不区分在本地或在 App Engine 上使用此客户端库。
您提到了两种不同类型的操作CloudML
:
- 使用新数据更新模型
- 从训练/部署的模型中获取预测
1. 用新数据更新模型
根据新数据更新模型实际上对应于两个步骤。首先在新数据上训练模型(有或没有CloudML
),然后将这个新训练的模型部署在CloudML
.
您可以使用 App Engine 中的 API 客户端库执行这两个步骤,但为了降低复杂性,我认为您应该从预测 quickstart开始。这将使您拥有一个新训练和部署的模型,并使您了解所涉及的不同步骤。
一旦您熟悉了所涉及的概念和步骤,您将看到您可以将新数据存储在GCS上,并将快速入门中的不同 gcloud 命令替换为您可以使用 API 客户端库(文档)进行的相应 API 调用.
2. 从已部署的模型中获取预测
如果您有一个已部署的模型(如果没有,请按照上一步的链接),您可以轻松地与之通信CloudML
以获得1)批量预测或 2)在线预测(后者处于 alpha 阶段)。由于您使用的是 App Engine,我假设您有兴趣使用在线预测(获得即时结果)。执行此操作所需的最少代码:
from oauth2client.client import GoogleCredentials
from googleapiclient import discovery
projectID = 'projects/<your_project_id>'
modelName = projectID+'/models/<your_model_name>'
credentials = GoogleCredentials.get_application_default()
ml = discovery.build('ml', 'v1beta1', credentials=credentials)
# Create a dictionary with the fields from the request body.
requestDict = {"instances":[
{"image": [0.0,..., 0.0, 0.0], "key": 0}
]}
# Create a request to call projects.models.create.
request = ml.projects().predict(
name=modelName,
body=requestDict)
response = request.execute()
使用{"image": <image_array>, "key": <key_id>}
您通过上一步中的链接为部署模型定义的输入格式。这将返回response
包含模型的预期输出。