Genera texto con un modelo abierto de Gemma y la función ML.GENERATE_TEXT
En este instructivo, se muestra cómo crear un modelo remoto basado en el modelo Gemma y, luego, cómo usar ese modelo con la función ML.GENERATE_TEXT
para extraer palabras clave y realizar análisis de opiniones en reseñas de películas de la tabla pública bigquery-public-data.imdb.reviews
.
Permisos necesarios
Para ejecutar este instructivo, necesitas los siguientes roles de Identity and Access Management (IAM):
- Crear y usar conjuntos de datos, conexiones y modelos de BigQuery: Administrador de BigQuery (
roles/bigquery.admin
) - Otorga permisos a la cuenta de servicio de la conexión: Administrador de IAM del proyecto (
roles/resourcemanager.projectIamAdmin
). - Implementar y anular la implementación de modelos en Vertex AI: Administrador de Vertex AI (
roles/aiplatform.admin
).
Estos roles predefinidos contienen los permisos necesarios para realizar las tareas de este documento. Para ver los permisos exactos que son necesarios, expande la sección Permisos necesarios:
Permisos necesarios
- Crea un conjunto de datos:
bigquery.datasets.create
- Crea, delega y usa una conexión:
bigquery.connections.*
- Establece la conexión predeterminada:
bigquery.config.*
- Configura los permisos de la cuenta de servicio:
resourcemanager.projects.getIamPolicy
yresourcemanager.projects.setIamPolicy
- Implementa y anula la implementación de un modelo de Vertex AI:
aiplatform.endpoints.deploy
aiplatform.endpoints.undeploy
- Crea un modelo y ejecuta la inferencia:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Costos
En este documento, usarás 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 costos en función del uso previsto, usa la calculadora de precios.
Para obtener más información sobre los precios de BigQuery, consulta Precios de BigQuery en la documentación de BigQuery.
Los modelos abiertos que implementas en Vertex AI se cobran por hora de máquina. Esto significa que la facturación comienza en cuanto el extremo está completamente configurado y continúa hasta que lo anulas. Para obtener más información sobre los precios de Vertex AI, consulta la página Precios de Vertex AI.
Antes de comenzar
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, BigQuery Connection, and Vertex AI APIs.
Implementa un modelo de Gemma en Vertex AI
Implementa el modelo gemma-2-27b-it
en Vertex AI siguiendo las instrucciones que se indican en Implementa modelos de Model Garden.
Durante la implementación, debes seleccionar Público (extremo compartido) como el valor del campo Acceso al extremo en el flujo de trabajo de implementación.
Crea un conjunto de datos
Crea un conjunto de datos de BigQuery para almacenar tu modelo de AA.
Console
En la consola de Google Cloud , ve a la página BigQuery.
En el panel Explorador, haz clic en el nombre de tu proyecto.
Haz 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, ingresa
bqml_tutorial
.En Tipo de ubicación, selecciona Multirregión y, luego, EE.UU. (varias regiones en Estados Unidos).
Deja la configuración predeterminada restante como está y haz clic en Crear conjunto de datos.
bq
Para crear un conjunto de datos nuevo, usa el comando bq mk
con la marca --location
. Para obtener una lista completa de los parámetros posibles, consulta la
referencia del
comando bq mk --dataset
.
Crea un conjunto de datos llamado
bqml_tutorial
con la ubicación de los datos establecida enUS
y una descripción deBigQuery 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 omites-d
y--dataset
, el comando crea un conjunto de datos de manera predeterminada.Confirma que se haya 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" } }
Permite trabajar con 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. Si deseas obtener más información, consulta Configura ADC para un entorno de desarrollo local.
Crea el modelo remoto
Crea un modelo remoto que represente un modelo de Vertex AI alojado:
En la consola de Google Cloud , ve a la página BigQuery.
En el editor de consultas, ejecuta la siguiente declaración:
CREATE OR REPLACE MODEL `bqml_tutorial.gemma_model` REMOTE WITH CONNECTION DEFAULT OPTIONS (ENDPOINT = 'https://ENDPOINT_REGION-aiplatform.googleapis.com/v1/projects/ENDPOINT_PROJECT_ID/locations/ENDPOINT_REGION/endpoints/ENDPOINT_ID');
Reemplaza lo siguiente:
ENDPOINT_REGION
: Es la región en la que se implementa el modelo abierto.ENDPOINT_PROJECT_ID
: Es el proyecto en el que se implementa el modelo abierto.ENDPOINT_ID
: Es el ID del extremo HTTPS que usa el modelo abierto. Puedes obtener el ID del extremo. Para ello, ubica el modelo abierto en la página Predicción en línea y copia el valor del campo ID.
En el siguiente ejemplo, se muestra el formato de un extremo HTTP válido:
https://us-central1-aiplatform.googleapis.com/v1/projects/myproject/locations/us-central1/endpoints/1234
La consulta tarda varios segundos en completarse, después de eso, el modelo gemma_model
aparece en el conjunto de datos bqml_tutorial
en el panel Explorador.
Debido a que la consulta usa una declaración CREATE MODEL
para crear un modelo, no hay resultados de consultas.
Realiza la extracción de palabras clave
Realiza la extracción de palabras clave en reseñas de películas de IMDB con el modelo remoto y la función ML.GENERATE_TEXT
:
En la consola de Google Cloud , ve a la página BigQuery.
En el Editor de consultas, ingresa la siguiente declaración para realizar la extracción de palabras clave en cinco reseñas de películas:
SELECT * FROM ML.GENERATE_TEXT( MODEL `bqml_tutorial.gemma_model`, ( SELECT CONCAT('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, TRUE AS flatten_json_output));
El resultado es similar al siguiente, con las columnas no generadas omitidas para mayor claridad:
+----------------------------------------------+-------------------------+-----------------------------+-----+ | generated_text | ml_generate_text_status | prompt | ... | +----------------------------------------------+-------------------------------------------------------+-----+ | Here are some key words from the | | Extract the key words from | | | movie review: * **Romance:** | | the movie review below: | | | "romantic tryst," "elope" * **Comedy:** | | Linda Arvidson (as Jennie) | | | "Contrived Comedy" * **Burglary:** | | and Harry Solter (as Frank) | | | "burglar," "rob," "booty" * **Chase:** | | are enjoying a romantic | | | "chases," "escape" * **Director:** "D.W. | | tryst, when in walks her | | | Griffith" * **Actors:** "Linda Arvidson,"... | | father Charles Inslee;... | | +----------------------------------------------+-------------------------+-----------------------------+-----+ | Here are some key words from the | | Extract the key words from | | | movie review: * **Elderbush Gilch:** The | | the movie review below: | | | name of the movie being reviewed. * | | This is the second addition | | | **Disappointment:** The reviewer's | | to Frank Baum's personally | | | overall feeling about the film. * | | produced trilogy of Oz | | | **Dim-witted:** Describes the story | | films. It's essentially the | | | line negatively. * **Moronic, sadistic,... | | same childishness as the... | | +----------------------------------------------+-------------------------+-----------------------------+-----+
Los resultados incluyen las siguientes columnas:
generated_text
: es el texto generado.ml_generate_text_status
: el estado de la respuesta de la API para la fila correspondiente. Si la operación se realizó correctamente, este valor estará vacío.prompt
: el mensaje que se usa para el análisis de opiniones.- Todas las columnas de la tabla
bigquery-public-data.imdb.reviews
.
Realiza análisis de opiniones
Realiza análisis de opiniones en reseñas de películas de IMDB con el modelo remoto y la función ML.GENERATE_TEXT
:
En la consola de Google Cloud , ve a la página BigQuery.
En el Editor de consultas, ejecuta la siguiente declaración para realizar un análisis de opiniones en cinco reseñas de películas:
SELECT * FROM ML.GENERATE_TEXT( MODEL `bqml_tutorial.gemma_model`, ( SELECT CONCAT('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, TRUE AS flatten_json_output));
El resultado es similar al siguiente, con las columnas no generadas omitidas para mayor claridad:
+----------------------------------------------+-------------------------+-----------------------------+-----+ | generated_text | ml_generate_text_status | prompt | ... | +----------------------------------------------+-------------------------------------------------------+-----+ | **Sentiment:** NEGATIVE **Justification:** | | Analyze the sentiment of | | | * **Negative Language:** The reviewer uses | | movie review and classify | | | phrases like "don't quite make it," "come to | | it as either POSITIVE or | | | mind," "quite disappointing," and "not many | | NEGATIVE. Movie Review: | | | laughs." * **Specific Criticisms:** The | | Although Charlie Chaplin | | | reviewer points out specific flaws in the | | made some great short | | | plot and humor, stating that the manager... | | comedies in the late... | | +----------------------------------------------+-------------------------+-----------------------------+-----+ | **Sentiment:** NEGATIVE **Reasoning:** | | Analyze the sentiment of | | | * **Negative Language:** The reviewer uses | | movie review and classify | | | phrases like "poor writing," "static camera- | | it as either POSITIVE or | | | work," "chews the scenery," "all surface and | | NEGATIVE. Movie Review: | | | no depth," "sterile spectacles," which all | | Opulent sets and sumptuous | | | carry negative connotations. * **Comparison | | costumes well photographed | | | to a More Successful Film:**... | | by Theodor Sparkuhl, and... | | +----------------------------------------------+-------------------------+-----------------------------+-----+
Los resultados incluyen las mismas columnas documentadas para Realizar la extracción de palabras clave.
Anular implementación de modelo
Si decides no borrar tu proyecto como se recomienda, asegúrate de anular la implementación del modelo de Gemma en Vertex AI para evitar que se te siga facturando por él.
Limpia
- 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.