Saltar al contenido principal

Ajuste de preferencias de OpenAI: Una guía con ejemplos

Aprende a alinear grandes modelos lingüísticos con las preferencias del usuario utilizando el ajuste de preferencias y la optimización directa de preferencias de OpenAI.
Actualizado 7 ene 2025  · 8 min de lectura

Preference fine-tuning (PFT) es una técnica que se utiliza desde hace tiempo para afinar los LLM. OpenAI la introdujo recientemente como parte de sus 12 días de despliegue de funciones.

Junto con el ajuste fino supervisado (SFT) y el ajuste por refuerzo (RFT)la PFT es otra forma de alinear grandes modelos lingüísticos con las preferencias del usuario.

En este artículo, te explicaré rápidamente el ajuste de preferencias y te mostraré cómo utilizarlo con el mínimo esfuerzo en el panel de desarrollador de OpenAI.

¿Qué es el ajuste de preferencias de OpenAI?

Mientras que el objetivo del ajuste fino supervisado estándar es conseguir que el modelo genere determinados resultados a partir de determinadas entradas, el objetivo del ajuste fino de preferencias (AFP) es dirigir el modelo para que genere las respuestas que nos gustan y evitar las que no nos gustan.

La optimización directa de preferencias (OPD) es la técnica estándar de la PFT y ha ganado popularidad como técnica de alineación fuerte por su sencillez y eficacia.

A diferencia de aprendizaje por refuerzo a partir de la retroalimentación humana (RLHF)la OPD no requiere un modelo de recompensa complejo para alinear el modelo de lenguaje grande (LLM), sino que trata el problema de alineación como una optimización "directa" de una función de pérdida. Esto hace que la OPD sea más fácil de aplicar y más eficiente desde el punto de vista computacional.

El conjunto de datos necesario para la OPD, al igual que otros métodos de alineación, incluye un par de respuestas "preferidas" y "no preferidas" para una pregunta determinada. En el caso de la PFT de OpenAI, de forma similar a otros métodos de ajuste, el conjunto de datos debe estar enformato JSONL y tener la siguiente estructura:

{
  "input": {
    "messages": [
      {
        "role": "user",
        "content": "Hello, can you tell me how cold San Francisco is today?"
      }
    ],
    "tools": [],
    "parallel_tool_calls": true
  },
  "preferred_output": [
    {
      "role": "assistant",
      "content": "Today in San Francisco, it is not quite cold as expected. Morning clouds will give away to sunshine, with a high near 68°F (20°C) and a low around 57°F (14°C)."
    }
  ],
  "non_preferred_output": [
    {
      "role": "assistant",
      "content": "It is not particularly cold in San Francisco today."
    }
  ]
}

La documentación oficial de OpenAI de OpenAI para la PFT recomienda combinar la SFT y la PFT para una mejor alineación. Las técnicas de alineación, como la PFT, se suelen utilizar después de afinar el modelo en un conjunto de datos supervisados. Combinar la SFT con la PFT se considera una norma del sector y también la defiende OpenAI.

Cómo formatear el conjunto de datos para el ajuste de preferencias

Antes de nada, tenemos que asegurarnos de que nuestro conjunto de datos está en el formato requerido para el ajuste de preferencias de OpenAI.

Hay varias formas de crear un conjunto de datos de preferencias. Un método consiste en recuperar pares de salidas LLM dadas diferentestemperaturas , top_k, o indicaciones del sistema y luego utilizar otro LLM, preferiblemente uno más capaz, para elegir una salida como "preferida" y la otra como "no preferida".

Para la demostración de este tutorial, descargaré un conjunto de datos de preferencias de Cara Abrazada y lo reestructuraré. Utilizaré argilla/ultrafeedback-binarizado-preferenciasque es un conjunto de datos de preferencias, pero sólo obtendré las 50 primeras filas.

Un ejemplo de conjunto de datos de preferencias de Cara de Abrazo.

Un ejemplo de conjunto de datos de preferencias de Cara de Abrazo.

Un script de Python bastaría para convertir la estructura del conjunto de datos a los requisitos de ajuste de OpenAI, pero puedes decidir seguir otro enfoque en función de tu aplicación.

import datasets
import copy 
import json

instance_structure = {
  "input": {
    "messages": [
      {
        "role": "user",
        "content": ""
      }
    ],
    "tools": [],
    "parallel_tool_calls": True
  },
  "preferred_output": [
    {
      "role": "assistant",
      "content": ""
    }
  ],
  "non_preferred_output": [
    {
      "role": "assistant",
      "content": ""
    }
  ]
}

ds = datasets.load_dataset("argilla/ultrafeedback-binarized-preferences", trust_remote_code=True, split="train")
ds_sample = ds.select(range(50)) #select the first 50 rows
ds_list = []
for sample in ds_sample:
  instance = copy.deepcopy(instance_structure)
  instance["input"]["messages"][0]["content"] = sample["instruction"]
  instance["preferred_output"][0]["content"] = sample["chosen_response"]
  instance["non_preferred_output"][0]["content"] = sample["rejected_response"]
  ds_list.append(instance)
  
with open("preference_dataset.jsonl", 'w') as out:
  for json_line in ds_list:
      jout = json.dumps(json_line) + '\\n'
      out.write(jout)

Asegúrate de que el formato de tu conjunto de datos es jsonl y no json. Es probable que tengas una línea vacía al final del archivo, así que asegúrate de eliminarla.

Cómo ejecutar el ajuste de preferencias de OpenAI

Con tu conjunto de datos preparado, puedes seguir estos pasos para ejecutar el ajuste de preferencias:

  1. Ve al panel de control de OpenAI.
  2. Busca la sección de ajuste y selecciona Crear para crear un nuevo trabajo de ajuste.
  3. Elige la optimización directa de preferencias como método de ajuste.
  4. Sube tus datos de entrenamiento y validación (si los tienes).

Captura de pantalla de ajuste del panel de control de OpenAI.

OpenAI te permite especificar hiperparámetros, pero también puedes dejarlos vacíos, y el sistema decidirá automáticamente. Dependiendo del tamaño de tu conjunto de datos, el entrenamiento puede llevar un tiempo.

Conclusión

La optimización directa de preferencias es una nueva y útil función de la caja de herramientas de ajuste de OpenAI que te permite controlar explícitamente el tono y el estilo de la respuesta de tu modelo y hacer que se ajuste más a las preferencias del usuario.

Al igual que con la destilación, el ajuste de refuerzo y el ajuste supervisado de OpenAI, tu principal contribución en el ajuste de preferencias sería preparar el conjunto de datos según el formato y la estructura de OpenAI, y sus herramientas se encargarán del resto:

Para saber más, te recomiendo estos recursos:


Photo of Hesam Sheikh Hassani
Author
Hesam Sheikh Hassani
LinkedIn
Twitter

Estudiante de Máster en Inteligencia Artificial y redactor técnico de IA. Comparto ideas sobre la última tecnología de IA, haciendo accesible la investigación en ML y simplificando los complejos temas de IA necesarios para mantenerte a la vanguardia.

Temas

Aprende IA con estos cursos

curso

Developing AI Systems with the OpenAI API

3 hr
4.6K
Leverage the OpenAI API to get your AI applications ready for production.
Ver detallesRight Arrow
Comienza El Curso
Ver másRight Arrow
Relacionado
An AI juggles tasks

blog

Cinco proyectos que puedes crear con modelos de IA generativa (con ejemplos)

Aprende a utilizar modelos de IA generativa para crear un editor de imágenes, un chatbot similar a ChatGPT con pocos recursos y una aplicación clasificadora de aprobación de préstamos y a automatizar interacciones PDF y un asistente de voz con GPT.
Abid Ali Awan's photo

Abid Ali Awan

10 min

tutorial

Ajuste fino de GPT-3 mediante la API OpenAI y Python

Libere todo el potencial de GPT-3 mediante el ajuste fino. Aprenda a utilizar la API de OpenAI y Python para mejorar este modelo de red neuronal avanzado para su caso de uso específico.
Zoumana Keita 's photo

Zoumana Keita

12 min

tutorial

Ajuste fino de LLaMA 2: Guía paso a paso para personalizar el modelo de lenguaje grande

Aprende a ajustar Llama-2 en Colab utilizando nuevas técnicas para superar las limitaciones de memoria y computación y hacer más accesibles los grandes modelos lingüísticos de código abierto.
Abid Ali Awan's photo

Abid Ali Awan

12 min

tutorial

Guía para principiantes de la API de OpenAI: Tutorial práctico y prácticas recomendadas

Este tutorial te presenta la API de OpenAI, sus casos de uso, un enfoque práctico para utilizar la API y todas las prácticas recomendadas que debes seguir.
Arunn Thevapalan's photo

Arunn Thevapalan

13 min

tutorial

Tutorial de la API de OpenAI Assistants

Una visión completa de la API Assistants con nuestro artículo, que ofrece una mirada en profundidad a sus características, usos en la industria, guía de configuración y las mejores prácticas para maximizar su potencial en diversas aplicaciones empresariales.
Zoumana Keita 's photo

Zoumana Keita

14 min

tutorial

Cómo ajustar GPT 3.5: Liberar todo el potencial de la IA

Explore GPT-3.5 Turbo y descubra el potencial transformador del ajuste fino. Aprenda a personalizar este modelo de lenguaje avanzado para aplicaciones especializadas, mejore su rendimiento y comprenda los costes asociados, la seguridad y las consideraciones de privacidad.
Moez Ali's photo

Moez Ali

11 min

See MoreSee More