このページでは、Vertex AI マネージド データセットを使用してカスタムモデルをトレーニングする方法について説明します。マネージド データセットを使用すると、次のことができます。
- データセットを一元的に管理する。
- ラベルと複数のアノテーション セットを作成する。
- 統合データのラベル付けを使用して、ヒューマン ラベリングのタスクを作成する。
- ガバナンスと反復型開発のため、モデルのリネージをトラッキングする。
- 同じデータセットを使用して AutoML モデルとカスタムモデルをトレーニングし、モデルのパフォーマンスを比較する。
- データの統計情報を生成して可視化する。
- データをトレーニング セット、テストセット、検証セットに自動的に分割する。
始める前に
トレーニング アプリケーションでマネージド データセットを使用する前に、データセットを作成する必要があります。トレーニングに使用するデータセットとトレーニング パイプラインを同じリージョン内に作成する必要があります。Dataset リソースを利用できるリージョンを使用する必要があります。
トレーニング アプリケーションからデータセットにアクセスする
カスタム トレーニング パイプラインを作成するときに、トレーニング アプリケーションが Vertex AI データセットを使用するように指定できます。
実行時に、Vertex AI はトレーニング コンテナに次の環境変数を設定し、データセットに関するメタデータをトレーニング アプリケーションに渡します。
AIP_DATA_FORMAT: データセットのエクスポート形式。有効な値はjsonl、csv、bigqueryです。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_FORMAT が jsonl または csv の場合、データ URI 値は gs://bucket_name/path/training-* などの Cloud Storage URI を参照します。データファイルのサイズを比較的小さくするため、Vertex AI はデータセットを複数のファイルに分割します。トレーニング、検証、テストデータが複数のファイルに分割される可能性があるため、URI はワイルドカード形式で提供されます。
Cloud Storage のコードサンプルを使用してオブジェクトをダウンロードする方法についてご確認ください。
AIP_DATA_FORMAT が bigquery の場合、データ URI 値は BigQuery URI を参照します(bq://project.dataset.table など)。
BigQuery データのページングについてご確認ください。
データセットのフォーマット
以降のセクションでは、トレーニング アプリケーションにデータセットを渡すときに Vertex AI がデータをフォーマットする方法について説明します。
画像データセット
画像データセットは、JSON Lines 形式でトレーニング アプリケーションに渡されます。データセットの目標のタブを選択すると、Vertex AI によるデータセットのフォーマット方法の詳細が表示されます。
単一ラベル分類
Vertex AI は、単一ラベルの画像分類データセットをエクスポートする際に、一般公開されている次のスキーマを使用します。このスキーマにより、データ エクスポート ファイルの形式が決まります。スキーマの構造は OpenAPI スキーマに準拠しています。
エクスポートされたデータセットの各データ項目は、次の形式を使用します。この例には、読みやすくするために改行が含まれています。
{
"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 スキーマに準拠しています。
エクスポートされたデータセットの各データ項目は、次の形式を使用します。この例には、読みやすくするために改行が含まれています。
{
"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 コンソールのデータセットをご覧ください。
テキスト データセット
テキスト データセットは JSON Lines 形式でトレーニング アプリケーションに渡されます。データセットの目標のタブを選択すると、Vertex AI によるデータセットのフォーマット方法の詳細が表示されます。
単一ラベル分類
Vertex AI は、単一ラベルのテキスト分類データセットをエクスポートする際に、一般公開されている次のスキーマを使用します。このスキーマにより、データ エクスポート ファイルの形式が決まります。スキーマの構造は OpenAPI スキーマに準拠しています。
エクスポートされたデータセットの各データ項目は、次の形式を使用します。この例には、読みやすくするために改行が含まれています。
{
"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 スキーマに準拠しています。
エクスポートされたデータセットの各データ項目は、次の形式を使用します。この例には、読みやすくするために改行が含まれています。
{
"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"
}
}注: この時間セグメントは、動作のタイムスタンプの計算に使用されます。timeSegmentAnnotations の startTime と endTime は同じ場合があります。これらは、動作のキーフレームに対応します。
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"}}
...