API di ottimizzazione

L'ottimizzazione del modello è un processo fondamentale per adattare Gemini all'esecuzione di attività specifiche con maggiore precisione e accuratezza. L'ottimizzazione funziona fornendo un modello con un set di dati di addestramento che contiene un insieme di esempi di attività downstream specifiche.

Utilizza l'API di ottimizzazione Gemini per i seguenti casi d'uso:

Modelli supportati:

Puoi utilizzare il perfezionamento supervisionato nei seguenti modelli Gemini:

Modello Versione
Gemini 1.0 Pro gemini-1.0-pro-002

Sintassi di esempio

Sintassi per l'ottimizzazione di un modello.

arricciatura

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \

http://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs \
-d '{
  "baseModel": "...",
  "supervisedTuningSpec" : {
    ...
      "hyper_parameters": {
        ...
      },
  },
  "tunedModelDisplayName": "",
}'

Elenco parametri

Consulta gli esempi per i dettagli di implementazione.

Corpo della richiesta

Il corpo della richiesta contiene dati con i seguenti parametri:

Parametri

source_model

Facoltativo: string

Nome del modello di base ottimizzato. I valori supportati sono: gemini-1.0-pro-002.

tunedModelDisplayName

string

Il nome visualizzato di TunedModel. Il nome può avere fino a 128 caratteri e può essere composto da qualsiasi carattere UTF-8.

supervisedTuningSpec

Parametri

training_dataset

string

URI Cloud Storage del tuo set di dati di addestramento. Il set di dati deve essere formattato come file JSONL. Per ottenere risultati ottimali, fornisci almeno da 100 a 500 esempi. Per ulteriori informazioni, consulta Informazioni sui set di dati di ottimizzazione supervisionati.

validation_dataset

Facoltativo: string

URI Cloud Storage del set di dati di convalida. Il set di dati deve essere formattato come file JSONL. Un set di dati può contenere fino a 256 esempi. Se fornisci questo file, i dati vengono utilizzati per generare periodicamente metriche di convalida durante l'ottimizzazione. Per maggiori informazioni, consulta Informazioni sui set di dati di ottimizzazione supervisionati .

epoch_count

Facoltativo: int

Numero di passaggi completi eseguiti dal modello sull'intero set di dati di addestramento durante l'addestramento.

learning_rate_multiplier

Facoltativo: float

Moltiplicatore per la regolazione del tasso di apprendimento predefinito.

adapter_size

Facoltativo: AdapterSize

Dimensione adattatore per la regolazione.

tuned_model_display_name

Facoltativo: string

Nome visualizzato di TunedModel. Il nome può avere fino a 128 caratteri e può essere composto da qualsiasi carattere UTF-8.

AdapterSize

Dimensione adattatore per il job di ottimizzazione.

Parametri

ADAPTER_SIZE_UNSPECIFIED

Dimensioni adattatore non specificate.

ADAPTER_SIZE_ONE

Adattatore taglia 1.

ADAPTER_SIZE_FOUR

Taglia adattatore 4.

ADAPTER_SIZE_EIGHT

Adattatore taglia 8.

ADAPTER_SIZE_SIXTEEN

Adattatore taglia 16.

Esempi

Crea un job di ottimizzazione supervisionato

Puoi creare un job di ottimizzazione del modello di testo supervisionato utilizzando l'SDK Vertex AI per Python o inviando una richiesta POST.

Caso d'uso di base

Il caso d'uso di base imposta solo i valori per baseModel e training_dataset_uri. Tutti gli altri parametri utilizzano i valori predefiniti.

REST

Per creare un job di ottimizzazione del modello, invia una richiesta POST utilizzando il metodo tuningJobs.create. Tieni presente che alcuni parametri non sono supportati da tutti i modelli. Assicurati di includere solo i parametri applicabili al modello che stai regolando.

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

  • PROJECT_ID: il tuo ID progetto.
  • TUNING_JOB_REGION: la regione in cui viene eseguito il job di ottimizzazione. Questa è anche la regione predefinita per cui viene caricato il modello ottimizzato.
  • BASE_MODEL: nome del modello di base da ottimizzare. Valori supportati: gemini-1.0-pro-002.
  • TRAINING_DATASET_URI: URI Cloud Storage del tuo set di dati di addestramento. Il set di dati deve essere formattato come file JSONL. Per ottenere risultati ottimali, fornisci almeno da 100 a 500 esempi. Per ulteriori informazioni, consulta Informazioni sui set di dati di ottimizzazione supervisionati .

Metodo HTTP e URL:

POST http://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs

Corpo JSON della richiesta:

{
  "baseModel": "BASE_MODEL",
  "supervisedTuningSpec" : {
      "training_dataset_uri": "TRAINING_DATASET_URI"
  },
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

arricciatura

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

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

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 "http://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs" | Select-Object -Expand Content

Dovresti ricevere una risposta in formato JSON simile alla seguente.

Python


import time

import vertexai
from vertexai.preview.tuning import sft

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"

vertexai.init(project=project_id, location="us-central1")

sft_tuning_job = sft.train(
    source_model="gemini-1.0-pro-002",
    train_dataset="gs://cloud-samples-data/ai-platform/generative_ai/sft_train_data.jsonl",
)

# Polling for job completion
while not sft_tuning_job.has_ended:
    time.sleep(60)
    sft_tuning_job.refresh()

print(sft_tuning_job.tuned_model_name)
print(sft_tuning_job.tuned_model_endpoint_name)
print(sft_tuning_job.experiment)

Caso d'uso avanzato

Il caso d'uso avanzato si estende al caso d'uso di base, ma imposta anche valori per hyper_parameters facoltativo, come epoch_count, learning_rate_multiplier e adapter_size.

REST

Per creare un job di ottimizzazione del modello, invia una richiesta POST utilizzando il metodo tuningJobs.create. Tieni presente che alcuni parametri non sono supportati da tutti i modelli. Assicurati di includere solo i parametri applicabili al modello che stai regolando.

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

  • PROJECT_ID: il tuo ID progetto.
  • TUNING_JOB_REGION: la regione in cui viene eseguito il job di ottimizzazione. Questa è anche la regione predefinita per cui viene caricato il modello ottimizzato.
  • BASE_MODEL: nome del modello di base da ottimizzare. Valori supportati: gemini-1.0-pro-002.
  • TRAINING_DATASET_URI: URI Cloud Storage del tuo set di dati di addestramento. Il set di dati deve essere formattato come file JSONL. Per ottenere risultati ottimali, fornisci almeno da 100 a 500 esempi. Per ulteriori informazioni, consulta Informazioni sui set di dati di ottimizzazione supervisionati .
  • VALIDATION_DATASET_URIFacoltativo: l'URI Cloud Storage del file del set di dati di convalida.
  • EPOCH_COUNTFacoltativo: il numero di epoche in cui eseguire l'addestramento. Non impostare il criterio per utilizzare il valore consigliato.
  • LEARNING_RATE_MULTIPLIER: facoltativo: un moltiplicatore da applicare al tasso di apprendimento suggerito. Non impostare il valore per utilizzare il valore consigliato.
  • TUNED_MODEL_DISPLAYNAME(Facoltativo) Un nome visualizzato per il modello ottimizzato. Se non viene configurato, viene generato un nome casuale.

Metodo HTTP e URL:

POST http://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs

Corpo JSON della richiesta:

{
  "baseModel": "BASE_MODEL",
  "supervisedTuningSpec" : {
      "training_dataset_uri": "TRAINING_DATASET_URI",
      "validation_dataset_uri": "VALIDATION_DATASET_URI",
      "hyper_parameters": {
          "epoch_count": EPOCH_COUNT,
          "learning_rate_multiplier": LEARNING_RATE_MULTIPLIER
      },
  },
  "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME,
}

Per inviare la richiesta, scegli una delle seguenti opzioni:

arricciatura

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

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

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 "http://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs" | Select-Object -Expand Content

Dovresti ricevere una risposta in formato JSON simile alla seguente.

Python


import time

import vertexai
from vertexai.preview.tuning import sft

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"

vertexai.init(project=project_id, location="us-central1")

sft_tuning_job = sft.train(
    source_model="gemini-1.0-pro-002",
    train_dataset="gs://cloud-samples-data/ai-platform/generative_ai/sft_train_data.jsonl",
    # The following parameters are optional
    validation_dataset="gs://cloud-samples-data/ai-platform/generative_ai/sft_validation_data.jsonl",
    epochs=4,
    learning_rate_multiplier=1.0,
    tuned_model_display_name="tuned_gemini_pro",
)

# Polling for job completion
while not sft_tuning_job.has_ended:
    time.sleep(60)
    sft_tuning_job.refresh()

print(sft_tuning_job.tuned_model_name)
print(sft_tuning_job.tuned_model_endpoint_name)
print(sft_tuning_job.experiment)

Elenco job di ottimizzazione

Puoi visualizzare un elenco dei job di ottimizzazione nel progetto attuale utilizzando l'SDK Vertex AI per Python o inviando una richiesta GET.

REST

Per creare un job di ottimizzazione del modello, invia una richiesta POST utilizzando il metodo tuningJobs.create. Tieni presente che alcuni parametri non sono supportati da tutti i modelli. Assicurati di includere solo i parametri applicabili al modello che stai regolando.

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

  • PROJECT_ID: il tuo ID progetto.
  • TUNING_JOB_REGION: la regione in cui viene eseguito il job di ottimizzazione. Questa è anche la regione predefinita per cui viene caricato il modello ottimizzato.

Metodo HTTP e URL:

GET http://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs

Per inviare la richiesta, scegli una delle seguenti opzioni:

arricciatura

Esegui questo comando:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"http://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs"

PowerShell

Esegui questo comando:

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

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "http://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs" | Select-Object -Expand Content

Dovresti ricevere una risposta in formato JSON simile alla seguente.

Python

import vertexai
from vertexai.preview.tuning import sft

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"

vertexai.init(project=project_id, location="us-central1")

responses = sft.SupervisedTuningJob.list()

for response in responses:
    print(response)

Ottieni dettagli di un job di ottimizzazione

Puoi ottenere i dettagli di un job di ottimizzazione utilizzando l'SDK Vertex AI per Python o inviando una richiesta GET.

REST

Per visualizzare un elenco dei job di ottimizzazione dei modelli, invia una richiesta GET utilizzando il metodo tuningJobs.get e specifica TuningJob_ID.

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

  • PROJECT_ID: il tuo ID progetto.
  • TUNING_JOB_REGION: la regione in cui viene eseguito il job di ottimizzazione. Questa è anche la regione predefinita per cui viene caricato il modello ottimizzato.
  • TUNING_JOB_ID: l'ID del job di ottimizzazione.

Metodo HTTP e URL:

GET http://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID

Per inviare la richiesta, scegli una delle seguenti opzioni:

arricciatura

Esegui questo comando:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"http://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID"

PowerShell

Esegui questo comando:

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

Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "http://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID" | Select-Object -Expand Content

Dovresti ricevere una risposta in formato JSON simile alla seguente.

Python

import vertexai
from vertexai.preview.tuning import sft

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "us-central1"
# tuning_job_id = "TUNING_JOB_ID"

vertexai.init(project=project_id, location="us-central1")

response = sft.SupervisedTuningJob(
    f"projects/{project_id}/locations/{location}/tuningJobs/{tuning_job_id}"
)

print(response)

Annulla un job di ottimizzazione

Puoi annullare un job di ottimizzazione utilizzando l'SDK Vertex AI per Python o inviando una richiesta POST.

REST

Per visualizzare un elenco dei job di ottimizzazione dei modelli, invia una richiesta GET utilizzando il metodo tuningJobs.cancel e specifica TuningJob_ID.

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

  • PROJECT_ID: il tuo ID progetto.
  • TUNING_JOB_REGION: la regione in cui viene eseguito il job di ottimizzazione. Questa è anche la regione predefinita per cui viene caricato il modello ottimizzato.
  • TUNING_JOB_ID: l'ID del job di ottimizzazione.

Metodo HTTP e URL:

POST http://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel

Per inviare la richiesta, scegli una delle seguenti opzioni:

arricciatura

Esegui questo comando:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"http://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel"

PowerShell

Esegui questo comando:

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

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "http://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel" | Select-Object -Expand Content

Dovresti ricevere una risposta in formato JSON simile alla seguente.

Python

import vertexai
from vertexai.preview.tuning import sft

# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "us-central1"
# tuning_job_id = "TUNING_JOB_ID"

vertexai.init(project=project_id, location="us-central1")

job = sft.SupervisedTuningJob(
    f"projects/{project_id}/locations/{location}/tuningJobs/{tuning_job_id}"
)
job.cancel()

Passaggi successivi

Per la documentazione dettagliata, vedi quanto segue: