Ajusta los modelos de texto con el ajuste RLHF

El aprendizaje por refuerzo con retroalimentación humana (RLHF) usa comentarios recopilados de personas para ajustar un modelo. Se recomienda el RLHF cuando el resultado del modelo es complejo y difícil de describir. Los comentarios humanos tienen la forma de elegir entre diferentes opciones de salida. Estas opciones proporcionan mejores datos que los mensajes etiquetados, que usa el ajuste supervisado, para ajustar un modelo que produce un resultado difícil de describir. Si el resultado de tu modelo no es difícil de definir, considera ajustar tu modelo de texto mediante el ajuste supervisado.

En esta página, se proporciona información detallada sobre cómo ajustar un modelo de texto con el ajuste RLHF. Aprenderás qué modelos de texto admiten el ajuste del RLHF, cómo crear un conjunto de datos y cómo ajustar un modelo de texto con el ajuste del RLHF. También aprenderás a ver y cargar modelos ajustados con el ajuste RLHF. Para obtener más detalles sobre el ajuste de RLHF en Vertex AI, consulta Ajuste de modelos de RLHF.

Modelos compatibles

Los siguientes modelos admiten el ajuste del RLHF:

  • El modelo base de generación de texto, text-bison@002. Para obtener más información, consulta Modelo de generación de texto.
  • El modelo de base de la generación de chat, chat-bison@001. Para obtener más información, consulta Modelo de generación de chat.
  • Los modelos t5-small, t5-large, t5-xl y t5-xxl de transformación de transferencia de texto a texto de Flan (Flan-T5). Los modelos de Flan-T5 se pueden ajustar para hacer tareas como clasificar texto, traducir idiomas y responder preguntas. Para obtener más información, consulta Puntos de control de Flan-T5.

Prepara conjuntos de datos de ajuste de RLHF

El ajuste de RLHF requiere que prepares dos conjuntos de datos y uno opcional. Todos los conjuntos de datos están en formato líneas JSON (JSONL) y deben subirse a un bucket de Cloud Storage. El formato del conjunto de datos que se usa para ajustar un modelo de generación de texto es diferente al formato del conjunto de datos para ajustar un modelo de chat de texto.

Conjunto de datos de instrucción

Un conjunto de datos que contiene mensajes sin etiquetar. Los mensajes pueden ser los mismos mensajes del conjunto de datos de preferencia o pueden ser diferentes. Cada línea en el conjunto de datos del mensaje contiene los siguientes campos:

conjunto de datos de text-bison

El conjunto de datos de generación de texto incluye un campo:

  • input_text: Un campo obligatorio que contiene el mensaje.

Ejemplo

{
  "input_text": "Create a description for Plantation Palms."
}

conjunto de datos de chat-bison

El conjunto de datos de generación de chat incluye dos campos:

  • messages: un arreglo de pares de contenido de autor. El campo author se refiere al autor del mensaje y se alterna entre user y assistant El campo content es el contenido del mensaje. El content no puede estar vacío y el primer y el último author deben configurarse como user.

  • context (opcional): Es el contexto adicional para que el modelo use cuando responda a un mensaje.

Ejemplo

{
  "context": "You are a pirate dog named Captain Barktholomew.",
  "messages": [
    {
      "author": "user",
      "content": "Hi"
    },
    {
      "author": "assistant",
      "content": "Argh! What brings ye to my ship?"
    },
    {
      "author": "user",
      "content": "What's your name?"
    },
  ]
}

Para obtener más información, puedes descargar y ver este conjunto de datos de solicitud de muestra.

Conjunto de datos de preferencias humanas

El conjunto de datos de preferencia humana contiene preferencias de personas. Cada línea en el conjunto de datos de preferencia humana registra la preferencia entre dos opciones que se presentaron a una persona. Recomendamos que el conjunto de datos de preferencia humana incluya de 5,000 a 10,000 ejemplos. Cada línea del conjunto de datos de preferencia manual contiene una preferencia de ejemplo que incluye los campos del conjunto de datos de solicitud para el modelo que se ajusta, además de los siguientes campos:

  • candidate_0 y candidate_1: Cada uno de estos campos contiene dos respuestas. La persona ayuda a ajustar el modelo eligiendo cuál de las dos respuestas prefieren.
  • choice: Contiene un número entero, 0 o 1, que indica qué candidato es el humano preferido. Un 0 indica que el ser humano eligió candidate_0, y un 1 indica que el humano eligió candidate_1.

Un ejemplo de una fila en el conjunto de datos de preferencia humana es el siguiente:

{"input_text": "Create a description for Plantation Palms.", "candidate_0": "Enjoy some fun in the sun at Gulf Shores.", "candidate_1": "A Tranquil Oasis of Natural Beauty.", "choice": 0}

Para obtener más información, puedes descargar y ver este conjunto de datos de preferencias humanas de muestra.

Conjunto de datos de evaluación (opcional)

Un conjunto de datos que incluye mensajes sin etiquetar para la predicción después de ajustar el modelo. Si se proporciona el conjunto de datos de evaluación, la inferencia se hace después de que se completa el trabajo de ajuste. El formato del conjunto de datos de evaluación es el mismo que el del conjunto de datos de la instrucción. Sin embargo, los mensajes en un conjunto de datos de evaluación deben ser diferentes de los mensajes en el conjunto de datos de mensajes.

Para obtener más información, puedes descargar y ver este conjunto de datos de evaluación de muestra.

Modelo de recompensas

El conjunto de datos de preferencia humana se usa para entrenar un modelo de recompensas. Vertex AI crea y, luego, usa el modelo de recompensa durante el ajuste de RLHF. Los modelos de recompensas se crean en un bucket privado de Cloud Storage en un proyecto de usuario del cliente. Un proyecto de usuario de cliente es un proyecto interno único para un cliente. No puedes acceder a un modelo de recompensas y se borra después de que se completa el trabajo de ajuste. Para obtener más información, consulta el proyecto de usuario.

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 ajuste 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.

Crea un trabajo de ajuste de RLHF

Puedes hacer el ajuste de RLHF mediante la consola de Google Cloud o el SDK de Vertex AI para Python.

SDK de Vertex AI para Python

Si deseas obtener información sobre cómo usar el SDK de Vertex AI para Python para ajustar tus modelos con RLHF, abre y ejecuta el siguiente notebook con Colab, GitHub o Vertex AI Workbench:

Consola de Google Cloud

Para ajustar un modelo de texto en la consola de Google Cloud con el ajuste RLHF, sigue estos pasos:

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

    Ve a Vertex AI Studio

  2. Haz clic en la pestaña Ajustar y sintetizar.
  3. Haz clic en Crear modelo ajustado.
  4. Aprendizaje por refuerzo con retroalimentación humana (RLHF)
  5. Configura los detalles del modelo:
    • Ajustar nombre del modelo: Ingresa un nombre para el modelo ajustado.
    • Modelo base: Selecciona el modelo base que deseas ajustar.
    • Región: escribe la región en la que se hace el ajuste del modelo. Las regiones admitidas son:
        .
      • us-central1: Usa 8 GPU Nvidia A100 de 80 GB.
      • europe-west4: Usa 64 núcleos del Pod de TPU v3.
    • Directorio de salida: ingresa la ubicación de Cloud Storage en la que se almacenan los artefactos cuando se ajusta tu modelo.
  6. Expande Opciones avanzadas para establecer una configuración avanzada.
    • Pasos para entrenar una recompensa: Ingresa la cantidad de pasos que se deben usar cuando entrenes el modelo de recompensas. El modelo de recompensas se usa para ajustar tu modelo. El valor predeterminado es 1,000.
    • Multiplicador de la tasa de aprendizaje de recompensas: Ingresa un valor flotante que afecte la tasa de aprendizaje cuando entrenes el modelo de recompensas. Para aumentar la tasa de aprendizaje predeterminada, escribe un valor más alto. Para disminuir la tasa de aprendizaje predeterminada, escribe un valor más bajo. El valor predeterminado es 1.0.
    • Pasos de entrenamiento de refuerzo: Ingresa la cantidad de pasos que se deben hacer cuando se ajusta el modelo base mediante el aprendizaje por refuerzo. El valor predeterminado es 1000.
    • Multiplicador de tasa de aprendizaje de refuerzo: escribe un valor flotante que afecte la tasa de aprendizaje cuando se entrena un modelo de refuerzo. Para aumentar la tasa de aprendizaje predeterminada, escribe un valor más alto. Para disminuir la tasa de aprendizaje predeterminada, escribe un valor más bajo. El valor predeterminado es 1.0.
  7. Haga clic en Continue.
  8. En Conjunto de datos de preferencias humanas, sube o elige un conjunto de datos de preferencias humanas que se use para crear un modelo de recompensas. 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, elige  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.

  9. En Conjunto de datos del mensaje, si deseas subir el archivo del conjunto de datos, elige Subir archivo JSONL a Cloud Storage. De lo contrario, si tu archivo de conjunto de datos de solicitud ya se encuentra en un bucket de Cloud Storage, elige 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.

  10. (Opcional) Para evaluar tu modelo ajustado, haz lo siguiente:
    1. Haz clic en Habilitar evaluación del modelo.
    2. En Conjunto de datos de evaluación, haz clic en Explorar.
    3. Navega al bucket de Cloud Storage que contiene tu conjunto de datos de evaluación y elige tu conjunto de datos de evaluación.
    Para obtener más información, consulta Conjunto de datos de evaluación.
  11. Haz clic en Iniciar ajuste.

Verifica el estado de la operación de ajuste

Para verificar el estado de tu trabajo de ajuste de modelo, ve a la página Vertex AI Pipelines en la consola de Google Cloud. En esta página, se muestra el estado de los trabajos de ajuste de modelos de texto y código.

Ir a Canalizaciones

Como alternativa, puedes configurar las notificaciones por correo electrónico de Vertex AI Pipelines para que recibas una notificación por correo electrónico cuando el trabajo de ajuste del modelo finalice o falle.

¿Qué sigue?