LLM solo de SQL con BigQuery ML usando la API de PaLM de Vertex AI

1. Introducción

En este codelab, enumeré los pasos para resumir el código fuente a partir de repositorios de GitHub y identificar el lenguaje de programación en el repositorio con el modelo de lenguaje grande de Vertex AI para generación de texto ( text-bison) como una función remota alojada en BigQuery. Gracias al Proyecto de archivo de GitHub, ahora tenemos un resumen completo de más de 2.8 millones de repositorios de código abierto de GitHub en Conjuntos de datos públicos de Google BigQuery. La lista de servicios usados es la siguiente:

  1. BigQuery ML
  2. API de PaLM de Vertex AI

Qué compilarás

Crearás

  • Un conjunto de datos de BigQuery que contenga el modelo
  • Un modelo de BigQuery que aloja la API de PaLM de Vertex AI como función remota
  • Una conexión externa para establecer la conexión entre BigQuery y Vertex AI

2. Requisitos

  • Un navegador, como Chrome o Firefox.
  • Un proyecto de Google Cloud con la facturación habilitada.

3. Antes de comenzar

  1. En la consola de Google Cloud, en la página del selector de proyectos, selecciona o crea un proyecto de Google Cloud.
  2. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén más información para verificar si la facturación está habilitada en un proyecto.
  3. Asegúrate de que todas las APIs necesarias (API de BigQuery, API de Vertex AI, API de BigQuery Connection) estén habilitadas.
  4. Usarás Cloud Shell, un entorno de línea de comandos que se ejecuta en Google Cloud y que viene precargado con bq. Consulta la documentación para ver los comandos y su uso de gcloud

En la consola de Cloud, haz clic en Activar Cloud Shell en la esquina superior derecha:

51622c00acec2fa.png

Si tu proyecto no está configurado, usa el siguiente comando para hacerlo:

gcloud config set project <YOUR_PROJECT_ID>
  1. Ingresa la siguiente URL en tu navegador para navegar directamente a la consola de BigQuery: https://console.cloud.google.com/bigquery

4. Prepara datos

En este caso de uso, usamos el contenido del código fuente del conjunto de datos github_repos en los conjuntos de datos públicos de Google BigQuery. Para usar esto, busca “github_repos” en la consola de BigQuery. y presiona Enter. Haz clic en la estrella junto al conjunto de datos que aparece como resultado de la búsqueda. Luego, haz clic en “MOSTRAR SOLO CON ESTRELLAS”. para ver el conjunto de datos solo en los conjuntos de datos públicos.

dc6bf1e2fa6bba8a.png

Expande las tablas en el conjunto de datos para ver el esquema y la vista previa de los datos. Vamos a usar sample_contents, que solo contiene una muestra (10%) de los datos completos en el índice. A continuación, se muestra una vista previa de los datos:

e021c689c56abf22.png

5. Cómo crear el conjunto de datos de BigQuery

Un conjunto de datos de BigQuery es una colección de tablas. Todas las tablas en un conjunto de datos se almacenan en la misma ubicación de datos. También puedes adjuntar controles de acceso personalizados para limitar el acceso a un conjunto de datos y sus tablas.

Crea un conjunto de datos en la región “US” (o cualquier región de nuestra preferencia) llamada bq_llm.

c67e9f929629739a.png

Este conjunto de datos alojará el modelo de AA que crearemos en los próximos pasos. Por lo general, también almacenaríamos los datos que usamos en la aplicación de AA en una tabla en este conjunto de datos. Sin embargo, en nuestro caso de uso, los datos ya se encuentran en un conjunto de datos públicos de BigQuery, haremos referencia a ellos directamente desde el conjunto de datos recién creado, según sea necesario. Si quieres hacer este proyecto en tu propio conjunto de datos alojado en un archivo CSV (o en cualquier otro archivo), puedes cargar tus datos en un conjunto de datos de BigQuery en una tabla ejecutando el siguiente comando en la terminal de Cloud Shell:

bq load --source_format=CSV --skip_leading_rows=1 bq_llm.table_to_hold_your_data \
./your_file.csv \ text:string,label:string

6. Creando conexión externa

Crea una conexión externa (habilita la API de conexión de BigQuery si aún no lo hiciste) y anota el ID de la cuenta de servicio de los detalles de configuración de la conexión:

  1. Haz clic en el botón +AGREGAR en el panel del Explorador de BigQuery (en el lado izquierdo de la consola de BigQuery) y, luego, en “Conexión a fuentes de datos externas”. en las fuentes populares enumeradas
  2. Selecciona el Tipo de conexión como “BigLake and remote functions”. y proporcionas "llm-conn" como ID de conexión

6b75042881eaec5f.png

  1. Una vez que se cree la conexión, toma nota de la cuenta de servicio generada a partir de los detalles de configuración de la conexión.

7. Otorga permisos

En este paso, otorgaremos permisos a la cuenta de servicio para que acceda al servicio de Vertex AI:

Abre IAM y agrega la cuenta de servicio que copiaste después de crear la conexión externa como principal y selecciona “Usuario de Vertex AI”. Rol

ff8e1d730879f972.png

8. Crea un modelo de AA remoto

Crea el modelo remoto que representa un modelo de lenguaje grande alojado de Vertex AI:

CREATE OR REPLACE MODEL bq_llm.llm_model
  REMOTE WITH CONNECTION `us.llm-conn`
  OPTIONS (remote_service_type = 'CLOUD_AI_LARGE_LANGUAGE_MODEL_V1');

Crea un modelo llamado llm_model en el conjunto de datos bq_llm que aprovecha la API CLOUD_AI_LARGE_LANGUAGE_MODEL_V1 de Vertex AI como función remota. Este proceso puede tomar varios segundos en completarse.

9. Genera texto con el modelo de AA

Una vez creado el modelo, úsalo para generar, resumir o categorizar texto.

SELECT
  ml_generate_text_result['predictions'][0]['content'] AS generated_text,
  ml_generate_text_result['predictions'][0]['safetyAttributes']
    AS safety_attributes,
  * EXCEPT (ml_generate_text_result)
FROM
  ML.GENERATE_TEXT(
    MODEL `bq_llm.llm_model`,
    (
  SELECT
        CONCAT('Can you read the code in the following text and generate a summary for what the code is doing and what language it is written in:', content)
        AS prompt from `bigquery-public-data.github_repos.sample_contents`
          limit 5
    ),
    STRUCT(
      0.2 AS temperature,
      100 AS max_output_tokens));

**Explicación:

ml_generate_text_result** es la respuesta del modelo de generación de texto en formato JSON que incluye atributos de contenido y de seguridad: a. El contenido representa el resultado de texto generado b. Los atributos de seguridad representan el filtro de contenido integrado con un umbral ajustable que se habilita en la API de Vertex AI Palm para evitar respuestas no deseadas o imprevistas del modelo grande de lenguaje. La respuesta se bloquea si infringe el umbral de seguridad.

ML.GENERATE_TEXT es la construcción que usas en BigQuery para acceder al LLM de Vertex AI para realizar tareas de generación de texto

CONCAT adjunta tu instrucción PROMPT y el registro de la base de datos.

github_repos es el nombre del conjunto de datos y sample_contents es el nombre de la tabla que contiene los datos que usaremos en el diseño de la instrucción.

La temperatura es el parámetro de la instrucción para controlar la aleatorización de la respuesta; cuanto menor, mejor en términos de relevancia.

Max_output_tokens es la cantidad de palabras que deseas como respuesta.

La respuesta de la consulta luce de la siguiente manera:

1156f6eecb548cd5.png

10. Compacta el resultado de la consulta

Compactemos el resultado para no tener que decodificar el JSON de forma explícita en la consulta:

SELECT *
FROM
  ML.GENERATE_TEXT(
    MODEL `bq_llm.llm_model`,
    (
  SELECT
        CONCAT('Can you read the code in the following text and generate a summary for what the code is doing and what language it is written in:', content)
        AS prompt from `bigquery-public-data.github_repos.sample_contents`
          limit 5
        ),
    STRUCT(
      0.2 AS temperature,
      100 AS max_output_tokens,
      TRUE AS flatten_json_output));

**Explicación:

Flatten_json_output** representa el valor booleano, que si se configura como verdadero, muestra un texto comprensible plano extraído de la respuesta de JSON.

La respuesta de la consulta luce de la siguiente manera:

3b662ef7d3ba9263.png

11. Limpia

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta publicación:

  1. En la consola de Google Cloud, ve a la página Administrar recursos.
  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrarlo.

12. ¡Felicitaciones!

¡Felicitaciones! Usaste correctamente un LLM de generación de texto de Vertex AI de manera programática para realizar análisis de texto en tus datos solo con consultas en SQL. Consulta la documentación del producto Vertex AI LLM para obtener más información sobre los modelos disponibles.