O SDK da Vertex AI inclui as classes de previsão a seguir. Uma classe é para previsões em lote. As outras estão relacionadas a previsões on-line ou do Vector Search. Para mais informações, consulte Visão geral de como receber previsões na Vertex AI.
Classe de previsão em lote
Uma previsão em lote é um grupo de solicitações de previsão assíncronas. Solicite previsões em lote diretamente do
recurso do modelo sem precisar implantá-lo em um endpoint. As previsões em lote são adequadas para quando você não precisa de uma resposta imediata e quer processar dados com uma única solicitação.
BatchPredictionJob
é a única classe no
SDK da Vertex AI que é específica para previsões em lote.
BatchPredictionJob
A classe BatchPredictionJob
representa um
grupo de solicitações de previsão assíncronas. Há duas maneiras de criar um job de previsão em lote:
A maneira preferencial de criar um job de previsão em lote é usar o método
batch_predict
noModel
treinado. Esse método requer os seguintes parâmetros:instances_format
: o formato do arquivo de solicitação de previsão em lote:jsonl
,csv
,bigquery
,tf-record
,tf-record-gzip
oufile-list
.prediction_format
: o formato do arquivo de resposta da previsão em lote:jsonl
,csv
,bigquery
,tf-record
,tf-record-gzip
oufile-list
.gcs_source:
Uma lista de um ou mais caminhos do Cloud Storage para suas solicitações de previsão em lote.gcs_destination_prefix
: o caminho do Cloud Storage em que a Vertex AI grava as previsões.
O código abaixo é um exemplo de como chamar
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 )
A segunda maneira de criar um job de previsão em lote é chamar o método
BatchPredictionJob.create
. O métodoBatchPredictionJob.create
requer quatro parâmetros:job_display_name
: um nome que você atribui ao job de previsão em lote. Emborajob_display_name
seja necessário paraBatchPredictionJob.create
, é opcional paraModel.batch_predict
.model_name
: o nome ou ID totalmente qualificado doModel
treinado usado para o job de previsão em lote.instances_format
: o formato do arquivo de solicitação de previsão em lote:jsonl
,csv
,bigquery
,tf-record
,tf-record-gzip
oufile-list
.predictions_format
: o formato do arquivo de resposta da previsão em lote:jsonl
,csv
,bigquery
,tf-record
,tf-record-gzip
oufile-list
.
Classes de previsão on-line
As previsões on-line são solicitações síncronas feitas em um endpoint de modelo. É preciso implantar o modelo em um endpoint antes de fazer uma solicitação de previsão on-line. Use as previsões on-line quando quiser previsões geradas com base na entrada do aplicativo ou quando precisar de uma resposta rápida.
Endpoint
Antes de receber previsões on-line do modelo, você precisa implantá-lo em um endpoint. Ao implantar um modelo em um endpoint, você associa os recursos de máquina física ao modelo para que ele possa exibir previsões on-line.
É possível implantar mais de um modelo em um endpoint. Também é possível implantar um modelo em mais de um endpoint. Para mais informações, consulte Considerações para implantar modelos.
Para criar um recurso Endpoint
, implante seu
modelo. Quando você chama o método
Model.deploy
, ele cria e retorna um Endpoint
.
Veja a seguir um exemplo de snippet de código que mostra como criar um job de treinamento personalizado, criar e treinar um modelo e, em seguida, implantá-lo em um 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
Um endpoint particular é como um recurso Endpoint
,
exceto que as previsões são enviadas por uma rede segura para o serviço de previsão on-line
da Vertex AI. Use um endpoint particular se sua organização quiser
manter todo o tráfego particular.
Para usar um endpoint particular, configure a Vertex AI para fazer peering com uma nuvem privada virtual (VPC). Uma VPC é necessária para que o endpoint de previsão particular se conecte diretamente à Vertex AI. Para mais informações, consulte Configurar o peering de rede VPC e Usar endpoints particulares para previsão on-line.
ModelDeploymentMonitoringJob
Use o recurso ModelDeploymentMonitoringJob
para monitorar seu modelo e receber alertas se ele desviar de uma maneira que possa afetar a qualidade das previsões do seu modelo.
Quando os dados de entrada se desviam dos dados usados para treinar o modelo, o desempenho do modelo pode se deteriorar, mesmo que o próprio modelo não tenha mudado. O monitoramento de modelos analisa a data de entrada do atributo skew e drift:
- O skew ocorre quando a distribuição de dados do recurso de produção desvia dos dados do recurso usados para treinar o modelo.
- O drift ocorre quando os dados do recurso de produção mudam significativamente com o tempo.
Para mais informações, consulte Introdução ao Vertex AI Model Monitoring. Para um exemplo de como implementar o monitoramento da Vertex AI com o SDK da Vertex AI, consulte o notebook do modelo da Vertex AI com atribuições de recursos explicáveis de IA no GitHub.
Classes de previsão do Vector Search
O Vector Search é um serviço gerenciado que cria índices de similaridade, ou vetores, para executar a correspondência de similaridade. Há duas etapas gerais para realizar a correspondência por similaridade:
Crie uma representação vetorial dos seus dados. Os dados podem ser de texto, imagens, vídeo, áudio ou tabular.
O Vector Search usa os endpoints dos vetores criados para realizar uma pesquisa de vetores semelhantes em alta escala e com baixa latência.
Para mais informações, consulte a Visão geral do Vector Search e o notebook Criar um índice de pesquisa de vetor no GitHub.
MatchingEngineIndex
A classe MatchingEngineIndex
representa
os índices, ou vetores, criados e usados pelo Vector Search para
executar a pesquisa de similaridade.
Há dois algoritmos de pesquisa que podem ser usados para o índice:
TreeAhConfig
usa o algoritmo tree-AH raso (árvore rasa usando hash assimétrico). UseMatchingEngineIndex.create_tree_ah_index
para criar um índice que usa o algoritmo do algoritmo tree-AH.BruteForceConfig
utiliza uma pesquisa linear padrão). UseMatchingEngineIndex.create_brute_force_index
para criar um índice que usa uma pesquisa linear padrão.
Para mais informações sobre como configurar os índices, consulte Configurar índices.
O código a seguir é um exemplo de como criar um índice que usa o 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" }
)
O código a seguir é um exemplo de como criar um índice que usa o algoritmo de força 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
Use a classe
MatchingEngineIndexEndpoint
para criar e recuperar um endpoint. Depois de implantar um modelo no endpoint,
você receberá um endereço IP usado para executar as consultas.
O código abaixo é um exemplo de como criar um endpoint de índice de mecanismo correspondente e implantar um índice de mecanismo correspondente nele:
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"
)
A seguir
- Saiba mais sobre o SDK Vertex AI.