L'SDK Vertex AI include le seguenti classi di previsione. Una classe è per le previsioni batch. Gli altri riguardano le previsioni online o di ricerca vettoriale. 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 adatte 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:
Il modo migliore per creare un job di previsione batch è utilizzare il metodo
batch_predict
sulModel
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
ofile-list
.prediction_format
: il formato del file di risposta della previsione batch:jsonl
,csv
,bigquery
,tf-record
,tf-record-gzip
ofile-list
.gcs_source:
Un elenco di uno o più percorsi Cloud Storage alle richieste di previsione batch.gcs_destination_prefix
: il percorso di 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 )
Il secondo modo per creare un job di previsione batch è chiamare il metodo
BatchPredictionJob.create
. Il metodoBatchPredictionJob.create
richiede quattro parametri:job_display_name
: un nome che assegni al job di previsione batch. Tieni presente che, sebbenejob_display_name
sia obbligatorio perBatchPredictionJob.create
, è facoltativo perModel.batch_predict
.model_name
: il nome completo o l'ID delModel
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
ofile-list
.predictions_format
: il formato del file di risposta della previsione batch:jsonl
,csv
,bigquery
,tf-record
,tf-record-gzip
ofile-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 che vengano generate previsioni in base all'input dell'applicazione o quando hai bisogno di una risposta di previsione rapida.
Endpoint
Prima di poter ottenere previsioni online dal modello, devi eseguirne il deployment in un endpoint. Quando esegui il deployment di un modello in un endpoint, associa 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 su più di un endpoint. Per ulteriori informazioni, consulta Considerazioni per il deployment dei modelli.
Per creare una risorsa Endpoint
, devi eseguire il deployment del modello. Quando chiami il metodo
Model.deploy
, viene creato e restituisce un valore Endpoint
.
Di seguito è riportato un esempio di snippet di codice che mostra come creare un job di addestramento personalizzato, creare e addestrare un modello ed eseguire il deployment del modello in 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 per il peering con un Virtual Private Cloud (VPC). Un VPC è necessario 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 tuo modello e ricevere avvisi in caso di deviazioni che potrebbero influire sulla qualità delle previsioni del modello.
Se i dati di input si discostano 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 l'inclinazione e la deviazione delle caratteristiche:
- Un disallineamento si verifica quando la distribuzione dei dati delle funzionalità di produzione devia dai dati delle caratteristiche utilizzati per addestrare il modello.
- La deviazione si verifica quando i dati della funzionalità di produzione cambiano in modo significativo nel tempo.
Per ulteriori informazioni, consulta Introduzione al monitoraggio dei modelli Vertex AI. Per un esempio di come implementare Vertex AI Monitoring con l'SDK Vertex AI, consulta il blocco note Vertex AI model Monitoring with Explainable AI Feature Attributions su GitHub.
Classi di previsione di Vector Search
Vector Search è un servizio gestito che crea indici di somiglianza, o vettori, per eseguire la corrispondenza delle somiglianze. La corrispondenza delle somiglianze richiede due passaggi generali:
Consente di creare una rappresentazione vettoriale dei dati. I dati possono essere dati di testo, immagini, video, audio o tabulari.
La ricerca vettoriale utilizza gli endpoint dei vettori creati per eseguire una ricerca su scala elevata e bassa latenza di vettori simili.
Per maggiori informazioni, consulta la panoramica di Vector Search e il blocco note Create a Vector Search index su GitHub.
MatchingEngineIndex
La classe MatchingEngineIndex
rappresenta
gli indici, o vettori, da te creati che Vector Search utilizza per
eseguire la ricerca di somiglianze.
Esistono due algoritmi di ricerca che puoi utilizzare per l'indice:
TreeAhConfig
utilizza un algoritmo AH (albero superficiale) con hashing asimmetrico. UtilizzaMatchingEngineIndex.create_tree_ah_index
per creare un indice che utilizza l'algoritmo dell'algoritmo AH,BruteForceConfig
usa una ricerca lineare standard) UtilizzaMatchingEngineIndex.create_brute_force_index
per creare un indice che impiega una ricerca lineare standard.
Per ulteriori informazioni su come configurare gli indici, consulta Configurare gli indici.
Di seguito è riportato 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" }
)
Di seguito è riportato 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 il deployment di un modello nell'endpoint,
ottieni un indirizzo IP che puoi usare per eseguire le query.
Di seguito è riportato un esempio di creazione di un endpoint dell'indice del motore corrispondente e poi di deployment di un indice del 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
- Scopri di più sull'SDK Vertex AI.