マネージド データセットを使用する

このページでは、Vertex AI マネージド データセットを使用してカスタムモデルをトレーニングする方法について説明します。マネージド データセットを使用すると、次のことができます。

  • データセットを一元的に管理する。
  • ラベルと複数のアノテーション セットを簡単に作成する。
  • 統合データのラベル付けを使用して、ヒューマン ラベリングのタスクを作成する。
  • ガバナンスと反復型開発のため、モデルのリネージをトラッキングする。
  • 同じデータセットを使用して AutoML モデルとカスタムモデルをトレーニングし、モデルのパフォーマンスを比較する。
  • データの統計情報を生成して可視化する。
  • データをトレーニング セット、テストセット、検証セットに自動的に分割する。

始める前に

トレーニング アプリケーションでマネージド データセットを使用する前に、データセットを作成する必要があります。トレーニングに使用するデータセットとトレーニング パイプラインを同じリージョン内に作成する必要があります。Dataset リソースを利用できるリージョンを使用する必要があります。

トレーニング アプリケーションからデータセットにアクセスする

カスタム トレーニング パイプラインを作成するときに、トレーニング アプリケーションが Vertex AI データセットを使用するように指定できます。

実行時に、Vertex AI はトレーニング コンテナに次の環境変数を設定し、データセットに関するメタデータをトレーニング アプリケーションに渡します。

  • AIP_DATA_FORMAT: データセットのエクスポート形式。有効な値は jsonlcsvbigquery です。
  • AIP_TRAINING_DATA_URI: トレーニング データの BigQuery URI、またはトレーニング データファイルの Cloud Storage URI。
  • AIP_VALIDATION_DATA_URI: 検証データの BigQuery URI、または検証データファイルの Cloud Storage URI。
  • AIP_TEST_DATA_URI: テストデータの BigQuery URI、またはテストデータ ファイルの Cloud Storage URI。

データセットの AIP_DATA_FORMATjsonl または csv の場合、データ URI 値は gs://bucket_name/path/training-* などの Cloud Storage URI を参照します。データファイルのサイズを比較的小さくするため、Vertex AI はデータセットを複数のファイルに分割します。トレーニング、検証、テストデータが複数のファイルに分割される可能性があるため、URI はワイルドカード形式で提供されます。

Cloud Storage のコードサンプルを使用してオブジェクトをダウンロードする方法についてご確認ください

AIP_DATA_FORMATbigquery の場合、データ URI 値は BigQuery URI を参照します(bq://project.dataset.table など)。

BigQuery データのページングについてご確認ください

データセットのフォーマット

以降のセクションでは、トレーニング アプリケーションにデータセットを渡すときに Vertex AI がデータをフォーマットする方法について説明します。

画像データセット

画像データセットは、JSON Lines 形式でトレーニング アプリケーションに渡されます。データセットの目標のタブを選択すると、Vertex AI によるデータセットのフォーマット方法の詳細が表示されます。

単一ラベル分類

Vertex AI は、単一ラベルの画像分類データセットをエクスポートする際に、一般公開されている次のスキーマを使用します。このスキーマにより、データ エクスポート ファイルの形式が決まります。スキーマの構造は OpenAPI スキーマに準拠しています。

gs://google-cloud-aiplatform/schema/dataset/ioformat/image_classification_single_label_io_format_1.0.0.yaml

エクスポートされたデータセットの各データ項目は、次の形式を使用します。この例には、読みやすくするために改行が含まれています。


{
  "imageGcsUri": "gs://bucket/filename.ext",
  "classificationAnnotation": {
    "displayName": "LABEL",
    "annotationResourceLabels": {
        "aiplatform.googleapis.com/annotation_set_name": "displayName",
        "env": "prod"
      }
   },
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training/test/validation"
  }
}

フィールドに関する注意事項:

  • imageGcsUri: この画像の Cloud Storage URI。
  • annotationResourceLabels: 任意の数の Key-Value の文字列ペアが含まれます。Vertex AI はこのフィールドを使用して、アノテーション セットを指定します。
  • dataItemResourceLabels - 任意の数の Key-Value の文字列ペアが含まれます。トレーニング、テスト、検証など、データ項目の機械学習の使用目的を指定します。

JSON Lines の例


{"imageGcsUri": "gs://bucket/filename1.jpeg",  "classificationAnnotation": {"displayName": "daisy"}, "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "test"}}
{"imageGcsUri": "gs://bucket/filename2.gif",  "classificationAnnotation": {"displayName": "dandelion"}, "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename3.png",  "classificationAnnotation": {"displayName": "roses"}, "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename4.bmp",  "classificationAnnotation": {"displayName": "sunflowers"}, "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename5.tiff",  "classificationAnnotation": {"displayName": "tulips"}, "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "validation"}}
...

マルチラベル分類

Vertex AI は、マルチラベルの画像分類データセットをエクスポートする際に、一般公開されている次のスキーマを使用します。このスキーマにより、データ エクスポート ファイルの形式が決まります。スキーマの構造は OpenAPI スキーマに準拠しています。

gs://google-cloud-aiplatform/schema/dataset/ioformat/image_classification_multi_label_io_format_1.0.0.yaml

エクスポートされたデータセットの各データ項目は、次の形式を使用します。この例には、読みやすくするために改行が含まれています。


{
  "imageGcsUri": "gs://bucket/filename.ext",
  "classificationAnnotations": [
    {
      "displayName": "LABEL1",
      "annotationResourceLabels": {
        "aiplatform.googleapis.com/annotation_set_name":"displayName",
        "label_type": "flower_type"
      }
    },
    {
      "displayName": "LABEL2",
      "annotationResourceLabels": {
        "aiplatform.googleapis.com/annotation_set_name":"displayName",
        "label_type": "image_shot_type"
      }
    }
  ],
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training/test/validation"
  }
}

フィールドに関する注意事項:

  • imageGcsUri: この画像の Cloud Storage URI。
  • annotationResourceLabels: 任意の数の Key-Value の文字列ペアが含まれます。Vertex AI はこのフィールドを使用して、アノテーション セットを指定します。
  • dataItemResourceLabels - 任意の数の Key-Value の文字列ペアが含まれます。トレーニング、テスト、検証など、データ項目の機械学習の使用目的を指定します。

JSON Lines の例


{"imageGcsUri": "gs://bucket/filename1.jpeg",  "classificationAnnotations": [{"displayName": "daisy"}, {"displayName": "full_shot"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "test"}}
{"imageGcsUri": "gs://bucket/filename2.gif",  "classificationAnnotations": [{"displayName": "dandelion"}, {"displayName": "medium_shot"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename3.png",  "classificationAnnotations": [{"displayName": "roses"}, {"displayName": "extreme_closeup"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename4.bmp",  "classificationAnnotations": [{"displayName": "sunflowers"}, {"displayName": "closeup"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename5.tiff",  "classificationAnnotations": [{"displayName": "tulips"}, {"displayName": "extreme_closeup"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "validation"}}
...

オブジェクト検出

Vertex AI は、オブジェクト検出データセットのエクスポート時に、一般公開されている次のスキーマを使用します。このスキーマにより、データ エクスポート ファイルの形式が決まります。スキーマの構造は OpenAPI スキーマに準拠しています。

gs://google-cloud-aiplatform/schema/dataset/ioformat/image_bounding_box_io_format_1.0.0.yaml

エクスポートされたデータセットの各データ項目は、次の形式を使用します。この例には、読みやすくするために改行が含まれています。


{
  "imageGcsUri": "gs://bucket/filename.ext",
  "boundingBoxAnnotations": [
    {
      "displayName": "OBJECT1_LABEL",
      "xMin": "X_MIN",
      "yMin": "Y_MIN",
      "xMax": "X_MAX",
      "yMax": "Y_MAX",
      "annotationResourceLabels": {
        "aiplatform.googleapis.com/annotation_set_name": "displayName",
        "env": "prod"
      }
    },
    {
      "displayName": "OBJECT2_LABEL",
      "xMin": "X_MIN",
      "yMin": "Y_MIN",
      "xMax": "X_MAX",
      "yMax": "Y_MAX"
    }
  ],
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "test/train/validation"
  }
}

フィールドに関する注意事項:

  • imageGcsUri: この画像の Cloud Storage URI。
  • annotationResourceLabels: 任意の数の Key-Value の文字列ペアが含まれます。Vertex AI はこのフィールドを使用して、アノテーション セットを指定します。
  • dataItemResourceLabels - 任意の数の Key-Value の文字列ペアが含まれます。トレーニング、テスト、検証など、データ項目の機械学習の使用目的を指定します。

JSON Lines の例


{"imageGcsUri": "gs://bucket/filename1.jpeg", "boundingBoxAnnotations": [{"displayName": "Tomato", "xMin": "0.3", "yMin": "0.3", "xMax": "0.7", "yMax": "0.6"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "test"}}
{"imageGcsUri": "gs://bucket/filename2.gif", "boundingBoxAnnotations": [{"displayName": "Tomato", "xMin": "0.8", "yMin": "0.2", "xMax": "1.0", "yMax": "0.4"},{"displayName": "Salad", "xMin": "0.0", "yMin": "0.0", "xMax": "1.0", "yMax": "1.0"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename3.png", "boundingBoxAnnotations": [{"displayName": "Baked goods", "xMin": "0.5", "yMin": "0.7", "xMax": "0.8", "yMax": "0.8"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"imageGcsUri": "gs://bucket/filename4.tiff", "boundingBoxAnnotations": [{"displayName": "Salad", "xMin": "0.1", "yMin": "0.2", "xMax": "0.8", "yMax": "0.9"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "validation"}}
...

表形式のデータセット

Vertex AI は、表形式データを CSV 形式または BigQuery テーブルやビューへの URI としてトレーニング アプリケーションに渡します。データソースの形式と要件の詳細については、インポート ソースの準備をご覧ください。データセット スキーマの詳細については、Google Cloud Console のデータセットをご覧ください。

テキスト データセット

テキスト データセットは JSON Lines 形式でトレーニング アプリケーションに渡されます。データセットの目標のタブを選択すると、Vertex AI によるデータセットのフォーマット方法の詳細が表示されます。

単一ラベル分類

Vertex AI は、単一ラベルのテキスト分類データセットをエクスポートする際に、一般公開されている次のスキーマを使用します。このスキーマにより、データ エクスポート ファイルの形式が決まります。スキーマの構造は OpenAPI スキーマに準拠しています。

gs://google-cloud-aiplatform/schema/dataset/ioformat/text_classification_single_label_io_format_1.0.0.yaml

エクスポートされたデータセットの各データ項目は、次の形式を使用します。この例には、読みやすくするために改行が含まれています。

{
  "classificationAnnotation": {
    "displayName": "label"
  },
  "textContent": "inline_text",
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training|test|validation"
  }
}
{
  "classificationAnnotation": {
    "displayName": "label2"
  },
  "textGcsUri": "gcs_uri_to_file",
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training|test|validation"
  }
}

マルチラベル分類

Vertex AI は、マルチラベルのテキスト分類データセットをエクスポートする際に、一般公開されている次のスキーマを使用します。このスキーマにより、データ エクスポート ファイルの形式が決まります。スキーマの構造は OpenAPI スキーマに準拠しています。

gs://google-cloud-aiplatform/schema/dataset/ioformat/text_classification_multi_label_io_format_1.0.0.yaml

エクスポートされたデータセットの各データ項目は、次の形式を使用します。この例には、読みやすくするために改行が含まれています。

{
  "classificationAnnotations": [{
    "displayName": "label1"
    },{
    "displayName": "label2"
  }],
  "textGcsUri": "gcs_uri_to_file",
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training|test|validation"
  }
}
{
  "classificationAnnotations": [{
    "displayName": "label2"
    },{
    "displayName": "label3"
  }],
  "textContent": "inline_text",
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training|test|validation"
  }
}

エンティティの抽出

Vertex AI は、エンティティ抽出データセットのエクスポート時に、一般公開されている次のスキーマを使用します。このスキーマにより、データ エクスポート ファイルの形式が決まります。スキーマの構造は OpenAPI スキーマに準拠しています。

gs://google-cloud-aiplatform/schema/dataset/ioformat/text_extraction_io_format_1.0.0.yaml

エクスポートされたデータセットの各データ項目は、次の形式を使用します。この例には、読みやすくするために改行が含まれています。

{
    "textSegmentAnnotations": [
      {
        "startOffset":number,
        "endOffset":number,
        "displayName": "label"
      },
      ...
    ],
    "textContent": "inline_text",
    "dataItemResourceLabels": {
      "aiplatform.googleapis.com/ml_use": "training|test|validation"
    }
}
{
    "textSegmentAnnotations": [
      {
        "startOffset":number,
        "endOffset":number,
        "displayName": "label"
      },
      ...
    ],
    "textGcsUri": "gcs_uri_to_file",
    "dataItemResourceLabels": {
      "aiplatform.googleapis.com/ml_use": "training|test|validation"
    }
}

感情分析

Vertex AI は、感情分析データセットをエクスポートする際に、一般公開されている次のスキーマを使用します。このスキーマにより、データ エクスポート ファイルの形式が決まります。スキーマの構造は OpenAPI スキーマに準拠しています。

gs://google-cloud-aiplatform/schema/trainingjob/definition/automl_text_sentiment_1.0.0.yaml

エクスポートされたデータセットの各データ項目は、次の形式を使用します。この例には、読みやすくするために改行が含まれています。

{
  "sentimentAnnotation": {
    "sentiment": number,
    "sentimentMax": number
  },
  "textContent": "inline_text",
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training|test|validation"
  }
}
{
  "sentimentAnnotation": {
    "sentiment": number,
    "sentimentMax": number
  },
  "textGcsUri": "gcs_uri_to_file",
  "dataItemResourceLabels": {
    "aiplatform.googleapis.com/ml_use": "training|test|validation"
  }
}

動画データセット

動画データセットは JSON Lines 形式でトレーニング アプリケーションに渡されます。データセットの目標のタブを選択すると、Vertex AI によるデータセットのフォーマット方法の詳細が表示されます。

動作認識

Vertex AI は、動作認識データセットをエクスポートする際に、一般公開されている次のスキーマを使用します。このスキーマにより、データ エクスポート ファイルの形式が決まります。スキーマの構造は OpenAPI スキーマに準拠しています。

gs://google-cloud-aiplatform/schema/dataset/ioformat/video_action_recognition_io_format_1.0.0.yaml

エクスポートされたデータセットの各データ項目は、次の形式を使用します。この例には、読みやすくするために改行が含まれています。


{
  "videoGcsUri': "gs://bucket/filename.ext",
  "timeSegments": [{
    "startTime": "start_time_of_fully_annotated_segment",
    "endTime": "end_time_of_segment"}],
  "timeSegmentAnnotations": [{
    "displayName": "LABEL",
    "startTime": "start_time_of_segment",
    "endTime": "end_time_of_segment"
  }],
  "dataItemResourceLabels": {
    "ml_use": "train|test"
  }
}

注: この時間セグメントは、動作のタイムスタンプの計算に使用されます。timeSegmentAnnotationsstartTimeendTime は同じ場合があります。これらは、動作のキーフレームに対応します。

JSON Lines の例


{"videoGcsUri": "gs://demo/video1.mp4", "timeSegmentAnnotations": [{"displayName": "cartwheel", "startTime": "1.0s", "endTime": "12.0s"}], "dataItemResourceLabels": {"ml_use": "training"}}
{"videoGcsUri": "gs://demo/video2.mp4", "timeSegmentAnnotations": [{"displayName": "swing", "startTime": "4.0s", "endTime": "9.0s"}], "dataItemResourceLabels": {"ml_use": "test"}}
...

分類

Vertex AI は、分類データセットをエクスポートする際に、一般公開されている次のスキーマを使用します。このスキーマにより、データ エクスポート ファイルの形式が決まります。スキーマの構造は OpenAPI スキーマに準拠しています。

gs://google-cloud-aiplatform/schema/dataset/ioformat/video_classification_io_format_1.0.0.yaml

エクスポートされたデータセットの各データ項目は、次の形式を使用します。この例には、読みやすくするために改行が含まれています。


{
	"videoGcsUri": "gs://bucket/filename.ext",
	"timeSegmentAnnotations": [{
		"displayName": "LABEL",
		"startTime": "start_time_of_segment",
		"endTime": "end_time_of_segment"
	}],
	"dataItemResourceLabels": {
		"aiplatform.googleapis.com/ml_use": "train|test"
	}
}

JSON Lines の例 - 動画の分類:


{"videoGcsUri": "gs://demo/video1.mp4", "timeSegmentAnnotations": [{"displayName": "cartwheel", "startTime": "1.0s", "endTime": "12.0s"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{"videoGcsUri": "gs://demo/video2.mp4", "timeSegmentAnnotations": [{"displayName": "swing", "startTime": "4.0s", "endTime": "9.0s"}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "test"}}
...

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

Vertex AI は、オブジェクト トラキング データセットのエクスポート時に、一般公開されている次のスキーマを使用します。このスキーマにより、データ エクスポート ファイルの形式が決まります。スキーマの構造は OpenAPI スキーマに準拠しています。

gs://google-cloud-aiplatform/schema/dataset/ioformat/object_tracking_io_format_1.0.0.yaml

エクスポートされたデータセットの各データ項目は、次の形式を使用します。この例には、読みやすくするために改行が含まれています。


{
	"videoGcsUri": "gs://bucket/filename.ext",
	"TemporalBoundingBoxAnnotations": [{
		"displayName": "LABEL",
		"xMin": "leftmost_coordinate_of_the_bounding box",
		"xMax": "rightmost_coordinate_of_the_bounding box",
		"yMin": "topmost_coordinate_of_the_bounding box",
		"yMax": "bottommost_coordinate_of_the_bounding box",
		"timeOffset": "timeframe_object-detected"
                "instanceId": "instance_of_object
                "annotationResourceLabels": "resource_labels"
	}],
	"dataItemResourceLabels": {
		"aiplatform.googleapis.com/ml_use": "train|test"
	}
}

JSON Lines の例


{'videoGcsUri': 'gs://demo-data/video1.mp4', 'temporal_bounding_box_annotations': [{'displayName': 'horse', 'instance_id': '-1', 'time_offset': '4.000000s', 'xMin': '0.668912', 'yMin': '0.560642', 'xMax': '1.000000', 'yMax': '1.000000'}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "training"}}
{'videoGcsUri': 'gs://demo-data/video2.mp4', 'temporal_bounding_box_annotations': [{'displayName': 'horse', 'instance_id': '-1', 'time_offset': '71.000000s', 'xMin': '0.679056', 'yMin': '0.070957', 'xMax': '0.801716', 'yMax': '0.290358'}], "dataItemResourceLabels": {"aiplatform.googleapis.com/ml_use": "test"}}
...

次のステップ