このページでは、Google Cloud コンソールまたは Vertex AI API を使用して、動画データセットから AutoML 動作認識モデルをトレーニングする方法について説明します。
AutoML モデルをトレーニングする
Google Cloud コンソール
Google Cloud コンソールの [Vertex AI] セクションで、[データセット] ページに移動します。
モデルのトレーニングに使用するデータセットの名前をクリックして、詳細ページを開きます。
[新しいモデルのトレーニング] をクリックします。
新しいモデルの表示名を入力します。
トレーニング データの分割方法を手動で設定する場合は、[ADVANCED OPTIONS] を開き、データ分割オプションを選択します詳細。
[続行] をクリックします。
モデルのトレーニング方法を選択します。
AutoML
は幅広いユースケースに適しています。Seq2seq+
はテストに適しています。このアーキテクチャはシンプルで、検索スペースが小さいため、AutoML
よりも速く収束する可能性が高くなります。Google でのテストによると、Seq2Seq+ は少ない時間予算で十分に機能し、サイズが 1 GB 未満のデータセットで高いパフォーマンスを発揮します。
[トレーニングを開始] をクリックします。
データのサイズ、複雑さ、トレーニング予算(指定された場合)に応じて、モデルのトレーニングに何時間もかかることがあります。このタブを閉じて、後で戻ることもできます。モデルのトレーニングが完了すると、メールが送られてきます。
トレーニング開始から数分後には、モデルのプロパティ情報からトレーニング ノード時間の見積もりを確認できます。トレーニングをキャンセルした場合、現在のプロダクトに料金はかかりません。
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: モデルを整理するための任意の Key-Value ペアのセット。例:
- "env": "prod"
- tier: backend
- EDGE_MODEL_TYPE:
MOBILE_VERSATILE_1
: 一般的な用途
- PROJECT_NUMBER: プロジェクトに自動生成されたプロジェクト番号
HTTP メソッドと URL:
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 に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Vertex AI SDK for Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。詳細については、Vertex AI SDK for Python API のリファレンス ドキュメントをご覧ください。
REST を使用してデータ分割を制御する
トレーニング セット、検証セット、テストセットの間でトレーニング データをどのように分割するかを制御できます。Vertex AI API を使用する場合は、Split
オブジェクトを使用してデータの分割を決定します。トレーニング データの分割に使用できるオブジェクト タイプの一つとして、Split
オブジェクトを InputConfig
オブジェクトに含めることができます。選択できるメソッドは 1 つのみです。
-
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 ラベルとその他のラベルを使用してデータをフィルタリングする方法をご確認ください。
次の例は、検証セットを含む、ml_use
ラベルを持つ filterSplit
オブジェクトの使用方法を示しています。
"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" }