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 siehe Übersicht über das Abrufen von Vorhersagen auf der Gemini Enterprise Agent Platform.

Klasse für Batch-Vorhersage

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 verwendet wird.

BatchPredictionJob

Die BatchPredictionJob Klasse 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 batch_predict Methode für Ihr trainiertes Model. Für diese Methode sind die folgenden Parameter erforderlich:

    • instances_format: Das Format der Batch-Vorhersageanfragedatei: jsonl, csv, bigquery, tf-record, tf-record-gzip oder file-list.
    • prediction_format: Das Format der Batch-Vorhersageantwortdatei: 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 ist der Aufruf der BatchPredictionJob.create Methode. Für die BatchPredictionJob.create Methode sind vier Parameter erforderlich:

    • job_display_name: Ein Name, den Sie dem Batch-Vorhersagejob zuweisen. Während job_display_name für BatchPredictionJob.create erforderlich ist, ist es für Model.batch_predict optional.
    • model_name: Der voll qualifizierte Name oder die ID des trainierten Model, das Sie für den Batch-Vorhersagejob verwenden.
    • instances_format: Das Format der Batch-Vorhersageanfragedatei: jsonl, csv, bigquery, tf-record, tf-record-gzip, oder file-list.
    • predictions_format: Das Format der Batch-Vorhersageantwortdatei: 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 das Modell auf einem Endpunkt bereitstellen, bevor Sie eine Onlinevorhersageanfrage 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 das Modell 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.

Um eine Endpoint-Ressource zu erstellen, stellen Sie Ihr Modell bereit. Wenn Sie die Model.deploy Methode aufrufen, wird ein Endpointerstellt und zurückgegeben.

Das folgende Beispielcode-Snippet zeigt, wie Sie einen benutzerdefinierten Trainingsjob erstellen, ein Modell erstellen und trainieren und das Modell dann auf 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 ähnelt einer Endpoint-Ressource, mit dem Unterschied, 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) ein Peering durchführt. Eine VPC ist erforderlich, damit der private Vorhersageendpunkt direkt mit der Gemini Enterprise Agent Platform verbunden werden 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. Bei der Modellüberwachung werden Eingabedaten auf Verzerrung und Drift der Features analysiert:

  • Skew tritt auf, wenn die Verteilung der Featuredaten in der Produktion 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 die Modellüberwachung der Gemini Enterprise Agent Platform. Ein Beispiel für die Implementierung der Überwachung der Gemini Enterprise Agent Platform mit dem Vertex AI SDK finden Sie im Notebook Gemini Enterprise Agent Platform Model Monitoring with Explainable AI Feature Attributions 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. Für den Ähnlichkeitsabgleich sind zwei allgemeine Schritte erforderlich:

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

  2. Die Vektorsuche verwendet die Endpunkte der von Ihnen erstellten Vektoren, um eine Suche mit hoher Skalierbarkeit und niedriger Latenz nach ähnlichen Vektoren 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 können Sie zwei Suchalgorithmen verwenden:

  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 MatchingEngineIndexEndpoint Klasse zum Erstellen und Abrufen eines Endpunkts. Nachdem Sie ein Modell auf Ihrem Endpunkt bereitgestellt haben, erhalten Sie eine IP-Adresse, mit der Sie Ihre Abfragen ausführen können.

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