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 plataforma de agentes do Gemini Enterprise.
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_predictnoModeltreinado. 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-gzipoufile-list.prediction_format: o formato do arquivo de resposta da previsão em lote:jsonl,csv,bigquery,tf-record,tf-record-gzipoufile-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 plataforma de agentes do Gemini Enterprise 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.createrequer quatro parâmetros:job_display_name: um nome que você atribui ao job de previsão em lote. Emborajob_display_nameseja necessário paraBatchPredictionJob.create, é opcional paraModel.batch_predict.model_name: o nome ou ID totalmente qualificado doModeltreinado 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-gzipoufile-list.predictions_format: o formato do arquivo de resposta da previsão em lote:jsonl,csv,bigquery,tf-record,tf-record-gzipoufile-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 Plataforma de Agentes do Gemini Enterprise. Use um endpoint particular se sua organização quiser
manter todo o tráfego particular.
Para usar um endpoint particular, configure a Plataforma de Agentes do Gemini Enterprise para fazer peering com uma nuvem privada virtual (VPC). Uma VPC é necessária para que o endpoint de previsão particular se conecte diretamente à plataforma de agentes do Gemini Enterprise. 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 Gemini Enterprise: monitoramento de modelos da plataforma de agentes. Para um exemplo de como implementar o monitoramento da plataforma de agentes do Gemini Enterprise com o SDK da Vertex AI, consulte o notebook Monitoramento do modelo da plataforma de agentes do Gemini Enterprise com atribuições de recursos de IA explicável 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:
TreeAhConfigusa o algoritmo tree-AH raso (árvore rasa usando hash assimétrico). UseMatchingEngineIndex.create_tree_ah_indexpara criar um índice que usa o algoritmo do algoritmo tree-AH.BruteForceConfigutiliza uma pesquisa linear padrão). UseMatchingEngineIndex.create_brute_force_indexpara 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.