Set data multimodal

Set data multimodal di Vertex AI memungkinkan Anda membuat, mengelola, membagikan, dan menggunakan set data multimodal untuk AI Generatif. Set data multimodal menyediakan fitur utama berikut:

  • Anda dapat memuat set data dari BigQuery, DataFrame, atau file JSONL di Cloud Storage.

  • Buat set data Anda sekali saja dan gunakan di berbagai jenis tugas, seperti penyesuaian terawasi dan prediksi batch, yang mencegah duplikasi data dan masalah pemformatan.

  • Simpan semua set data AI generatif Anda di satu lokasi yang dikelola.

  • Validasi skema dan struktur Anda serta kuantifikasi resource yang diperlukan untuk tugas hilir, sehingga membantu Anda menemukan error dan memperkirakan biaya sebelum memulai tugas.

Anda dapat menggunakan set data multimodal melalui Vertex AI SDK untuk Python atau REST API.

Set data multimodal adalah jenis set data terkelola di Vertex AI. Dataset terkelola ini berbeda dari jenis dataset terkelola lainnya dalam hal berikut:

  • Set data multimodal dapat mencakup data dari modalitas apa pun (teks, gambar, audio, video). Jenis set data terkelola lainnya hanya untuk satu modalitas.
  • Set data multimodal hanya dapat digunakan untuk layanan AI Generatif di Vertex AI, seperti penyesuaian dan prediksi batch dengan model generatif. Jenis set data terkelola lainnya hanya dapat digunakan untuk model prediktif Vertex AI.
  • Set data multimodal mendukung metode tambahan, seperti assemble dan assess, yang digunakan untuk melihat pratinjau data, memvalidasi permintaan, dan memperkirakan biaya.
  • Set data multimodal disimpan di BigQuery, yang dioptimalkan untuk set data besar.

Sebelum memulai

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Vertex AI, BigQuery, and Cloud Storage APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Vertex AI, BigQuery, and Cloud Storage APIs.

    Enable the APIs

  8. Menginstal dan melakukan inisialisasi Vertex AI SDK untuk Python
  9. Impor library berikut:
    from google.cloud.aiplatform.preview import datasets
    
    # To use related features, you may also need to import some of the following features:
    from vertexai.preview.tuning import sft
    from vertexai.batch_prediction import BatchPredictionJob
    
    from vertexai.generative_models import Content, Part, Tool, ToolConfig, SafetySetting, GenerationConfig, FunctionDeclaration
    
  10. Membuat set data

    Anda dapat membuat dataset multimodal dari berbagai sumber:

    • dari Pandas DataFrame

      my_dataset = datasets.MultimodalDataset.from_pandas(
          dataframe=my_dataframe,
          target_table_id=table_id    # optional
      )
      
    • dari DataFrame BigQuery:

      my_dataset = datasets.MultimodalDataset.from_bigframes(
          dataframe=my_dataframe,
          target_table_id=table_id    # optional
      )
      
    • dari tabel BigQuery

      my_dataset_from_bigquery = datasets.MultimodalDataset.from_bigquery(
          bigquery_uri=f"bq://projectId.datasetId.tableId"
      )
      
    • dari tabel BigQuery, menggunakan REST API

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT/locations/LOCATION/datasets" \
      -d '{
        "display_name": "TestDataset",
        "metadataSchemaUri": "gs://google-cloud-aiplatform/schema/dataset/metadata/multimodal_1.0.0.yaml",
        "metadata": {
          "inputConfig": {
            "bigquery_source": {
              "uri": "bq://projectId.datasetId.tableId"
            }
          }
        }
      }'
      
    • dari file JSONL di Cloud Storage. Dalam contoh berikut, file JSONL berisi permintaan yang sudah diformat untuk Gemini, sehingga tidak diperlukan perakitan.

      my_dataset = datasets.MultimodalDataset.from_gemini_request_jsonl(
        gcs_uri = gcs_uri_of_jsonl_file,
      )
      
    • dari set data multimodal yang ada

      # Get the most recently created dataset
      first_dataset = datasets.MultimodalDataset.list()[0]
      
      # Load dataset based on its name
      same_dataset = datasets.MultimodalDataset(first_dataset.name)
      

    Membuat dan melampirkan template

    Template menentukan cara mengubah set data multimodal ke format yang dapat diteruskan ke model. Tindakan ini diperlukan untuk menjalankan tugas penyesuaian atau prediksi batch.

    Vertex AI SDK untuk Python

    1. Buat template. Ada dua cara untuk membuat template:

      • Gunakan metode bantuan construct_single_turn_template:
      template_config = datasets.construct_single_turn_template(
              prompt="This is the image: {image_uris}",
              response="{labels}",
              system_instruction='You are a botanical image classifier. Analyze the provided image '
                      'and determine the most accurate classification of the flower.'
                      'These are the only flower categories: [\'daisy\', \'dandelion\', \'roses\', \'sunflowers\', \'tulips\'].'
                      'Return only one category per image.'
      )
      
      • Buat template secara manual dari GeminiExample, yang memungkinkan perincian yang lebih baik, seperti percakapan multi-giliran. Contoh kode berikut juga menyertakan kode opsional yang diberi komentar untuk menentukan field_mapping, yang memungkinkan Anda menggunakan nama placeholder yang berbeda dari nama kolom set data. Contoh:
      # Define a GeminiExample
      gemini_example = datasets.GeminiExample(
          contents=[
              Content(role="user", parts=[Part.from_text("This is the image: {image_uris}")]),
              Content(role="model", parts=[Part.from_text("This is the flower class: {label}.")]),
            Content(role="user", parts=[Part.from_text("Your response should only contain the class label.")]),
            Content(role="model", parts=[Part.from_text("{label}")]),
      
            # Optional: If you specify a field_mapping, you can use different placeholder values. For example:
            # Content(role="user", parts=[Part.from_text("This is the image: {uri_placeholder}")]),
            # Content(role="model", parts=[Part.from_text("This is the flower class: {flower_placeholder}.")]),
            # Content(role="user", parts=[Part.from_text("Your response should only contain the class label.")]),
            # Content(role="model", parts=[Part.from_text("{flower_placeholder}")]),
          ],
          system_instruction=Content(
              parts=[
                  Part.from_text(
                      'You are a botanical image classifier. Analyze the provided image '
                      'and determine the most accurate classification of the flower.'
                      'These are the only flower categories: [\'daisy\', \'dandelion\', \'roses\', \'sunflowers\', \'tulips\'].'
                      'Return only one category per image.'
                  )
              ]
          ),
      )
      
      # construct the template, specifying a map for the placeholder
      template_config = datasets.GeminiTemplateConfig(
          gemini_example=gemini_example,
      
          # Optional: Map the template placeholders to the column names of your dataset.
          # Not required if the template placesholders are column names of the dataset.
          # field_mapping={"uri_placeholder": "image_uris", "flower_placeholder": "labels"},
      )
      
    2. Lampirkan ke set data:

      my_dataset.attach_template_config(template_config=template_config)
      

    REST

    Panggil metode patch dan perbarui kolom metadata dengan yang berikut:

    • URI tabel BigQuery. Untuk set data yang dibuat dari tabel BigQuery, ini adalah bigquery_uri sumber Anda. Untuk set data yang dibuat dari sumber lain, seperti JSONL atau DataFrame, ini adalah tabel BigQuery tempat data Anda disalin.
    • gemini_template_config.
    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d $'{
      "metadata": {
        "input_config": {
          "bigquery_source": {
            "uri": "bq://projectId.datasetId.tableId"
          }
        },
        "gemini_template_config_source": {
          "gemini_template_config": {
            "gemini_example": {
              "contents": [
                {
                  "role": "user",
                  "parts": [
                    {
                      "text": "This is the image: {image_uris}"
    
                    }
                  ]
                },
                {
                  "role": "model",
                  "parts": [
                    {
                      "text": "response"
                    }
                  ]
                }
              ]
            "systemInstruction": {
                "parts": [
                    {
                        "text": "You are a botanical image classifier."
                    }
                ]
              }
            }
          }
        }
      }
    }' \
    "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID?updateMask=metadata"
    

    (Opsional) Merakit set data

    Metode assemble menerapkan template untuk mengubah set data Anda dan menyimpan output dalam tabel BigQuery baru. Dengan begitu, Anda dapat melihat pratinjau data sebelum diteruskan ke model.

    Secara default, template_config yang dilampirkan ke set data digunakan, tetapi Anda dapat menentukan template untuk mengganti perilaku default.

    Vertex AI SDK untuk Python

    table_id, assembly = my_dataset.assemble(template_config=template_config)
    
    # Inspect the results
    assembly.head()
    

    REST

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID:assemble" \
    -d '{}'
    

    Misalnya, anggaplah set data multimodal Anda berisi data berikut:

    Baris image_uris labels
    1 gs://cloud-samples-data/ai-platform/flowers/daisy/1396526833_fb867165be_n.jpg bunga aster

    Kemudian, metode assemble membuat tabel BigQuery baru dengan nama table_id yang setiap barisnya berisi isi permintaan. Contoh:

    {
      "contents": [
        {
          "parts": [
            {
              "text": "This is the image: "
            },
            {
              "fileData": {
                "fileUri": "gs://cloud-samples-data/ai-platform/flowers/daisy/1396526833_fb867165be_n.jpg",
                "mimeType": "image/jpeg"
              }
            }
          ],
          "role": "user"
        },
        {
          "parts": [
            {
              "text": "daisy"
            }
          ],
          "role": "model"
        }
      ],
      "systemInstruction": {
        "parts": [
          {
            "text": "You are a botanical image classifier. Analyze the provided image and determine the most accurate classification of the flower.These are the only flower categories: ['daisy', 'dandelion', 'roses', 'sunflowers', 'tulips'].Return only one category per image."
          }
        ]
      }
    }
    

    Menyesuaikan model

    Anda dapat menyesuaikan model Gemini menggunakan set data multimodal.

    (Opsional) Memvalidasi set data

    Menilai set data untuk memeriksa apakah set data tersebut berisi error, seperti error pemformatan set data atau error model.

    Vertex AI SDK untuk Python

    Panggil assess_tuning_validity(). Secara default, template_config yang dilampirkan ke set data digunakan, tetapi Anda dapat menentukan template untuk mengganti perilaku default.

    # Attach template
    my_dataset.attach_template_config(template_config=template_config)
    
    # Validation for tuning
    validation = my_dataset.assess_tuning_validity(
        model_name="gemini-2.0-flash-001",
        dataset_usage="SFT_TRAINING"
    )
    
    # Inspect validation result
    validation.errors
    

    REST

    Panggil metode assess dan berikan TuningValidationAssessmentConfig.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID:assess" \
    -d '{
      "tuningValidationAssessmentConfig": {
        "modelName": "projects/PROJECT_ID/locations/LOCATION/models/gemini-2.0-flash-001",
        "datasetUsage": "SFT_TRAINING"
      }
    }'
    

    (Opsional) Perkirakan penggunaan resource

    Lakukan penilaian pada set data untuk mendapatkan jumlah token dan karakter yang dapat ditagih untuk tugas penyesuaian Anda.

    Vertex AI SDK untuk Python

    Panggil assess_tuning_resources().

    # Resource estimation for tuning.
    tuning_resources = my_dataset.assess_tuning_resources(
        model_name="gemini-2.0-flash-001"
    )
    
    print(tuning_resources)
    # For example, TuningResourceUsageAssessmentResult(token_count=362688, billable_character_count=122000)
    

    REST

    Panggil metode assess dan berikan TuningResourceUsageAssessmentConfig.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID:assess" \
    -d '{
      "tuningResourceUsageAssessmentConfig": {
        "modelName": "projects/PROJECT_ID/locations/LOCATION/models/gemini-2.0-flash-001"
      }
    }'
    

    Jalankan tugas penyesuaian

    Vertex AI SDK untuk Python

    from vertexai.tuning import sft
    
    sft_tuning_job = sft.train(
      source_model="gemini-2.0-flash-001",
      # Pass the Vertex Multimodal Datasets directly
      train_dataset=my_multimodal_dataset,
      validation_dataset=my_multimodal_validation_dataset,
    )
    

    Google Gen AI SDK

    from google import genai
    from google.genai.types import HttpOptions, CreateTuningJobConfig
    
    client = genai.Client(http_options=HttpOptions(api_version="v1"))
    
    tuning_job = client.tunings.tune(
      base_model="gemini-2.0-flash-001",
      # Pass the resource name of the Vertex Multimodal Dataset, not the dataset object
      training_dataset={
          "vertex_dataset_resource": my_multimodal_dataset.resource_name
      },
      # Optional
      config=CreateTuningJobConfig(
          tuned_model_display_name="Example tuning job"),
    )
    

    Untuk mengetahui informasi selengkapnya, lihat Membuat tugas penyesuaian.

    Prediksi batch

    Anda bisa mendapatkan prediksi batch menggunakan set data multimodal.

    (Opsional) Memvalidasi set data

    Menilai set data untuk memeriksa apakah set data tersebut berisi error, seperti error pemformatan set data atau error model.

    Vertex AI SDK untuk Python

    Panggil assess_batch_prediction_validity(). Secara default, template_config yang dilampirkan ke set data digunakan, tetapi Anda dapat menentukan template untuk mengganti perilaku default.

    # Attach template
    my_dataset.attach_template_config(template_config=template_config)
    
    # Validation for batch prediction
    validation = my_dataset.assess_batch_prediction_validity(
        model_name="gemini-2.0-flash-001",
        dataset_usage="SFT_TRAINING"
    )
    
    # Inspect validation result
    validation.errors
    

    REST

    Panggil metode assess dan berikan batchPredictionValidationAssessmentConfig.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID:assess" \
    -d '{
      "batchPredictionValidationAssessmentConfig": {
        "modelName": "projects/PROJECT_ID/locations/LOCATION/models/gemini-2.0-flash-001",
      }
    }'
    

    (Opsional) Perkirakan penggunaan resource

    Menilai set data untuk mendapatkan jumlah token untuk tugas Anda.

    Vertex AI SDK untuk Python

    Panggil assess_batch_prediction_resources().

    batch_prediction_resources = my_dataset.assess_batch_prediction_resources(
        model_name="gemini-2.0-flash"
    )
    
    print(batch_prediction_resources)
    # For example, BatchPredictionResourceUsageAssessmentResult(token_count=362688, audio_token_count=122000)
    

    REST

    Panggil metode assess dan berikan batchPredictionResourceUsageAssessmentConfig.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID:assess" \
    -d '{
      "batchPredictionResourceUsageAssessmentConfig": {
        "modelName": "projects/PROJECT_ID/locations/LOCATION/models/gemini-2.0-flash-001"
      }
    }'
    

    Jalankan tugas prediksi batch

    Anda dapat menggunakan set data multimodal untuk melakukan prediksi batch dengan meneruskan BigQuerytable_id dari output yang dikumpulkan:

    Vertex AI SDK untuk Python

    from vertexai.batch_prediction import BatchPredictionJob
    
    # Dataset needs to have an attached template_config to batch prediction
    my_dataset.attach_template_config(template_config=template_config)
    
    # assemble dataset to get assembly table id
    assembly_table_id, _ = my_dataset.assemble()
    
    batch_prediction_job = BatchPredictionJob.submit(
        source_model="gemini-2.0-flash-001",
        input_dataset=assembly_table_id,
    )
    

    Google Gen AI SDK

    from google import genai
    
    client = genai.Client(http_options=HttpOptions(api_version="v1"))
    
    # Attach template_config and assemble dataset
    my_dataset.attach_template_config(template_config=template_config)
    assembly_table_id, _ = my_dataset.assemble()
    
    job = client.batches.create(
        model="gemini-2.0-flash-001",
        src=assembly_table_id,
    )
    

    Untuk mengetahui informasi selengkapnya, lihat Meminta tugas prediksi batch.

    Batasan

    • Set data multimodal hanya dapat digunakan dengan fitur AI generatif. Fitur ini tidak dapat digunakan dengan fitur AI non-generatif seperti pelatihan AutoML dan pelatihan kustom.

    • Set data multimodal hanya dapat digunakan dengan model Google seperti Gemini. Model ini tidak dapat digunakan dengan model pihak ketiga.

    Harga

    Saat menyetel model atau menjalankan tugas prediksi batch, Anda akan ditagih untuk penggunaan AI Generatif dan membuat kueri set data di BigQuery.

    Saat membuat, mengumpulkan, atau menilai set data multimodal, Anda akan ditagih untuk menyimpan dan membuat kueri set data multimodal di BigQuery. Secara khusus, operasi berikut menggunakan layanan pokok tersebut:

    • Set data Create

      • Set data yang dibuat dari tabel atau DataFrame BigQuery yang ada tidak menimbulkan biaya penyimpanan tambahan. Hal ini karena kita menggunakan tampilan logis, bukan menyimpan salinan data lain.
      • Set data yang dibuat dari sumber lain menyalin data ke tabel BigQuery baru, yang menimbulkan biaya penyimpanan di BigQuery. Misalnya, penyimpanan logis aktif seharga $0,02 per GiB per bulan.
    • Set data Assemble

      • Metode ini membuat tabel BigQuery baru yang berisi set data lengkap dalam format permintaan model, yang menimbulkan biaya penyimpanan di BigQuery. Misalnya, penyimpanan logis aktif seharga $0,02 per GiB per bulan.

      • Metode ini juga membaca set data satu kali, yang menimbulkan biaya kueri di BigQuery. Misalnya, komputasi on-demand dalam harga, $6,25 per TiB. Validasi set data dan estimasi resource

    • Assess membaca set data satu kali, yang menimbulkan biaya kueri di BigQuery. Misalnya, komputasi on-demand dalam harga, $6,25 per TiB.

    Gunakan Kalkulator Harga untuk membuat perkiraan biaya berdasarkan penggunaan yang Anda proyeksikan.