Ottimizzazione supervisionata e di distillazione per modelli aperti

Questa pagina descrive come eseguire l'ottimizzazione supervisionata e la distillazione su modelli aperti come Llama 3.1. Se non diversamente indicato, le istruzioni riportate in questa pagina si applicano sia al fine-tuning supervisionato sia al fine-tuning della distillazione. La distillazione ti consente di ottimizzare un modello studente più piccolo utilizzando gli output di un modello insegnante più grande.

Modalità di ottimizzazione supportate

  • Fine-tuning supervisionato:
    • 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.
  • Ottimizzazione della distillazione:l'ottimizzazione della distillazione utilizza l'SDK GenAI, in cui specifichi un modello insegnante per generare risposte che vengono poi utilizzate per ottimizzare un modello studente più piccolo.

Casi d'uso consigliati per la messa a punto della distillazione

L'ottimizzazione della distillazione è più efficace quando il modello insegnante è molto più capace dello studente nell'attività target. È consigliato per trasferire funzionalità di ragionamento complesse e in più passaggi da un modello insegnante più grande a uno studente più piccolo, tra cui:

  • Matematica e ragionamento quantitativo
  • Risposte a domande scientifiche, mediche e di altri domini che richiedono un ragionamento passo passo
  • Altre attività in cui un modello insegnante efficace con un comportamento di "ragionamento" o di chain-of-thought produce costantemente risposte di qualità superiore rispetto allo studente.

La distillazione offre vantaggi minori per le attività in cui il modello studente ha già un rendimento simile a quello dell'insegnante o per le attività di recupero di brevi contenuti in cui la traccia di ragionamento dell'insegnante non aggiunge valore.

Modelli supportati

Modelli supportati per il fine-tuning supervisionato

  • 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)
  • Medgemma 1.5 4B IT (google/medgemma@medgemma-4b-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)

Modelli supportati per l'ottimizzazione della distillazione

Modelli di insegnanti supportati:

  • DeepSeek R1 0528 MaaS (deepseek-ai/deepseek-r1-0528-maas)
  • DeepSeek V3.2 MaaS (deepseek-ai/deepseek-v3.2-maas)
  • Qwen 3 Next 80B A3B Thinking MaaS (qwen/qwen3-next-80b-a3b-thinking-maas)

Modelli di studenti supportati:

  • 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)
  • 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)

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
Medgemma 1.5 4B IT Modalità di ottimizzazione 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 Gemini Enterprise Agent Platform 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 Gemini Enterprise Agent Platform 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

Installa l'SDK e importa le librerie per il metodo di ottimizzazione.

Fine-tuning supervisionato

Installa e inizializza l'SDK Vertex AI Python, poi 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

Ottimizzazione della distillazione

Installa il seguente SDK:

pip install google-genai

Quindi importa le seguenti librerie:

import os
import time
import uuid

from google import genai
from google.genai import types
client = genai.Client(vertexai=True, project=PROJECT_ID, location=REGION)

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 Gemini Enterprise Agent Platform. In questo modo, puoi continuare a ottimizzare un modello già ottimizzato.

Console Cloud (supervisionata)

  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 Agent Platform (supervisionato)

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}",
)

SDK GenAI (distillazione)

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

tuning_job = client.tunings.tune(
    base_model="qwen/qwen3@qwen3-4b",
    training_dataset=types.TuningDataset(
        gcs_uri="gs://{STORAGE-URI}"
    ),
    config=types.CreateTuningJobConfig(
        method="DISTILLATION",
        base_teacher_model="qwen/qwen3-next-80b-a3b-thinking-maas",
        epoch_count=3,
        validation_dataset=types.TuningValidationDataset(
            gcs_uri="gs://{STORAGE-URI}"
        ),
        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>/
    # (Distillation tuning only) The labeled dataset from teacher model's inference
    -> distillation_labelled_dataset.jsonl

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 in un endpoint Gemini Enterprise Agent Platform. Puoi anche esportare il modello ottimizzato da Cloud Storage ed eseguirne il deployment altrove.

Per eseguire il deployment del modello ottimizzato su un endpoint Gemini Enterprise Agent Platform:

Cloud Console

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

    Vai a Model Garden

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

SDK Agent Platform per 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.

Oltre alla quota del job di ottimizzazione, l'ottimizzazione fine della distillazione utilizza il modello insegnante e il tuo progetto deve disporre di una quota sufficiente per il modello insegnante specificato. I modelli aperti forniti come servizio (MaaS) utilizzano la quota condivisa dinamica. Quando un job di ottimizzazione chiama un modello insegnante, consuma la quota condivisa del progetto per quel modello. Per saperne di più sulle quote per i modelli open gestiti, consulta Modelli gestiti di Gemini Enterprise Agent Platform per MaaS.

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. Per l'ottimizzazione della distillazione, ti vengono addebitate anche le chiamate API effettuate al modello insegnante per generare risposte, in base ai prezzi per i modelli gestiti.

Ti vengono addebitati anche i servizi correlati, come Cloud Storage e Gemini Enterprise Agent Platform Prediction.

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

Passaggi successivi