Instructivo de ajuste

Este instructivo te ayudará a comenzar a usar el servicio de ajuste de la API de Gemini con el SDK de Python o la API de REST mediante curl Los ejemplos muestran cómo ajustar el modelo de texto detrás el servicio de generación de texto de la API de Gemini.

Ver en ai.google.dev Prueba un notebook de Colab Ver notebook en GitHub

Limitaciones

Antes de ajustar un modelo, debes tener en cuenta las siguientes limitaciones:

Conjuntos de datos de ajuste

El ajuste de los conjuntos de datos para Gemini 1.5 Flash tiene las siguientes limitaciones:

  • El tamaño máximo de entrada por ejemplo es de 40,000 caracteres.
  • El tamaño máximo de salida por ejemplo es de 5,000 caracteres.
  • Solo se admiten ejemplos de pares de entrada-salida. Múltiples turnos similares al chat no se admiten las conversaciones.

Modelos ajustados

Los modelos ajustados tienen las siguientes limitaciones:

  • El límite de entrada de un modelo Gemini 1.5 Flash ajustado es de 40,000 caracteres.
  • El modo JSON no es compatible con los modelos ajustados.
  • Solo se admite la entrada de texto.

Antes de comenzar: Configura tu proyecto y clave de API

Antes de llamar a la API de Gemini, debes configurar tu proyecto tu clave de API.

Cómo enumerar modelos ajustados

Puedes verificar tus modelos ajustados existentes con el método tunedModels.list.

import google.generativeai as genai

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

Crea un modelo ajustado

Para crear un modelo ajustado, debes pasar tu conjunto de datos al modelo en el método tunedModels.create.

En este ejemplo, ajustarás un modelo para generar el siguiente número de la secuencia. Por ejemplo, si la entrada es 1, el modelo debería generar 2. Si el botón la entrada es one hundred, el resultado debería 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

Los valores óptimos para el recuento de ciclos de entrenamiento, el tamaño del lote y la tasa de aprendizaje dependen en tu conjunto de datos y otras limitaciones de tu caso de uso. Para obtener más información estos valores, consulta Configuración avanzada de ajuste y Hiperparámetros.

Dado que el ajuste de un modelo puede llevar mucho tiempo, esta API no espera a que se complete el ajuste. En su lugar, muestra un google.api_core.operation.Operation. objeto que te permite verificar el estado del trabajo de ajuste o esperar a que completar y verificar el resultado.

Tu modelo ajustado se agrega de inmediato a la lista de modelos ajustados, pero su estado se establece en "creando" mientras se ajusta.

Cómo verificar el progreso del ajuste

Puedes verificar el progreso de la operación de ajuste con wait_bar(). método:

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

También puedes usar operation.metadata para verificar la cantidad total de pasos de ajuste y operation.update() para actualizar el estado de la operación.

Puedes cancelar tu trabajo de ajuste en cualquier momento con el método cancel().

operation.cancel()

Prueba el modelo

Puedes usar el método tunedModels.generateContent y especificar el nombre del modelo ajustado para probar su rendimiento.

import google.generativeai as genai

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

Actualiza la descripción

Puedes actualizar la descripción de tu modelo ajustado en cualquier momento con el método genai.update_tuned_model.

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

Borra el modelo

Para limpiar la lista de modelos ajustados, borra los modelos que ya no necesites. Usa el método tunedModels.delete para borrar un modelo. Si cancelaste algún trabajo de ajuste, puedes borrarlo como su rendimiento puede ser impredecible.

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