Vertex AI API を使用した AutoML Edge モデルのトレーニング

Google Cloud コンソールから直接、またはプログラムでトレーニング パイプラインを作成することによって、API や、Vertex AI クライアント ライブラリの 1 つを使用して AutoML モデルを作成します。

このモデルは、コンソールまたは API から提供される準備済みのデータセットを使用して作成されます。Vertex AI API は、データセットの項目を使用してモデルのトレーニングとテストを行い、モデルのパフォーマンスを評価します。評価結果を確認して、必要に応じてトレーニング データセットを調整し、改善されたデータセットで新しいトレーニング パイプラインを作成します。

モデルのトレーニングが完了するまで数時間かかることがあります。Vertex AI API を使用すると、トレーニングのステータスを取得できます。

AutoML Edge トレーニング パイプラインを作成する

代表的なトレーニング アイテムのセットを含むデータセットを用意したら、AutoML Edge トレーニング パイプラインを作成します。

データタイプを選択します。

画像

目標に応じて以下のタブを選択してください。

分類

トレーニング時に、特定のユースケースで必要な AutoML Edge モデルのタイプを選択できます。

  • 低レイテンシ(MOBILE_TF_LOW_LATENCY_1
  • 一般的な用途(MOBILE_TF_VERSATILE_1
  • 予測品質の向上(MOBILE_TF_HIGH_ACCURACY_1

お使いの言語または環境に応じて、以下のタブを選択してください。

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
  • EDGE_MODELTYPE: トレーニングする Edge モデルのタイプ。次のオプションがあります。
    • MOBILE_TF_LOW_LATENCY_1
    • MOBILE_TF_VERSATILE_1
    • MOBILE_TF_HIGH_ACCURACY_1
  • NODE_HOUR_BUDGET: 実際のトレーニング料金はこの値以下になります。Edge モデルでは、予算は 1,000~100,000 ミリノード時間(上限、下限を含む)にする必要があります。
  • PROJECT_NUMBER: プロジェクトのプロジェクト番号。

HTTP メソッドと URL:

POST http://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": ["EDGE_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 \
"http://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 "http://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines" | Select-Object -Expand Content

レスポンスには、仕様と TRAININGPIPELINE_ID に関する情報が含まれています。

TRAININGPIPELINE_ID を使用すると、trainingPipeline ジョブのステータスを取得できます。

分類

トレーニング時に、特定のユースケースで必要な AutoML Edge モデルのタイプを選択できます。

  • 低レイテンシ(MOBILE_TF_LOW_LATENCY_1
  • 一般的な用途(MOBILE_TF_VERSATILE_1
  • 予測品質の向上(MOBILE_TF_HIGH_ACCURACY_1

お使いの言語または環境に応じて、以下のタブを選択してください。

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
  • EDGE_MODELTYPE: トレーニングする Edge モデルのタイプ。次のオプションがあります。
    • MOBILE_TF_LOW_LATENCY_1
    • MOBILE_TF_VERSATILE_1
    • MOBILE_TF_HIGH_ACCURACY_1
  • NODE_HOUR_BUDGET: 実際のトレーニング料金はこの値以下になります。Edge モデルでは、予算は 1,000~100,000 ミリノード時間(上限、下限を含む)にする必要があります。
  • PROJECT_NUMBER: プロジェクトのプロジェクト番号。

HTTP メソッドと URL:

POST http://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": ["EDGE_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 \
"http://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 "http://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines" | Select-Object -Expand Content

レスポンスには、仕様と TRAININGPIPELINE_ID に関する情報が含まれています。

TRAININGPIPELINE_ID を使用すると、trainingPipeline ジョブのステータスを取得できます。

オブジェクト検出

トレーニング時に、特定のユースケースで必要な AutoML Edge モデルのタイプを選択できます。

  • 低レイテンシ(MOBILE_TF_LOW_LATENCY_1
  • 一般的な用途(MOBILE_TF_VERSATILE_1
  • 予測品質の向上(MOBILE_TF_HIGH_ACCURACY_1

お使いの言語または環境に応じて、以下のタブを選択してください。

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
  • EDGE_MODELTYPE: トレーニングする Edge モデルのタイプ。次のオプションがあります。
    • MOBILE_TF_LOW_LATENCY_1
    • MOBILE_TF_VERSATILE_1
    • MOBILE_TF_HIGH_ACCURACY_1
  • NODE_HOUR_BUDGET: 実際のトレーニング料金はこの値以下になります。Cloud モデルでは、予算は 20,000~900,000 ミリノード時間(上限、下限を含む)の範囲に収める必要があります。デフォルト値は 216,000 で、9 ノードが使用された場合の 1 日の経過時間に相当します。
  • PROJECT_NUMBER: プロジェクトのプロジェクト番号。

HTTP メソッドと URL:

POST http://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": ["EDGE_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 \
"http://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 "http://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/trainingPipelines" | Select-Object -Expand Content

レスポンスには、仕様と TRAININGPIPELINE_ID に関する情報が含まれています。

TRAININGPIPELINE_ID を使用すると、trainingPipeline ジョブのステータスを取得できます。

動画

目標に応じて以下のタブを選択してください。

動作認識

トレーニング時に、次の AutoML エッジタイプを選択します。

  • MOBILE_VERSATILE_1: 一般的な用途

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT: プロジェクト ID。
  • LOCATION: データセットが配置され、モデルが作成されるリージョン。例: us-central1
  • TRAINING_PIPELINE_DISPLAY_NAME: 必須。TrainingPipeline の表示名。
  • DATASET_ID: トレーニング データセットの ID。
  • TRAINING_FRACTIONTEST_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 http://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_action_recognition_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 \
"http://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 "http://LOCATION-aiplatform.googleapis.com/beta1/projects/PROJECT/locations/LOCATION/trainingPipelines" | Select-Object -Expand Content

レスポンスには、仕様と TRAININGPIPELINE_ID に関する情報が含まれています。

trainingPipeline の進行状況のステータスを取得すると、終了時間を確認できます。

分類

トレーニング時に、次の AutoML エッジタイプを選択します。

  • MOBILE_VERSATILE_1: 一般的な用途

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT: プロジェクト ID。
  • LOCATION: データセットが配置され、モデルが作成されるリージョン。例: us-central1
  • TRAINING_PIPELINE_DISPLAY_NAME: 必須。TrainingPipeline の表示名。
  • DATASET_ID: トレーニング データセットの ID。
  • TRAINING_FRACTIONTEST_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 http://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_classification_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 \
"http://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 "http://LOCATION-aiplatform.googleapis.com/beta1/projects/PROJECT/locations/LOCATION/trainingPipelines" | Select-Object -Expand Content

レスポンスには、仕様と TRAININGPIPELINE_ID に関する情報が含まれています。

trainingPipeline の進行状況のステータスを取得すると、終了時間を確認できます。

オブジェクト トラッキング

トレーニング時に、AutoML エッジタイプを選択します。

  • MOBILE_VERSATILE_1: 一般的な用途
  • MOBILE_CORAL_VERSATILE_1: Google Coral における予測品質の向上
  • MOBILE_CORAL_LOW_LATENCY_1: Google Coral のレイテンシの短縮
  • MOBILE_JETSON_VERSATILE_1: NVIDIA Jetson の予測品質の向上
  • MOBILE_JETSON_LOW_LATENCY_1: NVIDIA Jetson のレイテンシの短縮

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT: プロジェクト ID。
  • LOCATION: データセットが配置され、モデルが作成されるリージョン。例: us-central1
  • TRAINING_PIPELINE_DISPLAY_NAME: 必須。TrainingPipeline の表示名。
  • DATASET_ID: トレーニング データセットの ID。
  • TRAINING_FRACTIONTEST_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: 一般的な用途
    • MOBILE_CORAL_VERSATILE_1: Google Coral における予測品質の向上
    • MOBILE_CORAL_LOW_LATENCY_1: Google Coral のレイテンシの短縮
    • MOBILE_JETSON_VERSATILE_1: NVIDIA Jetson の予測品質の向上
    • MOBILE_JETSON_LOW_LATENCY_1: NVIDIA Jetson のレイテンシの短縮
  • PROJECT_NUMBER: プロジェクトのプロジェクト番号。

HTTP メソッドと URL:

POST http://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 \
"http://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 "http://LOCATION-aiplatform.googleapis.com/beta1/projects/PROJECT/locations/LOCATION/trainingPipelines" | Select-Object -Expand Content

レスポンスには、仕様と TRAININGPIPELINE_ID に関する情報が含まれています。