Vorhersageklassen

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:

  1. Die bevorzugte Methode zum Erstellen eines Batch-Vorhersagejobs ist die Verwendung der Methode batch_predict für Ihr trainiertes Model. Für diese Methode sind die folgenden Parameter erforderlich:

    • instances_format: Das Format der Datei mit Batchvorhersageanfragen: jsonl, csv, bigquery, tf-record, tf-record-gzip oder file-list.
    • prediction_format: Das Format der Antwortdatei für die Batch-Vorhersage: jsonl, csv, bigquery, tf-record, tf-record-gzip oder file-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_predict aufrufen 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
    )
    
  2. Die zweite Möglichkeit zum Erstellen eines Batch-Vorhersagejobs besteht darin, die Methode BatchPredictionJob.create aufzurufen. Für die Methode BatchPredictionJob.create sind vier Parameter erforderlich:

    • job_display_name: Ein Name, den Sie dem Batch-Vorhersagejob zuweisen. job_display_name ist für BatchPredictionJob.create erforderlich, für Model.batch_predict jedoch optional.
    • model_name: Der vollqualifizierte Name oder die ID des trainierten Model, den Sie für den Batch-Vorhersagejob verwenden.
    • instances_format: Das Format der Datei mit Batchvorhersageanfragen: jsonl, csv, bigquery, tf-record, tf-record-gzip oder file-list.
    • predictions_format: Das Format der Antwortdatei für die Batch-Vorhersage: jsonl, csv, bigquery, tf-record, tf-record-gzip oder file-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:

  1. Erstellen Sie eine Vektordarstellung Ihrer Daten. Daten können Text, Bilder, Videos, Audio oder tabellarische Daten sein.

  2. 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:

  1. TreeAhConfig verwendet einen flachen Tree-AH-Algorithmus (flacher Baum mit asymmetrischem Hashing). Verwenden Sie MatchingEngineIndex.create_tree_ah_index, um einen Index zu erstellen, der den Algorithmus des Tree-AH-Algorithmus verwendet.
  2. BruteForceConfig verwendet eine standardmäßige lineare Suche) Verwenden Sie MatchingEngineIndex.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"
)

Nächste Schritte