Mit multimodalen Datasets auf der Agent Platform können Sie multimodale Datasets für generative KI erstellen, verwalten, freigeben und verwenden. Multimodale Datasets bieten die folgenden wichtigen Funktionen:
Sie können Datasets aus BigQuery, DataFrames oder JSONL-Dateien in Cloud Storage laden.
Sie erstellen Ihr Dataset einmal und verwenden es für verschiedene Jobtypen, z. B. für die überwachte Feinabstimmung und die Batch-Vorhersage. So vermeiden Sie Datenduplizierung und Formatierungsprobleme.
Alle Datasets für generative KI an einem einzigen, verwalteten Ort speichern.
Validieren Sie Ihr Schema und Ihre Struktur und quantifizieren Sie die für nachgelagerte Aufgaben erforderlichen Ressourcen. So können Sie Fehler erkennen und die Kosten schätzen, bevor Sie mit einer Aufgabe beginnen.
Sie können multimodale Datasets über das Agent Platform SDK oder die REST API verwenden.
Multimodale Datasets sind eine Art von verwalteten Datasets auf der Agent Platform. Sie unterscheiden sich von anderen Arten von verwalteten Datasets in folgenden Punkten:
- Multimodale Datasets können Daten jeder 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 AI-Dienste auf der Agent Platform verwendet werden, z. B. für die Abstimmung und Batch-Vorhersage mit generativen Modellen. Andere verwaltete Dataset-Typen können nur für Vorhersagemodelle der Agent Platform verwendet werden.
- Multimodale Datasets unterstützen zusätzliche Methoden wie
assembleundassess, die für die Vorschau von Daten, die Validierung von Anfragen und die Schätzung von Kosten verwendet werden. - Multimodale Datasets werden in BigQuery gespeichert, das für große Datasets optimiert ist.
Hinweis
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
Enable the Agent Platform, BigQuery, and Cloud Storage APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.- Agent Platform SDK für Python installieren und initialisieren
- Importieren Sie die folgenden Bibliotheken und erstellen Sie einen Client:
import agentplatform from agentplatform.types import ( GeminiExample, GeminiRequestReadConfig, GeminiTemplateConfig, ) # To use related features, such as tuning and batch prediction, you may also # need to import the Google Gen AI SDK: from google import genai from google.genai.types import Content, Part # Create a client for multimodal dataset operations. client = agentplatform.Client(project="PROJECT_ID", location="LOCATION")
Dataset erstellen
Sie können einen multimodalen dataset aus verschiedenen Quellen erstellen:
aus einem Pandas-DataFrame
my_dataset = client.datasets.create_from_pandas( dataframe=my_dataframe, target_table_id=table_id # optional )aus einem BigQuery-DataFrame:
my_dataset = client.datasets.create_from_bigframes( dataframe=my_dataframe, target_table_id=table_id # optional )aus einer BigQuery-Tabelle
my_dataset_from_bigquery = client.datasets.create_from_bigquery( bigquery_uri="bq://projectId.datasetId.tableId" )aus einer BigQuery-Tabelle mithilfe 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 = client.datasets.create_from_gemini_request_jsonl( gcs_uri = gcs_uri_of_jsonl_file, )aus einem vorhandenen multimodalen Dataset
# Load dataset based on its name. This accepts a full resource name or a # dataset ID. same_dataset = client.datasets.get_multimodal_dataset(name=dataset_name)
Lesekonfiguration erstellen und anhängen
Eine Lesekonfiguration (GeminiRequestReadConfig) definiert, wie das multimodale Dataset in ein Format transformiert wird, das an das Modell übergeben werden kann. Sie enthält eine Vorlage mit Platzhaltern, die beim Zusammenstellen durch die Werte der entsprechenden Dataset-Spalten ersetzt werden. Dies ist für die Ausführung eines Abstimmungs- oder Batchvorhersagejobs erforderlich.
Agent Platform SDK
Lesekonfiguration erstellen Es gibt zwei Möglichkeiten, eine solche zu erstellen:
- Verwenden Sie die Hilfsmethode
GeminiRequestReadConfig.single_turn_template:
read_config = GeminiRequestReadConfig.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.' )- Manuell eine Lesekonfiguration aus einem
GeminiExampleerstellen, was eine feinere Granularität ermöglicht, z. B. für Unterhaltungen mit mehreren Runden. Das folgende Codebeispiel enthält auch optionalen auskommentierten Code zum Angeben einesfield_mapping, mit dem Sie einen Platzhalternamen verwenden können, der sich vom Spaltennamen des Datasets unterscheidet. Beispiel:
# Define a GeminiExample gemini_example = GeminiExample( contents=[ Content(role="user", parts=[Part.from_text(text="This is the image: {image_uris}")]), Content(role="model", parts=[Part.from_text(text="This is the flower class: {label}.")]), Content(role="user", parts=[Part.from_text(text="Your response should only contain the class label.")]), Content(role="model", parts=[Part.from_text(text="{label}")]), # Optional: If you specify a field_mapping, you can use different placeholder values. For example: # Content(role="user", parts=[Part.from_text(text="This is the image: {uri_placeholder}")]), # Content(role="model", parts=[Part.from_text(text="This is the flower class: {flower_placeholder}.")]), # Content(role="user", parts=[Part.from_text(text="Your response should only contain the class label.")]), # Content(role="model", parts=[Part.from_text(text="{flower_placeholder}")]), ], system_instruction=Content( parts=[ Part.from_text( 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 read config, specifying a map for the placeholders. read_config = GeminiRequestReadConfig( template_config=GeminiTemplateConfig( gemini_example=gemini_example, # Optional: Map the template placeholders to the column names of your dataset. # Not required if the template placeholders 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 und speichern Sie die Änderung:
my_dataset.set_read_config(read_config=read_config) my_dataset = client.datasets.update_multimodal_dataset(multimodal_dataset=my_dataset)
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 dies 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
Die Methode assemble wendet die Lesekonfiguration an, um Ihr Dataset zu transformieren, und speichert die Ausgabe in einer neuen BigQuery-Tabelle. So können Sie sich eine Vorschau der Daten ansehen, bevor sie an das Modell übergeben werden.
Standardmäßig wird die angehängte Lesekonfiguration des Datasets verwendet. Sie können jedoch eine gemini_request_read_config übergeben, um das Standardverhalten zu überschreiben.
Agent Platform SDK
Die Methode assemble gibt ein (table_id, dataframe)-Tupel zurück. Übergeben Sie load_dataframe=True, um die zusammengestellte Tabelle auch als DataFrame zur Prüfung zu laden.
table_id, assembly = client.datasets.assemble(
name=my_dataset.name,
gemini_request_read_config=read_config, # optional if attached to the dataset
load_dataframe=True,
)
# 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 |
Anschließend erstellt die Methode assemble eine neue BigQuery-Tabelle mit dem Namen table_id, wobei 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 optimieren.
Optional: Dataset validieren
Prüfen Sie das Dataset auf Fehler, z. B. Formatierungsfehler oder Modellfehler.
Agent Platform SDK
Rufen Sie assess_tuning_validity() an. Standardmäßig wird die angehängte Lesekonfiguration des Datasets verwendet. Sie können jedoch eine gemini_request_read_config übergeben, um das Standardverhalten zu überschreiben.
# Attach the read configuration to the dataset.
my_dataset.set_read_config(read_config=read_config)
my_dataset = client.datasets.update_multimodal_dataset(multimodal_dataset=my_dataset)
# Validation for tuning
validation = client.datasets.assess_tuning_validity(
dataset_name=my_dataset.name,
model_name="gemini-3.5-flash",
dataset_usage="SFT_TRAINING"
)
# Inspect validation result
validation.errors
REST
Rufen Sie die Methode assess auf und geben Sie ein 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-3.5-flash",
"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.
Agent Platform SDK
Rufen Sie assess_tuning_resources() an.
# Resource estimation for tuning.
tuning_resources = client.datasets.assess_tuning_resources(
dataset_name=my_dataset.name,
model_name="gemini-3.5-flash"
)
print(tuning_resources)
# For example, TuningResourceUsageAssessmentResult(token_count=362688, billable_character_count=122000)
REST
Rufen Sie die Methode assess auf und geben Sie ein 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-3.5-flash"
}
}'
Abstimmungsjob ausführen
Verwenden Sie das Google Gen AI SDK, um einen Abstimmungsjob zu starten, und übergeben Sie den Ressourcennamen des multimodalen Datasets. An das Dataset muss eine Lesekonfiguration angehängt sein.
Google Gen AI SDK
from google import genai
from google.genai.types import HttpOptions, CreateTuningJobConfig
genai_client = genai.Client(http_options=HttpOptions(api_version="v1"))
tuning_job = genai_client.tunings.tune(
base_model="gemini-3.5-flash",
# Pass the resource name of the Multimodal Dataset, not the dataset object
training_dataset={
"vertex_dataset_resource": my_multimodal_dataset.name
},
# Optional
config=CreateTuningJobConfig(
validation_dataset={
"vertex_dataset_resource": my_multimodal_validation_dataset.name
},
tuned_model_display_name="Example tuning job"),
)
Weitere Informationen finden Sie unter Abstimmungsjob erstellen.
Batch-Vorhersage
Sie können Batchvorhersagen mit einem multimodalen Dataset abrufen.
Optional: Dataset validieren
Prüfen Sie das Dataset auf Fehler, z. B. Formatierungsfehler oder Modellfehler.
Agent Platform SDK
Rufen Sie assess_batch_prediction_validity() an. Standardmäßig wird die angehängte Lesekonfiguration des Datasets verwendet. Sie können jedoch eine gemini_request_read_config übergeben, um das Standardverhalten zu überschreiben.
# Attach the read configuration to the dataset.
my_dataset.set_read_config(read_config=read_config)
my_dataset = client.datasets.update_multimodal_dataset(multimodal_dataset=my_dataset)
# Validation for batch prediction
validation = client.datasets.assess_batch_prediction_validity(
dataset_name=my_dataset.name,
model_name="gemini-3.5-flash"
)
# Inspect validation result
validation.errors
REST
Rufen Sie die Methode assess auf und geben Sie ein 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-3.5-flash",
}
}'
(Optional) Ressourcennutzung schätzen
Bewerten Sie das Dataset, um die Tokenanzahl für Ihren Job zu ermitteln.
Agent Platform SDK
Rufen Sie assess_batch_prediction_resources() an.
batch_prediction_resources = client.datasets.assess_batch_prediction_resources(
dataset_name=my_dataset.name,
model_name="gemini-3.5-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 ein 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-3.5-flash"
}
}'
Batchvorhersagejob ausführen
Sie können Ihr multimodales Dataset für Batchvorhersagen verwenden, indem Sie die BigQuery-table_id der zusammengestellten Ausgabe übergeben:
Google Gen AI SDK
from google import genai
from google.genai.types import HttpOptions
# Attach the read configuration to the dataset.
my_dataset.set_read_config(read_config=read_config)
my_dataset = client.datasets.update_multimodal_dataset(multimodal_dataset=my_dataset)
# Assemble the dataset to get the assembled BigQuery table.
table_id, _ = client.datasets.assemble(name=my_dataset.name)
genai_client = genai.Client(http_options=HttpOptions(api_version="v1"))
job = genai_client.batches.create(
model="gemini-3.5-flash",
src=f"bq://{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 optimieren oder einen Batch-Vorhersagejob ausführen, werden Ihnen die Nutzung generativer KI und die Abfrage des Datasets in BigQuery in Rechnung gestellt.
Wenn Sie Ihr multimodales Dataset erstellen, zusammenstellen oder bewerten, werden Ihnen das Speichern und Abfragen multimodaler Datasets in BigQuery in Rechnung gestellt. Insbesondere werden die folgenden Vorgänge von diesen zugrunde liegenden Diensten verwendet:
CreateDataset- Für Datasets, die aus einer vorhandenen BigQuery-Tabelle oder einem DataFrame erstellt wurden, 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. Dadurch fallen Speicherkosten in BigQuery an. Beispiel: aktiver logischer Speicher für 0, 02 $ pro GiB und Monat.
AssembleDatasetMit dieser Methode wird eine neue BigQuery-Tabelle erstellt, die das vollständige Dataset im Format der Modellanfrage enthält. Dadurch fallen Speicherkosten in BigQuery an. Beispiel: aktiver logischer Speicher für 0, 02 $ pro GiB und Monat.
Bei dieser Methode wird das Dataset ebenfalls einmal gelesen, was zu Abfragekosten in BigQuery führt. Beispiel: On-Demand-Computing-Preise, 6, 25 $ pro TiB.
Assessliest das Dataset einmal, was zu Abfragekosten in BigQuery führt. Beispiel: On-Demand-Computing-Preise, 6, 25 $ pro TiB.
Mithilfe des Preisrechners können Sie anhand Ihrer voraussichtlichen Nutzung eine Kostenschätzung vornehmen.