Este instructivo te ayudará a comenzar a ajustar 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 |
Configura la autenticación
La API de Gemini te permite ajustar modelos con tus propios datos. Dado que son tus datos y Para tus modelos ajustados, se necesitan controles de acceso más estrictos que los que pueden proporcionar las claves de API.
Antes de ejecutar este instructivo, deberás configurar OAuth para tu proyecto.
Enumerar modelos ajustados
Puedes verificar tus modelos ajustados existentes con el genai.list_tuned_models
.
.
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
genai.create_tuned_model
. Para ello, define directamente
valores de entrada y salida en la llamada o importar desde un archivo a un marco de datos para
pasar al método.
En este ejemplo, ajustarás un modelo para generar el siguiente número en 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 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 ajustar un modelo puede llevar mucho tiempo, esta API no espera la
el ajuste necesario para completarlo. 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 inmediatamente a la lista de modelos ajustados, pero su el estado esté configurado como “Creando” mientras se ajusta el modelo.
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 genai.generate_text
y especificar el nombre del objeto ajustado
para probar su rendimiento.
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 la
genai.update_tuned_model
.
genai.update_tuned_model('tunedModels/my-increment-model', {"description":"This is my model."})
Borra el modelo
Para limpiar tu lista de modelos ajustados, puedes borrar los modelos que ya no necesitas.
Usa el método genai.delete_tuned_model
para borrar un modelo. Si cancelaste alguno
de ajuste de escala automático, puedes borrarlos, ya que su rendimiento
impredecibles.
genai.delete_tuned_model("tunedModels/my-increment-model")