Registra y llama a modelos de IA remotos con la administración de extremos de modelos

En esta página, se describe cómo invocar predicciones o generar incorporaciones con un modelo y, luego, registrar el extremo del modelo con la administración de extremos de modelos.

Para obtener más información sobre la función google_ml.create_model(), consulta la Referencia de administración de extremos de modelos.

Antes de comenzar

  • Si el extremo de tu modelo requiere autenticación, habilita la extensión google_ml_integration.

  • Según el proveedor de modelos, configura la autenticación.

  • Asegúrate de usar el nombre de usuario predeterminado postgres para acceder a tu base de datos.

Habilita la extensión

  1. Establece la marca de base de datos google_ml_integration.enable_model_support en on para tu instancia. Para obtener más información sobre cómo configurar marcas de base de datos, consulta Configura marcas de base de datos.

  2. Conéctate a tu instancia principal con un cliente psql o Cloud SQL Studio.

  3. Ejecuta el siguiente comando para asegurarte de que la extensión google_ml_integration se actualice a la versión 1.4.2:

        ALTER EXTENSION google_ml_integration UPDATE TO '1.4.2'
    
  4. Agrega la extensión google_ml_integration versión 1.4.2 con psql:

      CREATE EXTENSION google_ml_integration VERSION '1.4.2';
    
  5. Opcional: Otorga permiso a un usuario de PostgreSQL que no sea superusuario para administrar los metadatos del modelo:

      GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA google_ml TO NON_SUPER_USER;
    

    Reemplaza NON_SUPER_USER por el nombre de usuario de PostgreSQL que no sea superusuario.

Configura la autenticación

En las siguientes secciones, se muestra cómo configurar la autenticación antes de agregar un extremo de modelo de Vertex AI o extremos de modelos alojados en Google Cloud.

Configura la autenticación para Vertex AI

Para usar los extremos de modelos de Google Vertex AI, debes agregar permisos de Vertex AI a la cuenta de servicio de Cloud SQL basada en IAM que usas para conectarte a la base de datos. Para obtener más información sobre la integración con Vertex AI, consulta Integra Cloud SQL en Vertex AI.

Configura la autenticación para modelos alojados de forma personalizada

En esta sección, se explica cómo configurar la autenticación si usas Secret Manager. Para todos los modelos, excepto los extremos de modelos de Vertex AI, puedes almacenar tus claves de API o tokens de portador en Secret Manager.

Si el extremo de tu modelo no controla la autenticación a través de Secret Manager, esta sección es opcional. Por ejemplo, si el extremo de tu modelo usa encabezados HTTP para pasar información de autenticación o no usa autenticación en absoluto, no completes los pasos de esta sección.

Para crear y usar una clave de API o un token portador, completa los siguientes pasos:

  1. Crea un Secret en Secret Manager. Para obtener más información, consulta Crea un secreto y accede a una versión de un secreto.

    El nombre y la ruta de acceso del secreto se usan en la función SQL google_ml.create_sm_secret().

  2. Otorga permisos a la instancia de Cloud SQL para acceder al secreto.

      gcloud secrets add-iam-policy-binding SECRET_ID \
          --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
          --role="roles/secretmanager.secretAccessor"
    

    Reemplaza lo siguiente:

    • SECRET_ID: El ID del secreto en Secret Manager.
    • SERVICE_ACCOUNT_EMAIL: La dirección de correo electrónico de la cuenta de servicio de Cloud SQL basada en IAM. Para encontrar esta dirección de correo electrónico, usa el comando gcloud sql instances describe INSTANCE_NAME y reemplaza INSTANCE_NAME por el nombre de la instancia. El valor que aparece junto al parámetro serviceAccountEmailAddress es la dirección de correo electrónico.

Modelos de incorporación de texto con compatibilidad integrada

En esta sección, se muestra cómo registrar extremos de modelos para la administración de extremos de modelos.

Modelos de incorporación de Vertex AI

La administración de extremos de modelos proporciona compatibilidad integrada con todas las versiones del modelo text-embedding-gecko de Vertex AI. Usa el nombre calificado para establecer la versión del modelo en textembedding-gecko@001 o textembedding-gecko@002.

Debido a que los IDs de extremo de los modelos textembedding-gecko y textembedding-gecko@001 están registrados previamente con la administración de extremos de modelos, puedes usar cualquiera de ellos directamente como el ID del modelo. Para estos modelos, la extensión configura automáticamente las funciones de transformación predeterminadas.

Asegúrate de que la instancia de Cloud SQL y el modelo de Vertex AI que consultas estén en la misma región.

Para registrar el extremo del modelo textembedding-gecko@002, llama a la función create_model:

  CALL
    google_ml.create_model(
      model_id => 'textembedding-gecko@002',
      model_provider => 'google',
      model_qualified_name => 'textembedding-gecko@002',
      model_type => 'text_embedding',
      model_auth_type => 'cloudsql_service_agent_iam');

Modelos de incorporación de texto alojados de forma personalizada

En esta sección, se muestra cómo registrar extremos de modelos personalizados alojados en redes de Google Cloud.

Agregar extremos de modelos de incorporación de texto alojados de forma personalizada implica crear funciones de transformación y, de manera opcional, encabezados HTTP personalizados. Por otro lado, agregar extremos de modelos genéricos alojados de forma personalizada implica, de manera opcional, generar encabezados HTTP personalizados y configurar la URL de solicitud del modelo.

En el siguiente ejemplo, se agrega el extremo del modelo de incorporación de texto custom-embedding-model alojado por Cymbal, que se aloja en Google Cloud. Las funciones de transformación cymbal_text_input_transform y cymbal_text_output_transform se usan para transformar el formato de entrada y salida del modelo al formato de entrada y salida de la función de predicción.

Para registrar extremos de modelos de incorporación de texto alojados de forma personalizada, completa los siguientes pasos:

  1. Llama al secreto almacenado en Secret Manager:

    CALL
      google_ml.create_sm_secret(
        secret_id => 'SECRET_ID',
        secret_path => 'projects/project-id/secrets/SECRET_MANAGER_SECRET_ID/versions/VERSION_NUMBER');
    

    Reemplaza lo siguiente:

    • SECRET_ID: Es el ID secreto que estableces y que se usa posteriormente cuando registras un extremo de modelo, por ejemplo, key1.
    • SECRET_MANAGER_SECRET_ID: Es el ID de secreto establecido en Secret Manager cuando creaste el secreto.
    • PROJECT_ID: El ID del proyecto de Google Cloud.
    • VERSION_NUMBER: El número de versión del ID secreto.
  2. Crea las funciones de transformación de entrada y salida según la siguiente firma para la función de predicción de los extremos del modelo de incorporación de texto. Para obtener más información sobre cómo crear funciones de transformación, consulta el ejemplo de funciones de transformación.

    A continuación, se incluyen ejemplos de funciones de transformación específicas del extremo del modelo de incorporación de texto custom-embedding-model:

    -- Input Transform Function corresponding to the custom model endpoint
    CREATE OR REPLACE FUNCTION cymbal_text_input_transform(model_id VARCHAR(100), input_text TEXT)
    RETURNS JSON
    LANGUAGE plpgsql
    AS $$
    DECLARE
      transformed_input JSON;
      model_qualified_name TEXT;
    BEGIN
      SELECT json_build_object('prompt', json_build_array(input_text))::JSON INTO transformed_input;
      RETURN transformed_input;
    END;
    $$;
    -- Output Transform Function corresponding to the custom model endpoint
    CREATE OR REPLACE FUNCTION cymbal_text_output_transform(model_id VARCHAR(100), response_json JSON)
    RETURNS REAL[]
    LANGUAGE plpgsql
    AS $$
    DECLARE
      transformed_output REAL[];
    BEGIN
      SELECT ARRAY(SELECT json_array_elements_text(response_json->0)) INTO transformed_output;
      RETURN transformed_output;
    END;
    $$;
    
  3. Llama a la función de creación de modelos para registrar el extremo del modelo de incorporación personalizado:

    CALL
      google_ml.create_model(
        model_id => 'MODEL_ID',
        model_request_url => 'REQUEST_URL',
        model_provider => 'custom',
        model_type => 'text_embedding',
        model_auth_type => 'secret_manager',
        model_auth_id => 'SECRET_ID',
        model_qualified_name => 'MODEL_QUALIFIED_NAME',
        model_in_transform_fn => 'cymbal_text_input_transform',
        model_out_transform_fn => 'cymbal_text_output_transform');
    

    Reemplaza lo siguiente:

    • MODEL_ID: Obligatorio. Un ID único para el extremo del modelo que definas (por ejemplo, custom-embedding-model). Se hace referencia a este ID de modelo para los metadatos que el extremo del modelo necesita para generar incorporaciones o invocar predicciones.
    • REQUEST_URL: Obligatorio. Es el extremo específico del modelo cuando se agregan incorporaciones de texto personalizadas y extremos de modelos genéricos, por ejemplo, https://cymbal.com/models/text/embeddings/v1. Asegúrate de que se pueda acceder al extremo del modelo a través de una dirección IP interna. La administración de extremos de modelos no admite direcciones IP externas.
    • MODEL_QUALIFIED_NAME: Es obligatorio si el extremo de tu modelo usa un nombre calificado. Es el nombre completamente calificado en caso de que el extremo del modelo tenga varias versiones.
    • SECRET_ID: Es el ID secreto que usaste antes en el procedimiento google_ml.create_sm_secret().

Modelos genéricos

En esta sección, se muestra cómo registrar un extremo de modelo genérico gemini-pro desde Vertex AI Model Garden, que no tiene compatibilidad integrada. Puedes registrar cualquier extremo de modelo genérico alojado en Google Cloud.

Cloud SQL solo admite extremos de modelos que están disponibles a través de Model Garden de Vertex AI y extremos de modelos alojados en redes de Google Cloud.

Modelo de Gemini

En el siguiente ejemplo, se agrega el extremo del modelo gemini-1.0-pro desde Vertex AI Model Garden.

Para registrar el extremo del modelo gemini-1.0-pro, llama a la función create model:

```sql
CALL
  google_ml.create_model(
    model_id => 'MODEL_ID',
    model_request_url => 'https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-1.0-pro:streamGenerateContent',
    model_provider => 'google',
    model_auth_type => 'cloudsql_service_agent_iam');
```

Replace the following:
* <code><var>MODEL_ID</var></code>: a unique ID for the model endpoint that you define (for example,<br> `gemini-1`). This model ID is referenced for metadata that the model endpoint needs to generate embeddings or invoke predictions.
* <code><var>PROJECT_ID</var></code>: the ID of your Google Cloud project.

Para obtener más información, consulta cómo invocar predicciones para extremos de modelos genéricos.

¿Qué sigue?