Generar texto con un modelo abierto de Gemma y la función AI.GENERATE_TEXT
En este tutorial se muestra cómo crear un modelo remoto basado en el modelo Gemma y, a continuación, cómo usar ese modelo con la función AI.GENERATE_TEXT para extraer palabras clave y realizar un análisis de sentimiento en las reseñas de películas de la tabla pública bigquery-public-data.imdb.reviews.
Permisos obligatorios
Para completar este tutorial, necesitas los siguientes roles de Gestión de Identidades y Accesos (IAM):
- Crear y usar conjuntos de datos, conexiones y modelos de BigQuery:
Administrador de BigQuery (
roles/bigquery.admin). - Concede permisos a la cuenta de servicio de la conexión: administrador de gestión de identidades y accesos del proyecto (
roles/resourcemanager.projectIamAdmin). - Desplegar y retirar modelos en Vertex AI: administrador de Vertex AI (
roles/aiplatform.admin).
Estos roles predefinidos contienen los permisos necesarios para realizar las tareas descritas en este documento. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
- Crea un conjunto de datos:
bigquery.datasets.create - Crea, delega y usa una conexión:
bigquery.connections.* - Definir la conexión predeterminada:
bigquery.config.* - Define los permisos de la cuenta de servicio:
resourcemanager.projects.getIamPolicyyresourcemanager.projects.setIamPolicy - Desplegar y retirar un modelo de Vertex AI:
aiplatform.endpoints.deployaiplatform.endpoints.undeploy
- Crea un modelo y ejecuta la inferencia:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateDatabigquery.models.updateMetadata
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
Costes
En este documento, se utilizan los siguientes componentes facturables de Google Cloud:
- BigQuery ML: You incur costs for the data that you process in BigQuery.
- Vertex AI: You incur costs for calls to the Vertex AI model that's represented by the remote model.
Para generar una estimación de costes basada en el uso previsto,
utiliza la calculadora de precios.
Para obtener más información sobre los precios de BigQuery, consulta la página Precios de BigQuery en la documentación de BigQuery.
Los modelos abiertos que despliegues en Vertex AI se cobran por hora de máquina. Esto significa que la facturación empieza en cuanto el endpoint esté totalmente configurado y continúa hasta que lo desactives. Para obtener más información sobre los precios de Vertex AI, consulta la página de precios de Vertex AI.
Antes de empezar
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection, and Vertex AI APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
Crear conjunto de datos
Crea un conjunto de datos de BigQuery para almacenar tu modelo de aprendizaje automático.
Consola
En la Google Cloud consola, ve a la página BigQuery.
En el panel Explorador, haz clic en el nombre de tu proyecto.
Haga clic en Ver acciones > Crear conjunto de datos.
En la página Crear conjunto de datos, haz lo siguiente:
En ID del conjunto de datos, introduce
bqml_tutorial.En Tipo de ubicación, selecciona Multirregión y, a continuación, EE. UU. (varias regiones de Estados Unidos).
Deje el resto de los ajustes predeterminados como están y haga clic en Crear conjunto de datos.
bq
Para crear un conjunto de datos, usa el comando
bq mk
con la marca --location. Para ver una lista completa de los parámetros posibles, consulta la referencia del comando bq mk --dataset.
Crea un conjunto de datos llamado
bqml_tutorialcon la ubicación de los datos definida comoUSy la descripciónBigQuery ML tutorial dataset:bq --location=US mk -d \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
En lugar de usar la marca
--dataset, el comando usa el acceso directo-d. Si omite-dy--dataset, el comando creará un conjunto de datos de forma predeterminada.Confirma que se ha creado el conjunto de datos:
bq ls
API
Llama al método datasets.insert con un recurso de conjunto de datos definido.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
BigQuery DataFrames
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de BigQuery DataFrames.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local.
Crear el modelo remoto
Crea un modelo remoto que represente un modelo de Vertex AI alojado:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, ejecuta la siguiente instrucción:
CREATE OR REPLACE MODEL `bqml_tutorial.gemma_model` REMOTE WITH CONNECTION DEFAULT OPTIONS ( MODEL_GARDEN_MODEL_NAME = 'publishers/google/models/gemma3@gemma-3-270m-it', MACHINE_TYPE = 'g2-standard-12' );
La consulta tarda hasta 20 minutos en completarse. Después, el modelo gemma_model aparece en el conjunto de datos bqml_tutorial del panel Explorador. Como la consulta usa una instrucción CREATE MODEL para crear un modelo, no hay resultados de la consulta.
Extraer palabras clave
Extrae palabras clave de las reseñas de películas de IMDb mediante el modelo remoto y la función AI.GENERATE_TEXT:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, introduce la siguiente instrucción para extraer palabras clave de 10 reseñas de películas:
-- This function takes your instruction and wraps it with chat template for -- better output quality. -- This is usually the recommended way when using Gemma instruction-tuned models. CREATE TEMP FUNCTION FormatPromptWithChatTemplate(user_instruction STRING) AS ( CONCAT( '<start_of_turn>user\n', user_instruction, '<end_of_turn>\n<start_of_turn>model\n' ) ); SELECT * FROM AI.GENERATE_TEXT( MODEL `bqml_tutorial.gemma_model`, ( SELECT FormatPromptWithChatTemplate( 'Extract the key words from the movie review below: ' || review) AS prompt, * FROM `bigquery-public-data.imdb.reviews` LIMIT 10 ), STRUCT( 0.2 AS temperature, 100 AS max_output_tokens));
Para obtener más información sobre cómo usar plantillas de chat con Gemma, consulta Formato e instrucciones del sistema de Gemma.
El resultado es similar al siguiente, con las columnas no generadas omitidas para mayor claridad:
+----------------------------------------------+-------------------------+-----------------------------+-----+ | result | status | prompt | ... | +----------------------------------------------+-------------------------------------------------------+-----+ | Here are some key words from the | | <start_of_turn>user | | | movie review: * **Romance:** | | Extract the key words from | | | "romantic tryst," "elope" * **Comedy:** | | the movie review below: | | | "Contrived Comedy" * **Burglary:** | | Linda Arvidson (as Jennie) | | | "burglar," "rob," "booty" * **Chase:** | | and Harry Solter (as Frank) | | | "chases," "escape" * **Director:** "D.W. | | are enjoying a romantic | | | Griffith" * **Actors:** "Linda Arvidson,"... | | tryst, when in walks her... | | +----------------------------------------------+-------------------------+-----------------------------+-----+ | Here are some key words from the | | <start_of_turn>user | | | movie review: * **Elderbush Gilch:** The | | Extract the key words from | | | name of the movie being reviewed. * | | the movie review below: | | | **Disappointment:** The reviewer's | | This is the second addition | | | overall feeling about the film. * | | to Frank Baum's personally | | | **Dim-witted:** Describes the story | | produced trilogy of Oz | | | line negatively. * **Moronic, sadistic,... | | films. It's essentially ... | | +----------------------------------------------+-------------------------+-----------------------------+-----+Los resultados incluyen las siguientes columnas:
result: el texto generado.status: el estado de la respuesta de la API de la fila correspondiente. Si la operación se ha realizado correctamente, este valor estará vacío.prompt: la petición que se usa para el análisis de sentimiento.- Todas las columnas de la tabla
bigquery-public-data.imdb.reviews.
Hacer análisis de sentimiento
Realiza un análisis de sentimiento de las reseñas de películas de IMDb usando el modelo remoto y la función AI.GENERATE_TEXT:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, ejecuta la siguiente instrucción para realizar un análisis de sentimiento de 10 reseñas de películas:
-- This function takes your instruction and wraps it with chat template for -- better output quality. -- This is usually the recommended way when using Gemma instruction-tuned models. CREATE TEMP FUNCTION FormatPromptWithChatTemplate(user_instruction STRING) AS ( CONCAT( '<start_of_turn>user\n', user_instruction, '<end_of_turn>\n<start_of_turn>model\n' ) ); SELECT * FROM AI.GENERATE_TEXT( MODEL `bqml_tutorial.gemma_model`, ( SELECT FormatPromptWithChatTemplate( 'Analyze the sentiment of the following movie review and classify it as either POSITIVE or NEGATIVE. \nMovie Review: ' || review) AS prompt, * FROM `bigquery-public-data.imdb.reviews` LIMIT 10 ), STRUCT( 0.2 AS temperature, 128 AS max_output_tokens));
Para obtener más información sobre cómo usar plantillas de chat con Gemma, consulta Formato e instrucciones del sistema de Gemma.
El resultado es similar al siguiente, con las columnas no generadas omitidas para mayor claridad:
+-----------------------------+-------------------------+-----------------------------+-----+ | result | status | prompt | ... | +-----------------------------+-------------------------------------------------------+-----+ | **NEGATIVE** | | <start_of_turn>user | | | | | Analyze the sentiment of | | | | | movie review and classify | | | | | it as either POSITIVE or | | | | | NEGATIVE. Movie Review: | | | | | Although Charlie Chaplin | | | | | made some great short | | | | | comedies in the late... | | +-----------------------------+-------------------------+-----------------------------+-----+ | **NEGATIVE** | | <start_of_turn>user | | | | | Analyze the sentiment of | | | | | movie review and classify | | | | | it as either POSITIVE or | | | | | NEGATIVE. Movie Review: | | | | | Opulent sets and sumptuous | | | | | costumes well photographed | | | | | by Theodor Sparkuhl, and... | | +-----------------------------+-------------------------+-----------------------------+-----+Los resultados incluyen las mismas columnas que se describen en el artículo sobre cómo extraer palabras clave.
Anular despliegue de modelo
Si decides no eliminar tu proyecto como se recomienda, debes quitar el modelo de Gemma de Vertex AI para evitar que se te siga facturando por él. BigQuery anula automáticamente la implementación del modelo tras un periodo de inactividad determinado (6,5 horas de forma predeterminada).
También puedes dejar de implementar el modelo inmediatamente usando la instrucción ALTER MODEL, como se muestra en el siguiente ejemplo:
ALTER MODEL `bqml_tutorial.gemma_model` SET OPTIONS (deploy_model = false);
Para obtener más información, consulta Retirar modelos abiertos de forma automática o inmediata.
Limpieza
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.