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