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 Hauptfunktionen:
Sie können Datasets aus BigQuery, DataFrames oder JSONL-Dateien in Cloud Storage laden.
Erstellen Sie Ihren Datensatz einmal und verwenden Sie ihn für verschiedene Jobtypen wie überwachtes Fine-Tuning und Batchvorhersage. So vermeiden Sie Datenduplizierung und Formatierungsprobleme.
Alle Ihre Datasets für generative KI an einem zentralen, verwalteten Ort speichern
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 Agent Platform SDK oder die REST API verwenden.
Multimodale Datasets sind eine Art von verwalteten Datasets auf der Agent Platform. 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 auf der Agent Platform verwendet werden, z. B. für das Optimieren und die Batchvorhersage 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 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.
Hinweis
- Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 Google Cloud project.
Enable the Agent Platform, BigQuery, and Cloud Storage APIs.
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.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 Google Cloud project.
Enable the Agent Platform, BigQuery, and Cloud Storage APIs.
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 eine multimodale 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 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 = 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 umgewandelt wird, das an das Modell übergeben werden kann. Sie enthält eine Vorlage mit Platzhaltern, die während der Zusammenstellung durch die Werte der entsprechenden Dataset-Spalten ersetzt werden. Dies ist erforderlich, um einen Tuning- oder Batchvorhersagejob auszuführen.
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.' )- Manuelles Erstellen einer Lesekonfiguration aus einem
GeminiExample, was eine feinere Granularität ermöglicht, z. B. bei Gesprächen mit mehreren Zügen. 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 = 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 sie an das Dataset an und machen Sie die Änderung dauerhaft:
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 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 Lesekonfiguration angewendet, um das 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 angehängte Lesekonfiguration des Datasets verwendet. Sie können jedoch ein gemini_request_read_config übergeben, um das Standardverhalten zu überschreiben.
Agent Platform SDK
Die assemble-Methode gibt ein (table_id, dataframe)-Tupel zurück. Übergeben Sie load_dataframe=True, um die zusammengestellte Tabelle auch als DataFrame zur Überprü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 wird mit der Methode assemble eine neue BigQuery-Tabelle mit dem Namen table_id erstellt, 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
Prüfen Sie das Dataset auf Fehler wie 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 ein 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-2.5-flash",
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.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-2.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 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.5-flash"
}
}'
Abstimmungsjob ausführen
Verwenden Sie das Google Gen AI SDK, um einen Abstimmungsjob zu starten und den Ressourcennamen des multimodalen Datasets zu übergeben. Dem 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-2.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 Datensatz abrufen.
Optional: Dataset validieren
Prüfen Sie das Dataset auf Fehler wie 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 ein 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-2.5-flash"
)
# 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.5-flash",
}
}'
(Optional) Ressourcennutzung schätzen
Bewerten Sie das Dataset, um die Anzahl der Tokens 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-2.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 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.5-flash"
}
}'
Batchvorhersagejob ausführen
Sie können Ihr multimodales Dataset für Batchvorhersagen verwenden, indem Sie den BigQuerytable_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-2.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 Drittanbietermodellen 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 verwenden diese zugrunde liegenden Dienste:
CreateDataset- Für Datasets, die aus einer vorhandenen BigQuery-Tabelle oder einem vorhandenen 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 zu Speicherkosten in BigQuery führt. 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 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 auch einmal gelesen, was zu Abfragekosten in BigQuery führt. Beispiel: On-Demand-Computing in der Preisgestaltung, 6, 25 $ pro TiB.
Assessliest 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.