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.

import google.generativeai as genai

for model_info in genai.list_tuned_models():
    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.

import google.generativeai as genai

import time

base_model = "models/gemini-1.5-flash-001-tuning"
training_data = [
    {"text_input": "1", "output": "2"},
    # ... more examples ...
    # ...
    {"text_input": "seven", "output": "eight"},
]
operation = genai.create_tuned_model(
    # You can use a tuned model here too. Set `source_model="tunedModels/..."`
    display_name="increment",
    source_model=base_model,
    epoch_count=20,
    batch_size=4,
    learning_rate=0.001,
    training_data=training_data,
)

for status in operation.wait_bar():
    time.sleep(10)

result = operation.result()
print(result)
# # You can plot the loss curve with:
# snapshots = pd.DataFrame(result.tuning_task.snapshots)
# sns.lineplot(data=snapshots, x='epoch', y='mean_loss')

model = genai.GenerativeModel(model_name=result.name)
result = model.generate_content("III")
print(result.text)  # IV

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.

Como a otimização de um modelo pode levar muito tempo, essa API não espera a conclusão da otimização. Em vez disso, ele retorna um objeto google.api_core.operation.Operation que permite verificar o status do job de ajuste ou aguardar a conclusão e verificar o resultado.

O modelo ajustado é adicionado imediatamente à lista de modelos ajustados, mas o estado dele é definido como "criando" enquanto o modelo é ajustado.

Verificar o progresso do ajuste

É possível verificar o progresso da operação de ajuste usando o método wait_bar():

for status in operation.wait_bar():
    time.sleep(10)

Também é possível usar operation.metadata para verificar o número total de etapas de ajuste e operation.update() para atualizar o status da operação.

É possível cancelar o job de ajuste a qualquer momento usando o método cancel().

operation.cancel()

Testar o modelo

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

import google.generativeai as genai

model = genai.GenerativeModel(model_name="tunedModels/my-increment-model")
result = model.generate_content("III")
print(result.text)  # "IV"

Atualizar a descrição

É possível atualizar a descrição do modelo ajustado a qualquer momento usando o método genai.update_tuned_model.

genai.update_tuned_model('tunedModels/my-increment-model', {"description":"This is my model."})

Excluir o modelo

Você pode limpar a lista de modelos ajustados excluindo os que não são mais necessários. Use o método tunedModels.delete para excluir um modelo. Se você cancelou algum job de ajuste, exclua-os, porque a performance deles pode ser imprevisível.

genai.delete_tuned_model("tunedModels/my-increment-model")