本页面介绍如何使用 Google Cloud 控制台或 Vertex AI API 通过图片数据集训练 AutoML 分类模型。
训练 AutoML 模型
Google Cloud 控制台
API
在下面选择您的目标对应的标签页:
分类
在下面选择您的语言或环境对应的标签页:
REST
在使用任何请求数据之前,请先进行以下替换:
- LOCATION:数据集所在且模型在其中创建的区域。例如
us-central1
。 - PROJECT:您的项目 ID。
- 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
(默认)
- NODE_HOUR_BUDGET†:实际训练费用将等于或小于此值。对于 Cloud 模型,预算必须为:8,000 - 800,000 毫节点时(含边界值)。默认值为 192,000,代表实际用时一天(假设使用 8 个节点)。
- 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_classification_1.0.0.yaml", "trainingTaskInputs": { "multiLabel": "false", "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
在尝试此示例之前,请按照《Vertex AI 快速入门:使用客户端库》中的 Java 设置说明执行操作。 如需了解详情,请参阅 Vertex AI Java API 参考文档。
如需向 Vertex AI 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
在尝试此示例之前,请按照《Vertex AI 快速入门:使用客户端库》中的 Node.js 设置说明执行操作。 如需了解详情,请参阅 Vertex AI Node.js API 参考文档。
如需向 Vertex AI 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装或更新 Vertex AI SDK for Python,请参阅安装 Vertex AI SDK for Python。 如需了解详情,请参阅 Python API 参考文档。
分类
在下面选择您的语言或环境对应的标签页:
REST
在使用任何请求数据之前,请先进行以下替换:
- LOCATION:数据集所在且模型在其中创建的区域。例如
us-central1
。 - PROJECT:您的项目 ID。
- 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
(默认)
- NODE_HOUR_BUDGET†:实际训练费用将等于或小于此值。对于 Cloud 模型,预算必须为:8,000 - 800,000 毫节点时(含边界值)。默认值为 192,000,代表实际用时一天(假设使用 8 个节点)。
- 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_classification_1.0.0.yaml", "trainingTaskInputs": { "multiLabel": "true", "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
在尝试此示例之前,请按照《Vertex AI 快速入门:使用客户端库》中的 Java 设置说明执行操作。 如需了解详情,请参阅 Vertex AI Java API 参考文档。
如需向 Vertex AI 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
在尝试此示例之前,请按照《Vertex AI 快速入门:使用客户端库》中的 Node.js 设置说明执行操作。 如需了解详情,请参阅 Vertex AI Node.js API 参考文档。
如需向 Vertex AI 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装或更新 Vertex AI SDK for Python,请参阅安装 Vertex AI SDK for Python。 如需了解详情,请参阅 Python API 参考文档。
使用 REST 控制数据拆分
您可以控制在训练集、验证集和测试集之间拆分训练数据的方式。使用 Vertex AI 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" }