El SDK de Vertex AI incluye las siguientes clases de predicción. Una clase es para las predicciones por lotes. Las demás están relacionadas con las predicciones online o las predicciones de búsqueda vectorial. Para obtener más información, consulta el resumen de cómo obtener predicciones en Vertex AI.
Clase de predicción por lotes
Una predicción por lotes es un grupo de solicitudes de predicción asíncronas. Solicitas predicciones por lotes del recurso de modelo sin necesidad de desplegar el modelo en un endpoint. Las predicciones por lotes son adecuadas cuando no necesitas una respuesta inmediata y quieres procesar datos con una sola solicitud.
BatchPredictionJob
es la única clase del SDK de Vertex AI que es específica de las predicciones por lotes.
BatchPredictionJob
La clase BatchPredictionJob
representa un grupo de solicitudes de predicción asíncronas. Hay dos formas de crear una tarea de predicción por lotes:
La forma preferida de crear una tarea de predicción por lotes es usar el método
batch_predict
en tuModel
entrenado. Este método requiere los siguientes parámetros:instances_format
: formato del archivo de solicitud de predicción por lotes:jsonl
,csv
,bigquery
,tf-record
,tf-record-gzip
ofile-list
.prediction_format
: formato del archivo de respuesta de predicción por lotes:jsonl
,csv
,bigquery
,tf-record
,tf-record-gzip
ofile-list
.gcs_source:
Una lista de una o varias rutas de Cloud Storage a tus solicitudes de predicción por lotes.gcs_destination_prefix
: la ruta de Cloud Storage en la que Vertex AI escribe las predicciones.
El siguiente código es un ejemplo de cómo podrías llamar a
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 segunda forma de crear una tarea de predicción por lotes es llamar al método
BatchPredictionJob.create
. El métodoBatchPredictionJob.create
requiere cuatro parámetros:job_display_name
: Nombre que asignas al trabajo de predicción por lotes. Ten en cuenta quejob_display_name
es obligatorio paraBatchPredictionJob.create
, pero opcional paraModel.batch_predict
.model_name
: El nombre completo o el ID delModel
entrenado que usas en el trabajo de predicción por lotes.instances_format
: formato del archivo de solicitud de predicción por lotes:jsonl
,csv
,bigquery
,tf-record
,tf-record-gzip
ofile-list
.predictions_format
: formato del archivo de respuesta de predicción por lotes:jsonl
,csv
,bigquery
,tf-record
,tf-record-gzip
ofile-list
.
Clases de predicción online
Las predicciones online son solicitudes síncronas que se envían a un endpoint de modelo. Debes desplegar tu modelo en un endpoint para poder enviar una solicitud de predicción online. Usa las predicciones online cuando quieras que se generen predicciones basadas en la entrada de la aplicación o cuando necesites una respuesta rápida.
Endpoint
Para obtener predicciones online de tu modelo, debes desplegarlo en un endpoint. Cuando despliega un modelo en un endpoint, asocia los recursos de la máquina física al modelo para que pueda ofrecer predicciones online.
Puedes desplegar más de un modelo en un endpoint. También puedes desplegar un modelo en más de un endpoint. Para obtener más información, consulta Consideraciones para implementar modelos.
Para crear un recurso Endpoint
, debes implementar tu modelo. Cuando llamas al método
Model.deploy
, se crea y se devuelve un Endpoint
.
A continuación, se muestra un fragmento de código de ejemplo que indica cómo crear un trabajo de entrenamiento personalizado, crear y entrenar un modelo y, a continuación, implementar el modelo en 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 punto final privado es como un recurso Endpoint
, pero las predicciones se envían a través de una red segura al servicio de predicción online de Vertex AI. Usa un endpoint privado si tu organización quiere que todo el tráfico sea privado.
Para usar un endpoint privado, debes configurar Vertex AI para que se empareje con una nube privada virtual (VPC). Se necesita una VPC para que el endpoint de predicción privado se conecte directamente con Vertex AI. Para obtener más información, consulta los artículos Configurar el emparejamiento entre redes de VPC y Usar puntos finales privados para la predicción online.
ModelDeploymentMonitoringJob
Usa el recurso
ModelDeploymentMonitoringJob
para monitorizar tu modelo y recibir alertas si se desvía de alguna forma que
pueda afectar a la calidad de las predicciones del modelo.
Cuando los datos de entrada se desvían de los datos utilizados para entrenar el modelo, el rendimiento de este puede deteriorarse, aunque no haya cambiado. La monitorización de modelos analiza la fecha de entrada para detectar sesgos y derivas de las características:
- La Skew se produce cuando la distribución de los datos de las funciones de producción se desvía de los datos de las funciones que se han usado para entrenar el modelo.
- La deriva se produce cuando los datos de las funciones de producción cambian significativamente con el tiempo.
Para obtener más información, consulta la introducción a la supervisión de modelos de Vertex AI. Para ver un ejemplo de cómo implementar la monitorización de Vertex AI con el SDK de Vertex AI, consulta el cuaderno Monitorización de modelos de Vertex AI con atribuciones de funciones de Explainable AI en GitHub.
Clases de predicción de Vector Search
Búsqueda de vectores es un servicio gestionado que crea índices de similitud o vectores para realizar coincidencias de similitud. Hay dos pasos generales para realizar la coincidencia por similitud:
Crea una representación vectorial de tus datos. Los datos pueden ser texto, imágenes, vídeo, audio o datos tabulares.
Vector Search usa los endpoints de los vectores que creas para realizar una búsqueda a gran escala y con baja latencia de vectores similares.
Para obtener más información, consulta la descripción general de la búsqueda vectorial y el cuaderno Crear un índice de búsqueda vectorial en GitHub.
MatchingEngineIndex
La clase MatchingEngineIndex
representa los índices o vectores que creas y que Vector Search usa para realizar su búsqueda de similitudes.
Puedes usar dos algoritmos de búsqueda para tu índice:
TreeAhConfig
usa un algoritmo de árbol poco profundo (árbol poco profundo que usa cifrado con hash asimétrico). UsaMatchingEngineIndex.create_tree_ah_index
para crear un índice que use el algoritmo tree-AH.BruteForceConfig
usa una búsqueda lineal estándar. UsaMatchingEngineIndex.create_brute_force_index
para crear un índice que use una búsqueda lineal estándar.
Para obtener más información sobre cómo configurar los índices, consulta Configurar índices.
El siguiente código es un ejemplo de creación de un índice que usa el 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" }
)
El siguiente código es un ejemplo de creación de un índice que usa el algoritmo de fuerza 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
Usa la clase MatchingEngineIndexEndpoint
para crear y recuperar un endpoint. Después de implementar un modelo en tu endpoint, obtendrás una dirección IP que podrás usar para ejecutar tus consultas.
El siguiente código es un ejemplo de cómo crear un endpoint de índice de Matching Engine y, a continuación, desplegar un índice de Matching Engine en él:
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"
)
Siguientes pasos
- Consulta información sobre el SDK de Vertex AI.