このページでは、Google Cloud コンソールまたは Vertex AI API を使用して、画像データセットから AutoML 分類モデルをトレーニングする方法について説明します。
AutoML モデルをトレーニングする
Google Cloud コンソール
Google Cloud コンソールの [Vertex AI] セクションで、[データセット] ページに移動します。
モデルのトレーニングに使用するデータセットの名前をクリックして、詳細ページを開きます。
[新しいモデルのトレーニング] をクリックします。
トレーニング メソッドとして [
AutoML] を選択します。[続行] をクリックします。
モデルの名前を入力します。
トレーニング データの分割方法を手動で設定する場合は、[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
(デフォルト)
- NODE_HOUR_BUDGET†: 実際のトレーニング料金はこの値以下になります。Cloud モデルでは、予算は 8,000~800,000 ミリノード時間(上限、下限を含む)の範囲に収める必要があります。デフォルト値は 192,000 で、8 ノードが使用された場合の 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_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 に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Vertex AI SDK for Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。詳細については、Vertex AI SDK for Python 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
(デフォルト)
- NODE_HOUR_BUDGET†: 実際のトレーニング料金はこの値以下になります。Cloud モデルでは、予算は 8,000~800,000 ミリノード時間(上限、下限を含む)の範囲に収める必要があります。デフォルト値は 192,000 で、8 ノードが使用された場合の 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_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 に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
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" }