Crea modelos de texto sintetizados

La síntesis paso a paso usa un modelo de profesor grande para entrenar un modelo de alumno más pequeño a fin de que realice ciertas tareas mejor con capacidades de razonamiento mejoradas. Con el modelo entrenado y sintetizado, se pueden realizar las mismas tareas que te interesan en el modelo de profesor más grande a un costo menor y con una latencia más baja.

Cuando sitetizas un modelo base, usas un modelo profesor y alumno:

  • El modelo de profesor es el modelo grande que puede hacer lo que quieres. Sin embargo, debido a su tamaño, es posible que el modelo de profesor tenga un costo más alto de uso y tenga más latencia que un modelo más pequeño.

  • El modelo de alumno es más pequeño que el modelo de profesor. En el proceso de entrenamiento y síntesis, se usan ejemplos etiquetados y lógicas que genera el modelo de profesor para ajustar el modelo de estudiante. Las capacidades de rendimiento y razonamiento del modelo sintetizado resultante son mejores que el modelo de estudiante original.

Especificas un modelo de profesor y un modelo de alumno cuando creas un trabajo de síntesis.

Modelos compatibles

Puedes especificar lo siguiente para el modelo de profesor:

  • text-unicorn@001

Puedes especificar lo siguiente para el modelo de estudiante:

  • text-bison@002

Formato del conjunto de datos

La síntesis funciona en un conjunto de datos etiquetado o no etiquetado. Si tienes un conjunto de datos etiquetados de alta calidad con cientos de ejemplos, te recomendamos que lo uses. De lo contrario, puedes usar un conjunto de datos de instrucción sin etiquetar. Si usas un conjunto de datos sin etiquetar, el modelo profesor genera las etiquetas y la lógica para la síntesis. Se recomiendan más de 1,000 ejemplos si usas un conjunto de datos sin etiqueta.

El conjunto de datos sintetizado con o sin etiqueta debe estar en formato de líneas JSON (JSONL), en el que cada línea contiene un solo ejemplo de ajuste. Antes de sintetizar tu modelo, sube el conjunto de datos a un bucket de Cloud Storage.

Cada ejemplo de conjunto de datos contiene un campo input_text con el mensaje de instrucciones y un campo output_text opcional que contiene una respuesta de ejemplo que se espera que produzca el modelo sintetizado.

La longitud máxima del token para input_text es 7,168 y la longitud máxima del token para output_text es 1,024. Si alguno de los campos excede la longitud máxima del token, los tokens de exceso se truncan.

La cantidad máxima de ejemplos que puede contener un conjunto de datos para un modelo de generación de texto es 10,000.

Ejemplo de conjunto de datos

{"input_text": "question: How many people live in Beijing? context:
With over 21 million residents, Beijing is the world's most populous national
capital city and is China's second largest city after Shanghai. It is
located in Northern China, and is governed as a municipality under the direct
administration of the State Council with 16 urban, suburban, and rural
districts.[14] Beijing is mostly surrounded by Hebei Province with the exception
of neighboring Tianjin to the southeast; together, the three divisions form the
Jingjinji megalopolis and the national capital region of China.",
"output_text": "over 21 million people"}

{"input_text": "question: How many parishes are there in Louisiana? context: The U.S. state of Louisiana is divided into 64 parishes (French: paroisses) in the same manner that 48 other states of the United States are divided into counties, and Alaska is divided into boroughs.", "output_text": "64"}

Incluye instrucciones en los ejemplos

Para tareas como la clasificación, es posible crear un conjunto de datos de ejemplos que no contengan instrucciones. Sin embargo, excluir las instrucciones de los ejemplos en el conjunto de datos genera un peor rendimiento después de la síntesis que incluir las instrucciones, sobre todo para los conjuntos de datos más pequeños.

Excluye instrucciones:

{"input_text": "5 stocks to buy now",
"output_text": "business"}

Incluye instrucciones:

{"input_text": "Classify the following text into one of the following classes:
[business, entertainment] Text: 5 stocks to buy now",
"output_text": "business"}

Conjunto de datos de muestra

Puedes usar un conjunto de datos de muestra para comenzar con la síntesis. El siguiente es un conjunto de datos de tareas de clasificación que contiene transcripciones médicas de muestra para varias especialidades médicas. Los datos son de mtsamples.com y están disponibles en Kaggle.

  • URI del conjunto de datos de síntesis de muestra:

    gs://cloud-samples-data/vertex-ai/model-evaluation/peft_train_sample.jsonl

  • URI del conjunto de datos de evaluación de muestra:

    gs://cloud-samples-data/vertex-ai/model-evaluation/peft_eval_sample.jsonl

Para usar estos conjuntos de datos, especifica los URI en los parámetros aplicables cuando crees un trabajo de síntesis de modelos de texto.

Por ejemplo:

...
"dataset_uri": "gs://cloud-samples-data/vertex-ai/model-evaluation/peft_train_sample.jsonl",
...
"evaluation_data_uri": "gs://cloud-samples-data/vertex-ai/model-evaluation/peft_eval_sample.jsonl",
...

Mantén la coherencia con los datos de producción

Los ejemplos en tu conjunto de datos deben coincidir con tu tráfico de producción esperado. Si tu conjunto de datos contiene formato, palabras clave, instrucciones o información específicas, los datos de producción deben tener el mismo formato y contener las mismas instrucciones.

Por ejemplo, si los ejemplos de tu conjunto de datos incluyen una "question:" y un "context:", el tráfico de producción también debe tener el formato de modo que incluya una "question:" y un "context:" en el mismo orden en que aparecen en ejemplos de conjuntos de datos. Si excluyes el contexto, el modelo no reconocerá el patrón, incluso si la pregunta exacta estaba en un ejemplo en el conjunto de datos.

Sube conjuntos de datos de síntesis a Cloud Storage

Para ejecutar un trabajo de ajuste, debes subir uno o más conjuntos de datos a un bucket de Cloud Storage. Puedes crear un depósito de Cloud Storage nuevo o usar uno existente para almacenar archivos de conjuntos de datos. La región del bucket no es importante, pero te recomendamos que uses un bucket que se encuentre en el mismo proyecto de Google Cloud en el que planeas ajustar tu modelo.

Una vez que tu bucket esté listo, sube tu archivo del conjunto de datos al bucket.

Configuración de sítesis de regiones

Puedes especificar tres opciones de configuración de región de Google Cloud cuando configuras un trabajo de síntesis. Una región es donde se ejecuta la canalización que ajusta tu modelo. En la otra región, se ejecuta la parte de ajuste de modelos del proceso de síntesis y se sube el modelo sintetizado.

Región del trabajo de canalización

La región del trabajo de canalización es la región en la que se ejecuta el trabajo de canalización. Si no se especifica la región de carga del modelo opcional, el modelo se sube y se implementa en la región del trabajo de canalización. Los datos intermedios, como el conjunto de datos transformado, se almacenan en la región del trabajo de canalización. A fin de saber qué regiones puedes usar para la región del trabajo de canalización, consulta Regiones de trabajos de canalización compatibles y cargas de modelos.

Debes especificar la región del trabajo de canalización mediante uno de los siguientes métodos.

  • Si creas un trabajo de síntesis mediante el envío de una solicitud POST con el pipelineJobs.create luego, usa la URL para especificar la región en la que se ejecuta el trabajo de canalización. En la siguiente URL, reemplaza ambas instancias de PIPELINE_JOB_REGION con la región donde se ejecuta la canalización:

     https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs
    
  • Si usas la consola de Google Cloud para crear un trabajo de síntesis, especifica la región del trabajo de canalización en el control Región cuando crees tu trabajo de síntesis. En la consola de Google Cloud, el control de Región especifica la región del trabajo de canalización y la región de carga del modelo. Cuando usas la consola de Google Cloud para crear un trabajo de síntesis, ambas regiones siempre son iguales.

Región de carga de modelos

Usa el parámetro opcional tuned_model_location para especificar dónde se sube tu modelo sintetizado. Si no se especifica la región de carga del modelo, el modelo sintetizado se sube a la región del trabajo de canalización.Puedes usar uno de los trabajos de canalización admitidos y las regiones de carga de modelos para la región de carga de modelos. Puedes especificar la región de carga del modelo mediante uno de los siguientes métodos:

  • Si creas un trabajo de síntesis mediante el envío de una solicitud POST con el método pipelineJobs, puedes usar el parámetro location para especificar la región de carga del modelo.

  • Si usas la consola de Google Cloud para crear un trabajo de síntesis, especifica la región de carga del modelo en el control Región cuando crees el trabajo de síntesis. En la consola de Google Cloud, el control de Región especifica la región de carga del modelo y la región del trabajo de canalización. Cuando usas la consola de Google Cloud para crear un trabajo de síntesis, ambas regiones siempre son iguales.

Región de ajuste de modelos

En la región de ajuste, se realiza el cálculo de la parte de ajuste del trabajo de síntesis. Esta región se determina según el tipo de acelerador que elijas. Si especificas TPU para el tipo de acelerador, el cálculo del ajuste del modelo se realiza en europe-west4. Si especificas GPU para el tipo de acelerador, el ajuste del modelo se realiza en us-central1.

Regiones de trabajo de canalización y carga de modelos compatibles

Puedes usar una de las siguientes regiones para especificar la región de carga del modelo y la región del trabajo de canalización:

  • us-central1
  • europe-west4
  • asia-southeast1
  • us-west1
  • europe-west3
  • europe-west2
  • asia-northeast1
  • us-east4
  • us-west4
  • northamerica-northeast1
  • europe-west9
  • europe-west1
  • asia-northeast3

Crea un trabajo de síntesis de modelos de texto

Puedes crear un trabajo de síntesis de modelos de texto con la consola de Google Cloud o la API. Para obtener orientación sobre las opciones de configuración de la síntesis de modelos, consulta Parámetro de configuración recomendadas.

REST

Para crear un trabajo de síntesis de modelos, envía una solicitud POST mediante el método pipelineJobs. Ten en cuenta que 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 sintetizando.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • PIPELINEJOB_DISPLAYNAME: Un nombre visible para el pipelineJob.
  • OUTPUT_DIR: El URI del bucket al que se envían los artefactos de canalización.
  • PROJECT_ID: El ID del proyecto.
  • MODEL_DISPLAYNAME: Un nombre visible para el modelo sintetizado subido por pipelineJob.
  • DATASET_URI: Es el URI de su archivo de conjunto de datos.
  • PIPELINE_JOB_REGION: Es la región en la que se ejecuta el trabajo de ajuste de canalización. Esta es también la región predeterminada en la que se sube el modelo ajustado. Si deseas subir el modelo a una región diferente, usa el parámetro location para especificar la región de carga del modelo ajustada. Para obtener más información, consulta Región de carga de modelos.
  • MODEL_UPLOAD_REGION: (opcional) la región en la que se sube el modelo ajustado. Si no especificas una región de carga de modelos, el modelo ajustado se sube a la misma región en la que se ejecuta el trabajo de canalización. Para obtener más información, consulta Región de carga de modelos.
  • ACCELERATOR_TYPE (opcional, GPU predeterminado): Es el tipo de acelerador que se usará para el ajuste de modelos. Las opciones válidas son las siguientes:
    • GPU: Usa ocho GPU A100 de 80 GB para el ajuste. Asegúrate de tener cuota suficiente. Si eliges GPU, se admite VPC-SC. CMEK se admiten si la ubicación de ajuste y la ubicación de carga del modelo son us-centra1. Para obtener más información, consulta Configuración de la región de ajuste supervisado. Si eliges GPU, los cálculos de ajuste del modelo se realizarán en la región us-central1.
    • TPU: Usa 64 núcleos del pod de TPU v3 para ajustar. Asegúrate de tener cuota suficiente. CMEK no es compatible, pero se admite VPC‐SC. Si eliges TPU, los cálculos de ajuste del modelo se realizarán en la región europe-west4.
  • TEACHER_MODEL_REFERENCE: Nombre del modelo de profesor que se usará para la síntesis. El modelo compatible es text-unicorn@001.
  • STUDENT_MODEL_REFERENCE: Nombre del modelo de estudiante que se usará para la síntesis. El modelo compatible es text-bison@002.
  • STEPS: La cantidad de pasos que se deben ejecutar para el ajuste del modelo. El valor predeterminado es 300. El tamaño del lote varía según el ajuste de la ubicación y el tamaño del modelo. Para modelos de 8,000, como text-bison@002, chat-bison@002, code-bison@002 y codechat-bison@002:
    • us-central1 tiene un tamaño de lote de 8.
    • europe-west4 tiene un tamaño de lote de 24.
    Para modelos de 32,000, como text-bison-32k, chat-bison-32k, code-bison-32k y codechat-bison-32k:
    • us-central1 tiene un tamaño de lote de 8.
    • europe-west4 tiene un tamaño de lote de 8.

    Por ejemplo, si entrenas text-bison@002 en europe-west4, hay 240 ejemplos en un conjunto de datos de entrenamiento y configuras steps como 20, entonces la cantidad de ejemplos de entrenamiento es el producto de 20 pasos y el tamaño del lote de 24 o 480 pasos de entrenamiento. En este caso, se generan dos ciclos de entrenamiento en el proceso, ya que pasa por los ejemplos dos veces. En us-central1, si hay 240 ejemplos en un conjunto de datos de entrenamiento y estableces steps en 15, la cantidad de ejemplos de entrenamiento es el producto de 15 pasos y el tamaño del lote de 8 o 120 pasos de entrenamiento. En este caso, hay 0.5 ciclos de entrenamiento porque los pasos de entrenamiento son la mitad de los ejemplos.

  • LEARNING_RATE_MULTIPLIER: Un multiplicador para aplicar a la tasa de aprendizaje recomendada. Para usar la tasa de aprendizaje recomendada, usa 1.0.
  • EVAL_DATASET_URI: (opcional) El URI del archivo JSONL que contiene el conjunto de datos de evaluación para la predicción y evaluación por lotes. La evaluación no es compatible con chat-bison. Para obtener más información, consulta Formato del conjunto de datos para ajustar un modelo de código. El conjunto de datos de evaluación requiere entre diez y 250 ejemplos.
  • EVAL_INTERVAL: (opcional, predeterminado 20) La cantidad de pasos de ajuste entre cada evaluación. Los intervalos de evaluación no son compatibles con los modelos de chat. Debido a que la evaluación se ejecuta en todo el conjunto de datos de evaluación, un intervalo de evaluación más pequeño da como resultado un tiempo de ajuste más largo. Por ejemplo, si steps es 200 y EVAL_INTERVAL es 100, solo obtendrás dos datos para las métricas de evaluación. Este parámetro requiere que se configure evaluation_data_uri.
  • ENABLE_EARLY_STOPPING: (opcional, true predeterminado) Un boolean que, si se establece en true, deja de ajustar antes de completar todos los pasos de ajuste si el rendimiento del modelo se mide en función de lo siguiente: La precisión de los tokens previstos no mejora lo suficiente entre las ejecuciones de evaluaciones. Si es false, el ajuste continúa hasta que todos los pasos de ajuste estén completos. Este parámetro requiere que se configure evaluation_data_uri. La habilitación de la interrupción anticipada no es compatible con los modelos de chat.
  • TENSORBOARD_RESOURCE_ID: (Opcional) El ID de una instancia de TensorBoard de Vertex AI. La instancia de Vertex AI TensorBoard se usa para crear un experimento después de que se completa el trabajo de ajuste. La instancia de TensorBoard de Vertex AI debe estar en la misma región que la canalización de ajuste.
  • ENCRYPTION_KEY_NAME: (Opcional) Es el nombre completamente calificado de una clave de encriptación administrada por el cliente (CMEK) que deseas usar para la encriptación de datos. Una CMEK solo está disponible en us-central1. Si usas us-central1 y no especificas una CMEK, se usa una clave de encriptación administrada por Google. Las claves de encriptación administradas por Google se usan de forma predeterminada en todas las otras regiones disponibles. Para obtener más información, consulta la Descripción general de CMEK.
  • TEMPLATE_URI: El URI de la plantilla sintetizada, https://us-kfp.pkg.dev/ml-pipeline/distillation/distillation/v1.0.0.
  • SERVICE_ACCOUNT: Es la cuenta de servicio que usa Vertex AI para ejecutar tu trabajo de canalización (opcional). De forma predeterminada, se usa la cuenta de servicio predeterminada de Compute Engine (PROJECT_NUMBER‑compute@developer.gserviceaccount.com) del proyecto. Obtén más información para vincular una cuenta de servicio personalizada.

Método HTTP y URL:

POST https://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs

Cuerpo JSON de la solicitud:

{
  "displayName": "PIPELINEJOB_DISPLAYNAME",
  "runtimeConfig": {
    "gcsOutputDirectory": "gs://OUTPUT_DIR",
    "parameterValues": {
      "project": "PROJECT_ID",
      "model_display_name": "MODEL_DISPLAYNAME",
      "dataset_uri": "gs://DATASET_URI",
      "location": "MODEL_UPLOAD_REGION",
      "accelerator_type": "ACCELERATOR_TYPE",
      "teacher_model_reference": TEACHER_MODEL_REFERENCE,
      "student_model_reference": STUDENT_MODEL_REFERENCE,
      "train_steps": STEPS,
      "learning_rate_multiplier": LEARNING_RATE_MULTIPLIER,
      "evaluation_data_uri": "gs://EVAL_DATASET_URI",
      "evaluation_interval": EVAL_INTERVAL,
      "enable_early_stopping": ENABLE_EARLY_STOPPING,
      "enable_checkpoint_selection": "ENABLE_CHECKPOINT_SELECTION",
      "tensorboard_resource_id": "TENSORBOARD_ID",
      "encryption_spec_key_name": "ENCRYPTION_KEY_NAME"
    }
  },
  "encryptionSpec": {
    "kmsKeyName": "ENCRYPTION_KEY_NAME"
  },
  "serviceAccount": "SERVICE_ACCOUNT",
  "templateUri": "TEMPLATE_URI"
}

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://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs"

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://PIPELINE_JOB_REGION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/PIPELINE_JOB_REGION/pipelineJobs" | Select-Object -Expand Content

Deberías recibir una respuesta JSON similar a la que se muestra a continuación: Ten en cuenta que pipelineSpec se truncó para ahorrar espacio.

Python

Si deseas obtener información para instalar o actualizar el SDK de Python, consulta Instala el SDK de Vertex AI para Python. Si deseas obtener más información, consulta la documentación de referencia de la API de Python.

from __future__ import annotations

from typing import Optional

from google.auth import default
import vertexai
from vertexai.preview.language_models import TextGenerationModel, TuningEvaluationSpec

credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])

def distill_model(
    project_id: str,
    location: str,
    dataset: str,
    teacher_model: str,
    train_steps: int = 300,
    evaluation_dataset: Optional[str] = None,
) -> None:
    """Distill a new model.

    Args:
      project_id: GCP Project ID, used to initialize vertexai
      location: GCP Region, used to initialize vertexai
      dataset: GCS URI of jsonl file.
      teacher_model: Name of the teacher model.
      train_steps: Number of training steps to use when tuning the model.
      evaluation_dataset: GCS URI of jsonl file of evaluation data.
    """
    vertexai.init(project=project_id, location=location, credentials=credentials)

    eval_spec = TuningEvaluationSpec(evaluation_data=evaluation_dataset)

    student_model = TextGenerationModel.from_pretrained("text-bison@002")
    distillation_job = student_model.distill_from(
        teacher_model=teacher_model,
        dataset=dataset,
        # Optional:
        train_steps=train_steps,
        evaluation_spec=eval_spec,
    )

    return distillation_job

Console

Para sintetizar un modelo de texto con la consola de Google Cloud, sigue estos pasos:

  1. En la sección Vertex AI de la consola de Google Cloud, ve a la página Vertex AI Studio.

    Ir a Vertex AI Studio

  2. Haz clic en la pestaña Ajustar y sintetizar.
  3. Haz clic en Crear modelo sintetizado.
  4. Configura los detalles del modelo:
    • Nombre del modelo: Ingresa un nombre para el modelo sintetizado.
    • Modelo de profesor: Selecciona el modelo que deseas usar para el modelo de profesor.
    • Modelo de estudiante: Selecciona el modelo que deseas usar para el modelo de estudiante.
    • 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.
    • Directorio de trabajo: Ingresa la ubicación de Cloud Storage en la que se almacenan los artefactos cuando se ajusta tu modelo.
  5. Expande Opciones avanzadas para establecer una configuración avanzada.
    • Pasos de entrenamiento: Ingresa la cantidad de pasos que se ejecutarán para el ajuste del modelo. El valor predeterminado es 300. El tamaño del lote varía según el ajuste de la ubicación y el tamaño del modelo. Para modelos de 8,000, como text-bison@002, chat-bison@002, code-bison@002 y codechat-bison@002:
      • us-central1 tiene un tamaño de lote de 8.
      • europe-west4 tiene un tamaño de lote de 24.
      Para modelos de 32,000, como text-bison-32k, chat-bison-32k, code-bison-32k y codechat-bison-32k:
      • us-central1 tiene un tamaño de lote de 8.
      • europe-west4 tiene un tamaño de lote de 8.

      Por ejemplo, si entrenas text-bison@002 en europe-west4, hay 240 ejemplos en un conjunto de datos de entrenamiento y configuras steps como 20, entonces la cantidad de ejemplos de entrenamiento es el producto de 20 pasos y el tamaño del lote de 24 o 480 pasos de entrenamiento. En este caso, se generan dos ciclos de entrenamiento en el proceso, ya que pasa por los ejemplos dos veces. En us-central1, si hay 240 ejemplos en un conjunto de datos de entrenamiento y estableces steps en 15, la cantidad de ejemplos de entrenamiento es el producto de 15 pasos y el tamaño del lote de 8 o 120 pasos de entrenamiento. En este caso, hay 0.5 ciclos de entrenamiento porque los pasos de entrenamiento son la mitad de los ejemplos.

    • Multiplicador de tasa de aprendizaje: Ingresa el tamaño del paso en cada iteración. El valor predeterminado es 1.
    • Tipo de acelerador: (opcional) Ingresa el tipo de acelerador que se usará para el ajuste de modelos. Las opciones válidas son las siguientes:
      • GPU: Usa ocho GPU A100 de 80 GB para el ajuste. Asegúrate de tener cuota suficiente. Si eliges GPU, se admite VPC-SC. CMEK se admiten si la ubicación de ajuste y la ubicación de carga del modelo son us-centra1. Para obtener más información, consulta Configuración de la región de ajuste supervisado. Si eliges GPU, los cálculos de ajuste del modelo se realizarán en la región us-central1.
      • TPU: Usa 64 núcleos del pod de TPU v3 para ajustar. Asegúrate de tener cuota suficiente. CMEK no es compatible, pero se admite VPC‐SC. Si eliges TPU, los cálculos de ajuste del modelo se realizarán en la región europe-west4.
    • Agrega una instancia de TensorBoard: (Opcional) El ID de una instancia de TensorBoard de Vertex AI. La instancia de Vertex AI TensorBoard se usa para crear un experimento después de que se completa el trabajo de ajuste. La instancia de TensorBoard de Vertex AI debe estar en la misma región que la canalización de ajuste.
    • Encriptación (opcional) elige usar una clave de encriptación administrada por Google o una clave de encriptación administrada por el cliente (CMEK). Una CMEK solo está disponible para la encriptación en la región us-central1. En las demás regiones disponibles, se usa una clave de encriptación administrada por Google. Para obtener más información, consulta la Descripción general de CMEK.
    • Cuenta de servicio (opcional): elige una cuenta de servicio administrada por el usuario. Una cuenta de servicio determina los recursos de Google Cloud a los que puede acceder tu código de servicio. Si no eliges una cuenta de servicio, se usa una cuenta de servicio administrada por Google que incluye los permisos adecuados para la mayoría de los modelos.
  6. Haga clic en Continue.
  7. Si deseas subir el archivo de conjunto de datos, elige  Subir archivo JSONL a Cloud Storage. Si tu archivo de conjunto de datos ya se encuentra en un bucket de Cloud Storage, selecciona  Archivo JSONL existente en Cloud Storage.

    Sube un archivo JSONL

    • En 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.

    Usa un archivo JSONL existente

    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.

  8. (Opcional) Para evaluar tu modelo sintetizado, selecciona Habilitar evaluacióndel modelo y configura la evaluación del modelo:
    • Conjunto de datos de evaluación: (opcional) El URI del archivo JSONL que contiene el conjunto de datos de evaluación para la predicción y evaluación por lotes. La evaluación no es compatible con codechat-bison. Si deseas obtener más información, consulta Formato del conjunto de datos para ajustar un modelo de código. El conjunto de datos de evaluación requiere entre diez y 250 ejemplos.
    • Intervalo de evaluación: (opcional, 20 predeterminado) La cantidad de pasos de ajuste entre cada evaluación. Los intervalos de evaluación no son compatibles con los modelos de chat. Debido a que la evaluación se ejecuta en todo el conjunto de datos de evaluación, un intervalo de evaluación más pequeño da como resultado un tiempo de ajuste más largo. Por ejemplo, si steps es 200 y EVAL_INTERVAL es 100, solo obtendrás dos datos para las métricas de evaluación. Este parámetro requiere que se configure evaluation_data_uri.
    • Habilitar la interrupción anticipada: (opcional, true predeterminado) Un boolean que, si se establece en true, detiene el ajuste antes de completar todos los pasos de ajuste si se cumplen las siguientes condiciones: El rendimiento del modelo, según lo que mide la precisión de los tokens previstos, no mejora lo suficiente entre las ejecuciones de evaluaciones. Si es false, el ajuste continúa hasta que todos los pasos de ajuste estén completos. Este parámetro requiere que se configure evaluation_data_uri. La habilitación de la interrupción anticipada no es compatible con los modelos de chat.
    • Habilitar la selección de puntos de control: cuando está habilitada, Vertex AI selecciona y muestra el punto de control con el mejor rendimiento de evaluación de modelos a partir de todos los puntos de control creados durante el trabajo de ajuste. Cuando se inhabilita, se muestra el punto de control final creado durante el trabajo de ajuste. Cada punto de control hace referencia a una instantánea del modelo durante un trabajo de ajuste.
    • Instancia de TensorBoard: el ID de una instancia de TensorBoard de Vertex AI (opcional). La instancia de Vertex AI TensorBoard se usa para crear un experimento después de que se completa el trabajo de ajuste. La instancia de TensorBoard de Vertex AI debe estar en la misma región que la canalización de ajuste.
  9. Haz clic en Iniciar síntesis.

En la siguiente tabla, se muestran los parámetros de configuración recomendados para sintetizar un modelo de base por tarea:

Tarea Cantidad de ejemplos en el conjunto de datos Pasos de entrenamiento
Clasificación Más de 100 200-1000
Resúmenes 100-500 1000-1500
QA de extracción Más de 100 200-800

En los pasos de entrenamiento, puedes probar más de un valor para obtener el mejor rendimiento en un conjunto de datos en particular, por ejemplo, 100, 200 o 500.

Visualiza una lista de modelos sintetizados

Puedes ver una lista de modelos en tu proyecto actual, incluidos los modelos sitetizados con la consola de Google Cloud o el SDK de Vertex AI para Python.

Python

Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de Vertex AI sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de Vertex AI Python.

Para autenticarte en Vertex AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.


import vertexai
from vertexai.language_models import TextGenerationModel

def list_tuned_models(
    project_id: str,
    location: str,
) -> None:
    """List tuned models."""

    vertexai.init(project=project_id, location=location)
    model = TextGenerationModel.from_pretrained("text-bison@002")
    tuned_model_names = model.list_tuned_model_names()
    print(tuned_model_names)

    return tuned_model_names

Console

Para ver tus modelos sitetizados en la consola de Google Cloud, ve a la página Vertex AI Model Registry.

Ir a Vertex AI Model Registry

Carga un modelo de texto sintetizado

El siguiente código de muestra usa el SDK de Vertex AI para Python a fin de cargar un modelo de generación de texto sintetizado:

import vertexai
from vertexai.preview.language_models import TextGenerationModel

model = TextGenerationModel.get_tuned_model(TUNED_MODEL_NAME)

Reemplaza TUNED_MODEL_NAME por el nombre de recurso calificado del modelo sintetizado. Este nombre tiene el formato projects/PROJECT_ID/locations/LOCATION/models/MODEL_ID. Puedes encontrar el ID del modelo de tu modelo sitentizado en Vertex AI Model Registry.

Ajustes y métricas de evaluación

Puedes configurar un trabajo de ajuste de modelos para recopilar y, luego, informar el ajuste de modelos y las métricas de evaluación de modelos, que luego se pueden visualizar mediante Vertex AI TensorBoard. Para conectar el trabajo de ajuste a Vertex AI TensorBoard, especifica un ID de instancia de Vertex AI TensorBoard y un conjunto de datos de evaluación.

Métricas de ajuste de modelos

Puedes configurar un trabajo de ajuste de modelos para recopilar las siguientes métricas de ajuste de chat-bison, code-bison, codechat-bison y text-bison:

  • /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 evaluación de modelos:

Puedes configurar un trabajo de ajuste de modelos a fin de recopilar las siguientes métricas de evaluación para code-bison y text-bison:

  • /eval_total_loss: La pérdida del conjunto de datos de evaluación en un paso de evaluació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 evaluación.

Las visualizaciones de métricas están disponibles después de que se completa el trabajo de ajuste del modelo. Si especificas solo un ID de instancia de Vertex AI TensorBoard y no un conjunto de datos de evaluación cuando creas el trabajo de ajuste, solo las visualizaciones para las métricas de ajuste están disponibles.