Genera testo utilizzando un modello aperto Gemma e la funzione ML.GENERATE_TEXT

Questo tutorial mostra come creare un modello remoto basato sul modello Gemma e come utilizzare questo modello con la funzione ML.GENERATE_TEXT per estrarre parole chiave ed eseguire l'analisi del sentiment sulle recensioni di film dalla tabella pubblica bigquery-public-data.imdb.reviews.

Autorizzazioni obbligatorie

Per eseguire questo tutorial, devi disporre dei seguenti ruoli IAM (Identity and Access Management):

  • Crea e utilizza set di dati, connessioni e modelli BigQuery: Amministratore BigQuery (roles/bigquery.admin).
  • Concedi le autorizzazioni all'account di servizio della connessione: Project IAM Admin (roles/resourcemanager.projectIamAdmin).
  • Esegui il deployment e l'annullamento del deployment dei modelli in Vertex AI: amministratore Vertex AI (roles/aiplatform.admin).

Questi ruoli predefiniti contengono le autorizzazioni necessarie per eseguire le attività descritte in questo documento. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

  • Crea un set di dati: bigquery.datasets.create
  • Crea, delega e utilizza una connessione: bigquery.connections.*
  • Imposta la connessione predefinita: bigquery.config.*
  • Imposta le autorizzazioni dell'account di servizio: resourcemanager.projects.getIamPolicy e resourcemanager.projects.setIamPolicy
  • Esegui il deployment e l'undeployment di un modello Vertex AI:
    • aiplatform.endpoints.deploy
    • aiplatform.endpoints.undeploy
  • Crea un modello ed esegui l'inferenza:
    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
    • bigquery.models.updateMetadata

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Costi

In questo documento, utilizzi i seguenti componenti fatturabili di 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.

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il calcolatore prezzi. I nuovi utenti di Google Cloud potrebbero avere diritto a una prova gratuita.

Per ulteriori informazioni sui prezzi di BigQuery, consulta la sezione Prezzi di BigQuery nella documentazione di BigQuery.

I modelli aperti di cui esegui il deployment su Vertex AI vengono addebitati per ora macchina. Ciò significa che la fatturazione inizia non appena l'endpoint è completamente configurato e continua fino a quando non lo annulli. Per saperne di più sui prezzi di Vertex AI, consulta la pagina Prezzi di Vertex AI.

Prima di iniziare

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Make sure that billing is enabled for your Google Cloud project.

  3. Enable the BigQuery, BigQuery Connection, and Vertex AI APIs.

    Enable the APIs

Esegui il deployment di un modello Gemma su Vertex AI

Esegui il deployment del modello gemma-2-27b-it in Vertex AI seguendo le istruzioni riportate in Eseguire il deployment dei modelli Model Garden. Durante il deployment, devi selezionare Pubblico (endpoint condiviso) come valore per il campo Accesso all'endpoint nel flusso di lavoro di deployment.

Crea un set di dati

Crea un set di dati BigQuery per archiviare il tuo modello ML.

Console

  1. Nella console Google Cloud , vai alla pagina BigQuery.

    Vai alla pagina BigQuery

  2. Nel riquadro Explorer, fai clic sul nome del progetto.

  3. Fai clic su Visualizza azioni > Crea set di dati.

    L'opzione di menu Crea set di dati.

  4. Nella pagina Crea set di dati:

    • In ID set di dati, inserisci bqml_tutorial.

    • Per Tipo di località, seleziona Più regioni e poi Stati Uniti (più regioni negli Stati Uniti).

    • Lascia invariate le restanti impostazioni predefinite e fai clic su Crea set di dati.

bq

Per creare un nuovo set di dati, utilizza il comando bq mk con il flag --location. Per un elenco completo dei possibili parametri, consulta la documentazione di riferimento del comando bq mk --dataset.

  1. Crea un set di dati denominato bqml_tutorial con la località dei dati impostata su US e una descrizione di BigQuery ML tutorial dataset:

    bq --location=US mk -d \
     --description "BigQuery ML tutorial dataset." \
     bqml_tutorial

    Anziché utilizzare il flag --dataset, il comando utilizza la scorciatoia -d. Se ometti -d e --dataset, il comando crea un set di dati per impostazione predefinita.

  2. Verifica che il set di dati sia stato creato:

    bq ls

API

Chiama il metodo datasets.insert con una risorsa dataset definita.

{
  "datasetReference": {
     "datasetId": "bqml_tutorial"
  }
}

BigQuery DataFrames

Prima di provare questo esempio, segui le istruzioni di configurazione di BigQuery DataFrames nella guida rapida di BigQuery che utilizza BigQuery DataFrames. Per ulteriori informazioni, consulta la documentazione di riferimento di BigQuery DataFrames.

Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, vedi Configurare ADC per un ambiente di sviluppo locale.

import google.cloud.bigquery

bqclient = google.cloud.bigquery.Client()
bqclient.create_dataset("bqml_tutorial", exists_ok=True)

Crea il modello remoto

Crea un modello remoto che rappresenti un modello Vertex AI ospitato:

  1. Nella console Google Cloud , vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor di query, esegui la seguente istruzione:

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');

Sostituisci quanto segue:

  • ENDPOINT_REGION: la regione in cui viene eseguito il deployment del modello aperto.
  • ENDPOINT_PROJECT_ID: il progetto in cui viene implementato il modello aperto.
  • ENDPOINT_ID: l'ID dell'endpoint HTTPS utilizzato dal modello aperto. Puoi ottenere l'ID endpoint individuando il modello aperto nella pagina Previsione online e copiando il valore nel campo ID.

L'esempio seguente mostra il formato di un endpoint HTTP valido:

https://us-central1-aiplatform.googleapis.com/v1/projects/myproject/locations/us-central1/endpoints/1234.

Il completamento della query richiede diversi secondi, dopodiché il modello gemma_model viene visualizzato nel set di dati bqml_tutorial nel riquadro Explorer. Poiché la query utilizza un'istruzione CREATE MODEL per creare un modello, non ci sono risultati della query.

Eseguire l'estrazione delle parole chiave

Esegui l'estrazione delle parole chiave dalle recensioni dei film di IMDB utilizzando il modello remoto e la funzione ML.GENERATE_TEXT:

  1. Nella console Google Cloud , vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor di query, inserisci la seguente istruzione per eseguire l'estrazione delle parole chiave su cinque recensioni di film:

    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));

    L'output è simile al seguente, con le colonne non generate omesse per chiarezza:

    +----------------------------------------------+-------------------------+-----------------------------+-----+
    | 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... |     |
    +----------------------------------------------+-------------------------+-----------------------------+-----+
    

    I risultati includono le seguenti colonne:

    • generated_text: il testo generato.
    • ml_generate_text_status: lo stato della risposta dell'API per la riga corrispondente. Se l'operazione è andata a buon fine, questo valore è vuoto.
    • prompt: il prompt utilizzato per l'analisi del sentiment.
    • Tutte le colonne della tabella bigquery-public-data.imdb.reviews.

Eseguire l'analisi del sentiment

Esegui l'analisi del sentiment sulle recensioni dei film di IMDB utilizzando il modello remoto e la funzione ML.GENERATE_TEXT:

  1. Nella console Google Cloud , vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor di query, esegui la seguente istruzione per eseguire l'analisi del sentiment su cinque recensioni di film:

    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));

    L'output è simile al seguente, con le colonne non generate omesse per chiarezza:

    +----------------------------------------------+-------------------------+-----------------------------+-----+
    | 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... |     |
    +----------------------------------------------+-------------------------+-----------------------------+-----+
    

    I risultati includono le stesse colonne documentate per Esegui l'estrazione delle parole chiave.

Annulla il deployment del modello

Se scegli di non eliminare il progetto come consigliato, assicurati di annullare il deployment del modello Gemma in Vertex AI per evitare la fatturazione continua.

Esegui la pulizia

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.