2

按照本教程,我已成功将模型部署到 AI Platform Predictions 。现在,我想通过 HTTP 请求使用这个模型进行预测。

正如@Ismail 所建议的,我遵循了Method: projects.predict文档。

我正在向https://ml.googleapis.com/v1/projects/${PROJECT_ID}/models/${MODEL_NAME}:predict以下正文发送 POST 请求:

{
  "instances": [
    [51.0, 17.0, 6.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0]
  ]
}

数字是模型的输入。

我收到以下回复:

{
    "error": {
        "code": 401,
        "message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
        "status": "UNAUTHENTICATED"
    }
}

我使用 RestMan chrome 扩展发送了 POST 请求。我希望能够使用 RestMan 进行预测。

我的问题是:如何验证我的 HTTP POST 请求?我应该在请求的标头中发送一些信息吗?

4

2 回答 2

1

访问 Google API 时,需要在 header 中添加访问令牌。使用 CLI,您可以像这样生成它:

gcloud auth print-access-token

当然,当前的凭证需要在AI平台预测服务上进行授权。

如果您执行 curl,您可以在 linux(和 cloud shell)上执行此操作

curl -X POST -d @bodyfile.json -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  https://ml.googleapis.com/v1/projects/${PROJECT_ID}/models/${MODEL_NAME}:predic

如果您使用 RestMan,我不确定它是否能够为您生成访问令牌。解决方案是将您的模型公开。不推荐,但在有限的时间内,并且仅用于测试,为什么不呢!

为此,授予您模型上allUsers的角色roles/ml.modelUser


编辑 1

我没有找到如何在带有控制台的模型上执行此操作。我以前做过,但有一些更新......很奇怪。我通过 gcloud CLI 实现了这一点

gcloud ai-platform models add-iam-policy-binding --region=us-central1 --member=allUsers --role=roles/ml.modelUser test
于 2021-01-26T21:05:05.560 回答
-2

通过以下方法:projects.predict文档。

POST https://{endpoint}/v1/{name=projects/**}:predict
于 2021-01-26T15:17:03.160 回答