Tutorial de ajuste

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

Ver em ai.google.dev Testar um bloco do Colab Veja o notebook no GitHub

Configurar a autenticação

A API Gemini permite ajustar modelos com seus próprios dados. Como os dados são seus seus modelos ajustados precisam de controles de acesso mais rigorosos do que as chaves de API podem fornecer.

Antes de executar este tutorial, é necessário configurar o OAuth para seus projeto.

Listar modelos ajustados

É possível verificar seus modelos ajustados atuais com o genai.list_tuned_models .

for model_info in genai.list_tuned_models():
    print(model_info.name)

Criar um modelo ajustado

Para criar um modelo ajustado, você precisa passar seu conjunto de dados para o modelo na genai.create_tuned_model. Você pode fazer isso definindo diretamente valores de entrada e saída na chamada ou importar de um arquivo para um DataFrame passar para o método.

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

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 períodos, tamanho do lote e taxa de aprendizado dependem no conjunto de dados e em outras restrições do caso de uso. Para saber mais sobre esses valores, consulte Configurações avançadas de ajuste e Hiperparâmetros.

Como o ajuste de um modelo pode levar um tempo significativo, essa API não espera o para concluir o ajuste. Em vez disso, ele retorna uma google.api_core.operation.Operation. que permite verificar o status do job de ajuste ou esperar que ele concluir e verificar o resultado.

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

Verificar o progresso do ajuste

Confira o progresso do ajuste usando o wait_bar(). :

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

Também é possível usar operation.metadata para conferir 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

É possível usar o método genai.generate_text e especificar o nome do objeto ajustado para testar o desempenho dele.

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

É possível limpar a lista de modelos ajustados excluindo os que não são mais necessários. Use o método genai.delete_tuned_model para excluir um modelo. Se você cancelou e de ajuste, exclua-os, já que o desempenho deles pode ser é imprevisível.

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