Classi di previsione

L'SDK Vertex AI include le seguenti classi di previsione. Una classe è per le previsioni batch. Gli altri sono relativi alle previsioni online o alle previsioni di Vector Search. Per ulteriori informazioni, consulta la Panoramica su come ottenere previsioni su Vertex AI.

Classe di previsione batch

Una previsione batch è un gruppo di richieste di previsione asincrone. Puoi richiedere previsioni batch dalla risorsa del modello senza dover eseguire il deployment del modello in un endpoint. Le previsioni batch sono ideali quando non hai bisogno di una risposta immediata e vuoi elaborare i dati con una singola richiesta. BatchPredictionJob è l'unica classe nell'SDK Vertex AI specifica per le previsioni batch.

BatchPredictionJob

La classe BatchPredictionJob rappresenta un gruppo di richieste di previsione asincrone. Esistono due modi per creare un job di previsione batch:

  1. Il modo migliore per creare un job di previsione batch è utilizzare il metodo batch_predict sul tuo Model addestrato. Questo metodo richiede i seguenti parametri:

    • instances_format: il formato del file di richiesta di previsione batch: jsonl, csv, bigquery, tf-record, tf-record-gzip o file-list.
    • prediction_format: il formato del file di risposta della previsione batch: jsonl, csv, bigquery, tf-record, tf-record-gzip o file-list.
    • gcs_source: Un elenco di uno o più percorsi Cloud Storage delle tue richieste di previsione batch.
    • gcs_destination_prefix: il percorso Cloud Storage in cui Vertex AI scrive le previsioni.

    Il codice seguente è un esempio di come potresti chiamare Model.batch_predict:

    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. Il secondo modo per creare un job di previsione batch è chiamare il metodo BatchPredictionJob.create. Il metodo BatchPredictionJob.create richiede quattro parametri:

    • job_display_name: un nome che assegni al job di previsione batch. Tieni presente che, sebbene job_display_name sia obbligatorio per BatchPredictionJob.create, è facoltativo per Model.batch_predict.
    • model_name: il nome completo o l'ID del Model addestrato che utilizzi per il job di previsione batch.
    • instances_format: il formato del file di richiesta di previsione batch: jsonl, csv, bigquery, tf-record, tf-record-gzip o file-list.
    • predictions_format: il formato del file di risposta della previsione batch: jsonl, csv, bigquery, tf-record, tf-record-gzip o file-list.

Classi di previsione online

Le previsioni online sono richieste sincrone effettuate a un endpoint del modello. Devi eseguire il deployment del modello su un endpoint prima di poter effettuare una richiesta di previsione online. Utilizza le previsioni online quando vuoi ottenere previsioni generate in base all'input dell'applicazione o quando hai bisogno di una risposta di previsione rapida.

Endpoint

Prima di poter ottenere previsioni online dal tuo modello, devi eseguire il deployment del modello in un endpoint. Quando esegui il deployment di un modello su un endpoint, devi associare le risorse della macchina fisica al modello in modo che possa fornire previsioni online.

Puoi eseguire il deployment di più modelli in un endpoint. Puoi anche eseguire il deployment di un modello in più endpoint. Per ulteriori informazioni, consulta Considerazioni per il deployment dei modelli.

Per creare una risorsa Endpoint, esegui il deployment del modello. Quando chiami il metodo Model.deploy, questo crea e restituisce un Endpoint.

Di seguito è riportato un esempio di snippet di codice che mostra come creare un job di addestramento personalizzato, creare e addestrare un modello e quindi eseguirne il deployment su un endpoint.

# 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

Un endpoint privato è come una risorsa Endpoint, ma le previsioni vengono inviate su una rete sicura al servizio di previsione online di Vertex AI. Usa un endpoint privato se la tua organizzazione vuole mantenere privato tutto il traffico.

Per utilizzare un endpoint privato, devi configurare Vertex AI in modo che sia in peering con un VPC (Virtual Private Cloud). È necessario un VPC affinché l'endpoint di previsione privato si connetta direttamente a Vertex AI. Per ulteriori informazioni, consulta Configurare il peering di rete VPC e Utilizzare endpoint privati per la previsione online.

ModelDeploymentMonitoringJob

Utilizza la risorsa ModelDeploymentMonitoringJob per monitorare il modello e ricevere avvisi in caso di deviazioni che potrebbero influire sulla qualità delle previsioni del modello.

Se i dati di input differiscono da quelli utilizzati per addestrare il modello, le prestazioni del modello possono peggiorare, anche se il modello non è cambiato. Il monitoraggio del modello analizza la data di input per disallineamento e deviazione delle caratteristiche:

  • Il disallineamento si verifica quando la distribuzione dei dati delle caratteristiche di produzione si discosta dai dati delle caratteristiche utilizzati per addestrare il modello.
  • La drift si verifica quando i dati delle funzionalità di produzione cambiano in modo significativo nel tempo.

Per saperne di più, consulta Introduzione al monitoraggio del modello Vertex AI. Per un esempio di come implementare il monitoraggio di Vertex AI con l'SDK Vertex AI, consulta il blocco note Monitoraggio del modello di Vertex AI con attribuzioni delle funzionalità Explainable AI su GitHub.

Classi di previsione della ricerca vettoriale

Vector Search è un servizio gestito che crea indici di somiglianza, o vettori, per eseguire corrispondenze di similitudini. Esistono due passaggi generali per eseguire la corrispondenza delle somiglianze:

  1. Crea una rappresentazione vettoriale dei tuoi dati. I dati possono essere di testo, immagini, video, audio o tabulari.

  2. Vector Search utilizza gli endpoint dei vettori creati per eseguire una ricerca ad alta scala e a bassa latenza per vettori simili.

Per ulteriori informazioni, consulta la pagina Panoramica di Vector Search e il blocco note Create a Vector Search index su GitHub.

MatchingEngineIndex

La classe MatchingEngineIndex rappresenta gli indici, o vettori, che crei e che Vector Search utilizza per eseguire la ricerca per somiglianze.

Esistono due algoritmi di ricerca che puoi utilizzare per il tuo indice:

  1. TreeAhConfig utilizza un algoritmo Tree-AH superficiale (albero superficiale che utilizza l'hashing asimmetrico). Utilizza MatchingEngineIndex.create_tree_ah_index per creare un indice che utilizzi l'algoritmo dell'algoritmo Tree-AH.
  2. BruteForceConfig utilizza una ricerca lineare standard) Utilizza MatchingEngineIndex.create_brute_force_index per creare un indice che utilizza una ricerca lineare standard.

Per ulteriori informazioni su come configurare gli indici, consulta la sezione Configurare gli indici.

Il codice seguente è un esempio di creazione di un indice che utilizza l'algoritmo Tree-AH:

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" }
)

Il codice seguente è un esempio di creazione di un indice che utilizza l'algoritmo di forza bruta:

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

Utilizza la classe MatchingEngineIndexEndpoint per creare e recuperare un endpoint. Dopo aver eseguito il deployment di un modello nell'endpoint, ottieni un indirizzo IP che utilizzi per eseguire le query.

Il codice seguente è un esempio di creazione di un endpoint indice motore corrispondente e di deployment di un indice motore corrispondente:

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"
)

Passaggi successivi