Ottimizza i modelli di codice

I modelli di codice possono essere ottimizzati mediante l'ottimizzazione supervisionata. L'ottimizzazione supervisionata utilizza esempi etichettati che dimostrano il tipo di output che preferisci dalla generazione del codice o dal modello di chat del codice durante l'inferenza. I modelli di codice non supportano l'ottimizzazione mediante l'ottimizzazione dell'apprendimento per rinforzo con feedback umano (RLHF).

Scenari per l'utilizzo dell'ottimizzazione del modello di codice

L'ottimizzazione è necessaria quando vuoi che un modello impari qualcosa di di nicchia o di specifico che si discosta dai pattern generali di linguaggio e codice. Di seguito sono esempi di ciò che puoi insegnare ai modelli code-bison e codechat-bison:

  • Come generare codice per le librerie personalizzate. Addestrando un modello di codice con esempi etichettati di una libreria personalizzata, puoi generare o chattare di codice specifico per quella libreria personalizzata.
  • Come utilizzare il codebase. Addestrando un modello con esempi etichettati del tuo codebase, puoi generare codice o chattare sul codice che utilizza qualità univoche nel codebase.
  • Come generare un codice utilizzando varianti di un linguaggio di programmazione. Addestrando un modello di codice con esempi etichettati di una variante linguistica, puoi generare o chattare del codice che utilizza le convenzioni e gli standard specifici di quella variante linguistica.

Questi scenari includono requisiti di codice difficili da acquisire tramite le sole istruzioni dei prompt. Di seguito sono riportati alcuni esempi:

Generazione del codice

  • Questo prompt e questa risposta di esempio consentono di ottimizzare code-bison in modo che funzioni con un set di dati specifico.

  • Questo prompt e questa risposta di esempio consentono di addestrare code-bison a creare un prodotto utilizzando Python.

Chat di codice

  • Questo prompt e questa risposta di esempio consentono di ottimizzare codechat-bison in modo che un utente impari a lavorare con un set di dati specifico.

  • Questo prompt e questa risposta di esempio consentono di ottimizzare codechat-bison per aiutare un utente a imparare a creare un prodotto utilizzando Python durante una sessione di chat.

Prepara il set di dati di ottimizzazione del modello di codice

Il set di dati utilizzato per ottimizzare un modello di codice include esempi allineati con l'attività che vuoi venga eseguita dal modello. Il set di dati deve includere almeno 10 esempi, ma ne consigliamo almeno 500 per ottenere buoni risultati. Più esempi fornisci, migliori saranno i risultati.

Formato del set di dati per l'ottimizzazione di un modello di codice

Il set di dati dell'ottimizzazione per un modello di generazione del codice e un modello di chat del codice devono essere in formato JSON Lines (JSONL). Di seguito sono riportati i dettagli sul formato del set di dati ed esempi di set di dati per ogni modello:

Generazione del codice

Il set di dati dell'ottimizzazione del modello di generazione del codice deve essere in formato JSON Lines (JSONL), dove ogni riga contiene un singolo esempio di ottimizzazione. Ogni esempio è composto da un campo input_text che contiene il prompt al modello e da un campo output_text contenente una risposta di esempio che il modello ottimizzato dovrebbe generare.

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

Esempi di un set di dati per l'ottimizzazione di un modello di generazione del codice

Questo argomento mostra due esempi di set di dati di ottimizzazione del modello di generazione del codice. Di seguito è riportato il primo esempio di un set di dati per l'ottimizzazione della generazione del codice:

{"input_text": "How to create a product in Python with the Cloud Vision API?", "output_text": "Use this
Python code sample to learn how to create a
product with the Cloud Vision API:\n\n```python\n\r\n\r\n\r\n\r\n\r\nfrom google.cloud import
vision\r\nfrom google.protobuf import field_mask_pb2 as field_mask\r\n\r\ndef
create_product(\r\n project_id, location, product_id, product_display_name,\r\n
product_category):\r\n \"\"\"Create one product.\r\n Args:\r\n project_id: Id of
the project.\r\n location: A compute region name.\r\n product_id: Id of the
product.\r\n product_display_name: Display name of the product.\r\n
product_category: Category of the product.\r\n \"\"\"\r\n client =
vision.ProductSearchClient()\r\n\r\n # A resource that represents Google Cloud
Platform location.\r\n location_path =
f\"projects/{project_id}/locations/{location}\"\r\n\r\n # Create a product with
the product specification in the region.\r\n # Set product display name and
product category.\r\n product = vision.Product(\r\n
display_name=product_display_name,\r\n
product_category=product_category)\r\n\r\n # The response is the product with
the `name` field populated.\r\n response = client.create_product(\r\n
parent=location_path,\r\n product=product,\r\n product_id=product_id)\r\n\r\n #
Display the product information.\r\n print('Product name:
{}'.format(response.name))\r\n```"}

Di seguito è riportato il secondo esempio di un set di dati per l'ottimizzazione della generazione del codice:

{"input_text": "python to retrieve the labels of a dataset for a given dataset
ID in BigQuery", "output_text": "Here is a Python code sample to retrieve the labels of a
dataset for a given dataset ID in BigQuery.\n\n```python\n\n from google.cloud import
bigquery\n\n # Construct a BigQuery client object.\n client =
bigquery.Client()\n\n # TODO(developer): Set dataset_id to the ID of the dataset
to fetch.\n # dataset_id = \"your-project.your_dataset\"\n\n dataset =
client.get_dataset(dataset_id) # Make an API request.\n\n # View dataset
labels.\n print(\"Dataset ID: {}\".format(dataset_id))\n print(\"Labels:\")\n if
dataset.labels:\n for label, value in dataset.labels.items():\n print(\"\\t{}:
{}\".format(label, value))\n else:\n print(\"\\tDataset has no labels
defined.\")\n```"}

Chat di codice

Il set di dati dell'ottimizzazione del modello di chat del codice deve essere in formato JSON Lines (JSONL), dove ogni riga contiene un singolo esempio di ottimizzazione. Ogni esempio è composto da un campo messages contenente esempi di prompt di chat e risposte che il modello ottimizzato dovrebbe generare.

Il numero massimo di campi author che gli esempi nel set di dati per un modello di chat di codice possono contenere è 10.000. Questo valore massimo si riferisce alla somma di tutti i campi author in tutti i campi messages di tutti gli esempi.

Esempi di un set di dati per l'ottimizzazione dei modelli di chat del codice

Questo argomento mostra due esempi di set di dati di ottimizzazione dei modelli di chat di codice. Di seguito è riportato il primo esempio di un set di dati per l'ottimizzazione della chat di codice:

{"messages": [{"author":"user", "content": "How to create a product in
Python with Cloud Vision?"}, {"author": "assistant", "content": "Use this Python code sample to
learn how to create a product with Cloud Vision:\n\n```python\n\r\n\r\n\r\n\r\n\r\nfrom
google.cloud import vision\r\nfrom google.protobuf import field_mask_pb2 as
field_mask\r\n\r\ndef create_product(\r\n project_id, location, product_id,
product_display_name,\r\n product_category):\r\n \"\"\"Create one product.\r\n
Args:\r\n project_id: Id of the project.\r\n location: A compute region
name.\r\n product_id: Id of the product.\r\n product_display_name: Display name
of the product.\r\n product_category: Category of the product.\r\n \"\"\"\r\n
client = vision.ProductSearchClient()\r\n\r\n # A resource that represents
Google Cloud Platform location.\r\n location_path =
f\"projects/{project_id}/locations/{location}\"\r\n\r\n # Create a product with
the product specification in the region.\r\n # Set product display name and
product category.\r\n product = vision.Product(\r\n
display_name=product_display_name,\r\n
product_category=product_category)\r\n\r\n # The response is the product with
the `name` field populated.\r\n response = client.create_product(\r\n
parent=location_path,\r\n product=product,\r\n product_id=product_id)\r\n\r\n #
Display the product information.\r\n print('Product name:
{}'.format(response.name))\r\n```"}]}

Di seguito è riportato il secondo esempio di un set di dati per l'ottimizzazione della chat di codice:

{"messages": [{"author":"user", "content": "Python to retrieve the labels of a
dataset for a given dataset ID in BigQuery"}, {"author": "assistant", "content": "Here is a
Python code sample to retrieve the labels of a dataset for a given dataset
ID in BigQuery.\n\n```python\n\n from google.cloud import bigquery\n\n # Construct a
BigQuery client object.\n client = bigquery.Client()\n\n # TODO(developer): Set
dataset_id to the ID of the dataset to fetch.\n # dataset_id =
\"your-project.your_dataset\"\n\n dataset = client.get_dataset(dataset_id) #
Make an API request.\n\n # View dataset labels.\n print(\"Dataset ID:
{}\".format(dataset_id))\n print(\"Labels:\")\n if dataset.labels:\n for label,
value in dataset.labels.items():\n print(\"\\t{}: {}\".format(label, value))\n
else:\n print(\"\\tDataset has no labels defined.\")\n```"}]}

Mantieni la coerenza con i dati di produzione

Gli esempi nei tuoi 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:", anche il traffico di produzione deve essere formattato in modo da includere un "question:" e un "context:" nello stesso ordine in cui appare negli esempi di set di dati. Se escludi il contesto, il modello non riconoscerà il pattern, anche se la domanda esatta era presente in un esempio nel set di dati.

Includi istruzioni negli esempi

Per attività come la generazione di codice, puoi creare un set di dati di esempi che non contengono istruzioni. Tuttavia, l'esclusione delle istruzioni dagli esempi nel set di dati determina prestazioni inferiori dopo l'ottimizzazione rispetto all'inclusione delle istruzioni, soprattutto per i set di dati più piccoli.

Istruzioni non incluse:

{
  "input_text": "Calculate the sum of a list of integers.",
  "output_text": "```python\nnums = [1, 2, 3]\ntotal_sum = sum(nums)\n```"
}

Istruzioni incluse:

{
  "input_text": "Write the code in Python: calculate the sum of a list of integers",
  "output_text": "```python\nnums = [1, 2, 3]\ntotal_sum = sum(nums)\n```"
}

Carica set di dati di ottimizzazione 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 del 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.

Impostazioni della regione di ottimizzazione supervisionata

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

Regione job di pipeline

La regione del job della pipeline è quella in cui viene eseguito il job della pipeline. Se la regione di caricamento del modello facoltativa non è specificata, il modello viene caricato e ne 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 sapere quali regioni puoi utilizzare per la regione del job di pipeline, consulta Regioni supportate per job di pipeline e caricamento di modelli. Devi specificare la regione del job della pipeline utilizzando uno dei seguenti metodi:

  • Se utilizzi l'SDK Vertex AI, puoi specificare la regione in cui viene eseguito il job di pipeline utilizzando il parametro tuning_job_location sul metodo tune_model dell'oggetto che rappresenta il modello che stai ottimizzando (ad esempio, il metodo TextGenerationModel.tune_model).

  • Se crei un job di ottimizzazione supervisionato tramite l'invio di una richiesta POST utilizzando il metodo pipelineJobs.create, utilizzerai l'URL per specificare la regione in cui viene eseguito il job della pipeline. Nel seguente URL, sostituendo 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 supervisionato di ottimizzazione del modello, specifica la regione del job della pipeline nel controllo Regione quando crei il job di ottimizzazione. 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 supervisionato di ottimizzazione del modello, entrambe le regioni sono sempre le stesse.

Regione di caricamento modello

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

  • Se utilizzi l'SDK Vertex AI, il parametro tuned_model_location viene specificato sul metodo tune_model dell'oggetto che rappresenta il modello che stai ottimizzando (ad esempio, il metodo TextGenerationModel.tune_model).

  • Se crei un job di ottimizzazione del modello supervisionato inviando una richiesta POST utilizzando 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 supervisionato di ottimizzazione del modello, devi specificare la regione di caricamento del modello nel controllo Regione quando crei il job di ottimizzazione. 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 supervisionato di ottimizzazione del modello, entrambe le regioni sono sempre le stesse.

Regione di ottimizzazione del modello

La regione di ottimizzazione del modello è il luogo in cui avviene il calcolo dell'ottimizzazione del modello. Questa regione è determinata dal tipo di acceleratore scelto. Se specifichi TPU come tipo di acceleratore, il calcolo dell'ottimizzazione del modello avviene in europe-west4. Se specifichi GPU come tipo di acceleratore, l'ottimizzazione del modello viene eseguita in us-central1.

Regioni supportate per il caricamento di modelli e job di pipeline

Puoi utilizzare una delle seguenti regioni per specificare la regione di caricamento del modello e la regione 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 ottimizzazione del modello di codice

Puoi creare un job di ottimizzazione supervisionato utilizzando la console Google Cloud, l'API o l'SDK Vertex AI per Python. Per indicazioni sulle configurazioni di ottimizzazione del modello, consulta la pagina Configurazioni consigliate.

Crea un job di ottimizzazione del modello di generazione del codice

Di seguito viene illustrato come creare un job di ottimizzazione di un modello di generazione del codice utilizzando la console Google Cloud o i comandi dell'API REST.

REST

Per creare un job di ottimizzazione del modello di generazione del codice, invia una richiesta POST utilizzando il metodo pipelineJobs.

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

  • PROJECT_ID: il tuo ID progetto.
  • TUNINGPIPELINE_DISPLAYNAME: un nome visualizzato per il job di pipeline.
  • OUTPUT_DIR: l'URI del bucket in cui eseguire l'output degli artefatti della pipeline.
  • MODEL_DISPLAYNAME: un nome visualizzato per il modello caricato (creato) da pipelineJob.
  • DATASET_URI: URI del file del set di dati.
  • EVAL_DATASET_URI: (facoltativo) l'URI del file JSONL contenente 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.
  • EVAL_INTERVAL: (facoltativo, valore predefinito 20) il numero di passaggi di 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.
  • PIPELINE_JOB_REGION: la regione in cui viene eseguito il job di ottimizzazione della pipeline. Questa è anche la regione predefinita in cui viene caricato il modello ottimizzato. Se vuoi caricare il modello in una regione diversa, utilizza il parametro location per specificare la regione di caricamento del modello ottimizzato. Per maggiori informazioni, consulta Regione del job di pipeline.
  • 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 carica nella stessa regione in cui viene eseguito il job della pipeline. Per maggiori informazioni, consulta Regione di caricamento 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 quella di caricamento del modello sono us-centra1. Per maggiori informazioni, consulta Impostazioni delle regioni di ottimizzazione supervisionate. 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 VPC‐SC è supportato. Se scegli TPU, i calcoli di ottimizzazione del modello vengono eseguiti nella regione europe-west4.
  • ENABLE_EARLY_STOPPING: (facoltativo, valore predefinito true) un boolean che, se impostato su true, interrompe l'ottimizzazione prima di completare tutti i passaggi di ottimizzazione se le prestazioni del modello, misurate in base alla precisione dei token previsti, non migliorano abbastanza 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.
  • ENABLE_CHECKPOINT_SELECTION: un valore di stringa che può essere true, false o default. Se impostato su "true", 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 impostato su "false", viene restituito il checkpoint finale creato durante il job di ottimizzazione. Ogni checkpoint fa riferimento a uno snapshot del modello durante un job di ottimizzazione.
  • 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 proprietà di Google e gestita da Google. Una chiave di proprietà di Google e gestita da Google viene utilizzata per impostazione predefinita in tutte le regioni disponibili. Per maggiori informazioni, vedi Panoramica di CMEK.
  • STEPS: il numero di passaggi da eseguire per l'ottimizzazione del modello. Il valore predefinito è 300. La dimensione del batch varia in base alla località di ottimizzazione e alle dimensioni del modello. Per i modelli 8.000, 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 pari a 24.
    Per 32.000 modelli, come 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, esistono 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é gli esempi vengono sottoposti 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 : la dimensione del passaggio a ogni iterazione. Il valore predefinito è 1.

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",
      "evaluation_data_uri": "EVAL_DATASET_URI",
      "evaluation_interval": "EVAL_INTERVAL",
      "enable_early_stopping": "ENABLE_EARLY_STOPPING",
      "enable_checkpoint_selection": "ENABLE_CHECKPOINT_SELECTION",
      "tensorboard_resource_id": "TENSORBOARD_RESOURCE_ID",
      "location": "MODEL_UPLOAD_REGION",
      "accelerator_type": "ACCELERATOR_TYPE",
      "large_model_reference": "code-bison@002",
      "train_steps": STEPS,
      "learning_rate_multiplier": LEARNING_RATE_MULTIPLIER
    }
  }
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-model/v3.0.0"
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

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 JSON simile alla seguente. Tieni presente che pipelineSpec è stato troncato per risparmiare spazio.

Console

Per ottimizzare una generazione di codice o un modello di chat del codice con l'ottimizzazione supervisionata 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 Ottimizzazione e distillazione.
  3. Fai clic su Crea modello ottimizzato.
  4. Fai clic su Ottimizzazione supervisionata.
  5. Configura i dettagli del modello:
    • Nome del modello ottimizzato: inserisci un nome per il modello ottimizzato.
    • Modello di base: seleziona il modello che vuoi ottimizzare.
    • 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 output: inserisci il percorso di Cloud Storage in cui sono archiviati gli artefatti quando il modello viene ottimizzato.
  6. 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. La dimensione del batch varia in base alla località di ottimizzazione e alle dimensioni del modello. Per i modelli 8.000, 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 pari a 24.
      Per 32.000 modelli, come 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, esistono 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é gli esempi vengono sottoposti 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 quella di caricamento del modello sono us-centra1. Per maggiori informazioni, consulta Impostazioni della regione di 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 VPC‐SC è supportato. Se scegli TPU, i calcoli di ottimizzazione del modello vengono eseguiti nella regione europe-west4.
    • 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 (facoltativo) Scegli se utilizzare una chiave di proprietà di Google e 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 proprietà di Google e gestita da Google. Per ulteriori informazioni, 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 include le autorizzazioni appropriate per la maggior parte dei modelli.
  7. Fai clic su Continua.
  8. Se vuoi caricare il file del tuo set di dati, seleziona  Carica il file JSONL in Cloud Storage. Se il file del 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 tuo set di dati.
    • In Posizione del set di dati, fai clic su Sfoglia e seleziona il bucket Cloud Storage in cui 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.

  9. (Facoltativo) Per valutare il modello ottimizzato, seleziona Abilita valutazione del modello e configura la valutazione del modello:
    • Set di dati di valutazione: (facoltativo) l'URI del file JSONL contenente 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, 20 predefinito) il numero di passaggi di 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.
    • Attiva l'interruzione anticipata: (facoltativo, valore predefinito true) un elemento boolean che, se impostato su true, interrompe l'ottimizzazione prima di completare tutti i passaggi dell'ottimizzazione se le prestazioni del modello, misurate in base all'accuratezza dei token previsti, non migliorano abbastanza 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 selezione del checkpoint: se abilitata, Vertex AI seleziona e restituisce il punto di controllo con le migliori prestazioni di valutazione del modello da tutti i checkpoint creati durante il job di ottimizzazione. Se questa opzione è disabilitata, viene restituito il checkpoint finale creato durante il job di ottimizzazione. Ogni checkpoint fa riferimento a uno snapshot del modello durante un job di ottimizzazione.
    • ID 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.
  10. Fai clic su Avvia ottimizzazione.

Python

Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, vedi Installare l'SDK Vertex AI per Python. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Python.

from __future__ import annotations


def tune_code_generation_model(project_id: str) -> None:
    from google.auth import default

    import vertexai
    from vertexai.language_models import CodeGenerationModel

    # Initialize Vertex AI
    # TODO(developer): Update project_id
    credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
    vertexai.init(project=project_id, location="us-central1", credentials=credentials)

    model = CodeGenerationModel.from_pretrained("code-bison@002")

    tuning_job = model.tune_model(
        training_data="gs://cloud-samples-data/ai-platform/generative_ai/headline_classification.jsonl",
        tuning_job_location="europe-west4",
        tuned_model_location="us-central1",
    )

    print(tuning_job._status)

    return model


Comando curl di esempio per ottimizzare un modello di generazione del codice

PROJECT_ID=myproject
DATASET_URI=gs://my-gcs-bucket-uri/dataset
EVAL_DATASET_URI=gs://cloud-samples-data/vertex-ai/model-evaluation/eval_sample.jsonl
OUTPUT_DIR=gs://my-gcs-bucket-uri/output
ACCELERATOR_TYPE=GPU
LOCATION=us-central1

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/pipelineJobs?pipelineJobId=tune-large-model-$(date +%Y%m%d%H%M%S)" -d \
$'{
  "displayName": "'${PIPELINE_NAME}'",
  "runtimeConfig": {
    "gcsOutputDirectory": "'${OUTPUT_DIR}'",
    "parameterValues": {
      "project": "'${PROJECT_ID}'",
      "model_display_name": "The display name for your model in the UI",
      "dataset_uri": "'${DATASET_URI}'",
      "evaluation_data_uri:": "'${EVAL_DATASET_URI}'",
      "location": "'${LOCATION}'",
      "accelerator_type": "'${ACCELERATOR_TYPE}'",
      "large_model_reference": "code-bison@002",
      "learning_rate_multiplier": 1,
      "train_steps": 300
    }
  },
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-model/v3.0.0"
}'

Crea un job di ottimizzazione del modello di chat del codice

Di seguito viene illustrato come creare un job di ottimizzazione del modello di chat del codice utilizzando la console Google Cloud o i comandi dell'API REST.

REST

Per creare un job di ottimizzazione del modello di chat del codice, invia una richiesta POST utilizzando il metodo pipelineJobs.

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

  • PROJECT_ID: il tuo ID progetto.
  • TUNINGPIPELINE_DISPLAYNAME: un nome visualizzato per il job di pipeline.
  • OUTPUT_DIR: l'URI del bucket in cui produrre gli artifacs della pipeline.
  • PIPELINE_JOB_REGION: la regione in cui viene eseguito il job di ottimizzazione della pipeline. Questa è anche la regione predefinita in cui viene caricato il modello ottimizzato. Se vuoi caricare il modello in una regione diversa, utilizza il parametro location per specificare la regione di caricamento del modello ottimizzato. Per maggiori informazioni, consulta Regione del job di pipeline.
  • 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 carica nella stessa regione in cui viene eseguito il job della pipeline. Per maggiori informazioni, consulta Regione di caricamento 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 quella di caricamento del modello sono us-centra1. Per maggiori informazioni, consulta Impostazioni delle regioni di ottimizzazione supervisionate. 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 VPC‐SC è supportato. Se scegli TPU, i calcoli di ottimizzazione del modello vengono eseguiti nella regione europe-west4.
  • MODEL_DISPLAYNAME: un nome visualizzato per il modello caricato (creato) da pipelineJob.
  • DATASET_URI: URI del file del set di dati.
  • 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 proprietà di Google e gestita da Google. Una chiave di proprietà di Google e gestita da Google viene utilizzata per impostazione predefinita in tutte le regioni disponibili. Per maggiori informazioni, vedi Panoramica di CMEK.
  • DEFAULT_CONTEXT: il contesto che si applica a tutti gli esempi di ottimizzazione nel set di dati di ottimizzazione. L'impostazione del campo context in un esempio sostituisce il contesto predefinito.
  • STEPS: il numero di passaggi da eseguire per l'ottimizzazione del modello. Il valore predefinito è 300. La dimensione del batch varia in base alla località di ottimizzazione e alle dimensioni del modello. Per i modelli 8.000, 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 pari a 24.
    Per 32.000 modelli, come 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, esistono 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é gli esempi vengono sottoposti 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: la dimensione del passaggio a ogni iterazione. Il valore predefinito è 1.

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",
      "tensorboard_resource_id": "TENSORBOARD_RESOURCE_ID",
      "location": "MODEL_UPLOAD_REGION",
      "accelerator_type": "ACCELERATOR_TYPE",
      "large_model_reference": "codechat-bison@002",
      "default_context": "DEFAULT_CONTEXT",
      "train_steps": STEPS,
      "learning_rate_multiplier": LEARNING_RATE_MULTIPLIER
    }
  },
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-chat-model/v3.0.0"
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

curl

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 JSON simile alla seguente.
Tieni presente che pipelineSpec è stato troncato per risparmiare spazio.

Console

Per ottimizzare una generazione di codice o un modello di chat del codice con l'ottimizzazione supervisionata 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 Ottimizzazione e distillazione.
  3. Fai clic su Crea modello ottimizzato.
  4. Fai clic su Ottimizzazione supervisionata.
  5. Configura i dettagli del modello:
    • Nome del modello ottimizzato: inserisci un nome per il modello ottimizzato.
    • Modello di base: seleziona il modello che vuoi ottimizzare.
    • 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 output: inserisci il percorso di Cloud Storage in cui sono archiviati gli artefatti quando il modello viene ottimizzato.
  6. 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. La dimensione del batch varia in base alla località di ottimizzazione e alle dimensioni del modello. Per i modelli 8.000, 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 pari a 24.
      Per 32.000 modelli, come 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, esistono 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é gli esempi vengono sottoposti 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 quella di caricamento del modello sono us-centra1. Per maggiori informazioni, consulta Impostazioni della regione di 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 VPC‐SC è supportato. Se scegli TPU, i calcoli di ottimizzazione del modello vengono eseguiti nella regione europe-west4.
    • 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 (facoltativo) Scegli se utilizzare una chiave di proprietà di Google e 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 proprietà di Google e gestita da Google. Per ulteriori informazioni, 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 include le autorizzazioni appropriate per la maggior parte dei modelli.
  7. Fai clic su Continua.
  8. Se vuoi caricare il file del tuo set di dati, seleziona  Carica il file JSONL in Cloud Storage. Se il file del 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 tuo set di dati.
    • In Posizione del set di dati, fai clic su Sfoglia e seleziona il bucket Cloud Storage in cui 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.

  9. (Facoltativo) Per valutare il modello ottimizzato, seleziona Abilita valutazione del modello e configura la valutazione del modello:
    • Set di dati di valutazione: (facoltativo) l'URI del file JSONL contenente 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, 20 predefinito) il numero di passaggi di 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.
    • Attiva l'interruzione anticipata: (facoltativo, valore predefinito true) un elemento boolean che, se impostato su true, interrompe l'ottimizzazione prima di completare tutti i passaggi dell'ottimizzazione se le prestazioni del modello, misurate in base all'accuratezza dei token previsti, non migliorano abbastanza 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 selezione del checkpoint: se abilitata, Vertex AI seleziona e restituisce il punto di controllo con le migliori prestazioni di valutazione del modello da tutti i checkpoint creati durante il job di ottimizzazione. Se questa opzione è disabilitata, viene restituito il checkpoint finale creato durante il job di ottimizzazione. Ogni checkpoint fa riferimento a uno snapshot del modello durante un job di ottimizzazione.
    • ID 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.
  10. Fai clic su Avvia ottimizzazione.

Comando curl di esempio per ottimizzare un modello di chat del codice

PROJECT_ID=myproject
DATASET_URI=gs://my-gcs-bucket-uri/dataset
OUTPUT_DIR=gs://my-gcs-bucket-uri/output
ACCELERATOR_TYPE=GPU
LOCATION=us-central1

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/pipelineJobs?pipelineJobId=tune-large-chat-model-$(date +%Y%m%d%H%M%S)" -d \
$'{
  "displayName": "'${PIPELINE_NAME}'",
  "runtimeConfig": {
    "gcsOutputDirectory": "'${OUTPUT_DIR}'",
    "parameterValues": {
      "project": "'${PROJECT_ID}'",
      "model_display_name": "your-model-display-name",
      "dataset_uri": "'${DATASET_URI}'",
      "location": "'${LOCATION}'",
      "large_model_reference": "codechat-bison@002",
      "train_steps": 300,
      "learning_rate_multiplier": 1,
      "encryption_spec_key_name": "projects/myproject/locations/us-central1/keyRings/sample-key/cryptoKeys/sample-key"
    }
  },
  "encryptionSpec": {
    "kmsKeyName": "projects/myproject/locations/us-central1/keyRings/sample-key/cryptoKeys/sample-key"
  "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/large-language-model-pipelines/tune-large-chat-model/v3.0.0"
}'

La tabella seguente mostra le configurazioni consigliate per ottimizzare un modello di codice in base all'attività:

Attività N. di esempi nel set di dati Passaggi di addestramento
Generazione del codice 500+ 200-1000
Chat di codice 500+ 200-1000

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

Visualizza un elenco di modelli ottimizzati

Puoi utilizzare la console Google Cloud o l'SDK Vertex AI per Python per visualizzare un elenco dei tuoi modelli di codice ottimizzati nel progetto attuale.

Visualizza un elenco di modelli di codice ottimizzati (console)

Per visualizzare i tuoi modelli ottimizzati di chat del codice e generazione del codice nella console Google Cloud, vai alla pagina Vertex AI Model Registry.

Vai al registro dei modelli di Vertex AI

Visualizza un elenco di modelli ottimizzati di generazione del codice (SDK)

Il seguente codice campione utilizza l'SDK Vertex AI per Python per elencare i modelli di generazione del codice ottimizzati nel progetto attuale:

import vertexai
from vertexai.preview.language_models import CodeGenerationModel

model = CodeGenerationModel.from_pretrained("code-bison@002").list_tuned_model_names()

Visualizza un elenco di modelli di chat del codice ottimizzati (SDK)

Il seguente codice campione utilizza l'SDK Vertex AI per Python per elencare i modelli di chat del codice ottimizzati nel progetto attuale:

import vertexai
from vertexai.preview.language_models import CodeChatModel

model = CodeChatModel.from_pretrained("codechat-bison@002").list_tuned_model_names()

Carica un modello ottimizzato

Puoi utilizzare l'SDK Vertex AI per Python per caricare un modello di codice ottimizzato.

Carica un modello ottimizzato di generazione del codice

Il codice campione seguente utilizza l'SDK Vertex AI per Python per caricare un modello ottimizzato di generazione del codice. Nel codice campione, sostituisci TUNED_MODEL_NAME con il nome qualificato della risorsa del modello ottimizzato. Questo nome è nel formato projects/PROJECT_ID/locations/LOCATION/models/MODEL_ID. Puoi trovare l'ID del tuo modello ottimizzato in Vertex AI Model Registry.

import vertexai
from vertexai.preview.language_models import CodeGenerationModel

model = CodeGenerationModel.get_tuned_model(TUNED_MODEL_NAME)

Carica un modello ottimizzato di chat del codice

Il codice campione seguente utilizza l'SDK Vertex AI per Python per caricare un modello di chat del codice ottimizzato:

import vertexai
from vertexai.preview.language_models import CodeChatModel

model = CodeChatModel.get_tuned_model(TUNED_MODEL_NAME)

Metriche di ottimizzazione e valutazione

Puoi configurare un job di ottimizzazione del modello per raccogliere e generare report sulle 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 dei token in una fase di addestramento. Una singola previsione è composta da 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 per il set di dati di valutazione in un passaggio di valutazione.
  • /eval_fraction_of_correct_next_step_preds: l'accuratezza del token in una fase di valutazione. Una singola previsione è composta da 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 Vertex AI TensorBoard e non un set di dati di valutazione quando crei il job di ottimizzazione, saranno disponibili solo le visualizzazioni per le metriche di ottimizzazione.

Quota

I job di ottimizzazione in us-central1 utilizzano otto GPU A100 da 80 GB.

I job di ottimizzazione in europe-west4 utilizzano 64 core della risorsa di addestramento di modelli personalizzati TPU v3 pod.

Se non disponi di quota sufficiente o vuoi eseguire più job di ottimizzazione simultanei nel tuo progetto Google Cloud, devi richiedere una quota aggiuntiva:

  • Per us-central1, invia una richiesta per Restricted image training Nvidia A100 80 GB GPUs per region nella regione us-central1 in multipli di otto.

  • Per europe-west4, invia una richiesta per Restricted image training TPU V3 pod cores per region nella regione europe-west4 in multipli di 64.

Passaggi successivi

  • Per altri modelli, funzionalità avanzate e la possibilità di trascrivere file fino a 8 ore, vedi Speech-to-Text.