Creazione di modelli di testo distillato

La distillazione passo passo utilizza un modello insegnante di grandi dimensioni per addestrare il modello di studente più piccolo al fine di svolgere meglio determinate attività con capacità di ragionamento migliorate. Il modello addestrato e distillato può fare le stesse cose che ti interessano nel modello più grande per l'insegnante, a un costo minore e con minore latenza.

Quando distilli un modello di base, utilizzi un modello insegnante e un modello studente:

  • Il modello insegnante è il modello grande che può fare ciò che vuoi tu. Tuttavia, a causa delle sue dimensioni, il modello insegnante potrebbe costare di più e avere una latenza maggiore rispetto a un modello più piccolo.

  • Il modello studente è più piccolo del modello insegnante. Il processo di addestramento e distillazione utilizza esempi etichettati e motivazioni generate dal modello insegnante per ottimizzare il modello studente. Le prestazioni e le capacità di ragionamento del modello distillato risultante sono migliori rispetto al modello studente originale.

Puoi specificare un modello insegnante e un modello studente quando crei un job di distillazione.

Flusso di lavoro per l'ottimizzazione e la distillazione di un modello

Il flusso di lavoro di distillazione su Vertex AI include i seguenti passaggi:

  1. Prepara il set di dati di ottimizzazione del modello.
  2. Specifica il modello insegnante.
  3. Specifica il modello studente.
  4. Carica il set di dati di ottimizzazione dei modelli in un bucket Cloud Storage.
  5. Crea un job di distillazione del modello.

Al termine della distillazione del modello, viene eseguito il deployment del modello distillato in un endpoint Vertex AI. Il nome dell'endpoint corrisponde al nome del modello distillato. Puoi selezionare modelli distillati in Vertex AI Studio quando vuoi creare un nuovo prompt.

Modelli supportati

Puoi specificare quanto segue per il modello insegnante:

  • text-unicorn@001

Puoi specificare quanto segue per il modello di studente:

  • text-bison@002

Formato del set di dati

La distillazione funziona su un set di dati etichettato o non etichettato. Se disponi di un set di dati etichettato di alta qualità con centinaia di esempi, ti consigliamo di utilizzarlo. In caso contrario, puoi utilizzare un set di dati del prompt senza etichetta. Se utilizzi un set di dati non etichettato, il modello insegnante genera le etichette e il motivo per la distillazione. Se utilizzi un set di dati non etichettato,sono consigliati più di 1000 esempi.

Il set di dati di distillazione etichettato o non etichettato deve essere in formato JSON Lines (JSONL), dove ogni riga contiene un singolo esempio di ottimizzazione. Prima di distillare il modello, devi caricare il set di dati in un bucket Cloud Storage.

Ogni esempio di set di dati contiene un campo input_text con il prompt del modello e un campo output_text facoltativo che contiene una risposta di esempio che il modello distillato dovrebbe produrre.

La lunghezza massima del token per input_text è 7168 e la lunghezza massima del token per output_text è 1024. Se uno dei due campi supera la lunghezza massima del token, i token in eccesso vengono troncati.

Il numero massimo di esempi che un set di dati per un modello di generazione di testo può contenere è 10.000.

Esempio di set di dati

{"input_text": "question: How many people live in Beijing? context:
With over 21 million residents, Beijing is the world's most populous national
capital city and is China's second largest city after Shanghai. It is
located in Northern China, and is governed as a municipality under the direct
administration of the State Council with 16 urban, suburban, and rural
districts.[14] Beijing is mostly surrounded by Hebei Province with the exception
of neighboring Tianjin to the southeast; together, the three divisions form the
Jingjinji megalopolis and the national capital region of China.",
"output_text": "over 21 million people"}

{"input_text": "question: How many parishes are there in Louisiana? context: The U.S. state of Louisiana is divided into 64 parishes (French: paroisses) in the same manner that 48 other states of the United States are divided into counties, and Alaska is divided into boroughs.", "output_text": "64"}

Includi istruzioni negli esempi

Per attività come la classificazione, è possibile creare un set di dati di esempi che non contengono istruzioni. Tuttavia, l'esclusione di istruzioni dagli esempi nel set di dati comporta prestazioni peggiori dopo la distillazione rispetto all'inclusione delle istruzioni, in particolare per set di dati di dimensioni inferiori.

Sono escluse le istruzioni:

{"input_text": "5 stocks to buy now",
"output_text": "business"}

Include le istruzioni:

{"input_text": "Classify the following text into one of the following classes:
[business, entertainment] Text: 5 stocks to buy now",
"output_text": "business"}

Set di dati di esempio

Puoi utilizzare un set di dati di esempio per iniziare la distillazione. Di seguito è riportato un set di dati delle attività di classificazione che contiene esempi di trascrizioni mediche per varie specialità mediche. I dati provengono da mtsamples.com disponibili su Kaggle.

  • URI del set di dati di distillazione di esempio:

    gs://cloud-samples-data/vertex-ai/model-evaluation/peft_train_sample.jsonl

  • URI del set di dati di valutazione di esempio:

    gs://cloud-samples-data/vertex-ai/model-evaluation/peft_eval_sample.jsonl

Per utilizzare questi set di dati, specifica gli URI nei parametri applicabili durante la creazione di un job di distillazione di modelli di testo.

Ad esempio:

...
"dataset_uri": "gs://cloud-samples-data/vertex-ai/model-evaluation/peft_train_sample.jsonl",
...
"evaluation_data_uri": "gs://cloud-samples-data/vertex-ai/model-evaluation/peft_eval_sample.jsonl",
...

Mantieni la coerenza con i dati di produzione

Gli esempi nei set di dati devono corrispondere al traffico di produzione previsto. Se il set di dati contiene formattazioni, parole chiave, istruzioni o informazioni specifiche, i dati di produzione devono essere formattati allo stesso modo e contenere le stesse istruzioni.

Ad esempio, se gli esempi nel tuo set di dati includono "question:" e "context:", il traffico di produzione deve essere formattato in modo da includere un "question:" e un "context:" nello stesso ordine in cui appare negli esempi del set di dati. Se escludi il contesto, il modello non riconoscerà il pattern, anche se la domanda esatta era in un esempio nel set di dati.

Carica set di dati per la distillazione in Cloud Storage

Per eseguire un job di ottimizzazione, devi caricare uno o più set di dati in un bucket Cloud Storage. Puoi creare un nuovo bucket Cloud Storage o utilizzarne uno esistente per archiviare i file di set di dati. La regione del bucket non è importante, ma ti consigliamo di utilizzare un bucket nello stesso progetto Google Cloud in cui prevedi di ottimizzare il modello.

Quando il bucket è pronto, carica il file del set di dati nel bucket.

Distillazione delle impostazioni delle regioni

Puoi specificare tre impostazioni della regione Google Cloud quando configuri un job di distillazione. Una regione è quella in cui viene eseguita la pipeline che ottimizza il modello. Nell'altra regione viene eseguita la parte di ottimizzazione del modello del processo di distillazione e viene caricato il modello distillato.

Regione job di pipeline

La regione del job di pipeline è quella in cui viene eseguito il job di pipeline. Se la regione di caricamento del modello facoltativa non è specificata, il modello viene caricato e di cui viene eseguito il deployment nella regione del job della pipeline. I dati intermedi, come il set di dati trasformato, vengono archiviati nella regione del job della pipeline. Per scoprire quali regioni puoi utilizzare per la regione del job di pipeline, consulta Regioni supportate per il caricamento di job e modelli di pipeline.

Devi specificare la regione del job della pipeline utilizzando uno dei seguenti metodi.

  • Se crei un job di distillazione inviando una richiesta POST con il metodo pipelineJobs.create, utilizza l'URL per specificare la regione in cui viene eseguito il job della pipeline. Nel seguente URL, sostituisci entrambe le istanze di PIPELINE_JOB_REGION con la regione in cui viene eseguita la pipeline:

     https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs
    
  • Se utilizzi la console Google Cloud per creare un job di distillazione, devi specificare la regione del job di pipeline nel controllo Regione quando crei il job di distillazione. Nella console Google Cloud, il controllo Regione specifica sia la regione del job della pipeline sia la regione di caricamento del modello. Quando utilizzi la console Google Cloud per creare un job di distillazione, le due regioni sono sempre le stesse.

Regione di caricamento del modello

Utilizza il parametro facoltativo tuned_model_location per specificare dove viene caricato il modello distillato. Se la regione di caricamento del modello non è specificata, il modello distillato viene caricato nella regione del job della pipeline.Puoi utilizzare una delle regioni di caricamento del modello e dei job della pipeline per la regione di caricamento del modello. Puoi specificare la regione di caricamento del modello utilizzando uno dei seguenti metodi:

  • Se crei un job di distillazione inviando una richiesta POST con il metodo pipelineJobs, puoi utilizzare il parametro location per specificare la regione di caricamento del modello.

  • Se utilizzi la console Google Cloud per creare un job di distillazione, devi specificare la regione di caricamento del modello nel controllo Regione quando crei il job di distillazione. Nella console Google Cloud, il controllo Regione specifica sia la regione di caricamento del modello sia la regione del job della pipeline. Quando utilizzi la console Google Cloud per creare un job di distillazione, entrambe le regioni sono sempre le stesse.

Distillazione delle impostazioni delle regioni

Nella regione che scegli è la regione in cui Vertex AI distilla il modello e poi carica il modello distillato.

La regione dell'ottimizzazione è quella in cui avviene il calcolo per la parte dell'ottimizzazione del job di distillazione. Questa regione è determinata dal tipo di acceleratore scelto.

  • us-central1 - Se scegli questa regione, vengono utilizzate 8 GPU Nvidia A100 da 80 GB.
  • europe-west4: se scegli questa regione, vengono utilizzati 64 core del pod TPU v3.

Regioni supportate per i job di pipeline e il caricamento dei modelli

Puoi utilizzare una delle seguenti regioni per specificare la regione di caricamento del modello e quella del job della pipeline:

  • us-central1
  • europe-west4
  • asia-southeast1
  • us-west1
  • europe-west3
  • europe-west2
  • asia-northeast1
  • us-east4
  • us-west4
  • northamerica-northeast1
  • europe-west9
  • europe-west1
  • asia-northeast3

Crea un job di distillazione del modello di testo

Puoi creare un job di distillazione del modello di testo utilizzando la console Google Cloud o l'API. Per indicazioni sulle configurazioni di distillazione dei modelli, consulta Configurazioni consigliate.

REST

Per creare un job di distillazione del modello, invia una richiesta POST utilizzando il metodo pipelineJobs. Tieni presente che alcuni parametri non sono supportati da tutti i modelli. Assicurati di includere solo i parametri applicabili per il modello che stai distillando.

Prima di utilizzare i dati della richiesta, effettua le seguenti sostituzioni:

  • PIPELINEJOB_DISPLAYNAME: un nome visualizzato per pipelineJob.
  • OUTPUT_DIR: l'URI del bucket in cui eseguire l'output degli artefatti della pipeline.
  • PROJECT_ID: il tuo ID progetto.
  • MODEL_DISPLAYNAME: un nome visualizzato per il modello distillato caricato da pipelineJob.
  • DATASET_URI: URI del file del set di dati.
  • PIPELINE_JOB_REGION: la regione in cui viene eseguito il job di ottimizzazione della pipeline. Questa è anche la regione predefinita per dove viene caricato il modello ottimizzato. Se vuoi caricare il modello in un'altra regione, utilizza il parametro location per specificare la regione ottimizzata di caricamento del modello. Per maggiori informazioni, consulta Regione di caricamento del modello.
  • MODEL_UPLOAD_REGION: (facoltativo) la regione in cui viene caricato il modello ottimizzato. Se non specifichi una regione di caricamento del modello, il modello ottimizzato viene caricato nella stessa regione in cui viene eseguito il job della pipeline. Per ulteriori informazioni, consulta Regione di caricamento del modello.
  • ACCELERATOR_TYPE: (facoltativo, valore predefinito GPU) il tipo di acceleratore da utilizzare per l'ottimizzazione del modello. Le opzioni valide sono:
    • GPU: utilizza otto GPU A100 da 80 GB per l'ottimizzazione. Assicurati di avere una quota sufficiente. Se scegli GPU, è supportato VPC‐SC. CMEK è supportata se la località di ottimizzazione e la località di caricamento del modello sono us-centra1. Per maggiori informazioni, consulta la pagina Impostazioni della regione per l'ottimizzazione supervisionata. Se scegli GPU, i calcoli di ottimizzazione del modello vengono eseguiti nella regione us-central1.
    • TPU: utilizza 64 core del pod TPU v3 per l'ottimizzazione. Assicurati di avere una quota sufficiente. CMEK non è supportata, ma è supportato VPC‐SC. Se scegli TPU, i calcoli di ottimizzazione del modello vengono eseguiti nella regione europe-west4.
  • TEACHER_MODEL_REFERENCE: nome del modello di insegnante da utilizzare per la distillazione. Il modello supportato è text-unicorn@001.
  • STUDENT_MODEL_REFERENCE: nome del modello studente da utilizzare per la distillazione. Il modello supportato è text-bison@002.
  • STEPS: il numero di passaggi da eseguire per l'ottimizzazione del modello. Il valore predefinito è 300. Le dimensioni del batch variano in base alla località di ottimizzazione e alle dimensioni del modello. Per i modelli 8K, come text-bison@002, chat-bison@002, code-bison@002 e codechat-bison@002:
    • us-central1 ha una dimensione del batch pari a 8.
    • europe-west4 ha una dimensione del batch di 24.
    Per i modelli da 32.000, ad esempio text-bison-32k, chat-bison-32k, code-bison-32k e codechat-bison-32k:
    • us-central1 ha una dimensione del batch pari a 8.
    • europe-west4 ha una dimensione del batch pari a 8.

    Ad esempio, se stai addestrando text-bison@002 in europe-west4, ci sono 240 esempi in un set di dati di addestramento e imposti steps su 20, il numero di esempi di addestramento è il prodotto di 20 passaggi e la dimensione del batch di 24 o 480 passaggi di addestramento. In questo caso, il processo di addestramento prevede due epoche perché analizza gli esempi due volte. In us-central1, se ci sono 240 esempi in un set di dati di addestramento e imposti steps su 15, il numero di esempi di addestramento è il prodotto di 15 passaggi e la dimensione del batch di 8 o 120 passaggi di addestramento. In questo caso, ci sono 0,5 epoche perché il numero di passaggi di addestramento è dimezzato rispetto agli esempi.

  • LEARNING_RATE_MULTIPLIER: un moltiplicatore da applicare al tasso di apprendimento suggerito. Per utilizzare il tasso di apprendimento suggerito, usa 1.0.
  • EVAL_DATASET_URI: (facoltativo) l'URI del file JSONL che contiene il set di dati di valutazione per la previsione e la valutazione batch. La valutazione non è supportata per chat-bison. Per maggiori informazioni, consulta Formato del set di dati per l'ottimizzazione di un modello di codice. Il set di dati di valutazione richiede tra 10 e 250 esempi.
  • EVAL_INTERVAL: (facoltativo, 20 predefinito) il numero di passaggi dell'ottimizzazione tra una valutazione e l'altra. L'intervallo di valutazione non è supportato per i modelli di chat. Poiché la valutazione viene eseguita sull'intero set di dati di valutazione, un intervallo di valutazione inferiore determina tempi di ottimizzazione più lunghi. Ad esempio, se steps è 200 e EVAL_INTERVAL è 100, otterrai solo due punti dati per le metriche di valutazione. Questo parametro richiede l'impostazione di evaluation_data_uri.
  • ENABLE_EARLY_STOPPING: (facoltativo, true predefinito) un valore boolean che, se impostato su true, interrompe l'ottimizzazione prima di completare tutti i passaggi dell'ottimizzazione se le prestazioni del modello, come misurate dalla precisione dei token previsti, non migliorano sufficientemente tra le esecuzioni delle valutazioni. Se è false, l'ottimizzazione continua fino al completamento di tutti i relativi passaggi. Questo parametro richiede l'impostazione di evaluation_data_uri. L'opzione Abilita l'interruzione anticipata non è supportata per i modelli di chat.
  • TENSORBOARD_RESOURCE_ID: (facoltativo) l'ID di un'istanza Vertex AI TensorBoard. L'istanza Vertex AI TensorBoard viene utilizzata per creare un esperimento al termine del job di ottimizzazione. L'istanza Vertex AI TensorBoard deve trovarsi nella stessa regione della pipeline di ottimizzazione.
  • ENCRYPTION_KEY_NAME: (facoltativo) il nome completo di una chiave di crittografia gestita dal cliente (CMEK) che vuoi utilizzare per la crittografia dei dati. Una CMEK è disponibile solo in us-central1. Se utilizzi us-central1 e non specifichi una CMEK, viene utilizzata una chiave di crittografia gestita da Google. Per impostazione predefinita, viene utilizzata una chiave di crittografia gestita da Google in tutte le altre regioni disponibili. Per saperne di più, consulta la panoramica di CMEK.
  • TEMPLATE_URI: l'URI del modello di distillazione, https://us-kfp.pkg.dev/ml-pipeline/distillation/distillation/v1.0.0.
  • SERVICE_ACCOUNT: (facoltativo) l'account di servizio che Vertex AI utilizza per eseguire il job di pipeline. Per impostazione predefinita, viene utilizzato l'account di servizio predefinito di Compute Engine (PROJECT_NUMBER‑compute@developer.gserviceaccount.com) del progetto. Scopri di più su come collegare un account di servizio personalizzato.

Metodo HTTP e URL:

POST https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs

Corpo JSON della richiesta:

{
  "displayName": "PIPELINEJOB_DISPLAYNAME",
  "runtimeConfig": {
    "gcsOutputDirectory": "gs://OUTPUT_DIR",
    "parameterValues": {
      "project": "PROJECT_ID",
      "model_display_name": "MODEL_DISPLAYNAME",
      "dataset_uri": "gs://DATASET_URI",
      "location": "MODEL_UPLOAD_REGION",
      "accelerator_type": "ACCELERATOR_TYPE",
      "teacher_model_reference": TEACHER_MODEL_REFERENCE,
      "student_model_reference": STUDENT_MODEL_REFERENCE,
      "train_steps": STEPS,
      "learning_rate_multiplier": LEARNING_RATE_MULTIPLIER,
      "evaluation_data_uri": "gs://EVAL_DATASET_URI",
      "evaluation_interval": EVAL_INTERVAL,
      "enable_early_stopping": ENABLE_EARLY_STOPPING,
      "enable_checkpoint_selection": "ENABLE_CHECKPOINT_SELECTION",
      "tensorboard_resource_id": "TENSORBOARD_ID",
      "encryption_spec_key_name": "ENCRYPTION_KEY_NAME"
    }
  },
  "encryptionSpec": {
    "kmsKeyName": "ENCRYPTION_KEY_NAME"
  },
  "serviceAccount": "SERVICE_ACCOUNT",
  "templateUri": "TEMPLATE_URI"
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

arricciatura

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs"

PowerShell

Salva il corpo della richiesta in un file denominato request.json ed esegui questo comando:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs" | Select-Object -Expand Content

Dovresti ricevere una risposta in formato JSON simile alla seguente. Tieni presente che pipelineSpec è stato troncato per risparmiare spazio.

Python

Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.

from __future__ import annotations

from typing import Optional

from google.auth import default

import vertexai
from vertexai.preview.language_models import TextGenerationModel, TuningEvaluationSpec


credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])


def distill_model(
    project_id: str,
    location: str,
    dataset: str,
    teacher_model: str,
    train_steps: int = 300,
    evaluation_dataset: Optional[str] = None,
) -> None:
    """Distill a new model.

    Args:
      project_id: GCP Project ID, used to initialize vertexai
      location: GCP Region, used to initialize vertexai
      dataset: GCS URI of jsonl file.
      teacher_model: Name of the teacher model.
      train_steps: Number of training steps to use when tuning the model.
      evaluation_dataset: GCS URI of jsonl file of evaluation data.
    """
    vertexai.init(project=project_id, location=location, credentials=credentials)

    eval_spec = TuningEvaluationSpec(evaluation_data=evaluation_dataset)

    student_model = TextGenerationModel.from_pretrained("text-bison@002")
    distillation_job = student_model.distill_from(
        teacher_model=teacher_model,
        dataset=dataset,
        # Optional:
        train_steps=train_steps,
        evaluation_spec=eval_spec,
    )

    return distillation_job

Console

Per distillare un modello di testo utilizzando la console Google Cloud, segui questi passaggi:

  1. Nella sezione Vertex AI della console Google Cloud, vai alla pagina Vertex AI Studio.

    Vai a Vertex AI Studio

  2. Fai clic sulla scheda Tune e distilla.
  3. Fai clic su Crea modello distillato.
  4. Configura i dettagli del modello:
    • Nome modello: inserisci un nome per il modello distillato.
    • Modello insegnante: seleziona il modello che vuoi utilizzare per il modello insegnante.
    • Modello studente: seleziona il modello che vuoi utilizzare per il modello studente.
    • Regione: seleziona la regione in cui viene eseguito il job di ottimizzazione della pipeline e in cui viene eseguito il deployment del modello ottimizzato.
    • Directory di lavoro: inserisci la località di Cloud Storage in cui sono archiviati gli artefatti quando il modello viene ottimizzato.
  5. Espandi Opzioni avanzate per configurare le impostazioni avanzate.
    • Passaggi di addestramento: inserisci il numero di passaggi da eseguire per l'ottimizzazione del modello. Il valore predefinito è 300. Le dimensioni del batch variano in base alla località di ottimizzazione e alle dimensioni del modello. Per i modelli 8K, come text-bison@002, chat-bison@002, code-bison@002 e codechat-bison@002:
      • us-central1 ha una dimensione del batch pari a 8.
      • europe-west4 ha una dimensione del batch di 24.
      Per i modelli da 32.000, ad esempio text-bison-32k, chat-bison-32k, code-bison-32k e codechat-bison-32k:
      • us-central1 ha una dimensione del batch pari a 8.
      • europe-west4 ha una dimensione del batch pari a 8.

      Ad esempio, se stai addestrando text-bison@002 in europe-west4, ci sono 240 esempi in un set di dati di addestramento e imposti steps su 20, il numero di esempi di addestramento è il prodotto di 20 passaggi e la dimensione del batch di 24 o 480 passaggi di addestramento. In questo caso, il processo di addestramento prevede due epoche perché analizza gli esempi due volte. In us-central1, se ci sono 240 esempi in un set di dati di addestramento e imposti steps su 15, il numero di esempi di addestramento è il prodotto di 15 passaggi e la dimensione del batch di 8 o 120 passaggi di addestramento. In questo caso, ci sono 0,5 epoche perché il numero di passaggi di addestramento è dimezzato rispetto agli esempi.

    • Moltiplicatore del tasso di apprendimento: inserisci la dimensione del passaggio a ogni iterazione. Il valore predefinito è 1.
    • Tipo di acceleratore: (facoltativo) inserisci il tipo di acceleratore da utilizzare per l'ottimizzazione del modello. Le opzioni valide sono:
      • GPU: utilizza otto GPU A100 da 80 GB per l'ottimizzazione. Assicurati di avere una quota sufficiente. Se scegli GPU, è supportato VPC‐SC. CMEK è supportata se la località di ottimizzazione e la località di caricamento del modello sono us-centra1. Per maggiori informazioni, consulta la pagina Impostazioni della regione per l'ottimizzazione supervisionata. Se scegli GPU, i calcoli di ottimizzazione del modello vengono eseguiti nella regione us-central1.
      • TPU: utilizza 64 core del pod TPU v3 per l'ottimizzazione. Assicurati di avere una quota sufficiente. CMEK non è supportata, ma è supportato VPC‐SC. Se scegli TPU, i calcoli di ottimizzazione del modello vengono eseguiti nella regione europe-west4.
    • (Facoltativo) Aggiungi un'istanza TensorBoard: (facoltativo) l'ID di un'istanza Vertex AI TensorBoard. L'istanza Vertex AI TensorBoard viene utilizzata per creare un esperimento al termine del job di ottimizzazione. L'istanza Vertex AI TensorBoard deve trovarsi nella stessa regione della pipeline di ottimizzazione.
    • Crittografia (facoltativa) Scegli se utilizzare una chiave di crittografia gestita da Google o una chiave di crittografia gestita dal cliente (CMEK). Una CMEK è disponibile per la crittografia solo nella regione us-central1. In tutte le altre regioni disponibili, viene utilizzata una chiave di crittografia gestita da Google. Per saperne di più, vedi Panoramica di CMEK.
    • Account di servizio (facoltativo) Scegli un account di servizio gestito dall'utente. Un account di servizio determina a quali risorse Google Cloud può accedere il tuo codice di servizio. Se non scegli un account di servizio, viene utilizzato un agente di servizio che includa le autorizzazioni appropriate per la maggior parte dei modelli.
  6. Fai clic su Continua.
  7. Se vuoi caricare il file del set di dati di distillazione, seleziona  Carica il file JSONL in Cloud Storage. Se il file del tuo set di dati si trova già in un bucket Cloud Storage, seleziona  File JSONL esistente su Cloud Storage.

    Carica un file JSONL

    • In Seleziona file JSONL, fai clic su Sfoglia e seleziona il file del set di dati.
    • In Posizione del set di dati, fai clic su Sfoglia e seleziona il bucket Cloud Storage in cui vuoi archiviare il file del set di dati.

    Usa un file JSONL esistente

    In Percorso file di Cloud Storage, fai clic su Sfoglia e seleziona il bucket Cloud Storage in cui si trova il file del set di dati.

  8. (Facoltativo) Per valutare il modello distillato, seleziona Abilita la valutazione del modello e configura la valutazione del modello:
    • Set di dati di valutazione: (facoltativo) l'URI del file JSONL che contiene il set di dati di valutazione per la previsione e la valutazione batch. La valutazione non è supportata per codechat-bison. Per ulteriori informazioni, consulta Formato del set di dati per l'ottimizzazione di un modello di codice. Il set di dati di valutazione richiede tra 10 e 250 esempi.
    • Intervallo di valutazione: (facoltativo, valore predefinito 20) Il numero di passaggi dell'ottimizzazione tra ogni valutazione. L'intervallo di valutazione non è supportato per i modelli di chat. Poiché la valutazione viene eseguita sull'intero set di dati di valutazione, un intervallo di valutazione inferiore determina tempi di ottimizzazione più lunghi. Ad esempio, se steps è 200 e EVAL_INTERVAL è 100, otterrai solo due punti dati per le metriche di valutazione. Questo parametro richiede l'impostazione di evaluation_data_uri.
    • Abilita interruzione anticipata: (facoltativo, true predefinito) un valore boolean che, se impostato su true, interrompe l'ottimizzazione prima di completare tutti i passaggi di ottimizzazione se le prestazioni del modello, come misurate dalla precisione dei token previsti, non migliorano sufficientemente tra le esecuzioni delle valutazioni. Se è false, l'ottimizzazione continua fino al completamento di tutti i relativi passaggi. Questo parametro richiede l'impostazione di evaluation_data_uri. L'opzione Abilita l'interruzione anticipata non è supportata per i modelli di chat.
    • Abilita la selezione dei checkpoint: se questa opzione è abilitata, Vertex AI seleziona e restituisce il checkpoint con le migliori prestazioni di valutazione del modello da tutti i checkpoint creati durante il job di ottimizzazione. Se disabilitato, viene restituito l'ultimo checkpoint creato durante il job di ottimizzazione. Ogni checkpoint fa riferimento a uno snapshot del modello durante un job di ottimizzazione.
    • (Facoltativo) Istanza TensorBoard: (facoltativo) l'ID di un'istanza Vertex AI TensorBoard. L'istanza Vertex AI TensorBoard viene utilizzata per creare un esperimento al termine del job di ottimizzazione. L'istanza Vertex AI TensorBoard deve trovarsi nella stessa regione della pipeline di ottimizzazione.
  9. Fai clic su Avvia distillazione.

La tabella seguente mostra le configurazioni consigliate per distillare un modello di base per attività:

Attività Numero di esempi nel set di dati Passaggi di addestramento
Classificazione 100+ 200-1000
Riassunto 100-500+ 1000-1500
QA estrattivo 100+ 200-800

Per i passaggi di addestramento, puoi provare più di un valore per ottenere le migliori prestazioni su un particolare set di dati, ad esempio 100, 200, 500.

Visualizza un elenco di modelli distillati

Puoi visualizzare un elenco dei modelli nel progetto attuale, compresi i modelli distillati, utilizzando la console Google Cloud o l'SDK Vertex AI per Python.

Python

Prima di provare questo esempio, segui le istruzioni di configurazione di Python riportate nella guida rapida di Vertex AI sull'utilizzo delle librerie client. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Python Vertex AI.

Per eseguire l'autenticazione in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

import vertexai

from vertexai.language_models import TextGenerationModel

# TODO(developer): Update values for project_id & location
vertexai.init(project=project_id, location=location)
model = TextGenerationModel.from_pretrained("text-bison@002")
tuned_model_names = model.list_tuned_model_names()
print(tuned_model_names)

Console

Per visualizzare i tuoi modelli distillati nella console Google Cloud, vai alla pagina Vertex AI Model Registry.

Vai a Vertex AI Model Registry

Carica un modello di testo distillato

Il seguente codice campione utilizza l'SDK Vertex AI per Python per caricare un modello di generazione di testo distillato:

import vertexai
from vertexai.preview.language_models import TextGenerationModel

model = TextGenerationModel.get_tuned_model(TUNED_MODEL_NAME)

Sostituisci TUNED_MODEL_NAME con il nome della risorsa qualificata del modello distillato. Il nome è nel formato projects/PROJECT_ID/locations/LOCATION/models/MODEL_ID. Puoi trovare l'ID del tuo modello distillato in Vertex AI Model Registry.

Metriche di ottimizzazione e valutazione

Puoi configurare un job di ottimizzazione del modello per raccogliere e segnalare le metriche di ottimizzazione e valutazione del modello, che possono poi essere visualizzate utilizzando Vertex AI TensorBoard.

Metriche di ottimizzazione del modello

Puoi configurare un job di ottimizzazione del modello per raccogliere le seguenti metriche di ottimizzazione per chat-bison, code-bison, codechat-bison e text-bison:
  • /train_total_loss: perdita del set di dati di ottimizzazione in una fase di addestramento.
  • /train_fraction_of_correct_next_step_preds: l'accuratezza del token in una fase di addestramento. Un'unica previsione consiste in una sequenza di token. Questa metrica misura l'accuratezza dei token previsti rispetto ai dati empirici reali nel set di dati di ottimizzazione.
  • /train_num_predictions: Numero di token previsti in una fase di addestramento.

Metriche di valutazione del modello

Puoi configurare un job di ottimizzazione del modello per raccogliere le seguenti metriche di valutazione per code-bison e text-bison:

  • /eval_total_loss: perdita del set di dati di valutazione in una fase di valutazione.
  • /eval_fraction_of_correct_next_step_preds: l'accuratezza del token in una fase di valutazione. Un'unica previsione consiste in una sequenza di token. Questa metrica misura l'accuratezza dei token previsti rispetto ai dati empirici reali nel set di dati di valutazione.
  • /eval_num_predictions: numero di token previsti in un passaggio di valutazione.

Le visualizzazioni delle metriche sono disponibili al termine del job di ottimizzazione del modello. Se specifichi solo un ID istanza di Vertex AI TensorBoard e non un set di dati di valutazione quando crei il job di ottimizzazione, sono disponibili solo le visualizzazioni per le metriche di ottimizzazione.