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 la siguiente entrada de blog, Ajuste de RLHF con Vertex AI.
Flujo de trabajo para el ajuste de modelos de RLHF
El flujo de trabajo de ajuste de modelos de RLHF en Vertex AI incluye los siguientes pasos:
- Prepara tu conjunto de datos de preferencia humana.
- Prepara tu conjunto de datos de instrucciones.
- Sube tus conjuntos de datos al bucket de Cloud Storage. No es necesario que estén en el mismo bucket de Cloud Storage.
- Crea un trabajo de ajuste de modelos de RLHF.
Una vez que se completa el ajuste del modelo, el modelo ajustado se implementa en un extremo de Vertex AI. El nombre del extremo es el mismo que el nombre del modelo ajustado. Los modelos ajustados están disponibles para seleccionarlos en Generative AI Studio cuando desees crear un nuevo mensaje.
Modelos compatibles
Los siguientes modelos de texto admiten el ajuste mediante el aprendizaje por refuerzo con retroalimentación humana en Vertex AI:
- El modelo base de generación de texto,
text-bison@002
. Para obtener más información, consulta Modelo de generación de texto. - Los modelos
t5-small
,t5-large
,t5-xl
yt5-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.
Los siguientes modelos de texto admiten el ajuste del RLHF como un trabajo autoadministrado de Vertex AI Pipelines.
- Llama 2, disponible a través de Vertex AI Model Garden. Para obtener más información, consulta el notebook de muestra. Debido a que este método es más complejo, te recomendamos que primero pruebes RLHF en Vertex AI.
Los modelos de código no admiten el ajuste del RLHF.
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 campoauthor
se refiere al autor del mensaje y se alterna entreuser
yassistant
El campocontent
es el contenido del mensaje. Elcontent
no puede estar vacío y el primer y el últimoauthor
deben configurarse comouser
.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
ycandidate_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
o1
, que indica qué candidato es el humano preferido. Un0
indica que el ser humano eligiócandidate_0
, y un1
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 recompensas 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:
- En la sección Vertex AI de la consola de Google Cloud, ve a la página Vertex AI Studio.
- Haz clic en la pestaña Ajustar y sintetizar.
- Haz clic en Crear modelo ajustado.
- Aprendizaje por refuerzo con retroalimentación humana (RLHF)
- Configura los detalles del modelo:
- Ajustar nombre del modelo: Ingresa un nombre para el modelo ajustado.
- Modelo de 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.
- 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.
- Haga clic en Continue.
- 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.
- En Conjunto de datos del mensaje, si deseas subir el archivo del conjunto de datos, elige
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.
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.
- (Opcional) Para evaluar tu modelo ajustado, haz lo siguiente:
- Haz clic en Habilitar evaluación del modelo.
- En Conjunto de datos de evaluación, haz clic en Explorar.
- Navega al bucket de Cloud Storage que contiene tu conjunto de datos de evaluación y elige tu conjunto de datos de evaluación.
- 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.
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?
- Aprende a ejecutar un trabajo de ajuste de RLHF autoadministrado para Llama 2 con Vertex AI Pipelines.
- Obtén información sobre las prácticas recomendadas de IA responsable y los filtros de seguridad de Vertex AI.
- Obtén más información sobre cómo habilitar los registros de auditoría de acceso a los datos para tus extremos.
- Obtén información sobre cómo evaluar tu modelo ajustado.
- Para obtener más detalles sobre el ajuste de RLHF en Vertex AI, consulta la siguiente entrada de blog, Ajuste de RLHF con Vertex AI.