Gerar texto usando um modelo aberto do Gemma e a função ML.GENERATE_TEXT
Neste tutorial, mostramos como criar um
modelo remoto
baseado no
modelo Gemma
e como usar esse modelo com a
função ML.GENERATE_TEXT
para extrair palavras-chave e realizar análises de sentimento em resenhas de filmes
na tabela pública bigquery-public-data.imdb.reviews
.
Permissões necessárias
Para seguir este tutorial, você precisa dos seguintes papéis do Identity and Access Management (IAM):
- Criar e usar conjuntos de dados, conexões e modelos do BigQuery: administrador do BigQuery (
roles/bigquery.admin
). - Conceda permissões à conta de serviço da conexão: administrador do IAM do projeto (
roles/resourcemanager.projectIamAdmin
). - Implantar e remover a implantação de modelos na Vertex AI: administrador da Vertex AI
(
roles/aiplatform.admin
).
Esses papéis predefinidos contêm as permissões necessárias para executar as tarefas neste documento. Para acessar as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
- Criar um conjunto de dados:
bigquery.datasets.create
- Criar, delegar e usar uma conexão:
bigquery.connections.*
- Defina a conexão padrão:
bigquery.config.*
- Defina as permissões da conta de serviço:
resourcemanager.projects.getIamPolicy
eresourcemanager.projects.setIamPolicy
- Implantar e remover a implantação de um modelo da Vertex AI:
aiplatform.endpoints.deploy
aiplatform.endpoints.undeploy
- Crie um modelo e execute a inferência:
bigquery.jobs.create
bigquery.models.create
bigquery.models.getData
bigquery.models.updateData
bigquery.models.updateMetadata
Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.
Custos
Neste documento, você vai usar os seguintes componentes faturáveis do 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 gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Para mais informações, consulte Preços do BigQuery na documentação do BigQuery.
Os modelos abertos implantados na Vertex AI são cobrados por hora de máquina. Isso significa que o faturamento começa assim que o endpoint é totalmente configurado e continua até que você o remova. Para mais informações sobre preços da Vertex AI, consulte esta página.
Antes de começar
-
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.
Implantar um modelo do Gemma na Vertex AI
Implante o modelo gemma-2-27b-it
na Vertex AI seguindo as instruções em Implantar modelos do Model Garden.
Durante a implantação, selecione Público (endpoint compartilhado) como o valor do campo Acesso ao endpoint no fluxo de trabalho de implantação.
crie um conjunto de dados
Crie um conjunto de dados do BigQuery para armazenar seu modelo de ML.
Console
No console Google Cloud , acesse a página BigQuery.
No painel Explorer, clique no nome do seu projeto.
Clique em
Conferir ações > Criar conjunto de dados.Na página Criar conjunto de dados, faça o seguinte:
Para o código do conjunto de dados, insira
bqml_tutorial
.Em Tipo de local, selecione Multirregião e EUA (várias regiões nos Estados Unidos).
Mantenha as configurações padrão restantes e clique em Criar conjunto de dados.
bq
Para criar um novo conjunto de dados, utilize o
comando bq mk
com a sinalização --location
. Para obter uma lista completa de parâmetros, consulte a
referência
comando bq mk --dataset
.
Crie um conjunto de dados chamado
bqml_tutorial
com o local dos dados definido comoUS
e uma descrição deBigQuery ML tutorial dataset
:bq --location=US mk -d \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Em vez de usar a flag
--dataset
, o comando usa o atalho-d
. Se você omitir-d
e--dataset
, o comando vai criar um conjunto de dados por padrão.Confirme se o conjunto de dados foi criado:
bq ls
API
Chame o método datasets.insert
com um recurso de conjunto de dados definido.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
BigQuery DataFrames
Antes de testar esta amostra, siga as instruções de configuração dos BigQuery DataFrames no Guia de início rápido do BigQuery: como usar os BigQuery DataFrames. Para mais informações, consulte a documentação de referência do BigQuery DataFrames.
Para autenticar no BigQuery, configure o Application Default Credentials. Para mais informações, consulte Configurar o ADC para um ambiente de desenvolvimento local.
Criar o modelo remoto
Crie um modelo remoto que represente um modelo da Vertex AI:
No console Google Cloud , acesse a página BigQuery.
No editor de consultas, execute a seguinte instrução:
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');
Substitua:
ENDPOINT_REGION
: a região em que o modelo aberto está implantado.ENDPOINT_PROJECT_ID
: o projeto em que o modelo aberto é implantado.ENDPOINT_ID
: o ID do endpoint HTTPS usado pelo modelo aberto. Para conseguir o ID do endpoint, localize o modelo aberto na página Previsão on-line e copie o valor no campo ID.
O exemplo a seguir mostra o formato de um endpoint HTTP válido:
https://us-central1-aiplatform.googleapis.com/v1/projects/myproject/locations/us-central1/endpoints/1234
A consulta leva alguns segundos para ser concluída. Depois disso, o
modelo gemma_model
aparece no conjunto de dados bqml_tutorial
no
painel Explorer.
Como a consulta usa uma instrução CREATE MODEL
para criar um modelo, não há resultados de consulta.
Realizar extração de palavra-chave
Realize a extração de palavra-chave em avaliações de filmes do IMDB usando o modelo remoto e a função ML.GENERATE_TEXT
:
No console Google Cloud , acesse a página BigQuery.
No editor de consultas, insira a seguinte instrução para realizar a extração de palavra-chave em cinco avaliações de filmes:
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));
A saída é semelhante à seguinte, com as colunas não geradas omitidas para fins de esclarecimento:
+----------------------------------------------+-------------------------+-----------------------------+-----+ | 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... | | +----------------------------------------------+-------------------------+-----------------------------+-----+
Os resultados incluem as seguintes colunas:
generated_text
: o texto gerado.ml_generate_text_status
: o status da resposta da API sobre a linha correspondente. Se a operação tiver sido bem-sucedida, esse valor estará vazio.prompt
: o comando usado para a análise de sentimento.- Todas as colunas da tabela
bigquery-public-data.imdb.reviews
.
Realizar análise de sentimento
Realize a análise de sentimento nas avaliações de filmes do IMDB usando o modelo remoto e a função ML.GENERATE_TEXT
:
No console Google Cloud , acesse a página BigQuery.
No editor de consultas, execute a seguinte instrução para realizar a análise de sentimento em cinco avaliações de filmes:
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));
A saída é semelhante à seguinte, com as colunas não geradas omitidas para fins de esclarecimento:
+----------------------------------------------+-------------------------+-----------------------------+-----+ | 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... | | +----------------------------------------------+-------------------------+-----------------------------+-----+
Os resultados incluem as mesmas colunas documentadas para Realizar a extração de palavra-chave.
Cancelar a implantação do modelo
Se você não excluir o projeto conforme recomendado, cancele a implantação do modelo do Gemma na Vertex AI para evitar o faturamento contínuo.
Limpar
- 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.