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 in Vertex AI.

Batchvorhersageklasse

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 sind dann geeignet, 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 für Batchvorhersagen spezifisch 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 Batchvorhersagejobs ist die Verwendung der Methode batch_predict in der trainierten Model. Für diese Methode sind die folgenden Parameter erforderlich:

    • instances_format: Das Format der Anfragedatei für die Batchvorhersage: jsonl, csv, bigquery, tf-record, tf-record-gzip oder file-list.
    • prediction_format: Das Format der Antwortdatei für die Batchvorhersage: jsonl, csv, bigquery, tf-record, tf-record-gzip oder file-list.
    • gcs_source: Ein oder mehrere Cloud Storage-Pfade zu Ihren Batchvorhersageanfragen.
    • gcs_destination_prefix: Der Cloud Storage-Pfad, in den Vertex AI die Vorhersagen schreibt.

    Der folgende Code ist ein Beispiel dafür, 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, einen Batchvorhersagejob zu erstellen, 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. Beachten Sie, dass job_display_name für BatchPredictionJob.create erforderlich ist und für Model.batch_predict optional ist.
    • model_name: Der voll qualifizierte Name oder die vollständig qualifizierte ID des trainierten Model, den Sie für den Batchvorhersagejob verwenden.
    • instances_format: Das Format der Anfragedatei für die Batchvorhersage: jsonl, csv, bigquery, tf-record, tf-record-gzip oder file-list.
    • predictions_format: Das Format der Antwortdatei für die Batchvorhersage: jsonl, csv, bigquery, tf-record, tf-record-gzip oder file-list.

Onlinevorhersageklassen

Onlinevorhersagen sind synchrone Anfragen, die an einen Modellendpunkt gesendet werden. 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 anhand von Anwendungseingaben generieren möchten 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 die physischen Maschinenressourcen mit dem Modell, damit es Onlinevorhersagen bereitstellen kann.

Sie können mehrere Modelle auf einem Endpunkt bereitstellen. Sie können ein Modell auch auf mehreren Endpunkten bereitstellen. Weitere Informationen finden Sie unter Überlegungen zur Bereitstellung von Modellen.

Zum Erstellen einer Endpoint-Ressource stellen Sie das 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 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 ist wie eine Endpoint-Ressource, mit dem Unterschied, 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. Für den privaten Vorhersageendpunkt ist eine VPC erforderlich, um eine direkte Verbindung zu Vertex AI herzustellen. 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. Das Modellmonitoring analysiert das Eingabedatum für das Feature Verzerrung und Drift:

  • Eine Verzerrung tritt auf, wenn die Verteilung der Featuredaten für die 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. Für den Ähnlichkeitsabgleich sind zwei allgemeine Schritte erforderlich:

  1. Vektordarstellung Ihrer Daten erstellen Dies können Text-, Bild-, Video-, Audio- oder tabellarische Daten sein.

  2. Die Vektorsuche verwendet die Endpunkte der von Ihnen erstellten Vektoren, um eine Suche mit hoher Skalierung 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.

Es gibt zwei Suchalgorithmen, die Sie für Ihren Index verwenden können:

  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 lineare Standardsuche. Verwenden Sie MatchingEngineIndex.create_brute_force_index, um einen Index zu erstellen, der eine lineare Standardsuche 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 ist 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.

Der folgende Code ist ein Beispiel für das Erstellen eines übereinstimmenden Engine-Indexendpunkts und dann die Bereitstellung eines übereinstimmenden 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