Le SDK Vertex AI inclut les classes de prédiction suivantes. Une classe est dédiée aux prédictions par lot. Les autres sont liées aux prédictions en ligne ou aux prédictions Vector Search. Pour en savoir plus, consultez la Présentation de l'obtention de prédictions sur Vertex AI.
Classe de prédiction par lot
Une prédiction par lot est un groupe de requêtes de prédiction asynchrones. Vous demandez des prédictions par lot à partir de la ressource de modèle sans avoir à le déployer sur un point de terminaison. Les prédictions par lot sont adaptées lorsque vous n'avez pas besoin d'une réponse immédiate et souhaitez traiter des données avec une seule requête.
BatchPredictionJob
est la seule classe du SDK Vertex AI spécifique aux prédictions par lot.
BatchPredictionJob
La classe BatchPredictionJob
représente un groupe de requêtes de prédiction asynchrones. Il existe deux façons de créer un job de prédiction par lot :
La méthode privilégiée pour créer un job de prédiction par lot consiste à utiliser la méthode
batch_predict
sur votreModel
entraîné. Cette méthode nécessite les paramètres suivants :instances_format
: format du fichier de requête de prédiction par lot :jsonl
,csv
,bigquery
,tf-record
,tf-record-gzip
oufile-list
.prediction_format
: format du fichier de réponse de prédiction par lot :jsonl
,csv
,bigquery
,tf-record
,tf-record-gzip
oufile-list
.gcs_source:
Liste d'un ou plusieurs chemins d'accès Cloud Storage vers vos requêtes de prédiction par lot.gcs_destination_prefix
: chemin d'accès Cloud Storage vers lequel Vertex AI écrit les prédictions.
Le code suivant est un exemple de la façon dont vous pouvez appeler
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 )
La seconde façon de créer un job de prédiction par lot consiste à appeler la méthode
BatchPredictionJob.create
. La méthodeBatchPredictionJob.create
nécessite quatre paramètres :job_display_name
: nom que vous attribuez au job de prédiction par lot. Bien quejob_display_name
soit requis pourBatchPredictionJob.create
, il est facultatif pourModel.batch_predict
.model_name
: nom complet ou ID duModel
entraîné que vous utilisez pour le job de prédiction par lot.instances_format
: format du fichier de requête de prédiction par lot :jsonl
,csv
,bigquery
,tf-record
,tf-record-gzip
oufile-list
.predictions_format
: format du fichier de réponse de prédiction par lot :jsonl
,csv
,bigquery
,tf-record
,tf-record-gzip
oufile-list
.
Classes de prédiction en ligne
Les prédictions en ligne sont des requêtes synchrones adressées à un point de terminaison de modèle. Vous devez déployer votre modèle sur un point de terminaison avant de pouvoir effectuer une requête de prédiction en ligne. Utilisez les prédictions en ligne lorsque vous souhaitez obtenir des prédictions générées en fonction des entrées d'application ou lorsque vous avez besoin d'une réponse de prédiction rapide.
Endpoint
Avant de pouvoir obtenir des prédictions en ligne à partir de votre modèle, vous devez déployer votre modèle sur un point de terminaison. Lorsque vous déployez un modèle sur un point de terminaison, vous associez des ressources de machine physique au modèle afin qu'il puisse diffuser les prédictions en ligne.
Vous pouvez déployer plusieurs modèles sur un point de terminaison. Vous pouvez également déployer un modèle sur plusieurs points de terminaison. Pour en savoir plus, consultez la section Éléments à prendre en compte pour le déploiement de modèles.
Pour créer une ressource Endpoint
, vous déployez votre modèle. Lorsque vous appelez la méthode Model.deploy
, elle crée et renvoie un Endpoint
.
L'extrait de code suivant montre comment créer un job d'entraînement personnalisé, créer et entraîner un modèle, puis déployer le modèle sur un point de terminaison.
# 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 point de terminaison privé est semblable à une ressource Endpoint
, sauf que les prédictions sont envoyées via un réseau sécurisé au service de prédiction en ligne Vertex AI. Utilisez un point de terminaison privé si votre organisation souhaite que l'ensemble du trafic reste privé.
Pour utiliser un point de terminaison privé, vous devez configurer Vertex AI pour l'appairer avec un cloud privé virtuel (VPC). Un VPC est nécessaire pour que le point de terminaison de prédiction privé se connecte directement à Vertex AI. Pour en savoir plus, consultez les sections Configurer l'appairage de réseaux VPC et Utiliser des points de terminaison privés pour la prédiction en ligne.
ModelDeploymentMonitoringJob
Utilisez la ressource ModelDeploymentMonitoringJob
pour surveiller votre modèle et recevoir des alertes en cas d'écart susceptible d'affecter la qualité des prédictions de votre modèle.
Lorsque les données d'entrée diffèrent des données utilisées pour entraîner votre modèle, les performances du modèle peuvent se dégrader, même si le modèle lui-même n'a pas changé. La surveillance du modèle analyse les données d'entrée pour connaître les écarts et les dérives des caractéristiques :
- Un écart se produit lorsque la distribution des données de caractéristiques de production s'écarte des données de caractéristiques utilisées pour entraîner le modèle.
- Une dérive se produit lorsque les données de caractéristiques de production changent de manière significative au fil du temps.
Pour en savoir plus, consultez la Présentation de la surveillance de modèle Vertex AI. Pour obtenir un exemple sur l'implémentation de la surveillance Vertex AI avec le SDK Vertex AI, consultez le notebook Surveillance de modèle Vertex AI avec attribution de caractéristiques Explainable AI sur GitHub.
Classes de prédiction Vector Search
Vector Search est un service géré qui crée des index de similarités ou des vecteurs pour effectuer une mise en correspondance de similarités. Une mise en correspondance de similarités s'effectue en deux étapes majeures :
Créez une représentation vectorielle de vos données. Les données peuvent être des données textuelles, d'images, vidéo, audio ou tabulaires.
Vector Search utilise les points de terminaison des vecteurs que vous créez pour effectuer une recherche à grande échelle et à faible latence de vecteurs similaires.
Pour en savoir plus, consultez les pages Présentation de Vector Search et Créer un index Vector Search sur GitHub.
MatchingEngineIndex
La classe MatchingEngineIndex
représente les index, ou vecteurs, que vous créez et que Vector Search utilise pour effectuer sa recherche de similarité.
Vous pouvez utiliser deux algorithmes de recherche pour votre index :
TreeAhConfig
utilise un algorithme "tree-AH" superficiel (arbre superficiel utilisant le hachage asymétrique). UtilisezMatchingEngineIndex.create_tree_ah_index
pour créer un index qui utilise l'algorithme "tree-AH".BruteForceConfig
utilise une recherche linéaire standard. UtilisezMatchingEngineIndex.create_brute_force_index
pour créer un index qui utilise une recherche linéaire standard.
Pour en savoir plus sur la configuration de vos index, consultez la section Configurer des index.
Le code suivant est un exemple de création d'index utilisant l'algorithme "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" }
)
Le code suivant est un exemple de création d'index utilisant l'algorithme de force brute :
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
Utilisez la classe MatchingEngineIndexEndpoint
pour créer et récupérer un point de terminaison. Après avoir déployé un modèle sur votre point de terminaison, vous obtenez une adresse IP que vous utilisez pour exécuter vos requêtes.
L'exemple de code suivant illustre la création d'un point de terminaison d'index Matching Engine, puis le déploiement d'un index Matching Engine sur ce point de terminaison :
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"
)
Étapes suivantes
- En savoir plus sur le SDK Vertex AI.