Das Vertex AI SDK enthält die folgenden Vorhersageklassen. Eine Klasse dient Batchvorhersagen. Die anderen beziehen sich auf Onlinevorhersagen oder Vorhersagen der Vektorsuche. Weitere Informationen finden Sie unter Übersicht über das Abrufen von Vorhersagen auf der Gemini Enterprise Agent Platform.
Batch-Vorhersageklasse
Eine Batchvorhersage ist eine Gruppe asynchroner Vorhersageanfragen. Sie können Batchvorhersagen direkt von der Modellressource anfordern, ohne das Modell auf einem Endpunkt bereitstellen zu müssen. Batchvorhersagen eignen sich, wenn Sie keine sofortige Antwort benötigen und Daten mit einer einzigen Anfrage verarbeiten möchten.
BatchPredictionJob ist die einzige Klasse im Vertex AI SDK, die speziell für Batchvorhersagen vorgesehen ist.
BatchPredictionJob
Die Klasse BatchPredictionJob stellt eine Gruppe asynchroner Vorhersageanfragen dar. Es gibt zwei Möglichkeiten, einen Batchvorhersagejob zu erstellen:
Die bevorzugte Methode zum Erstellen eines Batch-Vorhersagejobs ist die Verwendung der Methode
batch_predictfür Ihr trainiertesModel. Für diese Methode sind die folgenden Parameter erforderlich:instances_format: Das Format der Datei mit Batchvorhersageanfragen:jsonl,csv,bigquery,tf-record,tf-record-gzipoderfile-list.prediction_format: Das Format der Antwortdatei für die Batch-Vorhersage:jsonl,csv,bigquery,tf-record,tf-record-gzipoderfile-list.gcs_source:Eine Liste mit einem oder mehreren Cloud Storage-Pfaden zu Ihren Batchvorhersageanfragen.gcs_destination_prefix: Der Cloud Storage-Pfad, in den die Gemini Enterprise Agent Platform die Vorhersagen schreibt.
Im folgenden Codebeispiel wird gezeigt, wie Sie
Model.batch_predictaufrufen können:batch_prediction_job = model.batch_predict( instances_format="jsonl", predictions_format="jsonl", job_display_name="your_job_display_name_string", gcs_source=['gs://path/to/my/dataset.csv'], gcs_destination_prefix='gs://path/to/my/destination', model_parameters=None, starting_replica_count=1, max_replica_count=5, machine_type="n1-standard-4", sync=True )Die zweite Möglichkeit zum Erstellen eines Batch-Vorhersagejobs besteht darin, die Methode
BatchPredictionJob.createaufzurufen. Für die MethodeBatchPredictionJob.createsind vier Parameter erforderlich:job_display_name: Ein Name, den Sie dem Batch-Vorhersagejob zuweisen.job_display_nameist fürBatchPredictionJob.createerforderlich, fürModel.batch_predictjedoch optional.model_name: Der vollqualifizierte Name oder die ID des trainiertenModel, den Sie für den Batch-Vorhersagejob verwenden.instances_format: Das Format der Datei mit Batchvorhersageanfragen:jsonl,csv,bigquery,tf-record,tf-record-gzipoderfile-list.predictions_format: Das Format der Antwortdatei für die Batch-Vorhersage:jsonl,csv,bigquery,tf-record,tf-record-gzipoderfile-list.
Klassen für Onlinevorhersagen
Onlinevorhersagen sind synchrone Anfragen an einen Modellendpunkt. Sie müssen Ihr Modell auf einem Endpunkt bereitstellen, bevor Sie eine Anfrage für eine Onlinevorhersage stellen können. Verwenden Sie Onlinevorhersagen, wenn Sie Vorhersagen benötigen, die auf Anwendungseingaben basieren, oder wenn Sie eine schnelle Vorhersageantwort benötigen.
Endpoint
Bevor Sie Onlinevorhersagen aus Ihrem Modell abrufen können, müssen Sie es auf einem Endpunkt bereitstellen. Wenn Sie ein Modell für einen Endpunkt bereitstellen, verknüpfen Sie physische Maschinenressource mit diesem Modell, damit Onlinevorhersagen bereitgestellt werden können.
Sie können mehrere Modelle auf einem Endpunkt bereitstellen. Sie können auch ein Modell auf mehreren Endpunkten bereitstellen. Weitere Informationen finden Sie unter Überlegungen zur Bereitstellung von Modellen.
Zum Erstellen einer Endpoint-Ressource stellen Sie Ihr Modell bereit. Wenn Sie die Methode Model.deploy aufrufen, wird ein Endpoint erstellt und zurückgegeben.
Das folgende Beispielcode-Snippet zeigt, wie Sie einen benutzerdefinierten Trainingsjob erstellen, ein Modell erstellen und trainieren und das Modell dann an einem Endpunkt bereitstellen.
# Create your custom training job
job = aiplatform.CustomTrainingJob(
display_name="my_custom_training_job",
script_path="task.py",
container_uri="us-docker.pkg.dev/vertex-ai/training/tf-cpu.2-8:latest",
requirements=["google-cloud-bigquery>=2.20.0", "db-dtypes"],
model_serving_container_image_uri="us-docker.pkg.dev/vertex-ai/prediction/tf2-cpu.2-8:latest"
)
# Start the training and create your model
model = job.run(
dataset=dataset,
model_display_name="my_model_name",
bigquery_destination=f"bq://{project_id}"
)
# Create an endpoint and deploy your model to that endpoint
endpoint = model.deploy(deployed_model_display_name="my_deployed_model")
# Get predictions using test data in a DataFrame named 'df_my_test_data'
predictions = endpoint.predict(instances=df_my_test_data)
PrivateEndpoint
Ein privater Endpunkt ist wie eine Endpoint-Ressource, mit der Ausnahme, dass Vorhersagen über ein sicheres Netzwerk an den Onlinevorhersagedienst der Gemini Enterprise Agent Platform gesendet werden. Verwenden Sie einen privaten Endpunkt, wenn Ihre Organisation den gesamten Traffic privat halten möchte.
Wenn Sie einen privaten Endpunkt verwenden möchten, müssen Sie die Gemini Enterprise Agent Platform so konfigurieren, dass sie mit einer Virtual Private Cloud (VPC) verbunden wird. Eine VPC ist erforderlich, damit der private Vorhersageendpunkt eine direkte Verbindung zur Gemini Enterprise Agent Platform herstellen kann. Weitere Informationen finden Sie unter VPC-Netzwerk-Peering einrichten und Private Endpunkte für Onlinevorhersagen verwenden.
ModelDeploymentMonitoringJob
Verwenden Sie die ModelDeploymentMonitoringJob-Ressource, um Ihr Modell zu überwachen und Benachrichtigungen zu erhalten, wenn es auf eine Weise abweicht, die die Qualität der Vorhersagen Ihres Modells beeinträchtigen könnte.
Wenn die Eingabedaten von den Daten abweichen, die zum Trainieren des Modells verwendet wurden, kann sich die Leistung des Modells verschlechtern, auch wenn sich das Modell selbst nicht geändert hat. Beim Modellmonitoring werden Eingabedaten auf Feature-Verzerrung und -Drift analysiert:
- Skew treten auf, wenn die Verteilung der Produktions-Featuredaten von den Featuredaten abweicht, die zum Trainieren des Modells verwendet wurden.
- Drift tritt auf, wenn sich die Feature-Daten der Produktion im Laufe der Zeit erheblich verändern.
Weitere Informationen finden Sie unter Einführung in Gemini Enterprise Agent Platform-Modellmonitoring. Ein Beispiel für die Implementierung von Gemini Enterprise Agent Platform-Monitoring mit dem Vertex AI SDK finden Sie im Notebook Gemini Enterprise Agent Platform-Modellmonitoring mit Explainable AI-Featureattributionen auf GitHub.
Vervollständigung einer Suchanfrage für die Vektorsuche
Die Vektorsuche ist ein verwalteter Dienst, der Ähnlichkeitsindexe oder Vektoren erstellt, um einen Ähnlichkeitsabgleich durchzuführen. Es gibt zwei allgemeine Schritte für den Abgleich von Ähnlichkeiten:
Erstellen Sie eine Vektordarstellung Ihrer Daten. Daten können Text, Bilder, Videos, Audio oder tabellarische Daten sein.
Bei der Vektorsuche werden die Endpunkte der von Ihnen erstellten Vektoren verwendet, um eine hochskalierbare Suche nach ähnlichen Vektoren mit niedriger Latenz durchzuführen.
Weitere Informationen finden Sie unter Vektorsuche – Übersicht und im Notebook Vektorsuchindex erstellen auf GitHub.
MatchingEngineIndex
Die Klasse MatchingEngineIndex repräsentiert die von Ihnen erstellten Indexe oder Vektoren, die die Vektorsuche zur Durchführung ihrer Ähnlichkeitssuche verwendet.
Für Ihren Index stehen zwei Suchalgorithmen zur Verfügung:
TreeAhConfigverwendet einen flachen Tree-AH-Algorithmus (flacher Baum mit asymmetrischem Hashing). Verwenden SieMatchingEngineIndex.create_tree_ah_index, um einen Index zu erstellen, der den Algorithmus des Tree-AH-Algorithmus verwendet.BruteForceConfigverwendet eine standardmäßige lineare Suche) Verwenden SieMatchingEngineIndex.create_brute_force_index, um einen Index zu erstellen, der eine standardmäßige lineare Suche verwendet.
Weitere Informationen zum Konfigurieren von Indexen finden Sie unter Indexe konfigurieren.
Der folgende Code zeigt ein Beispiel für das Erstellen eines Index, der den Tree-AH-Algorithmus verwendet:
my_tree_ah_index = aiplatform.Index.create_tree_ah_index(
display_name="my_display_name",
contents_delta_uri="gs://my_bucket/embeddings",
dimensions=1,
approximate_neighbors_count=150,
distance_measure_type="SQUARED_L2_DISTANCE",
leaf_node_embedding_count=100,
leaf_nodes_to_search_percent=50,
description="my description",
labels={ "label_name": "label_value" }
)
Der folgende Code zeigt ein Beispiel für das Erstellen eines Index, der den Brute-Force-Algorithmus verwendet:
my_brute_force_index = aiplatform.Index.create_brute_force_index(
display_name="my_display_name",
contents_delta_uri="gs://my_bucket/embeddings",
dimensions=1,
approximate_neighbors_count=150,
distance_measure_type="SQUARED_L2_DISTANCE",
description="my description",
labels={ "label_name": "label_value" }
)
MatchingEngineIndexEndpoint
Verwenden Sie die Klasse MatchingEngineIndexEndpoint, um einen Endpunkt zu erstellen und abzurufen. Nachdem Sie ein Modell auf Ihrem Endpunkt bereitgestellt haben, erhalten Sie eine IP-Adresse, mit der Sie Ihre Anfragen ausführen.
Der folgende Code zeigt ein Beispiel für das Erstellen eines Matching Engine-Indexendpunkts und das anschließende Bereitstellen eines Matching Engine-Index darauf:
my_index_endpoint = aiplatform.MatchingEngineIndexEndpoint.create(
display_name="sample_index_endpoint",
description="index endpoint description",
network="projects/123456789123/global/networks/my_vpc"
)
my_index_endpoint = my_index_endpoint.deploy_index(
index=my_tree_ah_index, deployed_index_id="my_matching_engine_index_id"
)