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配置元数据,但这是它自己的问题。
-
对于
post
方法,您需要使用模型id(例如ICN124...
,TBL543...
)
您可以在UI上找到您的模型id =>AutoML Models选项卡或通过列出您的模型。
我已经按照您提供的示例导出了一个模型。 -
对于库,您需要使用完整路径。
下面是一个工作示例:
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方法,它对我使用代码导出模型有效。