本页面介绍了如何使用 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
如需了解如何安装或更新 Python,请参阅安装 Python 版 Vertex AI SDK。如需了解详情,请参阅 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" }