使用CLI/Python API的Google AutoML模型导出



GCP AutoML web无法导出模型用于离线推理已经有几天了(支持团队说这是一个前端组件的bug,已经修复了,已经有几天了,还没有修复)

说,我通常不是GUI的粉丝,我希望我可以使用CLI或Python谷歌云自动API来完成这项工作。我不得不承认Google在文档方面很烂,他们不断地改变功能,却没有给出细节和例子。虽然所有的功能都可以工作(桶列表,桶创建,数据上传到桶,甚至模型训练等),但模型导出一直是一个令人头疼的问题,很难配置。在继续之前,请注意已将GOOGLE_APPLICATION_CREDENTIALS添加到环境中。到目前为止我所尝试的:

1。通过文章:

# get the token
access_token = subprocess.check_output(
'gcloud auth application-default print-access-token', shell=True)
data = {
"outputConfig": {
"modelFormat": "tf_saved_model", #or "tf-saved-model"
"gcsDestination": {
"outputUriPrefix": "gs://bucket/folder"
}
}
}

headers = {
'Authorization': f'Bearer {access_token.decode().rstrip()}',
'Content-Type': 'application/json; charset=utf-8',
}
url= f"https://automl.googleapis.com/v1/projects/{project_id}/locations/us-central1/models/{model_id}:export"
response = requests.post(url, headers=headers, json=data)

失败,response.content:

b'{n  "error": {n    "code": 400,n    "message": "List of found errors:\t1.Field: name; Message: Required field is invalid\t",n    "status": "INVALID_ARGUMENT",n    "details": [n      {n        "@type": "type.googleapis.com/google.rpc.BadRequest",n        "fieldViolations": [n          {n            "field": "name",n            "description": "Required field is invalid"n          }n        ]n      }n    ]n  }n}n'

2。通过google-cloud-automl

location = "us-central1"
client = automl.AutoMlClient()
model_full_id = client.model_path(project=project_id, location=location, model=model_id)
response = client.export_model(????)

这些参数显然是必需的(如果我运行client.export_model()):

1。字段:名称;消息:没有提供位置ID。
2。字段:名称;消息:Required field is invalid
3。领域:output_config.gcs_destination.output_uri_prefix;消息:GCS路径或前缀为空字符串。

我被困在如何传递参数的开始。我试过通过automl.types.ModelExportOutputConfig(??)为location_to_be_written和model_format配置元数据,但这是它自己的问题。

  1. 对于post方法,您需要使用模型id(例如ICN124...,TBL543...)
    您可以在UI上找到您的模型id =>AutoML Models选项卡或通过列出您的模型。
    我已经按照您提供的示例导出了一个模型。

  2. 对于库,您需要使用完整路径。
    下面是一个工作示例:

from google.cloud import automl
project_id = "YOUR_PROJECT"
model_name="projects/YOUR_PROJECT_NUMBER/locations/us-central1/models/YOUR_MODEL_ID"
gcs_uri = "gs://bucket/folder"
client = automl.AutoMlClient()
gcs_destination = automl.GcsDestination(output_uri_prefix=gcs_uri)
output_config=automl.ModelExportOutputConfig(gcs_destination=gcs_destination, model_format="tflite")
request = automl.ExportModelRequest(name=model_name, output_config=output_config)
response = client.export_model(request=request)

顺便说一句,从UI导出的问题现在已经修复了,你应该可以从中导出你的模型了。

我提出了同样的问题。我之前经常使用这个网页来导出模型,甚至在上周初就可以导出模型了。但自周五以来无法导出任何离线模型:(无论如何,我尝试了您的第一个Post方法,它对我使用代码导出模型有效。

相关内容

  • 没有找到相关文章

最新更新