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 Überblick: Vorhersagen in Vertex AI abrufen.

Klasse für Batchvorhersagen

Eine Batchvorhersage besteht aus einer Gruppe von asynchronen 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 nicht sofort eine Antwort benötigen und Daten in 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 von asynchronen Vorhersageanfragen dar. Es gibt zwei Möglichkeiten, einen Batch-Vorhersageauftrag zu erstellen:

  1. Die beste Methode zum Erstellen eines Batchvorhersagejobs besteht darin, die Methode batch_predict auf Ihrem trainierten Model anzuwenden. 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 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 Batch-Vorhersageanfragen.
    • gcs_destination_prefix: Der Cloud Storage-Pfad, unter dem Vertex AI 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 Batchvorhersagejobs 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 Batchvorhersagejob zuweisen. job_display_name ist für BatchPredictionJob.create erforderlich, für Model.batch_predict jedoch optional.
    • model_name: Der voll qualifizierte Name oder die ID des trainierten Model, den Sie für den Batchvorhersagejob verwenden.
    • instances_format: Das Format der Batch-Vorhersageanfragedatei: 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 der Grundlage von Anwendungseingängen generiert werden, 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 Hinweise zur Bereitstellung von Modellen.

Wenn Sie eine Endpoint-Ressource erstellen möchten, müssen Sie Ihr Modell bereitstellen. Wenn Sie die Methode Model.deploy aufrufen, wird eine Endpoint erstellt und zurückgegeben.

Im folgenden Code-Snippet wird gezeigt, wie Sie einen benutzerdefinierten Trainingsjob erstellen, ein Modell erstellen und trainieren und dann das Modell 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 ähnelt einer Endpoint-Ressource, mit der Ausnahme, dass Vorhersagen über ein sicheres Netzwerk an den Vertex AI-Onlinevorhersagedienst 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 Vertex AI für das Peering mit einer Virtual Private Cloud (VPC) konfigurieren. Eine VPC ist erforderlich, damit der Endpunkt für private Vorhersagen eine direkte Verbindung zu Vertex AI 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. Bei der Modellüberwachung werden Eingabedaten auf Abweichung und Drift des Features analysiert:

  • Eine Abweichung 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 Vertex AI Model Monitoring. Ein Beispiel für die Implementierung von Vertex AI Monitoring mit dem Vertex AI SDK finden Sie im Notebook Vertex AI Model Monitoring mit Explainable AI-Featureattributionen auf GitHub.

Vorhersageklassen der Vektorsuche

Die Vektorsuche ist ein verwalteter Dienst, der Ähnlichkeitsindexe oder Vektoren erstellt, um einen Ähnlichkeitsabgleich durchzuführen. Es gibt zwei allgemeine Schritte für die Ähnlichkeitsabgleiche:

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

  2. Die Vektorsuche verwendet die Endpunkte der von Ihnen erstellten Vektoren, 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 Abfragen ausführen.

Im folgenden Code wird ein Matching Engine-Indexendpunkt erstellt und dann ein Matching Engine-Index darauf bereitgestellt:

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