Este tutorial vai ajudar você a começar a usar o serviço de ajuste da API Gemini usando o SDK do Python ou a API REST usando 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 bloco do Colab | Veja o notebook no GitHub |
Limitações
Antes de ajustar um modelo, você precisa estar ciente das seguintes limitações:
Ajustar conjuntos de dados
O ajuste de conjuntos de dados para o 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. Várias interações no estilo chat conversas não são suportadas.
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: configurar o projeto e a chave de API
Antes de chamar a API Gemini, você precisa definir seu projeto e configurar sua chave de API.
Listar modelos ajustados
É possível verificar seus modelos ajustados existentes 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, você precisa transmitir seu dataset para
o modelo no objeto tunedModels.create
.
Neste exemplo, você 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 o
a entrada é one hundred
, a saída precisa 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 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 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 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
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
e excluir um modelo. Se você cancelou qualquer job de ajuste, exclua-os como
o desempenho delas pode ser imprevisível.
genai.delete_tuned_model("tunedModels/my-increment-model")