Multimodale Datasets

Mit multimodalen Datasets in Vertex AI können Sie multimodale Datasets für generative KI erstellen, verwalten, freigeben und verwenden. Multimodale Datasets bieten die folgenden Hauptfunktionen:

  • Sie können Datasets aus BigQuery, DataFrames oder JSONL-Dateien in Cloud Storage laden.

  • Erstellen Sie Ihr Dataset einmal und verwenden Sie es für verschiedene Jobtypen wie überwachtes Fine-Tuning und Batchvorhersage. So vermeiden Sie Datenduplikate und Formatierungsprobleme.

  • Alle Ihre Datasets für generative KI an einem zentralen, verwalteten Ort aufbewahren

  • Sie können Ihr Schema und Ihre Struktur validieren und die für nachgelagerte Aufgaben erforderlichen Ressourcen quantifizieren. So lassen sich Fehler erkennen und die Kosten schätzen, bevor Sie eine Aufgabe starten.

Sie können multimodale Datasets über das Vertex AI SDK für Python oder die REST API verwenden.

Multimodale Datasets sind eine Art von verwalteten Datasets in Vertex AI. Sie unterscheiden sich in folgenden Punkten von anderen Arten verwalteter Datasets:

  • Multimodale Datasets können Daten beliebiger Modalität (Text, Bild, Audio, Video) enthalten. Andere Arten von verwalteten Datasets sind nur für eine einzelne Modalität vorgesehen.
  • Multimodale Datasets können nur für generative KI-Dienste in Vertex AI verwendet werden, z. B. zum Abstimmen und für Batchvorhersagen mit generativen Modellen. Andere verwaltete Dataset-Typen können nur für Vorhersagemodelle von Vertex AI verwendet werden.
  • Multimodale Datasets unterstützen zusätzliche Methoden wie assemble und assess, die zum Vorschauen von Daten, zum Validieren von Anfragen und zum Schätzen von Kosten verwendet werden.
  • Multimodale Datasets werden in BigQuery gespeichert, das für große Datasets optimiert ist.

Hinweise

  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. Make sure 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. Make sure that billing is enabled for your Google Cloud project.

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

    Enable the APIs

  8. Vertex AI SDK für Python installieren und initialisieren
  9. Importieren Sie die folgenden Bibliotheken:
    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. Dataset erstellen

    Sie können eine multimodale dataset aus verschiedenen Quellen erstellen:

    • aus einem Pandas-DataFrame

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

      my_dataset = datasets.MultimodalDataset.from_bigframes(
          dataframe=my_dataframe,
          target_table_id=table_id    # optional
      )
      
    • aus einer BigQuery-Tabelle

      my_dataset_from_bigquery = datasets.MultimodalDataset.from_bigquery(
          bigquery_uri=f"bq://projectId.datasetId.tableId"
      )
      
    • aus einer BigQuery-Tabelle mit der 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"
            }
          }
        }
      }'
      
    • aus einer JSONL-Datei in Cloud Storage. Im folgenden Beispiel enthält die JSONL-Datei Anfragen, die bereits für Gemini formatiert sind, sodass keine Zusammenstellung erforderlich ist.

      my_dataset = datasets.MultimodalDataset.from_gemini_request_jsonl(
        gcs_uri = gcs_uri_of_jsonl_file,
      )
      
    • aus einem vorhandenen multimodalen Dataset

      # 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)
      

    Vorlage erstellen und anhängen

    Eine Vorlage definiert, wie das multimodale Dataset in ein Format transformiert wird, das an das Modell übergeben werden kann. Dies ist erforderlich, um einen Tuning- oder Batchvorhersagejob auszuführen.

    Vertex AI SDK für Python

    1. Erstellen Sie eine Vorlage. Es gibt zwei Möglichkeiten, eine Vorlage zu erstellen:

      • Verwenden Sie die Hilfsmethode 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.'
      )
      
      • Manuelles Erstellen einer Vorlage aus einem GeminiExample, was eine feinere Granularität ermöglicht, z. B. Multi-Turn-Unterhaltungen. Das folgende Codebeispiel enthält auch optionalen auskommentierten Code zum Angeben eines field_mapping. Damit können Sie einen Platzhalternamen verwenden, der sich vom Spaltennamen des Datasets unterscheidet. Beispiel:
      # 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. Hängen Sie es an das Dataset an:

      my_dataset.attach_template_config(template_config=template_config)
      

    REST

    Rufen Sie die Methode patch auf und aktualisieren Sie das Feld metadata mit Folgendem:

    • Der URI der BigQuery-Tabelle. Bei Datasets, die aus einer BigQuery-Tabelle erstellt wurden, ist das Ihre Quelle bigquery_uri. Bei Datasets, die aus anderen Quellen wie JSONL oder DataFrame erstellt wurden, ist dies die BigQuery-Tabelle, in die Ihre Daten kopiert wurden.
    • Ein 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"
    

    Optional: Dataset zusammenstellen

    Bei der Methode assemble wird die Vorlage angewendet, um Ihr Dataset zu transformieren. Die Ausgabe wird in einer neuen BigQuery-Tabelle gespeichert. So können Sie sich die Daten ansehen, bevor sie an das Modell übergeben werden.

    Standardmäßig wird die dem Dataset angehängte template_config verwendet. Sie können jedoch eine Vorlage angeben, um das Standardverhalten zu überschreiben.

    Vertex AI SDK für 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 '{}'
    

    Angenommen, Ihr multimodales Dataset enthält die folgenden Daten:

    Zeile image_uris Labels
    1 gs://cloud-samples-data/ai-platform/flowers/daisy/1396526833_fb867165be_n.jpg Gänseblümchen

    Die Methode assemble erstellt dann eine neue BigQuery-Tabelle mit dem Namen table_id, in der jede Zeile den Anfragetext enthält. Beispiel:

    {
      "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."
          }
        ]
      }
    }
    

    Modell abstimmen

    Sie können Gemini-Modelle mit einem multimodalen Dataset abstimmen.

    Optional: Dataset validieren

    Untersuchen Sie das Dataset, um festzustellen, ob es Fehler enthält, z. B. Formatierungsfehler oder Modellfehler.

    Vertex AI SDK für Python

    Rufen Sie assess_tuning_validity() an. Standardmäßig wird die dem Dataset angehängte template_config verwendet. Sie können jedoch eine Vorlage angeben, um das Standardverhalten zu überschreiben.

    # 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

    Rufen Sie die Methode assess auf und geben Sie eine TuningValidationAssessmentConfig an.

    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"
      }
    }'
    

    Optional: Ressourcennutzung schätzen

    Bewerten Sie das Dataset, um die Anzahl der Tokens und abrechenbaren Zeichen für Ihren Abstimmungsjob zu ermitteln.

    Vertex AI SDK für Python

    Rufen Sie assess_tuning_resources() an.

    # 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

    Rufen Sie die Methode assess auf und geben Sie eine TuningResourceUsageAssessmentConfig an.

    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"
      }
    }'
    

    Abstimmungsjob ausführen

    Vertex AI SDK für 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"),
    )
    

    Weitere Informationen finden Sie unter Abstimmungsjob erstellen.

    Batchvorhersage

    Sie können einen Batchvorhersagejob mit einem multimodalen Dataset anfordern.

    Optional: Dataset validieren

    Untersuchen Sie das Dataset, um festzustellen, ob es Fehler enthält, z. B. Formatierungsfehler oder Modellfehler.

    Vertex AI SDK für Python

    Rufen Sie assess_batch_prediction_validity() an. Standardmäßig wird die dem Dataset angehängte template_config verwendet. Sie können jedoch eine Vorlage angeben, um das Standardverhalten zu überschreiben.

    # 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

    Rufen Sie die Methode assess auf und geben Sie eine batchPredictionValidationAssessmentConfig an.

    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",
      }
    }'
    

    Optional: Ressourcennutzung schätzen

    Bewerten Sie das Dataset, um die Anzahl der Tokens für Ihren Job zu ermitteln.

    Vertex AI SDK für Python

    Rufen Sie assess_batch_prediction_resources() an.

    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

    Rufen Sie die Methode assess auf und geben Sie eine batchPredictionResourceUsageAssessmentConfig an.

    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"
      }
    }'
    

    Batchvorhersagejob ausführen

    Sie können Ihr multimodales Dataset für Batchvorhersagen verwenden, indem Sie den BigQuerytable_id der zusammengestellten Ausgabe übergeben:

    Vertex AI SDK für 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,
    )
    

    Weitere Informationen finden Sie unter Batchvorhersagejob anfordern.

    Beschränkungen

    • Multimodale Datasets können nur mit generativen KI-Funktionen verwendet werden. Sie können nicht mit nicht generativen KI-Funktionen wie AutoML-Training und benutzerdefiniertem Training verwendet werden.

    • Multimodale Datasets können nur mit Google-Modellen wie Gemini verwendet werden. Sie können nicht mit Modellen von Drittanbietern verwendet werden.

    Preise

    Wenn Sie ein Modell abstimmen oder einen Batch-Vorhersagejob ausführen, wird Ihnen die Nutzung generativer KI und das Abfragen des Datasets in BigQuery in Rechnung gestellt.

    Wenn Sie Ihr multimodales Dataset erstellen, zusammenstellen oder bewerten, werden Ihnen die Kosten für das Speichern und Abfragen multimodaler Datasets in BigQuery in Rechnung gestellt. Die folgenden Vorgänge nutzen diese zugrunde liegenden Dienste:

    • Create Dataset

      • Für Datasets, die aus einer vorhandenen BigQuery-Tabelle oder einem DataFrame erstellt werden, fallen keine zusätzlichen Speicherkosten an. Das liegt daran, dass wir eine logische Ansicht verwenden, anstatt eine weitere Kopie der Daten zu speichern.
      • Bei Datasets, die aus anderen Quellen erstellt werden, werden die Daten in eine neue BigQuery-Tabelle kopiert, was Speicherkosten in BigQuery verursacht. Beispiel: Aktiver logischer Speicher für 0, 02 $pro GiB und Monat.
    • Assemble Dataset

      • Mit dieser Methode wird eine neue BigQuery-Tabelle erstellt, die das vollständige Dataset im Format für Modellanfragen enthält. Dies führt zu Speicherkosten in BigQuery. Beispiel: Aktiver logischer Speicher für 0, 02 $pro GiB und Monat.

      • Bei dieser Methode wird das Dataset einmal gelesen, was zu Abfragekosten in BigQuery führt. Beispiel: On-Demand-Computing in der Preisgestaltung, 6, 25 $ pro TiB. Dataset-Validierung und Ressourcenschätzung

    • Assess liest das Dataset einmal, was zu Abfragekosten in BigQuery führt. Beispiel: On-Demand-Computing in der Preisgestaltung, 6, 25 $ pro TiB.

    Mithilfe des Preisrechners können Sie anhand Ihrer voraussichtlichen Nutzung eine Kostenschätzung vornehmen.