Utilizzare l'ottimizzazione e la valutazione per migliorare le prestazioni del modello
Questo documento mostra come creare un modello remoto BigQuery ML che fa riferimento a un modello gemini-2.0-flash-001
Vertex AI.
Quindi, utilizzi l'ottimizzazione supervisionata per ottimizzare il modello con nuovi dati di addestramento, seguito dalla valutazione del modello con la funzione ML.EVALUATE
.
L'ottimizzazione può aiutarti ad affrontare scenari in cui devi personalizzare il modello Vertex AI ospitato, ad esempio quando il comportamento previsto del modello è difficile da definire in modo conciso in un prompt o quando i prompt non producono risultati previsti in modo sufficientemente coerente. L'ottimizzazione supervisionata influenza il modello anche nei seguenti modi:
- Guida il modello a restituire stili di risposta specifici, ad esempio più concisi o più dettagliati.
- Insegna al modello nuovi comportamenti, ad esempio rispondere ai prompt come un personaggio specifico.
- Fa sì che il modello si aggiorni con nuove informazioni.
In questo tutorial, l'obiettivo è che il modello generi un testo il cui stile e contenuto siano il più possibile conformi ai contenuti dei dati di fatto forniti.
Ruoli obbligatori
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
).
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
- Creare una tabella:
bigquery.tables.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
eresourcemanager.projects.setIamPolicy
- 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.
Prima di iniziare
-
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, Vertex AI, and Compute Engine APIs.
Costi
In questo documento, utilizzi i seguenti componenti fatturabili di Google Cloud:
- BigQuery: You incur costs for the queries that you run in BigQuery.
- BigQuery ML: You incur costs for the model that you create and the processing that you perform in BigQuery ML.
- Vertex AI: You incur costs for calls to and
supervised tuning of the
gemini-1.0-flash-002
model.
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il calcolatore prezzi.
Per maggiori informazioni, consulta le seguenti risorse:
Crea un set di dati
Crea un set di dati BigQuery per archiviare il tuo modello ML.
Console
Nella console Google Cloud , vai alla pagina BigQuery.
Nel riquadro Explorer, fai clic sul nome del progetto.
Fai clic su
Visualizza azioni > Crea set di dati.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
.
Crea un set di dati denominato
bqml_tutorial
con la località dei dati impostata suUS
e una descrizione diBigQuery 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.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.
Creare tabelle di test
Crea tabelle di dati di addestramento e valutazione in base al set di dati pubblico task955_wiki_auto_style_transfer di Hugging Face.
Apri Cloud Shell.
In Cloud Shell, esegui questi comandi per creare tabelle di dati di test e valutazione:
python3 -m pip install pandas pyarrow fsspec huggingface_hub python3 -c "import pandas as pd; df_train = pd.read_parquet('hf://datasets/Lots-of-LoRAs/task955_wiki_auto_style_transfer/data/train-00000-of-00001.parquet').drop('id', axis=1); df_train['output'] = [x[0] for x in df_train['output']]; df_train.to_json('wiki_auto_style_transfer_train.jsonl', orient='records', lines=True);" python3 -c "import pandas as pd; df_valid = pd.read_parquet('hf://datasets/Lots-of-LoRAs/task955_wiki_auto_style_transfer/data/valid-00000-of-00001.parquet').drop('id', axis=1); df_valid['output'] = [x[0] for x in df_valid['output']]; df_valid.to_json('wiki_auto_style_transfer_valid.jsonl', orient='records', lines=True);" bq rm -t bqml_tutorial.wiki_auto_style_transfer_train bq rm -t bqml_tutorial.wiki_auto_style_transfer_valid bq load --source_format=NEWLINE_DELIMITED_JSON bqml_tutorial.wiki_auto_style_transfer_train wiki_auto_style_transfer_train.jsonl input:STRING,output:STRING bq load --source_format=NEWLINE_DELIMITED_JSON bqml_tutorial.wiki_auto_style_transfer_valid wiki_auto_style_transfer_valid.jsonl input:STRING,output:STRING
Crea un modello di base
Crea un
modello remoto
sul modello Vertex AI gemini-1.0-flash-002
.
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, esegui la seguente istruzione per creare un modello remoto:
CREATE OR REPLACE MODEL `bqml_tutorial.gemini_baseline` REMOTE WITH CONNECTION DEFAULT OPTIONS (ENDPOINT ='gemini-2.0-flash-001');
Il completamento della query richiede diversi secondi, dopodiché il modello
gemini_baseline
viene visualizzato nel set di datibqml_tutorial
nel riquadro Explorer. Poiché la query utilizza un'istruzioneCREATE MODEL
per creare un modello, non ci sono risultati della query.
Controllare le prestazioni del modello di base
Esegui la
funzione ML.GENERATE_TEXT
con il modello remoto per vedere come si comporta sui dati di valutazione senza alcuna
ottimizzazione.
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, esegui la seguente istruzione:
SELECT ml_generate_text_llm_result, ground_truth FROM ML.GENERATE_TEXT( MODEL `bqml_tutorial.gemini_baseline`, ( SELECT input AS prompt, output AS ground_truth FROM `bqml_tutorial.wiki_auto_style_transfer_valid` LIMIT 10 ), STRUCT(TRUE AS flatten_json_output));
Se esamini i dati di output e confronti i valori di
ml_generate_text_llm_result
eground_truth
, noterai che, mentre il modello di base genera un testo che riflette accuratamente i fatti forniti nei contenuti di riferimento, lo stile del testo è piuttosto diverso.
Valuta il modello di base
Per eseguire una valutazione più dettagliata delle prestazioni del modello, utilizza la
funzione ML.EVALUATE
.
Questa funzione calcola le metriche del modello che misurano l'accuratezza e la qualità del testo generato, per vedere come le risposte del modello si confrontano con le risposte ideali.
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, esegui la seguente istruzione:
SELECT * FROM ML.EVALUATE( MODEL `bqml_tutorial.gemini_baseline`, ( SELECT input AS input_text, output AS output_text FROM `bqml_tutorial.wiki_auto_style_transfer_valid` ), STRUCT('text_generation' AS task_type));
L'output è simile al seguente:
+---------------------+---------------------+-------------------------------------------+--------------------------------------------+ | bleu4_score | rouge-l_precision | rouge-l_recall | rouge-l_f1_score | evaluation_status | +---------------------+---------------------+---------------------+---------------------+--------------------------------------------+ | 0.23317359667074181 | 0.37809145226740043 | 0.45902937167791508 | 0.40956844061733139 | { | | | | | | "num_successful_rows": 176, | | | | | | "num_total_rows": 176 | | | | | | } | +---------------------+---------------------+ --------------------+---------------------+--------------------------------------------+
Puoi notare che il rendimento del modello di base non è male, ma la somiglianza del testo generato con i dati empirici reali è bassa, in base alle metriche di valutazione. Ciò indica che vale la pena eseguire l'ottimizzazione supervisionata per verificare se è possibile migliorare il rendimento del modello per questo caso d'uso.
Crea un modello ottimizzato
Crea un modello remoto molto simile a quello creato in
Crea un modello, ma questa volta specifica la
clausola AS SELECT
per fornire i dati di addestramento per ottimizzare il modello.
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, esegui la seguente istruzione per creare un modello remoto:
CREATE OR REPLACE MODEL `bqml_tutorial.gemini_tuned` REMOTE WITH CONNECTION DEFAULT OPTIONS ( endpoint = 'gemini-2.0-flash-001', max_iterations = 500, data_split_method = 'no_split') AS SELECT input AS prompt, output AS label FROM `bqml_tutorial.wiki_auto_style_transfer_train`;
Il completamento della query richiede alcuni minuti, dopodiché il modello
gemini_tuned
viene visualizzato nel set di datibqml_tutorial
nel riquadro Spazio di esplorazione. Poiché la query utilizza un'istruzioneCREATE MODEL
per creare un modello, non vengono visualizzati risultati della query.
Controllare le prestazioni del modello ottimizzato
Esegui la funzione ML.GENERATE_TEXT
per vedere il rendimento del modello ottimizzato sui dati di valutazione.
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, esegui la seguente istruzione:
SELECT ml_generate_text_llm_result, ground_truth FROM ML.GENERATE_TEXT( MODEL `bqml_tutorial.gemini_tuned`, ( SELECT input AS prompt, output AS ground_truth FROM `bqml_tutorial.wiki_auto_style_transfer_valid` LIMIT 10 ), STRUCT(TRUE AS flatten_json_output));
Se esamini i dati di output, noterai che il modello ottimizzato produce un testo il cui stile è molto più simile a quello dei contenuti basati su dati empirici reali.
Valuta il modello ottimizzato
Utilizza la funzione ML.EVALUATE
per confrontare le risposte del modello ottimizzato
con le risposte ideali.
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, esegui la seguente istruzione:
SELECT * FROM ML.EVALUATE( MODEL `bqml_tutorial.gemini_tuned`, ( SELECT input AS prompt, output AS label FROM `bqml_tutorial.wiki_auto_style_transfer_valid` ), STRUCT('text_generation' AS task_type));
L'output è simile al seguente:
+---------------------+---------------------+-------------------------------------------+--------------------------------------------+ | bleu4_score | rouge-l_precision | rouge-l_recall | rouge-l_f1_score | evaluation_status | +---------------------+---------------------+---------------------+---------------------+--------------------------------------------+ | 0.416868792119966 | 0.642001000843349 | 0.55910008048151372 | 0.5907226262084847 | { | | | | | | "num_successful_rows": 176, | | | | | | "num_total_rows": 176 | | | | | | } | +---------------------+---------------------+ --------------------+---------------------+--------------------------------------------+
Puoi notare che, anche se il set di dati di addestramento ha utilizzato solo 1408 esempi, si è verificato un netto miglioramento del rendimento, come indicato dalle metriche di valutazione più elevate.
Esegui la pulizia
- 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.