本页面介绍了如何使用 Google Cloud 控制台或 Vertex AI API 根据视频数据集训练 AutoML 动作识别模型。
训练 AutoML 模型
Google Cloud 控制台
在 Google Cloud 控制台的 Vertex AI 部分中,前往数据集页面。
点击要用于训练模型的数据集的名称,以打开其详情页面。
点击训练新模型。
输入新模型的显示名。
如果您要手动设置训练数据的拆分方式,请展开高级选项,然后选择数据拆分选项。了解详情。
点击继续。
选择模型训练方法。
AutoML
非常适合各种用例。Seq2seq+
非常适合进行实验。该算法可能比AutoML
收敛更快,因为它的架构更简单,并且使用较小的搜索空间。我们的实验发现,在时间预算较少的情况下以及在小于 1 GB 的数据集上,Seq2Seq+ 性能较好。
点击开始训练。
模型训练可能需要几个小时,具体取决于数据的大小和复杂性,以及训练预算(如果指定)。您可以关闭此标签页,稍后再返回。模型完成训练后,您会收到电子邮件。
训练开始几分钟后,您即可在模型的属性信息中查看训练节点时的估算值。如果您取消训练,当前产品不会产生费用。
API
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT:您的项目 ID。
- LOCATION:数据集所在且模型在其中创建的区域。例如
us-central1
。 - TRAINING_PIPELINE_DISPLAY_NAME:必填。TrainingPipeline 的显示名称。
- DATASET_ID:训练数据集的 ID。
-
TRAINING_FRACTION、TEST_FRACTION:
fractionSplit
对象是可选的;您使用它来控制数据拆分。如需详细了解如何控制数据拆分,请参阅 AutoML 模型的数据拆分简介。例如:{"trainingFraction": "0.8","validationFraction": "0","testFraction": "0.2"}
- MODEL_DISPLAY_NAME:经过训练的模型的显示名称。
- MODEL_DESCRIPTION:模型的说明。
- MODEL_LABELS:用于组织模型的任何键值对。例如:
- "env": "prod"
- "tier": "backend"
- EDGE_MODEL_TYPE:
MOBILE_VERSATILE_1
:通用目的
- PROJECT_NUMBER:您项目的自动生成的项目编号
HTTP 方法和网址:
POST https://LOCATION-aiplatform.googleapis.com/beta1/projects/PROJECT/locations/LOCATION/trainingPipelines
请求 JSON 正文:
{ "displayName": "TRAINING_PIPELINE_DISPLAY_NAME", "inputDataConfig": { "datasetId": "DATASET_ID", "fractionSplit": { "trainingFraction": "TRAINING_FRACTION", "validationFraction": "0", "testFraction": "TEST_FRACTION" } }, "modelToUpload": { "displayName": "MODEL_DISPLAY_NAME", "description": "MODEL_DESCRIPTION", "labels": { "KEY": "VALUE" } }, "trainingTaskDefinition": "gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_video_object_tracking_1.0.0.yaml", "trainingTaskInputs": { "modelType": ["EDGE_MODEL_TYPE"], } }
如需发送请求,请选择以下方式之一:
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/beta1/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/beta1/projects/PROJECT/locations/LOCATION/trainingPipelines" | Select-Object -Expand Content
响应包含有关规范的信息以及 TRAININGPIPELINE_ID。
Java
在尝试此示例之前,请按照《Vertex AI 快速入门:使用客户端库》中的 Java 设置说明执行操作。 如需了解详情,请参阅 Vertex AI Java 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" }