En este documento, se describe cómo ajustar un modelo de Gemini mediante el ajuste supervisado.
Antes de comenzar
Antes de comenzar, debes preparar un conjunto de datos de ajuste fino supervisado. Según tu caso de uso, existen diferentes requisitos.
- Prepara un conjunto de datos de texto para el ajuste: Ajuste de texto
- Prepara un conjunto de datos de imágenes para el ajuste: Ajuste de imágenes
- Prepara un conjunto de datos de documentos para el ajuste: Ajuste de documentos
- Prepara un conjunto de datos de audio para el ajuste: Ajuste de audio
Modelos compatibles
gemini-1.5-pro-002
(En DG)gemini-1.5-flash-002
(En DG)gemini-1.0-pro-002
(en versión preliminar, solo admite el ajuste de texto)
Crea un trabajo de ajuste.
Puedes crear un trabajo de ajuste supervisado con la consola de Google Cloud, la API o el SDK de Vertex AI para Python.
REST
Para crear un trabajo de ajuste de modelos, envía una solicitud POST mediante el método tuningJobs.create
. Algunos de los parámetros no son compatibles con todos los modelos. Asegúrate de incluir solo los parámetros aplicables del modelo que estás ajustando.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto.
- TUNING_JOB_REGION: Es la región en la que se ejecuta el trabajo de ajuste. Esta es también la región predeterminada en la que se sube el modelo ajustado.
- BASE_MODEL: El nombre del modelo de base para ajustar. Valores admitidos:
gemini-1.5-pro-002
,gemini-1.5-flash-002
ygemini-1.0-pro-002
. - TRAINING_DATASET_URI: Es el URI de Cloud Storage de tu conjunto de datos de entrenamiento. Tu conjunto de datos debe tener el formato de un archivo JSONL. Para obtener mejores resultados, proporciona al menos entre 100 y 500 ejemplos. Para obtener más información, consulta Acerca de los conjuntos de datos de ajuste supervisado .
- VALIDATION_DATASET_URIOpcional: Es el URI de Cloud Storage de tu archivo de conjunto de datos de validación.
- EPOCH_COUNTOpcional: Es la cantidad de pases completos que el modelo realiza en todo el conjunto de datos de entrenamiento durante el entrenamiento. Déjala sin configurar para usar el valor recomendado.
- ADAPTER_SIZEOpcional: el tamaño del adaptador que se usará para el trabajo de ajuste. El tamaño del adaptador influye en la cantidad de parámetros entrenables para el trabajo de ajuste. Un tamaño de adaptador más grande implica que el modelo puede aprender tareas más complejas, pero requiere un conjunto de datos de entrenamiento más grande y tiempos de entrenamiento más largos.
- LEARNING_RATE_MULTIPLIER: Opcional: Un multiplicador para aplicar a la tasa de aprendizaje recomendada. Déjala sin configurar para usar el valor recomendado.
- TUNED_MODEL_DISPLAYNAMEOpcional: Un nombre visible para el modelo ajustado. Si no se establece, se genera un nombre aleatorio.
Método HTTP y URL:
POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs
Cuerpo JSON de la solicitud:
{ "baseModel": "BASE_MODEL", "supervisedTuningSpec" : { "trainingDatasetUri": "TRAINING_DATASET_URI", "validationDatasetUri": "VALIDATION_DATASET_URI", "hyperParameters": { "epochCount": EPOCH_COUNT, "adapterSize": "ADAPTER_SIZE", "learningRateMultiplier": LEARNING_RATE_MULTIPLIER }, }, "tunedModelDisplayName": "TUNED_MODEL_DISPLAYNAME" }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Ejemplo del comando curl
PROJECT_ID=myproject
LOCATION=us-central1
curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
"https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/tuningJobs" \
-d \
$'{
"baseModel": "gemini-1.5-pro-002",
"supervisedTuningSpec" : {
"training_dataset_uri": "gs://cloud-samples-data/ai-platform/generative_ai/sft_train_data.jsonl",
"validation_dataset_uri": "gs://cloud-samples-data/ai-platform/generative_ai/sft_validation_data.jsonl"
},
"tunedModelDisplayName": "tuned_gemini_pro"
}'
Python
Console
Para ajustar un modelo de texto con ajuste supervisado mediante la consola de Google Cloud, sigue estos pasos:
En la sección Vertex AI de la consola de Google Cloud, ve a la página Vertex AI Studio.
Haz clic en Crear modelo ajustado.
En Método de ajuste, selecciona el botón de selección para Ajuste supervisado.
En Detalles del modelo, configura lo siguiente:
- En el campo Nombre del modelo ajustado, ingresa un nombre para el modelo ajustado nuevo, de hasta 128 caracteres.
- En el campo Modelo base, selecciona
gemini-1.5-pro-002
. - En el campo desplegable Región, selecciona la región en la que se ejecuta el trabajo de ajuste de canalización y en la que se implementa el modelo ajustado.
De manera opcional, expande la flecha desplegable Opciones avanzadas y configura lo siguiente:
- En el campo Cantidad de ciclos de entrenamiento, ingresa la cantidad de pasos que se ejecutarán para el ajuste del modelo.
- En el campo Adapter Size, ingresa el tamaño del adaptador que se usará para el ajuste del modelo.
- En el campo Multiplicador de tasa de aprendizaje, ingresa un Ingresa el tamaño del paso en cada iteración. El valor predeterminado es 1.
Haz clic en Continuar.
Se abrirá la página Conjunto de datos de ajuste.
Para subir un archivo de conjunto de datos, selecciona una de las siguientes opciones:
- Si aún no subiste un conjunto de datos, selecciona el botón de selección para Subir archivo a Cloud Storage.
- En el campo Seleccionar archivo JSONL, haz clic en Explorar y elige tu archivo de conjunto de datos.
- En Ubicación del conjunto de datos, haz clic en Explorar y elige el bucket de Cloud Storage en el que deseas almacenar el archivo del conjunto de datos.
- Si tu archivo de conjunto de datos ya se encuentra en un bucket de Cloud Storage, selecciona el botón de selección de Archivo existente en Cloud Storage.
- En Ruta del archivo de Cloud Storage, haz clic en Explorar y elige el bucket de Cloud Storage en el que se encuentra el archivo de conjunto de datos.
Para obtener métricas de validación durante el entrenamiento, haz clic en el botón de activación Habilitar validación del modelo (opcional).
- En el archivo Conjunto de datos de validación, ingresa la ruta de Cloud Storage de tu conjunto de datos de validación.
Haz clic en Iniciar ajuste.
Tu modelo nuevo aparece en la sección Modelos ajustados de Gemini Pro en la página Ajustar y sintetizar. Cuando el modelo termina de ajustarse, el Estado dice Completado.
Ajusta hiperparámetros
Se recomienda que envíes tu primer trabajo de ajuste sin cambiar los hiperparámetros. El valor predeterminado es el valor recomendado según nuestros resultados de comparativas para obtener la mejor calidad de los resultados del modelo.
- Épocas: Es la cantidad de pases completos que el modelo realiza en todo el conjunto de datos de entrenamiento durante el entrenamiento.
- Tamaño del adaptador: Es el tamaño del adaptador que se usará para el trabajo de ajuste. El tamaño del adaptador influye en la cantidad de parámetros entrenables para el trabajo de ajuste. Un tamaño de adaptador más grande implica que el modelo puede aprender tareas más complejas, pero requiere un conjunto de datos de entrenamiento más grande y tiempos de entrenamiento más largos.
- Multiplicador de tasa de aprendizaje: Ingresa un multiplicador para aplicar a la tasa de aprendizaje recomendada. Puedes aumentar el valor para que converja más rápido o disminuirlo para evitar el sobreajuste.
Visualiza una lista de trabajos de ajuste
Puedes ver una lista de trabajos de ajuste en tu proyecto actual con la consola de Google Cloud, el SDK de Vertex AI para Python o mediante el envío de una solicitud GET con el método tuningJobs
.
REST
Para ver una lista de trabajos de ajuste de modelos, envía una solicitud GET mediante el método tuningJobs.list
.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto.
- TUNING_JOB_REGION: Es la región en la que se ejecuta el trabajo de ajuste. Esta es también la región predeterminada en la que se sube el modelo ajustado.
Método HTTP y URL:
GET https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el siguiente comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs"
PowerShell
Ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Python
Console
Para ver tus trabajos de ajuste en la consola de Google Cloud, ve a la página Vertex AI Studio.
Tus trabajos de ajuste de Gemini se enumeran en la tabla en la sección Modelos ajustados de Gemini Pro.
Obtén detalles de un trabajo de ajuste
Puedes obtener los detalles de un trabajo de ajuste en tu proyecto actual con la consola de Google Cloud, el SDK de Vertex AI para Python o mediante el envío de una solicitud GET con el método tuningJobs
.
REST
Para ver una lista de trabajos de ajuste de modelos, envía una solicitud GET con el método tuningJobs.get
y especifica TuningJob_ID
.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto.
- TUNING_JOB_REGION: Es la región en la que se ejecuta el trabajo de ajuste. Esta es también la región predeterminada en la que se sube el modelo ajustado.
- TUNING_JOB_ID: Es el ID del trabajo de ajuste.
Método HTTP y URL:
GET https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el siguiente comando:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID"
PowerShell
Ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Python
Console
Para ver los detalles de un modelo ajustado en la consola de Google Cloud, ve a la página Generative AI Studio.
En la tabla Modelos ajustados de Gemini Pro, busca tu modelo y haz clic en Detalles.
Se muestran los detalles de tu modelo.
Cancela un trabajo de ajuste
Puedes cancelar un trabajo de ajuste en tu proyecto actual con la consola de Google Cloud, el SDK de Vertex AI para Python o mediante el envío de una solicitud POST con el método tuningJobs
.
REST
Para ver una lista de trabajos de ajuste de modelos, envía una solicitud GET con el método tuningJobs.cancel
y especifica TuningJob_ID
.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto.
- TUNING_JOB_REGION: Es la región en la que se ejecuta el trabajo de ajuste. Esta es también la región predeterminada en la que se sube el modelo ajustado.
- TUNING_JOB_ID: Es el ID del trabajo de ajuste.
Método HTTP y URL:
POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el siguiente comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d "" \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel"
PowerShell
Ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/tuningJobs/TUNING_JOB_ID:cancel" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Python
Console
Para cancelar un trabajo de ajuste en la consola de Google Cloud, ve a la página Vertex AI Studio.
En la tabla Modelos ajustados de Gemini Pro, haz clic en
Administrar ejecución.Haz clic en Cancelar.
Prueba el modelo ajustado con un mensaje
Puedes probar un trabajo de ajuste en tu proyecto actual con el SDK de Vertex AI para Python o mediante el envío de una solicitud POST con el método tuningJobs
.
En el siguiente ejemplo, se le presenta al modelo la pregunta "¿Por qué el cielo es azul?".
REST
Para probar un modelo ajustado con un mensaje, envía una solicitud POST y
especifica el TUNED_ENDPOINT_ID
.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El ID del proyecto.
- TUNING_JOB_REGION: Es la región en la que se ejecuta el trabajo de ajuste. Esta es también la región predeterminada en la que se sube el modelo ajustado.
- ENDPOINT_ID: El ID de extremo del modelo ajustado de la API de GET.
- TEMPERATURE:
La temperatura se usa para las muestras durante la generación de respuesta, que se genera cuando se aplican
topP
ytopK
. La temperatura controla el grado de aleatoriedad en la selección de tokens. Las temperaturas más bajas son buenas para los mensajes que requieren una respuesta menos abierta o de creativa, mientras que las temperaturas más altas pueden generar resultados más diversos o creativos. Una temperatura de0
significa que siempre se seleccionan los tokens de probabilidad más alta. En este caso, las respuestas para un mensaje determinado son, en su mayoría, deterministas, pero es posible que haya una pequeña cantidad de variación.Si el modelo muestra una respuesta demasiado genérica, demasiado corta o el modelo proporciona una respuesta de resguardo, intenta aumentar la temperatura.
- TOP_P:
Top-P cambia la manera en la que el modelo selecciona los tokens para el resultado. Los tokens se seleccionan del más (consulta top-K) al menos probable, hasta que la suma de sus probabilidades sea igual al valor de P superior. Por ejemplo, si los tokens A, B y C tienen una probabilidad de 0.3, 0.2 y 0.1, y el valor P superior es
0.5
, el modelo elegirá A o B como el siguiente token mediante la temperatura y excluirá a C como candidato.Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias.
- TOP_K:
El parámetro Top-K cambia la manera en la que el modelo selecciona los tokens para el resultado. Un top-K de
1
significa que el siguiente token seleccionado es el más probable entre todos los tokens en el vocabulario del modelo (también llamado decodificación codiciosa), mientras que un top-K de3
significa que el siguiente token se selecciona de los tres tokens más probables con la temperatura.Para cada paso de selección de tokens, se muestran los tokens de K superior con las probabilidades más altas. Luego, los tokens se filtran según el superior con el token final seleccionado mediante el muestreo de temperatura.
Especifica un valor más bajo para respuestas menos aleatorias y un valor más alto para respuestas más aleatorias.
- MAX_OUTPUT_TOKENS:
Cantidad máxima de tokens que se pueden generar en la respuesta. Un token tiene casi cuatro caracteres. 100 tokens corresponden a casi 60 u 80 palabras.
Especifica un valor más bajo para las respuestas más cortas y un valor más alto para las respuestas potencialmente más largas.
Método HTTP y URL:
POST https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/endpoints/ENDPOINT_ID:generateContent
Cuerpo JSON de la solicitud:
{ "contents": [ { "role": "USER", "parts": { "text" : "Why is sky blue?" } } ], "generation_config": { "temperature":TEMPERATURE, "topP": TOP_P, "topK": TOP_K, "maxOutputTokens": MAX_OUTPUT_TOKENS } }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/endpoints/ENDPOINT_ID:generateContent"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://TUNING_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/TUNING_JOB_REGION/endpoints/ENDPOINT_ID:generateContent" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
Python
from vertexai.generative_models import GenerativeModel
sft_tuning_job = sft.SupervisedTuningJob("projects/<PROJECT_ID>/locations/<TUNING_JOB_REGION>/tuningJobs/<TUNING_JOB_ID>")
tuned_model = GenerativeModel(sft_tuning_job.tuned_model_endpoint_name)
print(tuned_model.generate_content(content))
Console
Para ver los detalles de un modelo ajustado en la consola de Google Cloud, ve a la página Generative AI Studio.
En la tabla Modelos ajustados de Gemini Pro, selecciona Probar.
Se abrirá una página en la que puedes crear una conversación con tu modelo ajustado.
Ajustes y métricas de validación
Puedes configurar un trabajo de ajuste de modelos para recopilar e informar los ajustes y métricas de evaluación del modelo, que luego se pueden visualizar Vertex AI Studio.
Para ver los detalles de un modelo ajustado en la consola de Google Cloud, ve a la página Generative AI Studio.
En la tabla Ajustar y sintetizar, haz clic en el nombre del modelo ajustado del que deseas ver las métricas.
Las métricas de ajuste aparecen en la pestaña Supervisar.
Métricas de ajuste de modelos
El trabajo de ajuste de modelos recopila de forma automática las siguientes métricas de ajuste para gemini-1.5-pro-002
.
/train_total_loss
: Pérdida del conjunto de datos de ajuste en un paso de entrenamiento/train_fraction_of_correct_next_step_preds
: La precisión del token en un paso de entrenamiento. Una predicción individual consiste en una secuencia de tokens. Esta métrica mide la exactitud de los tokens previstos en comparación con la verdad fundamental del conjunto de datos de ajuste./train_num_predictions:
Cantidad de tokens previstos en un paso de entrenamiento
Métricas de validación de modelos:
Puedes configurar un trabajo de ajuste de modelos a fin de recopilar las siguientes métricas de validación para gemini-1.5-pro-002
.
/eval_total_loss
: La pérdida del conjunto de datos de validación en un paso de validación./eval_fraction_of_correct_next_step_preds
: La precisión del token en un paso de evaluación. Una predicción individual consiste en una secuencia de tokens. Esta métrica mide la exactitud de los tokens previstos en comparación con la verdad fundamental del conjunto de datos de evaluación./eval_num_predictions
Cantidad de tokens previstos en un paso de validación.
Las visualizaciones de métricas están disponibles después de que se inicia el trabajo de ajuste. Se actualizará en tiempo real a medida que avance el ajuste. Si no especificas un conjunto de datos de validación cuando creas el trabajo de ajuste, solo las visualizaciones para las métricas de ajuste están disponibles.
¿Qué sigue?
- Para obtener información sobre cómo se puede usar el ajuste supervisado en una solución que compila una base de conocimiento de IA generativa, consulta Solución de inicio rápido: base de conocimiento de IA generativa.