I modelli di codice possono essere ottimizzati utilizzando l'ottimizzazione supervisionata. L'ottimizzazione supervisionata utilizza esempi etichettati che mostrano il tipo di output che vuoi ottenere dalla generazione di codice o dal modello di chat di codice durante l'inferenza. I modelli di codice non supportano l'ottimizzazione tramite l'ottimizzazione dell'apprendimento per rinforzo con feedback umano (RLHF).
Scenari in cui utilizzare l'ottimizzazione del modello di codice
L'ottimizzazione è necessaria quando vuoi che un modello apprenda qualcosa di poco noto o specifico
che si discosta dai modelli linguistici e di codice generali. Di seguito sono riportati alcuni esempi di ciò che puoi insegnare ai modelli code-bison
e codechat-bison
:
- Come generare codice per librerie personalizzate. Addestrando un modello di codice con campioni etichettati di una libreria personalizzata, puoi generare o chattare sul codice specifico di quella libreria personalizzata.
- Come utilizzare la base di codice. Addestrando un modello con esempi etichettati del tuo codebase, puoi generare codice o chattare sul codice che utilizza qualità uniche nel tuo codebase.
- Come generare codice utilizzando le 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 solo tramite le istruzioni del prompt. Di seguito sono riportati alcuni esempi:
Generazione del codice
Questo prompt e questa risposta di esempio consentono di ottimizzare
code-bison
per l'utilizzo con un set di dati specifico.Questo prompt e questa risposta di esempio aiutano ad addestrare
code-bison
a creare un prodotto utilizzando Python.
Chat di codice
Questo prompt e questa risposta di esempio aiutano a ottimizzare
codechat-bison
per aiutare un utente a imparare a utilizzare un set di dati specifico.Questo prompt e questa risposta di esempio aiutano a 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 per l'ottimizzazione del modello di codice
Il set di dati utilizzato per ottimizzare un modello di codice include esempi in linea con l'attività che vuoi che venga eseguita dal modello. Il set di dati deve includere almeno 10 esempi, ma consigliamo di includerne 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 di ottimizzazione per un modello di generazione di codice e un modello di chat di codice deve essere in formato JSON Lines (JSONL). Di seguito sono riportati dettagli sul formato del set di dati ed esempi di set di dati per ogni modello:
Generazione del codice
Il set di dati di ottimizzazione del modello di generazione di codice deve essere in formato JSON Lines (JSONL), in cui ogni riga contiene un singolo esempio di ottimizzazione. Ogni esempio è composto da un campo input_text
contenente il prompt per il modello e un campo output_text
contenente una risposta di esempio che il modello ottimizzato dovrebbe produrre.
Il numero massimo di esempi che un set di dati per un modello di generazione di testo può contenere è 10.000.
Esempi di set di dati di ottimizzazione del modello di generazione di codice
Questo argomento mostra due esempi di set di dati di ottimizzazione del modello di generazione di codice. Di seguito è riportato il primo esempio di set di dati di ottimizzazione per la generazione di 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 set di dati di ottimizzazione della generazione di 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 di ottimizzazione del modello di chat di codice deve essere in formato JSON Lines (JSONL), in cui ogni riga contiene un singolo esempio di ottimizzazione. Ogni esempio è composto da un campo messages
che contiene prompt e risposte di chat di esempio che il modello ottimizzato dovrebbe produrre.
Il numero massimo di campi author
che gli esempi nel set di dati per un
modello di chat con codice possono contenere è 10.000. Questo valore massimo si riferisce alla somma di tutti i campi author
in tutti i messages
in tutti gli esempi.
Esempi di set di dati di ottimizzazione del modello di chat con codice
Questo argomento mostra due esempi di set di dati per l'ottimizzazione del modello di chat di codice. Di seguito è riportato il primo esempio di set di dati di 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 set di dati di 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 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 "question:"
e "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 fosse presente in un esempio del 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 comporta un peggioramento delle prestazioni dopo l'ottimizzazione rispetto all'inclusione delle istruzioni, in particolare per i set di dati più piccoli.
Istruzioni per le esclusioni:
{ "input_text": "Calculate the sum of a list of integers.", "output_text": "```python\nnums = [1, 2, 3]\ntotal_sum = sum(nums)\n```" }
Include istruzioni:
{ "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 i 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.
Una volta creato il bucket, carica il file del set di dati nel bucket.
Impostazioni della regione di ottimizzazione supervisionata
Quando configuri un job di ottimizzazione supervisionata, puoi specificare tre impostazioni della regione Google Cloud. Una regione è la regione in cui viene eseguita la pipeline che ottimizza il modello. L'altra regione è quella in cui viene eseguito il job di ottimizzazione del modello e viene caricato il modello ottimizzato.
Regione del job della pipeline
La regione del job della pipeline è la regione in cui viene eseguito il job della pipeline. Se non viene specificata la regione di caricamento del modello facoltativa, 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 della pipeline, consulta Regioni supportate per i job della pipeline e il caricamento dei 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 della pipeline utilizzando il parametro
tuning_job_location
nel metodotune_model
dell'oggetto che rappresenta il modello che stai ottimizzando (ad esempio il metodoTextGenerationModel.tune_model
).Se crei un job di ottimizzazione supervisionata inviando una richiesta POST utilizzando il metodo
pipelineJobs.create
, utilizza l'URL per specificare la regione in cui viene eseguito il job della pipeline. Nell'URL seguente, sostituisci entrambe le istanze diPIPELINE_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 ottimizzazione del modello supervisionato, devi specificare 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 di ottimizzazione del modello supervisionato, entrambe le regioni sono sempre le stesse.
Regione di caricamento del modello
Utilizza 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 modello e dei job della pipeline
per la regione di caricamento del modello. Puoi specificare la regione di caricamento del modello utilizzando uno
di questi metodi:
Se utilizzi l'SDK Vertex AI, il parametro
tuned_model_location
viene specificato nel metodotune_model
dell'oggetto che rappresenta il modello in fase di ottimizzazione (ad esempio il metodoTextGenerationModel.tune_model
).Se crei un job di ottimizzazione del modello supervisionato inviando una richiesta POST utilizzando il metodo
pipelineJobs
, puoi utilizzare il parametrolocation
per specificare la regione di caricamento del modello.Se utilizzi la console Google Cloud per creare un job di ottimizzazione del modello supervisionato, specifica 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 di ottimizzazione del modello supervisionato, 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
per il tipo di acceleratore, il calcolo dell'ottimizzazione del modello avviene in
europe-west4
. Se specifichi GPU
per il tipo di acceleratore, l'ottimizzazione del modello avviene in us-central1
.
Regioni supportate per il caricamento di job della pipeline e modelli
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 supervisionata utilizzando la console Google Cloud, l'API o l'SDK Vertex AI per Python. Per indicazioni sulle configurazioni di ottimizzazione del modello, consulta le configurazioni consigliate.
Crea un job di ottimizzazione del modello di generazione di codice
Di seguito viene mostrato come creare un job di ottimizzazione del modello di generazione di codice utilizzando la console Google Cloud o i comandi dell'API REST.
REST
Per creare un job di ottimizzazione del modello di generazione di codice, invia una richiesta POST utilizzando il metodo pipelineJobs.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto.
- TUNINGPIPELINE_DISPLAYNAME: un nome visualizzato per il job pipeline.
- OUTPUT_DIR: l'URI del bucket in cui eseguire l'output degli elementi della pipeline.
- MODEL_DISPLAYNAME: un nome visualizzato per il modello caricato (creato) dal job pipeline.
- DATASET_URI: l'URI del file del set di dati.
- (Facoltativo) EVAL_DATASET_URI: 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, sesteps
è 200 eEVAL_INTERVAL
è 100, otterrai solo due punti dati per le metriche di valutazione. Questo parametro richiede l'impostazione dievaluation_data_uri
. - PIPELINE_JOB_REGION:
la regione in cui viene eseguito il job di ottimizzazione della pipeline. Si tratta anche della 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 ulteriori informazioni, consulta Regione del job della 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 viene caricato nella stessa regione in cui viene eseguito il job della pipeline. Per ulteriori informazioni, consulta la sezione Regione di caricamento del modello.
- ACCELERATOR_TYPE:
(facoltativo, predefinito
GPU
) il tipo di acceleratore da utilizzare per ottimizzare il modello. Le opzioni valide sono:GPU
: utilizza otto GPU A100 da 80 GB per l'ottimizzazione. Assicurati di avere una quota sufficiente. Se scegliGPU
, VPC-SC è supportato. CMEK è supportato se la località di ottimizzazione e la località di caricamento del modello sonous-centra1
. Per ulteriori informazioni, consulta le impostazioni della regione di ottimizzazione supervisionata. Se scegliGPU
, i calcoli di ottimizzazione del modello vengono eseguiti nella regioneus-central1
.TPU
: utilizza 64 core del pod TPU v3 per la regolazione. Assicurati di avere una quota sufficiente. CMEK non è supportato, ma VPC-SC è supportato. Se scegliTPU
, i calcoli di ottimizzazione del modello vengono eseguiti nella regioneeurope-west4
.
- ENABLE_EARLY_STOPPING:
(facoltativo, predefinito
true
) Un valoreboolean
che, se impostato sutrue
, interrompe l'ottimizzazione prima di completare tutti i relativi passaggi se le prestazioni del modello, misurate in base all'accuratezza dei token previsti, non migliorano sufficientemente tra un'esecuzione della valutazione e l'altra. Se èfalse
, l'ottimizzazione continua fino al completamento di tutti i relativi passaggi. Questo parametro richiede l'impostazione dievaluation_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
odefault
. Se impostato su "true", Vertex AI seleziona e restituisce il checkpoint con le migliori prestazioni di valutazione del modello tra 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'operazione 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 TensorBoard di Vertex AI 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 chiave CMEK è disponibile solo in
us-central1
. Se utilizzius-central1
e non specifichi una CMEK, viene utilizzata una chiave di proprietà di Google e gestita da Google. Per impostazione predefinita, in tutte le altre regioni disponibili viene utilizzata una chiave di proprietà di Google e gestita da Google. Per ulteriori informazioni, consulta la 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 posizione di ottimizzazione e alle dimensioni del modello. Per i modelli 8K, come
text-bison@002
,chat-bison@002
,code-bison@002
ecodechat-bison@002
:us-central1
ha una dimensione del batch pari a 8.europe-west4
ha una dimensione del batch pari a 24.
text-bison-32k
,chat-bison-32k
,code-bison-32k
ecodechat-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
ineurope-west4
, ci sono 240 esempi in un set di dati di addestramento e impostisteps
su 20, il numero di esempi di addestramento è il prodotto di 20 passaggi e la dimensione del batch di 24, ovvero 480 passaggi di addestramento. In questo caso, il processo di addestramento prevede due epoche perché esamina gli esempi due volte. Inus-central1
, se un set di dati di addestramento contiene 240 esempi e impostisteps
su 15, il numero di esempi di addestramento è il prodotto di 15 passaggi e la dimensione del batch di 8, ovvero 120 passaggi di addestramento. In questo caso, ci sono 0,5 epoche perché il numero di passaggi di addestramento è la metà del numero di esempi. - LEARNING_RATE_MULTIPLIER : la dimensione del passo 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
,
quindi esegui il comando seguente:
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
,
quindi esegui il comando seguente:
$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 un modello di generazione di codice o chat di codice con ottimizzazione supervisionata utilizzando la console Google Cloud, svolgi i seguenti passaggi:
- Nella sezione Vertex AI della console Google Cloud, vai alla pagina Vertex AI Studio.
- Fai clic sulla scheda Ottimizzazione e distillazione.
- Fai clic su Crea modello ottimizzato.
- Fai clic su Ottimizzazione supervisionata.
- Configura i dettagli del modello:
- Nome del modello ottimizzato: inserisci un nome per il modello ottimizzato.
- Modello di base: seleziona il modello da ottimizzare.
- Regione: seleziona la regione in cui viene eseguito il job di ottimizzazione della pipeline e in cui è stato eseguito il deployment del modello ottimizzato.
- Directory di output: inserisci la posizione di Cloud Storage in cui vengono archiviati gli artefatti quando il modello viene ottimizzato.
- Espandi Opzioni avanzate per configurare le impostazioni avanzate.
- Passaggi di addestramento:
inserisci il
numero di passaggi da eseguire per ottimizzare il modello. Il valore predefinito è 300. La dimensione del batch varia in base alla posizione di ottimizzazione e alle dimensioni del modello. Per i modelli 8K, come
text-bison@002
,chat-bison@002
,code-bison@002
ecodechat-bison@002
:us-central1
ha una dimensione del batch pari a 8.europe-west4
ha una dimensione del batch pari a 24.
text-bison-32k
,chat-bison-32k
,code-bison-32k
ecodechat-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
ineurope-west4
, ci sono 240 esempi in un set di dati di addestramento e impostisteps
su 20, il numero di esempi di addestramento è il prodotto di 20 passaggi e la dimensione del batch di 24, ovvero 480 passaggi di addestramento. In questo caso, il processo di addestramento prevede due epoche perché esamina gli esempi due volte. Inus-central1
, se un set di dati di addestramento contiene 240 esempi e impostisteps
su 15, il numero di esempi di addestramento è il prodotto di 15 passaggi e la dimensione del batch di 8, ovvero 120 passaggi di addestramento. In questo caso, ci sono 0,5 epoche perché il numero di passaggi di addestramento è la metà del numero di esempi. - Moltiplicatore del tasso di apprendimento: inserisci la dimensione del passaggio in ogni iterazione. Il valore predefinito è 1.
- (Facoltativo) Tipo di acceleratore: inserisci il tipo di acceleratore da utilizzare per ottimizzare il modello. Le opzioni valide sono:
GPU
: utilizza otto GPU A100 da 80 GB per l'ottimizzazione. Assicurati di avere una quota sufficiente. Se scegliGPU
, VPC-SC è supportato. CMEK è supportato se la località di ottimizzazione e la località di caricamento del modello sonous-centra1
. Per ulteriori informazioni, vedi Impostazioni della regione di ottimizzazione supervisionata. Se scegliGPU
, i calcoli di ottimizzazione del modello vengono eseguiti nella regioneus-central1
.TPU
: utilizza 64 core del pod TPU v3 per la regolazione. Assicurati di disporre di quota sufficiente. CMEK non è supportato, ma VPC-SC è supportato. Se scegliTPU
, i calcoli di ottimizzazione del modello vengono eseguiti nella regioneeurope-west4
.
- (Facoltativo) Aggiungi un'istanza TensorBoard: 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 TensorBoard di Vertex AI deve trovarsi nella stessa regione della pipeline di ottimizzazione.
- (Facoltativo) Crittografia: scegli se utilizzare una chiave di proprietà e gestita da Google o una chiave di crittografia gestita dal cliente (CMEK). La chiave CMEK per la crittografia è disponibile 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, consulta la panoramica di CMEK. - (Facoltativo) Account di servizio: 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, verrà utilizzato un agente di servizio che include le autorizzazioni appropriate per la maggior parte dei modelli.
- Passaggi di addestramento:
inserisci il
numero di passaggi da eseguire per ottimizzare il modello. Il valore predefinito è 300. La dimensione del batch varia in base alla posizione di ottimizzazione e alle dimensioni del modello. Per i modelli 8K, come
- Fai clic su Continua.
- Se vuoi caricare il file del set di dati, seleziona
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.
Utilizzare un file JSONL esistente
In Percorso file Cloud Storage, fai clic su Sfoglia e seleziona il bucket Cloud Storage in cui si trova il file del set di dati.
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.
- (Facoltativo) Per valutare il modello ottimizzato, seleziona Abilita la valutazione del modello e configura la valutazione del modello:
- (Facoltativo) Set di dati di valutazione: 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. - (Facoltativo) Intervallo di valutazione: il numero di passaggi per l'ottimizzazione tra ogni valutazione. Il valore predefinito è
20
. 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, sesteps
è 200 eEVAL_INTERVAL
è 100, otterrai solo due punti dati per le metriche di valutazione. Questo parametro richiede l'impostazione dievaluation_data_uri
. - (Facoltativo) Abilita l'interruzione anticipata: il valore predefinito è
true
. Un valoreboolean
che, se impostato sutrue
, interrompe l'ottimizzazione prima di completare tutti i relativi passaggi se le prestazioni del modello non migliorano sufficientemente tra un'esecuzione della valutazione e l'altra secondo la misurazione dell'accuratezza dei token previsti. Se èfalse
, l'ottimizzazione continua fino al completamento di tutti i relativi passaggi. Questo parametro richiede l'impostazione dievaluation_data_uri
. L'opzione Abilita l'interruzione anticipata non è supportata per i modelli di chat. - Abilita la selezione del checkpoint: se questa opzione è attivata, Vertex AI seleziona e restituisce il checkpoint con le migliori prestazioni di valutazione del modello tra tutti i checkpoint creati durante il job di ottimizzazione. Se l'opzione è disabilitata, viene restituito il checkpoint finale creato durante il job di ottimizzazione. Ogni checkpoint fa riferimento a uno snapshot del modello durante un'operazione 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 TensorBoard di Vertex AI deve trovarsi nella stessa regione della pipeline di ottimizzazione.
- (Facoltativo) Set di dati di valutazione: l'URI del file JSONL contenente il set di dati di valutazione per la previsione e la valutazione batch. La valutazione non è supportata per
- Fai clic su Avvia ottimizzazione.
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.
Comando curl di esempio per ottimizzare un modello di generazione di 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 con codice
Di seguito viene mostrato come creare un job di ottimizzazione del modello di chat di codice utilizzando la console Google Cloud o i comandi dell'API REST.
REST
Per creare un job di ottimizzazione del modello di chat di codice, invia una richiesta POST utilizzando il metodo pipelineJobs.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
- PROJECT_ID: il tuo ID progetto.
- TUNINGPIPELINE_DISPLAYNAME: un nome visualizzato per il job pipeline.
- OUTPUT_DIR: l'URI del bucket in cui eseguire l'output degli elementi della pipeline.
- PIPELINE_JOB_REGION:
la regione in cui viene eseguito il job di ottimizzazione della pipeline. Si tratta anche della 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 ulteriori informazioni, consulta Regione del job della 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 viene caricato nella stessa regione in cui viene eseguito il job della pipeline. Per ulteriori informazioni, consulta la sezione Regione di caricamento del modello.
- ACCELERATOR_TYPE:
(facoltativo, predefinito
GPU
) il tipo di acceleratore da utilizzare per ottimizzare il modello. Le opzioni valide sono:GPU
: utilizza otto GPU A100 da 80 GB per l'ottimizzazione. Assicurati di avere una quota sufficiente. Se scegliGPU
, VPC-SC è supportato. CMEK è supportato se la località di ottimizzazione e la località di caricamento del modello sonous-centra1
. Per ulteriori informazioni, consulta le impostazioni della regione di ottimizzazione supervisionata. Se scegliGPU
, i calcoli di ottimizzazione del modello vengono eseguiti nella regioneus-central1
.TPU
: utilizza 64 core del pod TPU v3 per la regolazione. Assicurati di avere una quota sufficiente. CMEK non è supportato, ma VPC-SC è supportato. Se scegliTPU
, i calcoli di ottimizzazione del modello vengono eseguiti nella regioneeurope-west4
.
- MODEL_DISPLAYNAME: un nome visualizzato per il modello caricato (creato) dal job pipeline.
- DATASET_URI: l'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 TensorBoard di Vertex AI 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 chiave CMEK è disponibile solo in
us-central1
. Se utilizzius-central1
e non specifichi una CMEK, viene utilizzata una chiave di proprietà di Google e gestita da Google. Per impostazione predefinita, in tutte le altre regioni disponibili viene utilizzata una chiave di proprietà di Google e gestita da Google. Per ulteriori informazioni, consulta la 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 posizione di ottimizzazione e alle dimensioni del modello. Per i modelli 8K, come
text-bison@002
,chat-bison@002
,code-bison@002
ecodechat-bison@002
:us-central1
ha una dimensione del batch pari a 8.europe-west4
ha una dimensione del batch pari a 24.
text-bison-32k
,chat-bison-32k
,code-bison-32k
ecodechat-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
ineurope-west4
, ci sono 240 esempi in un set di dati di addestramento e impostisteps
su 20, il numero di esempi di addestramento è il prodotto di 20 passaggi e la dimensione del batch di 24, ovvero 480 passaggi di addestramento. In questo caso, il processo di addestramento prevede due epoche perché esamina gli esempi due volte. Inus-central1
, se un set di dati di addestramento contiene 240 esempi e impostisteps
su 15, il numero di esempi di addestramento è il prodotto di 15 passaggi e la dimensione del batch di 8, ovvero 120 passaggi di addestramento. In questo caso, ci sono 0,5 epoche perché il numero di passaggi di addestramento è la metà del numero di esempi. - LEARNING_RATE_MULTIPLIER: le dimensioni 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
,
quindi esegui il comando seguente:
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
,
quindi esegui il comando seguente:
$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 un modello di generazione di codice o chat di codice con ottimizzazione supervisionata utilizzando la console Google Cloud, svolgi i seguenti passaggi:
- Nella sezione Vertex AI della console Google Cloud, vai alla pagina Vertex AI Studio.
- Fai clic sulla scheda Ottimizzazione e distillazione.
- Fai clic su Crea modello ottimizzato.
- Fai clic su Ottimizzazione supervisionata.
- Configura i dettagli del modello:
- Nome del modello ottimizzato: inserisci un nome per il modello ottimizzato.
- Modello di base: seleziona il modello da ottimizzare.
- Regione: seleziona la regione in cui viene eseguito il job di ottimizzazione della pipeline e in cui è stato eseguito il deployment del modello ottimizzato.
- Directory di output: inserisci la posizione di Cloud Storage in cui vengono archiviati gli artefatti quando il modello viene ottimizzato.
- Espandi Opzioni avanzate per configurare le impostazioni avanzate.
- Passaggi di addestramento:
inserisci il
numero di passaggi da eseguire per ottimizzare il modello. Il valore predefinito è 300. La dimensione del batch varia in base alla posizione di ottimizzazione e alle dimensioni del modello. Per i modelli 8K, come
text-bison@002
,chat-bison@002
,code-bison@002
ecodechat-bison@002
:us-central1
ha una dimensione del batch pari a 8.europe-west4
ha una dimensione del batch pari a 24.
text-bison-32k
,chat-bison-32k
,code-bison-32k
ecodechat-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
ineurope-west4
, ci sono 240 esempi in un set di dati di addestramento e impostisteps
su 20, il numero di esempi di addestramento è il prodotto di 20 passaggi e la dimensione del batch di 24, ovvero 480 passaggi di addestramento. In questo caso, il processo di addestramento prevede due epoche perché esamina gli esempi due volte. Inus-central1
, se un set di dati di addestramento contiene 240 esempi e impostisteps
su 15, il numero di esempi di addestramento è il prodotto di 15 passaggi e la dimensione del batch di 8, ovvero 120 passaggi di addestramento. In questo caso, ci sono 0,5 epoche perché il numero di passaggi di addestramento è la metà del numero di esempi. - Moltiplicatore del tasso di apprendimento: inserisci la dimensione del passaggio in ogni iterazione. Il valore predefinito è 1.
- (Facoltativo) Tipo di acceleratore: inserisci il tipo di acceleratore da utilizzare per ottimizzare il modello. Le opzioni valide sono:
GPU
: utilizza otto GPU A100 da 80 GB per l'ottimizzazione. Assicurati di disporre di quota sufficiente. Se scegliGPU
, VPC-SC è supportato. CMEK è supportato se la località di ottimizzazione e la località di caricamento del modello sonous-centra1
. Per ulteriori informazioni, vedi Impostazioni della regione di ottimizzazione supervisionata. Se scegliGPU
, i calcoli di ottimizzazione del modello vengono eseguiti nella regioneus-central1
.TPU
: utilizza 64 core del pod TPU v3 per la regolazione. Assicurati di avere una quota sufficiente. CMEK non è supportato, ma VPC-SC è supportato. Se scegliTPU
, i calcoli di ottimizzazione del modello vengono eseguiti nella regioneeurope-west4
.
- (Facoltativo) Aggiungi un'istanza TensorBoard: 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 TensorBoard di Vertex AI deve trovarsi nella stessa regione della pipeline di ottimizzazione.
- (Facoltativo) Crittografia: scegli se utilizzare una chiave di proprietà e gestita da Google o una chiave di crittografia gestita dal cliente (CMEK). La chiave CMEK per la crittografia è disponibile 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, consulta la panoramica di CMEK. - (Facoltativo) Account di servizio: 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, verrà utilizzato un agente di servizio che include le autorizzazioni appropriate per la maggior parte dei modelli.
- Passaggi di addestramento:
inserisci il
numero di passaggi da eseguire per ottimizzare il modello. Il valore predefinito è 300. La dimensione del batch varia in base alla posizione di ottimizzazione e alle dimensioni del modello. Per i modelli 8K, come
- Fai clic su Continua.
- Se vuoi caricare il file del set di dati, seleziona
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.
Utilizzare un file JSONL esistente
In Percorso file Cloud Storage, fai clic su Sfoglia e seleziona il bucket Cloud Storage in cui si trova il file del set di dati.
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.
- (Facoltativo) Per valutare il modello ottimizzato, seleziona Abilita la valutazione del modello e configura la valutazione del modello:
- (Facoltativo) Set di dati di valutazione: 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. - (Facoltativo) Intervallo di valutazione: il numero di passaggi per l'ottimizzazione tra ogni valutazione. Il valore predefinito è
20
. 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, sesteps
è 200 eEVAL_INTERVAL
è 100, otterrai solo due punti dati per le metriche di valutazione. Questo parametro richiede l'impostazione dievaluation_data_uri
. - (Facoltativo) Abilita l'interruzione anticipata: il valore predefinito è
true
. Un valoreboolean
che, se impostato sutrue
, interrompe l'ottimizzazione prima di completare tutti i relativi passaggi se le prestazioni del modello non migliorano sufficientemente tra un'esecuzione della valutazione e l'altra secondo la misurazione dell'accuratezza dei token previsti. Se èfalse
, l'ottimizzazione continua fino al completamento di tutti i relativi passaggi. Questo parametro richiede l'impostazione dievaluation_data_uri
. L'opzione Abilita l'interruzione anticipata non è supportata per i modelli di chat. - Abilita la selezione del checkpoint: se questa opzione è attivata, Vertex AI seleziona e restituisce il checkpoint con le migliori prestazioni di valutazione del modello tra tutti i checkpoint creati durante il job di ottimizzazione. Se l'opzione è disabilitata, viene restituito il checkpoint finale creato durante il job di ottimizzazione. Ogni checkpoint fa riferimento a uno snapshot del modello durante un'operazione 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 TensorBoard di Vertex AI deve trovarsi nella stessa regione della pipeline di ottimizzazione.
- (Facoltativo) Set di dati di valutazione: l'URI del file JSONL contenente il set di dati di valutazione per la previsione e la valutazione batch. La valutazione non è supportata per
- Fai clic su Avvia ottimizzazione.
Comando curl di esempio per ottimizzare un modello di chat di 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"
}'
Configurazioni consigliate per l'ottimizzazione del modello di codice
La tabella seguente mostra le configurazioni consigliate per l'ottimizzazione di un modello di codice in base all'attività:
Attività | Numero 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 su 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 modelli di codice ottimizzati nel progetto corrente.
Visualizzare un elenco di modelli di codice ottimizzati (console)
Per visualizzare i modelli di chat di codice e generazione di codice ottimizzati nella console Google Cloud, vai alla pagina Model Registry di Vertex AI.
Vai a Vertex AI Model Registry
Visualizza un elenco di modelli di generazione di codice ottimizzati (SDK)
Il seguente codice campione utilizza l'SDK Vertex AI per Python per elencare i modelli di generazione di codice ottimizzati nel progetto corrente:
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 con codice ottimizzato (SDK)
Il seguente codice campione utilizza l'SDK Vertex AI per Python per elencare i modelli di chat codificati nel progetto corrente:
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 di generazione di codice ottimizzato
Il seguente codice campione utilizza l'SDK Vertex AI per Python per caricare un modello di generazione di codice ottimizzato. Nel codice campione, sostituisci
TUNED_MODEL_NAME
con il nome della risorsa qualificata del
tuo modello ottimizzato. Questo nome ha il formato
projects/PROJECT_ID/locations/LOCATION/models/MODEL_ID
.
Puoi trovare l'ID modello del modello ottimizzato nel
registro dei modelli di Vertex AI.
import vertexai from vertexai.preview.language_models import CodeGenerationModel model = CodeGenerationModel.get_tuned_model(TUNED_MODEL_NAME)
Carica un modello di chat con codice ottimizzato
Il seguente codice campione utilizza l'SDK Vertex AI per Python per caricare un modello di chat codificata 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 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 perchat-bison
, code-bison
, codechat-bison
e text-bison
:
/train_total_loss
: perdita per il set di dati di ottimizzazione in un passaggio di addestramento./train_fraction_of_correct_next_step_preds
: l'accuratezza del token in un passaggio di addestramento. Una singola previsione è costituita 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 un passaggio 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 un passaggio di valutazione. Una singola previsione è costituita 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, sono 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 del modello personalizzato TPU v3 pod
.
Se non disponi di quota sufficiente o vuoi eseguire più job di ottimizzazione contemporaneamente nel tuo progetto Google Cloud, devi richiedere una quota aggiuntiva:
Per
us-central1
, invia una richiesta diRestricted image training Nvidia A100 80 GB GPUs per region
nella regioneus-central1
in multipli di otto.Per
europe-west4
, invia una richiesta perRestricted image training TPU V3 pod cores per region
nella regioneeurope-west4
in multipli di 64.
Passaggi successivi
- Per altri modelli, funzionalità avanzate e la possibilità di trascrivere file di durata massima di otto ore, consulta Speech-to-Text.