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 con curl. En los ejemplos, se muestra cómo ajustar el modelo de texto detrás del 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

Los conjuntos de datos de ajuste fino para Gemini 1.5 Flash tienen 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 y salida. No se admiten conversaciones de varios turnos de estilo de chat.

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 y tu clave de API.

Cómo enumerar modelos ajustados

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

from google import genai
client = genai.Client() # Get the key from the GOOGLE_API_KEY env variable

for model_info in client.models.list():
    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 debe mostrar 2. Si la entrada es one hundred, el resultado debería ser one hundred one.

# create tuning model
training_dataset =  [
    ["1", "2"],
    ["3", "4"],
    ["-3", "-2"],
    ["twenty two", "twenty three"],
    ["two hundred", "two hundred one"],
    ["ninety nine", "one hundred"],
    ["8", "9"],
    ["-98", "-97"],
    ["1,000", "1,001"],
    ["10,100,000", "10,100,001"],
    ["thirteen", "fourteen"],
    ["eighty", "eighty one"],
    ["one", "two"],
    ["three", "four"],
    ["seven", "eight"],
]
training_dataset=types.TuningDataset(
        examples=[
            types.TuningExample(
                text_input=i,
                output=o,
            )
            for i,o in training_dataset
        ],
    )
tuning_job = client.tunings.tune(
    base_model='models/gemini-1.0-pro-001',
    training_dataset=training_dataset,
    config=types.CreateTuningJobConfig(
        epoch_count= 5,
        batch_size=4,
        learning_rate=0.001,
        tuned_model_display_name="test tuned model"
    )
)

# generate content with the tuned model
response = client.models.generate_content(
    model=tuning_job.tuned_model.model,
    contents='III',
)

print(response.text)

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

Prueba el modelo

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

response = client.models.generate_content(
    model=tuning_job.tuned_model.model,
    contents='III'
)

No se implementó

Algunas funciones (informes de progreso, actualización de la descripción y eliminación de modelos ajustados) aún no se implementaron en el nuevo SDK.