Tutorial de ajuste

Este tutorial vai ajudar você a começar a usar o serviço de ajuste da API Gemini com o SDK do Python ou a API REST usando o curl. Os exemplos mostram como ajustar o modelo de texto por trás do serviço de geração de texto da API Gemini.

Conferir no ai.google.dev Testar um notebook do Colab Acessar o notebook no GitHub

Limitações

Antes de ajustar um modelo, considere as seguintes limitações:

Ajustar conjuntos de dados

O ajuste fino dos conjuntos de dados do Gemini 1.5 Flash tem as seguintes limitações:

  • O tamanho máximo de entrada por exemplo é de 40.000 caracteres.
  • O tamanho máximo de saída por exemplo é de 5.000 caracteres.
  • Somente exemplos de pares de entrada e saída são aceitos. Não há suporte para conversas de vários turnos no estilo de chat.

Modelos ajustados

Os modelos ajustados têm as seguintes limitações:

  • O limite de entrada de um modelo Gemini 1.5 Flash ajustado é de 40.000 caracteres.
  • O modo JSON não é compatível com modelos ajustados.
  • Somente a entrada de texto é aceita.

Antes de começar: configure o projeto e a chave de API

Antes de chamar a API Gemini, você precisa configurar seu projeto e a chave de API.

Listar modelos ajustados

É possível verificar os modelos ajustados com o método tunedModels.list.

from google import genai
client = genai.Client() # Get the key from the GOOGLE_API_KEY env variable

for model_info in client.models.list():
    print(model_info.name)

Criar um modelo ajustado

Para criar um modelo ajustado, transmita o conjunto de dados para o modelo no método tunedModels.create.

Neste exemplo, você vai ajustar um modelo para gerar o próximo número na sequência. Por exemplo, se a entrada for 1, o modelo vai gerar 2. Se a entrada for one hundred, a saída será one hundred one.

# create tuning model
training_dataset =  [
    ["1", "2"],
    ["3", "4"],
    ["-3", "-2"],
    ["twenty two", "twenty three"],
    ["two hundred", "two hundred one"],
    ["ninety nine", "one hundred"],
    ["8", "9"],
    ["-98", "-97"],
    ["1,000", "1,001"],
    ["10,100,000", "10,100,001"],
    ["thirteen", "fourteen"],
    ["eighty", "eighty one"],
    ["one", "two"],
    ["three", "four"],
    ["seven", "eight"],
]
training_dataset=types.TuningDataset(
        examples=[
            types.TuningExample(
                text_input=i,
                output=o,
            )
            for i,o in training_dataset
        ],
    )
tuning_job = client.tunings.tune(
    base_model='models/gemini-1.0-pro-001',
    training_dataset=training_dataset,
    config=types.CreateTuningJobConfig(
        epoch_count= 5,
        batch_size=4,
        learning_rate=0.001,
        tuned_model_display_name="test tuned model"
    )
)

# generate content with the tuned model
response = client.models.generate_content(
    model=tuning_job.tuned_model.model,
    contents='III',
)

print(response.text)

Os valores ideais para a contagem de épocas, o tamanho do lote e a taxa de aprendizado dependem do seu conjunto de dados e de outras restrições do caso de uso. Para saber mais sobre esses valores, consulte Configurações avançadas de ajuste e Hiperparâmetros.

Testar o modelo

Use o método tunedModels.generateContent e especifique o nome do modelo ajustado para testar a performance dele.

response = client.models.generate_content(
    model=tuning_job.tuned_model.model,
    contents='III'
)

Não implementado

Alguns recursos (relatórios de progresso, atualização da descrição e exclusão de modelos ajustados) ainda não foram implementados no novo SDK.