Criar um endpoint público

Para implantar um modelo usando a CLI gcloud ou a API Gemini Enterprise, você primeiro precisa criar um endpoint público.

Se você já tiver um endpoint público, pule esta etapa e acesse Implantar um modelo usando a CLI gcloud ou a API Gemini Enterprise.

Este documento descreve o processo de criação de um novo endpoint público.

O tempo limite de solicitação padrão para um endpoint público dedicado é de 10 minutos. Na API Gemini Enterprise e no SDK da Agent Platform para Python, é possível especificar um tempo limite de solicitação diferente adicionando um objeto clientConnectionConfig que contenha um novo inferenceTimeout valor, conforme mostrado no exemplo a seguir. O valor máximo de tempo limite é de 3.600 segundos (1 hora).

Google Cloud Console do

  1. No Google Cloud console, na seção "Agent Platform", acesse a página Previsão on-line.
    Acessar a página "Previsão on-line"
  2. Clique em Criar.
  3. No painel Novo endpoint:
    1. Insira o Nome do endpoint.
    2. Selecione Padrão para o tipo de acesso.
    3. Marque a caixa de seleção Ativar DNS dedicado.
    4. Clique em Continuar.
  4. Clique em Concluído.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • LOCATION_ID: sua região.
  • PROJECT_ID: o [ID do projeto](/resource-manager/docs/creating-managing-projects#identifiers). .
  • ENDPOINT_NAME: o nome de exibição do endpoint.
  • INFERENCE_TIMEOUT_SECS: (opcional) número de segundos no campo opcional.inferenceTimeout

Método HTTP e URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints

Corpo JSON da solicitação:

{
  "display_name": "ENDPOINT_NAME",
  "dedicatedEndpointEnabled": true,
  "clientConnectionConfig": {
    "inferenceTimeout": {
      "seconds": INFERENCE_TIMEOUT_SECS
    }
  }
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/endpoints/ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateEndpointOperationMetadata",
    "genericMetadata": {
      "createTime": "2020-11-05T17:45:42.812656Z",
      "updateTime": "2020-11-05T17:45:42.812656Z"
    }
  }
}
Pesquise o status da operação até que a resposta inclua "done": true.

Python

Antes de testar esta amostra, siga as instruções de configuração Python no Guia de início rápido do Agent Platform: como usar bibliotecas de cliente.

Para autenticar no Agent Platform, configure o Application Default Credentials. Se quiser mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

Substitua:

from google.cloud import aiplatform

PROJECT_ID = "PROJECT_ID"
LOCATION = "LOCATION_ID"
ENDPOINT_NAME = "ENDPOINT_NAME"
INFERENCE_TIMEOUT_SECS = "INFERENCE_TIMEOUT_SECS"

aiplatform.init(
    project=PROJECT_ID,
    location=LOCATION,
    api_endpoint=ENDPOINT_NAME,
)

dedicated_endpoint = aiplatform.Endpoint.create(
    display_name=DISPLAY_NAME,
    dedicated_endpoint_enabled=True,
    sync=True,
    inference_timeout=INFERENCE_TIMEOUT_SECS,
)

Configuração de tempo limite de inferência

A duração padrão do tempo limite para solicitações de inferência é de 600 segundos (10 minutos). Esse tempo limite será aplicado se um tempo limite de inferência explícito não for especificado durante a criação do endpoint. O valor máximo de tempo limite permitido é de uma hora.

Para configurar o tempo limite de inferência durante a criação do endpoint, use o parâmetro inference_timeout, conforme demonstrado no snippet de código a seguir:

timeout_endpoint = aiplatform.Endpoint.create(
    display_name="dedicated-endpoint-with-timeout",
    dedicated_endpoint_enabled=True,
    inference_timeout=1800,  # Unit: Seconds
)

As modificações na configuração de tempo limite de inferência após a criação do endpoint podem ser realizadas usando o método EndpointService.UpdateEndpointLongRunning. O método EndpointService.UpdateEndpoint não oferece suporte a essa modificação.

Geração de registros de solicitação/resposta

O recurso de geração de registros de solicitação/resposta captura interações da API. No entanto, para obedecer às limitações do BigQuery, os payloads que excederem 10 MB de tamanho serão excluídos dos registros.

Para ativar e configurar a geração de registros de solicitação/resposta durante a criação do endpoint, use os parâmetros a seguir, conforme ilustrado no snippet de código subsequente:

logging_endpoint = aiplatform.Endpoint.create(
    display_name="dedicated-endpoint-with-logging",
    dedicated_endpoint_enabled=True,
    enable_request_response_logging=True,
    request_response_logging_sampling_rate=1.0,  # Default: 0.0
    request_response_logging_bq_destination_table="bq://test_logging",
    # If not set, a new BigQuery table will be created with the name:
    # bq://{project_id}.logging_{endpoint_display_name}_{endpoint_id}.request_response_logging
)

As modificações nas configurações de geração de registros de solicitação/resposta após a criação do endpoint podem ser realizadas usando o método EndpointService.UpdateEndpointLongRunning. O método EndpointService.UpdateEndpoint não oferece suporte a essa modificação.

Criar um endpoint público compartilhado

Google Cloud Console do

  1. No Google Cloud console, na seção "Agent Platform", acesse a página Previsão on-line.
    Acessar a página "Previsão on-line"
  2. Clique em Criar.
  3. No painel Novo endpoint:
    1. Insira o Nome do endpoint.
    2. Selecione Padrão para o tipo de acesso.
    3. Clique em Continuar.
  4. Clique em Concluído.

gcloud

O exemplo a seguir usa o gcloud ai endpoints create comando:

gcloud ai endpoints create \
    --region=LOCATION_ID \
    --display-name=ENDPOINT_NAME

Substitua:

  • LOCATION_ID: A região em que você está usando o Agent Platform.
  • ENDPOINT_NAME: o nome de exibição do endpoint.

A ferramenta CLI do Google Cloud pode levar alguns segundos para criar o endpoint.

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • LOCATION_ID: sua região.
  • PROJECT_ID: o [ID do projeto](/resource-manager/docs/creating-managing-projects#identifiers). .
  • ENDPOINT_NAME: o nome de exibição do endpoint.

Método HTTP e URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/endpoints

Corpo JSON da solicitação:

{
  "display_name": "ENDPOINT_NAME"
}

Para enviar a solicitação, expanda uma destas opções:

Você receberá uma resposta JSON semelhante a esta:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/endpoints/ENDPOINT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateEndpointOperationMetadata",
    "genericMetadata": {
      "createTime": "2020-11-05T17:45:42.812656Z",
      "updateTime": "2020-11-05T17:45:42.812656Z"
    }
  }
}
Pesquise o status da operação até que a resposta inclua "done": true.

Terraform

O exemplo a seguir usa o google_vertex_ai_endpoint recurso do Terraform para criar um endpoint.

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

# Endpoint name must be unique for the project
resource "random_id" "endpoint_id" {
  byte_length = 4
}

resource "google_vertex_ai_endpoint" "default" {
  name         = substr(random_id.endpoint_id.dec, 0, 10)
  display_name = "sample-endpoint"
  description  = "A sample Vertex AI endpoint"
  location     = "us-central1"
  labels = {
    label-one = "value-one"
  }
}

Java

Antes de testar esta amostra, siga as instruções de configuração do Java no Guia de início rápido da Agent Platform: como usar bibliotecas de cliente.

Para autenticar no Agent Platform, configure o Application Default Credentials. Se quiser mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.


import com.google.api.gax.longrunning.OperationFuture;
import com.google.cloud.aiplatform.v1.CreateEndpointOperationMetadata;
import com.google.cloud.aiplatform.v1.Endpoint;
import com.google.cloud.aiplatform.v1.EndpointServiceClient;
import com.google.cloud.aiplatform.v1.EndpointServiceSettings;
import com.google.cloud.aiplatform.v1.LocationName;
import java.io.IOException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class CreateEndpointSample {

  public static void main(String[] args)
      throws IOException, InterruptedException, ExecutionException, TimeoutException {
    // TODO(developer): Replace these variables before running the sample.
    String project = "YOUR_PROJECT_ID";
    String endpointDisplayName = "YOUR_ENDPOINT_DISPLAY_NAME";
    createEndpointSample(project, endpointDisplayName);
  }

  static void createEndpointSample(String project, String endpointDisplayName)
      throws IOException, InterruptedException, ExecutionException, TimeoutException {
    EndpointServiceSettings endpointServiceSettings =
        EndpointServiceSettings.newBuilder()
            .setEndpoint("us-central1-aiplatform.googleapis.com:443")
            .build();

    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests. After completing all of your requests, call
    // the "close" method on the client to safely clean up any remaining background resources.
    try (EndpointServiceClient endpointServiceClient =
        EndpointServiceClient.create(endpointServiceSettings)) {
      String location = "us-central1";
      LocationName locationName = LocationName.of(project, location);
      Endpoint endpoint = Endpoint.newBuilder().setDisplayName(endpointDisplayName).build();

      OperationFuture<Endpoint, CreateEndpointOperationMetadata> endpointFuture =
          endpointServiceClient.createEndpointAsync(locationName, endpoint);
      System.out.format("Operation name: %s\n", endpointFuture.getInitialFuture().get().getName());
      System.out.println("Waiting for operation to finish...");
      Endpoint endpointResponse = endpointFuture.get(300, TimeUnit.SECONDS);

      System.out.println("Create Endpoint Response");
      System.out.format("Name: %s\n", endpointResponse.getName());
      System.out.format("Display Name: %s\n", endpointResponse.getDisplayName());
      System.out.format("Description: %s\n", endpointResponse.getDescription());
      System.out.format("Labels: %s\n", endpointResponse.getLabelsMap());
      System.out.format("Create Time: %s\n", endpointResponse.getCreateTime());
      System.out.format("Update Time: %s\n", endpointResponse.getUpdateTime());
    }
  }
}

Node.js

Antes de testar esta amostra, siga as instruções de configuração Node.js no Guia de início rápido do Agent Platform: como usar bibliotecas de cliente.

Para autenticar no Agent Platform, configure o Application Default Credentials. Se quiser mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.

/**
 * TODO(developer): Uncomment these variables before running the sample.\
 * (Not necessary if passing values as arguments)
 */

// const endpointDisplayName = 'YOUR_ENDPOINT_DISPLAY_NAME';
// const project = 'YOUR_PROJECT_ID';
// const location = 'YOUR_PROJECT_LOCATION';

// Imports the Google Cloud Endpoint Service Client library
const {EndpointServiceClient} = require('@google-cloud/aiplatform');

// Specifies the location of the api endpoint
const clientOptions = {
  apiEndpoint: 'us-central1-aiplatform.googleapis.com',
};

// Instantiates a client
const endpointServiceClient = new EndpointServiceClient(clientOptions);

async function createEndpoint() {
  // Configure the parent resource
  const parent = `projects/${project}/locations/${location}`;
  const endpoint = {
    displayName: endpointDisplayName,
  };
  const request = {
    parent,
    endpoint,
  };

  // Get and print out a list of all the endpoints for this resource
  const [response] = await endpointServiceClient.createEndpoint(request);
  console.log(`Long running operation : ${response.name}`);

  // Wait for operation to complete
  await response.promise();
  const result = response.result;

  console.log('Create endpoint response');
  console.log(`\tName : ${result.name}`);
  console.log(`\tDisplay name : ${result.displayName}`);
  console.log(`\tDescription : ${result.description}`);
  console.log(`\tLabels : ${JSON.stringify(result.labels)}`);
  console.log(`\tCreate time : ${JSON.stringify(result.createTime)}`);
  console.log(`\tUpdate time : ${JSON.stringify(result.updateTime)}`);
}
createEndpoint();

Python

Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.

def create_endpoint_sample(
    project: str,
    display_name: str,
    location: str,
):
    aiplatform.init(project=project, location=location)

    endpoint = aiplatform.Endpoint.create(
        display_name=display_name,
        project=project,
        location=location,
    )

    print(endpoint.display_name)
    print(endpoint.resource_name)
    return endpoint

A seguir