Ottimizza un modello open

Questa pagina descrive come eseguire l'ottimizzazione supervisionata su modelli aperti come Llama 3.1.

Modalità di ottimizzazione supportate

  • Ottimizzazione completa

  • Low-Rank Adaptation (LoRA): LoRA è una modalità di ottimizzazione efficiente dei parametri che regola solo un sottoinsieme di parametri. È più conveniente e richiede meno dati di addestramento rispetto all'ottimizzazione completa. D'altra parte, il fine-tuning completo ha un potenziale di qualità superiore perché vengono modificati tutti i parametri.

Modelli supportati

  • Gemma 3 1B IT (google/gemma3@gemma-3-1b-it)
  • Gemma 3 4B IT (google/gemma3@gemma-3-4b-it)
  • Gemma 3 12B IT (google/gemma3@gemma-3-12b-it)
  • Gemma 3 27B IT (google/gemma3@gemma-3-27b-it)
  • Llama 3.1 8B (meta/llama3_1@llama-3.1-8b)
  • Llama 3.1 8B Instruct (meta/llama3_1@llama-3.1-8b-instruct)
  • Llama 3.2 1B Instruct (meta/llama3-2@llama-3.2-1b-instruct)
  • Llama 3.2 3B Instruct (meta/llama3-2@llama-3.2-3b-instruct)
  • Llama 3.3 70B Instruct (meta/llama3-3@llama-3.3-70b-instruct)
  • Qwen 3 4B (qwen/qwen3@qwen3-4b)
  • Qwen 3 8B (qwen/qwen3@qwen3-8b)
  • Qwen 3 14B (qwen/qwen3@qwen3-14b)
  • Qwen 3 32B (qwen/qwen3@qwen3-32b)
  • Llama 4 Scout 17B 16E Instruct (meta/llama4@llama-4-scout-17b-16e-instruct)

Aree geografiche supportate

  • Iowa (us-central1)
  • Paesi Bassi (europe-west4)
  • Oregon (us-west1)
  • Columbus (us-east5)
  • Singapore (asia-southeast1)

Limitazioni

Modello Specifica Valore
Gemma 3 1B IT Modalità di ottimizzazione Ottimizzazione completa
Lunghezza massima della sequenza 8192
Modalità Testo
Gemma 3 4B IT Modalità di ottimizzazione Ottimizzazione completa
Lunghezza massima della sequenza 8192
Modalità Testo
Gemma 3 12B IT Modalità di ottimizzazione Ottimizzazione completa
Lunghezza massima della sequenza 8192
Modalità Testo
Gemma 3 27B IT Modalità di ottimizzazione Ottimizzazione efficiente dei parametri
Ottimizzazione completa
Lunghezza massima della sequenza 8192
Modalità Testo
Llama 3.1 8B Modalità di ottimizzazione Ottimizzazione efficiente dei parametri
Ottimizzazione completa
Lunghezza massima della sequenza 8192
Modalità Testo
Llama 3.1 8B Instruct Modalità di ottimizzazione Ottimizzazione efficiente dei parametri
Ottimizzazione completa
Lunghezza massima della sequenza 8192
Modalità Testo
Llama 3.2 1B Instruct Modalità di ottimizzazione Ottimizzazione completa
Lunghezza massima della sequenza 8192
Modalità Testo
Llama 3.2 3B Instruct Modalità di ottimizzazione Ottimizzazione completa
Lunghezza massima della sequenza 8192
Modalità Testo
Llama 3.3 70B Instruct Modalità di ottimizzazione Ottimizzazione efficiente dei parametri
Ottimizzazione completa
Lunghezza massima della sequenza 8192
Modalità Testo
Llama 4 Scout 17B 16E Instruct Modalità di ottimizzazione Ottimizzazione efficiente dei parametri
Lunghezza massima della sequenza 2048
Modalità Testo
Immagini*

*I set di dati misti di esempi di solo testo e immagini non sono supportati. Se nel set di dati è presente almeno un esempio di immagine, tutti gli esempi solo di testo verranno filtrati.
Qwen 3 4B Modalità di ottimizzazione Ottimizzazione completa
Lunghezza massima della sequenza 8192
Modalità Testo
Qwen 3 8B Modalità di ottimizzazione Ottimizzazione completa
Lunghezza massima della sequenza 8192
Modalità Testo
Qwen 3 14B Modalità di ottimizzazione Ottimizzazione completa
Lunghezza massima della sequenza 8192
Modalità Testo
Qwen 3 32B Modalità di ottimizzazione Ottimizzazione efficiente dei parametri
Ottimizzazione completa
Lunghezza massima della sequenza 8192
Modalità Testo

Prima di iniziare

  1. Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Vertex AI and Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Vertex AI and Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  8. Installare e inizializzare l'SDK Vertex AI Python
  9. Importa le seguenti librerie:
    import os
    import time
    import uuid
    import vertexai
    
    vertexai.init(project=PROJECT_ID, location=REGION)
    
    from google.cloud import aiplatform
    from vertexai.tuning import sft, SourceModel
    

Prepara il set di dati per l'ottimizzazione

Per l'ottimizzazione è necessario un set di dati di addestramento. Ti consigliamo di preparare un set di dati di convalida facoltativo se vuoi valutare il rendimento del modello ottimizzato.

Il set di dati deve essere in uno dei seguenti formati JSON Lines (JSONL) supportati, in cui ogni riga contiene un singolo esempio di ottimizzazione.

Carica i file JSONL in Cloud Storage.

Set di dati solo testo

Completamento del prompt

{"prompt": "<prompt text>", "completion": "<ideal generated text>"}

Formato della chat a turni

{"messages": [
  {"content": "You are a chatbot that helps with scientific literature and generates state-of-the-art abstracts from articles.",
    "role": "system"},
  {"content": "Summarize the paper in one paragraph.",
    "role": "user"},
  {"content": " Here is a one paragraph summary of the paper:\n\nThe paper describes PaLM, ...",
    "role": "assistant"}
]}

GenerateContent

{
"systemInstruction": {
  "parts": [{ "text": "You are a chatbot that helps with scientific literature and generates state-of-the-art abstracts from articles." }]},
"contents": [
  {"role": "user",
    "parts": [{ "text": "Summarize the paper in one paragraph." }]},
  {"role": "assistant",
    "parts": [{ "text": "Here is a one paragraph summary of the paper:\n\nThe paper describes PaLM, ..." }]}
]}

Set di dati multimodali

Formato della chat a turni

{"messages": [
  {"role": "user", "content": [
    {"type": "text", "text": "You are a chatbot that helps with scientific literature and generates state-of-the-art abstracts from articles."},
    {"type": "image_url", "image_url": {
      "url": "gs://your-gcs-bucket/your-image.jpeg",
      "detail": "low"}}]
  },
  {"role": "assistant", "content": [
    {"type": "text", "text": "Here is a one paragraph summary of the paper:\n\nThe paper describes PaLM, ..."}]
  },
  {"role": "user", "content": [
    {"type": "text", "text": "You are a chatbot that helps with scientific literature and generates state-of-the-art abstracts from articles."},
    {"type": "image_url", "image_url": {
      "url": "data:image/jpeg;base64,<base64 image>",
      "detail": "low"}}]
  },
  {"role": "assistant", "content": [
    {"type": "text", "text": "Here is a one paragraph summary of the paper:\n\nThe paper describes PaLM, ..."}]
  },
]}

GenerateContent

{
"systemInstruction": {
  "parts": [{ "text": "You are a chatbot that helps with scientific literature and generates state-of-the-art abstracts from articles." }]},
"contents": [
  {"role": "user",
    "parts": [
      {"text": "You are a chatbot that helps with scientific literature and generates state-of-the-art abstracts from articles." },
      {"file_data": {
        "mime_type": "image/jpeg", "file_uri": "gs://your-gcs-bucket/your-image.jpeg"}}]
  },
  {"role": "assistant",
    "parts": [{ "text": "Here is a one paragraph summary of the paper:\n\nThe paper describes PaLM, ..." }]}
]}

I formati supportati includono JPEG, PNG, WEBP e immagini codificate in Base64.

Tieni presente che se le immagini sono archiviate in un bucket Cloud Storage diverso dai file JSONL, assicurati di aver concesso il ruolo IAM Storage Object User (roles/storage.objectUser) su entrambi i bucket per questi due service account:

  • service-PROJECT_NUMBER@gcp-sa-vertex-moss-ft.iam.gserviceaccount.com
  • service-PROJECT_NUMBER@gcp-sa-aiplatform.iam.gserviceaccount.com

Crea job di ottimizzazione

Puoi sintonizzarti su:

  • Un modello di base supportato, come Llama 3.1
  • Un modello con la stessa architettura di uno dei modelli di base supportati. Può trattarsi di un checkpoint del modello personalizzato di un repository come Hugging Face o di un modello ottimizzato in precedenza da un job di ottimizzazione di Vertex AI. In questo modo, puoi continuare a ottimizzare un modello già ottimizzato.

Cloud Console

  1. Puoi avviare l'ottimizzazione nei seguenti modi:

    • Vai alla scheda del modello, fai clic su Ottimizza e scegli Ottimizzazione gestita.

    Vai alla scheda del modello Llama 3.1

    o

    • Vai alla pagina Ottimizzazione e fai clic su Crea modello ottimizzato.

    Vai a Ottimizzazione

  2. Compila i parametri e fai clic su Avvia ottimizzazione.

Viene avviato un job di ottimizzazione, che puoi visualizzare nella pagina Ottimizzazione nella scheda Ottimizzazione gestita.

Al termine del job di ottimizzazione, puoi visualizzare le informazioni sul modello ottimizzato nella scheda Dettagli.

SDK Vertex AI Python

Sostituisci i valori dei parametri con i tuoi e poi esegui il seguente codice per creare un job di ottimizzazione:

sft_tuning_job = sft.train(
    source_model=SourceModel(
      base_model="meta/llama3_1@llama-3.1-8b",
      # Optional, folder that is either a custom model checkpoint or previously tuned model
      custom_base_model="gs://{STORAGE-URI}",
    ),
    tuning_mode="FULL", # FULL or PEFT_ADAPTER
    epochs=3,
    train_dataset="gs://{STORAGE-URI}", # JSONL file
    validation_dataset="gs://{STORAGE-URI}", # JSONL file
    output_uri="gs://{STORAGE-URI}",
)

Artefatti del modello ottimizzato

Al termine del job di ottimizzazione, gli artefatti del modello ottimizzato vengono archiviati nella directory di output di Cloud Storage.

gs://<output_dir>/postprocess/node-0/checkpoints/
    # Final checkpoint
    -> final/
        -> model-00001-of-000xx.safetensors
        -> model-000yy-of-000xx.safetensors

    # Intermediate checkpoints
    -> checkpoint-M/
        -> model-00001-of-000xx.safetensors
        -> model-000yy-of-000xx.safetensors
        -> checkpoint-N/
        -> model-00001-of-000xx.safetensors
        -> model-000yy-of-000xx.safetensors
  • Vengono memorizzati un massimo di 10 checkpoint.
  • Se il numero di epoche (E) è inferiore a 10, vengono archiviati esattamente E checkpoint (uno per ogni epoca).
  • I checkpoint intermedi dell'intervallo da M a N sono ordinati. Tieni presente che i checkpoint intermedi non sono sempre numerati in modo consecutivo. Ad esempio, i checkpoint potrebbero essere numerati 1, 3, 5, 10 anziché 1, 2, 3, 4.

Esegui il deployment del modello ottimizzato

Puoi eseguire il deployment del modello ottimizzato su un endpoint Vertex AI. Puoi anche esportare il modello ottimizzato da Cloud Storage ed eseguirne il deployment altrove.

Per eseguire il deployment del modello ottimizzato su un endpoint Vertex AI:

Cloud Console

  1. Vai alla pagina Model Garden e fai clic su Esegui il deployment del modello con pesi personalizzati.

Vai a Model Garden

  1. Compila i parametri e fai clic su Esegui il deployment.

SDK Vertex AI Python

Esegui il deployment di un G2 machine utilizzando un container predefinito:

from vertexai.preview import model_garden

MODEL_ARTIFACTS_STORAGE_URI = "gs://{STORAGE-URI}/postprocess/node-0/checkpoints/final"

model = model_garden.CustomModel(
    gcs_uri=MODEL_ARTIFACTS_STORAGE_URI,
)

# deploy the model to an endpoint using GPUs. Cost will incur for the deployment
endpoint = model.deploy(
  machine_type="g2-standard-12",
  accelerator_type="NVIDIA_L4",
  accelerator_count=1,
)

Ottenere un'inferenza

Una volta completato il deployment, puoi inviare richieste all'endpoint con prompt di testo. Tieni presente che l'esecuzione dei primi prompt richiederà più tempo.

# Loads the deployed endpoint
endpoint = aiplatform.Endpoint("projects/{PROJECT_ID}/locations/{REGION}/endpoints/{endpoint_name}")

prompt = "Summarize the following article. Article: Preparing a perfect risotto requires patience and attention to detail. Begin by heating butter in a large, heavy-bottomed pot over medium heat. Add finely chopped onions and minced garlic to the pot, and cook until they're soft and translucent, about 5 minutes. Next, add Arborio rice to the pot and cook, stirring constantly, until the grains are coated with the butter and begin to toast slightly. Pour in a splash of white wine and cook until it's absorbed. From there, gradually add hot chicken or vegetable broth to the rice, stirring frequently, until the risotto is creamy and the rice is tender with a slight bite.. Summary:"

# Define input to the prediction call
instances = [
    {
        "prompt": "What is a car?",
        "max_tokens": 200,
        "temperature": 1.0,
        "top_p": 1.0,
        "top_k": 1,
        "raw_response": True,
    },
]

# Request the prediction
response = endpoint.predict(
    instances=instances
)

for prediction in response.predictions:
    print(prediction)

Per maggiori dettagli su come ottenere inferenze da un modello di cui è stato eseguito il deployment, consulta Ottenere un'inferenza online.

Tieni presente che i modelli aperti gestiti utilizzano il metodo chat.completions anziché il metodo predict utilizzato dai modelli di cui è stato eseguito il deployment. Per saperne di più su come ottenere inferenze dai modelli gestiti, consulta Fai una chiamata a un modello Llama.

Limiti e quote

La quota viene applicata al numero di job di ottimizzazione simultanei. Ogni progetto viene fornito con una quota predefinita per eseguire almeno un job di ottimizzazione. Si tratta di una quota globale, condivisa tra tutte le regioni disponibili e i modelli supportati. Se vuoi eseguire più job contemporaneamente, devi richiedere una quota aggiuntiva per Global concurrent managed OSS model fine-tuning jobs per project.

Prezzi

La messa a punto ti viene fatturata in base ai prezzi per la messa a punto del modello. Il numero di token di addestramento viene calcolato moltiplicando il numero di token nel set di dati di addestramento per il numero di epoche.

Ti vengono addebitati anche i costi per i servizi correlati, come Cloud Storage e Vertex AI Prediction.

Scopri di più sui prezzi di Vertex AI e di Cloud Storage e utilizza il Calcolatore prezzi per generare una stima dei costi in base all'utilizzo previsto.

Passaggi successivi