L'SDK Vertex AI include le seguenti classi di previsione. Uno è per le previsioni batch. Le altre sono relative alle previsioni online o alle previsioni di Ricerca vettoriale. Per ulteriori informazioni, consulta la Panoramica dell'ottenimento di previsioni su Vertex AI.
Classe di previsione batch
Una previsione batch è un gruppo di richieste di previsione asincrone. Richiedi
le previsioni batch dalla risorsa del modello senza dover eseguire il deployment del modello su
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 in batch.
BatchPredictionJob
La classe BatchPredictionJob
rappresenta un
gruppo di richieste di previsione asincrone. Esistono due modi per creare un job di previsione
in 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 per le richieste di previsione collettiva.gcs_destination_prefix
: il percorso di Cloud Storage in cui Vertex AI scrive le previsioni.
Il codice seguente è un esempio di come 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 chejob_display_name
è obbligatorio perBatchPredictionJob.create
, ma facoltativo perModel.batch_predict
.model_name
: il nome o l'ID completo delModel
addestrato che utilizzi per il job di previsione in 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 in un endpoint prima di poter effettuare una richiesta di previsione online. Utilizza le previsioni online quando vuoi che vengano generate in base all'input dell'applicazione o quando hai bisogno di una risposta rapida.
Endpoint
Prima di poter ottenere previsioni online dal modello, devi eseguire il deployment del modello in un endpoint. Quando esegui il deployment di un modello in un endpoint, associ 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 la sezione Considerazioni per il deployment dei modelli.
Per creare una risorsa Endpoint
, esegui il deployment del
modello. Quando chiami il metodo
Model.deploy
, viene creato e restituito un Endpoint
.
Di seguito è riportato uno snippet di codice campione che mostra come creare un job di addestramento personalizzato, creare e addestrare un modello e poi eseguirlo 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 è simile a una risorsa Endpoint
,
tranne che le previsioni vengono inviate tramite una rete sicura al servizio di previsione online di Vertex AI. Utilizza un endpoint privato se la tua organizzazione vuole mantenere tutto il traffico privato.
Per utilizzare un endpoint privato, devi configurare Vertex AI per eseguire il peering con un Virtual Private Cloud (VPC). È necessaria una VPC per consentire all'endpoint di previsione privato di connettersi direttamente a Vertex AI. Per maggiori informazioni, consulta Configurare il peering di reti VPC e Utilizzare endpoint privati per la previsione online.
ModelDeploymentMonitoringJob
Utilizza la risorsa
ModelDeploymentMonitoringJob
per monitorare il modello e ricevere avvisi se si discosta in modo da
poter influire sulla qualità delle previsioni del modello.
Quando 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 dei modelli analizza la data di inserimento per il disallineamento e la deviazione delle caratteristiche:
- Il disallineamento si verifica quando la distribuzione dei dati delle funzionalità di produzione si discosta dai dati delle funzionalità utilizzati per addestrare il modello.
- La deviazione si verifica quando i dati delle funzionalità di produzione cambiano in modo significativo nel tempo.
Per ulteriori informazioni, consulta Introduzione al monitoraggio dei modelli di Vertex AI. Per un esempio di come implementare il monitoraggio di Vertex AI con l'SDK Vertex AI, consulta il notebook 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 similarità o vettori per eseguire la ricerca di corrispondenze in base alla similarità. Esistono due passaggi di alto livello per eseguire la corrispondenza per similarità:
Crea una rappresentazione vettoriale dei dati. I dati possono essere di testo, immagini, video, audio o tabulari.
La ricerca vettoriale utilizza gli endpoint dei vettori che crei per eseguire una ricerca su larga scala e a bassa latenza di vettori simili.
Per saperne di più, consulta la panoramica di Ricerca vettoriale e il notebook Creare un indice di Ricerca vettoriale su GitHub.
MatchingEngineIndex
La classe MatchingEngineIndex
rappresenta gli indici o i vettori che crei e che vengono utilizzati da Vector Search per eseguire la ricerca di somiglianza.
Esistono due algoritmi di ricerca che puoi utilizzare per l'indice:
TreeAhConfig
utilizza un algoritmo tree-AH poco profondo (albero poco profondo che utilizza l'hashing asimmetrico). UtilizzaMatchingEngineIndex.create_tree_ah_index
per creare un indice che utilizza l'algoritmo albero AH.BruteForceConfig
utilizza una ricerca lineare standard) UtilizzaMatchingEngineIndex.create_brute_force_index
per creare un indice che utilizza una ricerca lineare standard.
Per saperne di più su come configurare gli indici, consulta Configurare gli indici.
Il seguente codice è un esempio di creazione di un indice che utilizza l'algoritmo albero 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 seguente codice è 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,
ricevi un indirizzo IP da utilizzare per eseguire le query.
Il seguente codice è un esempio di creazione di un endpoint indice del matching engine e di successivo deployment di un indice del matching engine:
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.