Ajuste supervisionado e de extração para modelos abertos

Nesta página, descrevemos como realizar o ajuste supervisionado e por destilação em modelos abertos, como o Llama 3.1. Salvo indicação em contrário, as instruções nesta página se aplicam ao ajuste supervisionado e por destilação. A destilação permite ajustar um modelo de estudante menor usando as saídas de um modelo de professor maior.

Modos de ajuste compatíveis

  • Ajuste supervisionado:
    • Ajuste de detalhes completo
    • Adaptação de classificação baixa (LoRA): a LoRA é um modo de ajuste eficiente de parâmetros que ajusta apenas um subconjunto de parâmetros. Ele é mais econômico e exige menos dados de treinamento do que o ajuste fino completo. Por outro lado, o ajuste fino completo tem um potencial de qualidade maior ao ajustar todos os parâmetros.
  • Ajuste refinado por destilação:usa o SDK da GenAI, em que você especifica um modelo professor para gerar respostas que são usadas para ajustar um modelo estudante menor.

Casos de uso recomendados para ajuste de detalhes por destilação

O ajuste de detalhes por destilação é mais eficaz quando o modelo professor é muito mais capaz do que o estudante na tarefa desejada. É recomendada para transferir recursos complexos e de várias etapas de raciocínio de um professor maior para um estudante menor, incluindo:

  • Raciocínio matemático e quantitativo
  • Respostas a perguntas científicas, médicas e de outros domínios que exigem raciocínio detalhado
  • Outras tarefas em que um modelo de professor forte com comportamento de "pensamento" ou linha de raciocínio produz consistentemente respostas de maior qualidade do que o estudante.

A destilação oferece ganhos menores em tarefas em que o modelo estudante já tem um desempenho próximo ao do professor ou em tarefas de recuperação de formato curto em que o rastreamento de raciocínio do professor não agrega valor.

Modelos compatíveis

Modelos compatíveis com ajuste supervisionado

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

Modelos compatíveis com o ajuste de destilação

Modelos de professores com suporte:

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

Modelos de estudantes compatíveis:

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

Regiões compatíveis

  • Iowa (us-central1)
  • Países Baixos (europe-west4)
  • Oregon (us-west1)
  • Columbus (us-east5)
  • Singapura (asia-southeast1)

Limitações

Modelo Especificação Valor
Gemma 3 1B IT Modos de ajuste Ajuste completo
Comprimento máximo da sequência 8192
Modalidades Texto
Gemma 3 4B IT Modos de ajuste Ajuste completo
Comprimento máximo da sequência 8192
Modalidades Texto
Gemma 3 12B IT Modos de ajuste Ajuste completo
Comprimento máximo da sequência 8192
Modalidades Texto
Gemma 3 27B IT Modos de ajuste Ajuste fino com eficiência de parâmetros
Ajuste fino completo
Comprimento máximo da sequência 8192
Modalidades Texto
Medgemma 1.5 4B IT Modos de ajuste Ajuste completo
Comprimento máximo da sequência 8192
Modalidades Texto
Llama 3.1 8B Modos de ajuste Ajuste fino com eficiência de parâmetros
Ajuste fino completo
Comprimento máximo da sequência 8192
Modalidades Texto
Llama 3.1 8B Instruct Modos de ajuste Ajuste fino com eficiência de parâmetros
Ajuste fino completo
Comprimento máximo da sequência 8192
Modalidades Texto
Llama 3.2 1B Instruct Modos de ajuste Ajuste completo
Comprimento máximo da sequência 8192
Modalidades Texto
Llama 3.2 3B Instruct Modos de ajuste Ajuste completo
Comprimento máximo da sequência 8192
Modalidades Texto
Llama 3.3 70B Instruct Modos de ajuste Ajuste fino com eficiência de parâmetros
Ajuste fino completo
Comprimento máximo da sequência 8192
Modalidades Texto
Llama 4 Scout 17B 16E Instruct Modos de ajuste Ajuste fino com eficiência de parâmetros
Comprimento máximo da sequência 2048
Modalidades Texto
Imagens*

*Não é possível usar conjuntos de dados mistos com exemplos de texto e imagem. Se houver pelo menos um exemplo de imagem no conjunto de dados, todos os exemplos de texto serão filtrados.
Qwen 3 4B Modos de ajuste Ajuste completo
Comprimento máximo da sequência 8192
Modalidades Texto
Qwen 3 8B Modos de ajuste Ajuste completo
Comprimento máximo da sequência 8192
Modalidades Texto
Qwen 3 14B Modos de ajuste Ajuste completo
Comprimento máximo da sequência 8192
Modalidades Texto
Qwen 3 32B Modos de ajuste Ajuste fino com eficiência de parâmetros
Ajuste fino completo
Comprimento máximo da sequência 8192
Modalidades Texto

Antes de começar

  1. Faça login na sua conta do Google Cloud . Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
  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

Instale o SDK e importe as bibliotecas para seu método de ajuste.

Ajuste supervisionado

Instale e inicialize o SDK da Vertex AI para Python e importe as seguintes bibliotecas:

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

Ajuste de destilação

Instale o seguinte SDK:

pip install google-genai

Em seguida, importe as seguintes bibliotecas:

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)

Preparar o conjunto de dados para ajuste

Um conjunto de dados de treinamento é necessário para o ajuste. Recomendamos que você prepare um conjunto de dados de validação opcional se quiser avaliar a performance do modelo ajustado.

O conjunto de dados precisa estar em um dos seguintes formatos JSON Lines (JSONL) compatíveis, em que cada linha contém um único exemplo de ajuste.

Faça upload dos arquivos JSONL para o Cloud Storage.

Conjuntos de dados somente de texto

Conclusão do comando

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

Formato de chat baseado em turnos

{"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, ..." }]}
]}

Conjuntos de dados multimodais

Formato de chat baseado em turnos

{"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, ..." }]}
]}

Os formatos compatíveis incluem JPEG, PNG, WEBP e imagens codificadas em Base64.

Se as imagens estiverem armazenadas em um bucket do Cloud Storage diferente dos arquivos JSONL, conceda o papel de usuário de objetos do Storage (roles/storage.objectUser) do IAM nos dois buckets para estas duas contas de serviço:

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

Criar job de ajuste

Você pode ajustar a partir de:

  • Um modelo de base compatível, como o Llama 3.1
  • Um modelo com a mesma arquitetura de um dos modelos de base compatíveis. Pode ser um ponto de verificação de modelo personalizado de um repositório como o Hugging Face ou um modelo ajustado anteriormente de um trabalho de ajuste da plataforma de agentes do Gemini Enterprise. Isso permite continuar ajustando um modelo que já foi ajustado.

Console do Cloud (supervisionado)

  1. É possível iniciar o ajuste refinado das seguintes maneiras:

    • Acesse o card de modelo, clique em Ajustar e escolha Ajuste gerenciado.

    Acessar o card do modelo Llama 3.1

    ou

    • Acesse a página Ajuste e clique em Criar modelo ajustado.

    Acessar o ajuste

  2. Preencha os parâmetros e clique em Iniciar ajuste.

Isso inicia um job de ajuste, que pode ser visto na página "Ajuste", na guia Ajuste gerenciado.

Quando o job de ajuste terminar, você poderá conferir as informações sobre o modelo ajustado na guia Detalhes.

SDK da Agent Platform (supervisionado)

Substitua os valores de parâmetro pelos seus e execute o código a seguir para criar um job de ajuste:

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 de IA generativa (destilação)

Substitua os valores de parâmetro pelos seus e execute o código a seguir para criar um job de ajuste de destilação:

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

Artefatos de modelo ajustado

Quando o job de ajuste termina, os artefatos do modelo ajustado são armazenados no diretório de saída do 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
  • No máximo, 10 pontos de verificação são armazenados.
  • Se o número de épocas (E) for menor que 10, exatamente E pontos de verificação serão armazenados (um para cada época).
  • Os checkpoints intermediários do intervalo M a N são ordenados. Os pontos de verificação intermediários nem sempre são numerados consecutivamente. Por exemplo, os pontos de verificação podem ser numerados como 1, 3, 5, 10 em vez de 1, 2, 3, 4.

Implantar o modelo ajustado

É possível implantar o modelo ajustado em um endpoint da Gemini Enterprise Agent Platform. Você também pode exportar o modelo ajustado do Cloud Storage e implantá-lo em outro lugar.

Para implantar o modelo ajustado em um endpoint da Gemini Enterprise Agent Platform:

Console do Cloud

  1. Acesse a página do Model Garden e clique em Implantar modelo com pesos personalizados.

    Acessar o Model Garden

  2. Preencha os parâmetros e clique em Implantar.

SDK da Agent Platform para Python

Implante um G2 machine usando um contêiner pré-criado:

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

Receber uma inferência

Depois que a implantação for concluída, você poderá enviar solicitações ao endpoint com comandos de texto. As primeiras solicitações vão levar mais tempo para serem executadas.

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

Para mais detalhes sobre como receber inferências de um modelo implantado, consulte Receber uma inferência on-line.

Os modelos abertos gerenciados usam o método chat.completions em vez do predict usado pelos modelos implantados. Para mais informações sobre como receber inferências de modelos gerenciados, consulte Fazer uma chamada para um modelo do Llama.

Limites e cotas

A cota é aplicada ao número de jobs de ajuste simultâneos. Todo projeto tem uma cota padrão para executar pelo menos um job de ajuste. Essa é uma cota global compartilhada por todas as regiões disponíveis e modelos compatíveis. Se você quiser executar mais jobs simultaneamente, solicite uma cota extra para Global concurrent managed OSS model fine-tuning jobs per project.

Além da cota de jobs de ajuste, o ajuste fino por destilação usa o modelo professor, e seu projeto precisa ter cota suficiente para o modelo professor especificado. Os modelos abertos fornecidos como um serviço (MaaS) usam cota compartilhada dinâmica. Quando um job de ajuste chama um modelo professor, ele consome a cota compartilhada do projeto para esse modelo. Para mais informações sobre cotas para modelos abertos gerenciados, consulte Gemini Enterprise Agent Platform managed models for MaaS.

Preços

A cobrança é feita com base nos preços do ajuste de modelo. O número de tokens de treinamento é calculado multiplicando o número de tokens no conjunto de dados de treinamento pelo número de épocas. No ajuste de destilação, também há cobrança pelas chamadas de API feitas ao modelo professor para gerar respostas, com base nos preços dos modelos gerenciados.

Você também recebe cobranças por serviços relacionados, como o Cloud Storage e a previsão da Gemini Enterprise Agent Platform.

Saiba mais sobre os preços da Gemini Enterprise Agent Platform e do Cloud Storage. Use a calculadora de preços para gerar uma estimativa de custo com base no uso projetado.

A seguir