Utilizzare l'ottimizzazione e la valutazione per migliorare le prestazioni dei modelli
Questo documento mostra come creare un modello remoto BigQuery ML
che faccia riferimento a un modello
di Gemini Enterprise Agent Platform gemini-2.0-flash-001.
Quindi, utilizzi
l'ottimizzazione supervisionata
per ottimizzare il modello con nuovi dati di addestramento, seguita dalla valutazione del modello
con la funzione
ML.EVALUATE.
L'ottimizzazione può aiutarti a risolvere gli scenari in cui devi personalizzare il modello ospitato di Agent Platform, 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 una persona specifica.
- Fa sì che il modello si aggiorni con nuove informazioni.
In questo tutorial, l'obiettivo è che il modello generi testo il cui stile e contenuto siano il più possibile conformi ai contenuti basati su dati empirici reali forniti.
Ruoli obbligatori
Per eseguire questo tutorial, devi disporre dei seguenti ruoli Identity and Access Management (IAM):
- Crea e utilizza set di dati, connessioni e modelli BigQuery: Amministratore BigQuery (
roles/bigquery.admin). - Concedi autorizzazioni al account di servizio della connessione: Amministratore IAM progetto (
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 - Crea una tabella:
bigquery.tables.create - Crea, delega e utilizza una connessione:
bigquery.connections.* - Imposta la connessione predefinita:
bigquery.config.* - Imposta le autorizzazioni del account di servizio:
resourcemanager.projects.getIamPolicyeresourcemanager.projects.setIamPolicy - Crea un modello ed esegui l'inferenza:
bigquery.jobs.createbigquery.models.createbigquery.models.getDatabigquery.models.updateDatabigquery.models.updateMetadata
Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.
Prima di iniziare
-
Nella Google Cloud console, nella pagina di selezione del progetto, seleziona o crea un Google Cloud progetto.
Ruoli richiesti per selezionare o creare un progetto
- Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto su cui ti è stato concesso un ruolo.
-
Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto
(
roles/resourcemanager.projectCreator), che contiene l'resourcemanager.projects.createautorizzazione. Scopri come concedere i ruoli.
-
Verifica che la fatturazione sia attivata per il tuo Google Cloud progetto.
-
Abilita le API BigQuery, BigQuery Connection, Agent Platform e Compute Engine.
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo servizi (
roles/serviceusage.serviceUsageAdmin), che contiene l'autorizzazioneserviceusage.services.enable. Scopri come concedere i ruoli.
Costi
In questo documento vengono utilizzati 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.
- Gemini Enterprise Agent Platform: You incur costs for calls to and
supervised tuning of the
gemini-2.0-flash-001model.
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 modello ML.
Console
Nella Google Cloud console, 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, procedi nel seguente modo:
In ID set di dati, inserisci
bqml_tutorial.Per Tipo di località, seleziona Più regioni e poi seleziona Stati Uniti.
Lascia invariate le impostazioni predefinite rimanenti e fai clic su Crea set di dati.
bq
Per creare un nuovo set di dati, utilizza il
bq mk --dataset comando.
Crea un set di dati denominato
bqml_tutorialcon la località dei dati impostata suUS.bq mk --dataset \ --location=US \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
Verifica che il set di dati sia stato creato:
bq ls
API
Chiama il datasets.insert
metodo con una risorsa del set di dati definita.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
Crea tabelle di test
Crea tabelle di dati di addestramento e valutazione basate sul set di dati pubblico task955_wiki_auto_style_transfer di Hugging Face.
Apri Cloud Shell.
In Cloud Shell, esegui i seguenti 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 gemini-2.0-flash-001 di Gemini Enterprise Agent Platform.
Nella Google Cloud console, 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');
L'esecuzione della query richiede alcuni secondi, dopodiché il modello
gemini_baselineviene visualizzato nel set di datibqml_tutorialnel riquadro Explorer. Poiché la query utilizza un'istruzioneCREATE MODELper creare un modello, non vengono visualizzati i risultati della query.
Controlla le prestazioni del modello di base
Esegui la
AI.GENERATE_TEXT funzione
con il modello remoto per vedere come si comporta sui dati di valutazione senza alcuna
ottimizzazione.
Nella Google Cloud console, vai alla pagina BigQuery.
Nell'editor di query, esegui la seguente istruzione:
SELECT result, ground_truth FROM AI.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 ));
Se esamini i dati di output e confronti i valori
resulteground_truth, vedrai che, sebbene il modello di base generi testo che riflette accuratamente i fatti forniti nei contenuti basati su dati empirici reali, lo stile del testo è abbastanza diverso.
Valuta il modello di base
Per eseguire una valutazione più dettagliata delle prestazioni del modello, utilizza la
ML.EVALUATE funzione.
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 Google Cloud console, 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 le prestazioni del modello di base non sono 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 vedere se è possibile migliorare le prestazioni 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 Google Cloud console, 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`;
L'esecuzione della query richiede alcuni minuti, dopodiché il modello
gemini_tunedviene visualizzato nel set di datibqml_tutorialnel riquadro Explorer. Poiché la query utilizza un'istruzioneCREATE MODELper creare un modello, non vengono visualizzati i risultati della query.
Controlla le prestazioni del modello ottimizzato
Esegui la funzione AI.GENERATE_TEXT per vedere come si comporta il modello ottimizzato sui dati di valutazione.
Nella Google Cloud console, vai alla pagina BigQuery.
Nell'editor di query, esegui la seguente istruzione:
SELECT result, ground_truth FROM AI.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 ));
Se esamini i dati di output, vedrai che il modello ottimizzato produce testo con uno stile molto più simile ai contenuti basati su dati empirici reali.
Valuta il modello ottimizzato
Utilizza la funzione ML.EVALUATE per vedere come le risposte del modello ottimizzato si confrontano con le risposte ideali.
Nella Google Cloud console, 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 utilizzava solo 1408 esempi, si registra un netto miglioramento delle prestazioni, come indicato dalle metriche di valutazione più elevate.
Libera spazio
- Nella Google Cloud console, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare e fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID progetto, quindi fai clic su Chiudi per eliminare il progetto.