このページでは、Google Cloud コンソールまたは Vertex AI API を使用して、画像データセットから AutoML オブジェクト検出モデルをトレーニングする方法について説明します。
AutoML モデルをトレーニングする
Google Cloud コンソール
Google Cloud コンソールの [Vertex AI] セクションで、[データセット] ページに移動します。
モデルのトレーニングに使用するデータセットの名前をクリックして、詳細ページを開きます。
[新しいモデルのトレーニング] をクリックします。
トレーニング メソッドとして [
AutoML] を選択します。[モデルを使用する場所の選択] セクションで、モデルのホストの場所を選択します。
クラウド、 エッジ、または Vertex AI ビジョン。[続行] をクリックします。
モデルの名前を入力します。
トレーニング データの分割方法を手動で設定する場合は、[ADVANCED OPTIONS] を開き、データ分割オプションを選択します(詳細はこちら)。
[トレーニングを開始] をクリックします。
データのサイズ、複雑さ、トレーニング予算(指定された場合)に応じて、モデルのトレーニングに何時間もかかることがあります。このタブを閉じて、後で戻ることもできます。モデルのトレーニングが完了すると、メールが送られてきます。
API
お使いの言語または環境に応じて、以下のタブを選択してください。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION: データセットが配置され、モデルが作成されるリージョン。例:
us-central1
- PROJECT: 実際のプロジェクト ID。
- TRAININGPIPELINE_DISPLAYNAME: 必須。trainingPipeline の表示名。
- DATASET_ID: トレーニングに使用するデータセットの ID 番号。
fractionSplit
: 省略可。ML が使用する可能性のあるデータ分割オプションの 1 つ。fractionSplit
の場合、値の合計 1 でなければなりません。例:-
{"trainingFraction": "0.7","validationFraction": "0.15","testFraction": "0.15"}
-
- MODEL_DISPLAYNAME*: TrainingPipeline によってアップロード(作成)されたモデルの表示名。
- MODEL_DESCRIPTION*: モデルの説明。
- modelToUpload.labels*: モデルを整理するための任意の Key-Value ペアのセット。例:
- "env": "prod"
- "tier": "backend"
- MODELTYPE†: トレーニングする Cloud ホスト型モデルのタイプ。次のオプションがあります。
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 モデルでは、予算は 20,000~900,000 ミリノード時間(上限、下限を含む)の範囲に収める必要があります。デフォルト値は 216,000 で、9 ノードが使用された場合の 1 日の経過時間に相当します。
- PROJECT_NUMBER: プロジェクトに自動生成されたプロジェクト番号
* | trainingTaskDefinition で指定したスキーマ ファイルの説明により、このフィールドの使用方法が記述されます。 |
† | trainingTaskDefinition で指定したスキーマ ファイルにより、このフィールドが宣言および記述されます。 |
HTTP メソッドと URL:
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
このサンプルを試す前に、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
オブジェクトに含めることができます。選択できるメソッドは 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" }