本页面介绍了如何使用控制台或 Agent Platform API 根据图片 数据集训练 AutoML 对象检测模型。 Google Cloud
训练 AutoML 模型
Google Cloud 控制台
在 Google Cloud 控制台的 Agent Platform 部分中,前往 数据集 页面。
点击要用于训练模型的数据集的名称,以打开其详情页面。
点击训练新模型。
训练方法选择 AutoML。
在选择模型使用位置 部分中,选择模型主机 位置:Cloud 、Edge 或 Agent Platform Vision 。
点击继续 。
输入模型的名称。
如果您要手动设置训练数据的拆分方式,请展开高级选项,然后选择数据拆分选项。了解详情。
点击开始训练。
模型训练可能需要几个小时,具体取决于数据的大小和复杂性,以及训练预算(如果指定)。您可以关闭此标签页,稍后再返回。模型完成训练后,您会收到电子邮件。
API
在下面选择您的语言或环境对应的标签页:
REST
在使用任何请求数据之前,请先进行以下替换:
- LOCATION:数据集所在且模型在其中创建的区域。例如,
us-central1。 - PROJECT: 您的 [项目 ID](/resource-manager/docs/creating-managing-projects#identifiers)。 。
- TRAININGPIPELINE_DISPLAYNAME:必填。trainingPipeline 的显示名称。
- DATASET_ID:用于训练的数据集的 ID 编号。
fractionSplit:可选。数据的多个可能的机器学习用途拆分选项之一。对于fractionSplit,值的总和必须为 1。例如:-
{"trainingFraction": "0.7","validationFraction": "0.15","testFraction": "0.15"}
-
- MODEL_DISPLAYNAME*:TrainingPipeline 上传(创建)的模型的显示名称。
- MODEL_DESCRIPTION*:模型的说明。
- modelToUpload.labels*:用于组织模型的任何键值对。例如:
- "env": "prod"
- "tier": "backend"
- MODELTYPE†:要训练的云托管模型的类型。选项包括:
CLOUD_1- 最适合定制以在 Google Cloud 中使用且无法导出的模型。与上述 CLOUD_HIGH_ACCURACY_1 和 CLOUD_LOW_LATENCY_1 模型相比,预测质量更高且延迟时间更短。CLOUD_HIGH_ACCURACY_1- 最适合定制以在 Google Cloud 中使用且无法导出的模型。此模型预计延迟时间会更长,但也应该比其他云模型具有更高的预测质量。CLOUD_LOW_LATENCY_1- 最适合定制以在 Google Cloud 中使用且无法导出的模型。此模型预计延迟时间较低,但可能低于其他云模型的预测质量。
- NODE_HOUR_BUDGET†:实际训练费用将等于或小于此值。对于 Cloud 模型,预算必须为 2 万至 90 万毫节点时(含边界值)。默认值为 216,000,代表实际用时一天(假设使用 9 个节点)。
- PROJECT_NUMBER:自动生成的项目编号
| * | 您在 trainingTaskDefinition 中指定的架构文件的说明描述了此字段的用途。 |
| † | 您在 trainingTaskDefinition 中指定的架构文件声明并描述了此字段。 |
HTTP 方法和网址:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines
请求 JSON 正文:
{
"displayName": "TRAININGPIPELINE_DISPLAYNAME",
"inputDataConfig": {
"datasetId": "DATASET_ID",
"fractionSplit": {
"trainingFraction": "DECIMAL",
"validationFraction": "DECIMAL",
"testFraction": "DECIMAL"
}
},
"modelToUpload": {
"displayName": "MODEL_DISPLAYNAME",
"description": "MODEL_DESCRIPTION",
"labels": {
"KEY": "VALUE"
}
},
"trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_image_object_detection_1.0.0.yaml",
"trainingTaskInputs": {
"modelType": ["MODELTYPE"],
"budgetMilliNodeHours": NODE_HOUR_BUDGET
}
}
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json 的文件中,然后执行以下命令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines"
PowerShell
将请求正文保存在名为 request.json 的文件中,然后执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines" | Select-Object -Expand Content
响应包含有关规范的信息以及 TRAININGPIPELINE_ID。
Java
试用此示例之前,请按照 Java 设置说明进行操作,请参阅 Agent Platform 快速入门:使用客户端库。
如需向 Agent Platform 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅 为本地开发环境设置身份验证。
Node.js
试用此示例之前,请按照 Node.js 设置说明进行操作,请参阅Agent Platform 快速入门:使用客户端库。
如需向 Agent Platform 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅 为本地开发环境设置身份验证。
Python
如需了解如何安装或更新 Vertex AI SDK for Python,请参阅安装 Vertex AI SDK for Python。 如需了解详情,请参阅 Python API 参考文档。
使用 REST 控制数据拆分
您可以控制在训练集、验证集和测试集之间拆分训练数据的方式。使用 Agent Platform API 时,请使用
Split 对象来确定
数据拆分。Split 对象可以包含在 InputConfig 对象中作为多种对象类型中的一种,其中每种类型都提供一种不同的训练数据拆分方式。您只能选择一种方法。
-
FractionSplit:- TRAINING_FRACTION:要用于训练集的训练数据的比例。
- VALIDATION_FRACTION:要用于验证集的训练数据的比例。不用于视频数据。
- TEST_FRACTION:要用于测试集的训练数据的比例。
如果指定了任一比例,则必须指定所有比例。这些比例之和必须等于 1.0。比例的默认值会因数据类型而异。了解详情。
"fractionSplit": { "trainingFraction": TRAINING_FRACTION, "validationFraction": VALIDATION_FRACTION, "testFraction": TEST_FRACTION }, -
FilterSplit: - TRAINING_FILTER:与此过滤条件匹配的数据项用于训练集。
- VALIDATION_FILTER:与此过滤条件匹配的数据项用于验证集。对于视频数据,该值必须为“-”。
- TEST_FILTER:与此过滤条件匹配的数据项用于测试集。
这些过滤条件可以与 ml_use 标签或应用于数据的任何标签结合使用。详细了解如何使用 ml-use 标签和其他标签来过滤数据。
以下示例展示了如何将 filterSplit 对象与 ml_use 标签结合使用,其中包含验证集:
"filterSplit": {
"trainingFilter": "labels.aiplatform.googleapis.com/ml_use=training",
"validationFilter": "labels.aiplatform.googleapis.com/ml_use=validation",
"testFilter": "labels.aiplatform.googleapis.com/ml_use=test"
}