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
undassess
, 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
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI, BigQuery, and Cloud Storage APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Vertex AI, BigQuery, and Cloud Storage APIs.
- Vertex AI SDK für Python installieren und initialisieren
- 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
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)
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 einesfield_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"}, )
- Verwenden Sie die Hilfsmethode
Hängen Sie es an das Dataset an:
my_dataset.attach_template_config(template_config=template_config)
- 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
. 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.
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
DatasetMit 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.
Dataset erstellen
Sie können eine multimodale dataset
aus verschiedenen Quellen erstellen:
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
REST
Rufen Sie die Methode patch
auf und aktualisieren Sie das Feld metadata
mit Folgendem:
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
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:
Mithilfe des Preisrechners können Sie anhand Ihrer voraussichtlichen Nutzung eine Kostenschätzung vornehmen.