Classes de previsão

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:

  1. A maneira preferencial de criar um job de previsão em lote é usar o método batch_predict no Model 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 ou file-list.
    • prediction_format: o formato do arquivo de resposta da previsão em lote: jsonl, csv, bigquery, tf-record, tf-record-gzip ou file-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
    )
    
  2. A segunda maneira de criar um job de previsão em lote é chamar o método BatchPredictionJob.create. O método BatchPredictionJob.create requer quatro parâmetros:

    • job_display_name: um nome que você atribui ao job de previsão em lote. Embora job_display_name seja necessário para BatchPredictionJob.create, é opcional para Model.batch_predict.
    • model_name: o nome ou ID totalmente qualificado do Model 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 ou file-list.
    • predictions_format: o formato do arquivo de resposta da previsão em lote: jsonl, csv, bigquery, tf-record, tf-record-gzip ou file-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:

  1. Crie uma representação vetorial dos seus dados. Os dados podem ser de texto, imagens, vídeo, áudio ou tabular.

  2. 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:

  1. TreeAhConfig usa o algoritmo tree-AH raso (árvore rasa usando hash assimétrico). Use MatchingEngineIndex.create_tree_ah_index para criar um índice que usa o algoritmo do algoritmo tree-AH.
  2. BruteForceConfig utiliza uma pesquisa linear padrão). Use MatchingEngineIndex.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