Saltar al contenido principal
InicioTutorialesInteligencia Artificial (IA)

Destilación de modelos OpenAI: Una guía con ejemplos

Aprende a destilar LLMs con la herramienta de destilación de OpenAI. Este tutorial proporciona una guía paso a paso utilizando GPT-4o y GPT-4o-mini para generar comandos Git.
Actualizado 8 oct 2024

He probado OpenAIde OpenAI herramienta de destilación de modelos-requiere una codificación mínima y nos permite gestionar todo el proceso de destilación dentro de una única plataforma, desde la generación de conjuntos de datos hasta la el ajuste fino de los modelos y evaluar su rendimiento.

En este tutorial, te ayudaré a empezar a utilizar la herramienta de destilación de modelos de OpenAI. En primer lugar, cubriremos los aspectos básicos de la destilación de modelos y, a continuación, realizaremos un proyecto de destilación de demostración utilizando API de OpenAI.

¿Qué es la Destilación Modelo?

Imagina a un profesor experto y bien formado enseñando su proceso de pensamiento y sus conocimientos a un alumno. Esto es lo básico de cómo funciona la destilación modelo.

En esta técnica, el maestro es un modelo grande preentrenado, y el alumno es un modelo más pequeño que aprende a replicar el resultado del maestro. Esto permite al alumno realizar tareas específicas a un nivel comparable al del profesor, sólo que con menos recursos necesarios.

La destilación de modelos adopta muchas formas, cada una con sus propios métodos y objetivos. En un caso, necesitamos que el alumno sólo imite las salidas de un modelo mayor. En otro caso, queremos inculcar el enfoque de resolución de problemas del profesor en el modelo más pequeño. En última instancia, el objetivo es beneficiarse de las capacidades de un gran modelo, utilizando un modelo eficiente.

Destilación de conocimientos

Un método habitual para transferir conocimientos de un modelo "maestro" a un modelo "alumno" consiste en afinar al alumno en un conjunto de datos formado por entradas y sus correspondientes salidas generadas por el maestro.

Durante este aprendizaje supervisado el modelo del alumno aprende a reproducir las respuestas del profesor cuando se le presentan entradas similares.

Ventajas de la destilación modelo

El proceso de destilación tiene muchas ventajas:

  • Coste reducido: Los modelos más pequeños son más baratos.
  • Respuesta más rápida: La experiencia del usuario mejora gracias a los resultados más rápidos generados por los modelos pequeños.
  • Accesibilidad: El modelo puede utilizarse en entornos con recursos computacionales limitados, como plataformas periféricas o dispositivos móviles.

Para saber más sobre la destilación, puedes leer este artículo: Explicación de la destilación LLM.

Cómo implementar la destilación de modelos con la API OpenAI

En esta sección, exploraremos un ejemplo de destilación de modelos utilizando la plataforma OpenAI. Nos centraremos principalmente en generando comandos Git para la solicitud de un usuario.

En primer lugar, crearemos un conjunto de datos de la pequeña OpenAI GPT-4o mini (estudiante) y evaluaremos los resultados.

A continuación, utilizamos GPT-4o (profesor) para traducir las mismas frases y afinar el modelo del alumno en el conjunto de datos producido por el profesor.

Por último, tenemos que evaluar el modelo de alumno y valorar la mejora.

En resumen, estos son los pasos que vamos a dar:

  1. Selecciona los modelos de profesor y alumno
  2. Prepara tu conjunto de datos
  3. Generar pares de entrada/salida para el alumno
  4. Evaluar el rendimiento del alumno
  5. Generar pares de entrada/salida para el profesor
  6. Afinar al alumno en el conjunto de datos del profesor
  7. Evalúa el modelo afinado

Paso 1: Selecciona los modelos de profesor y alumno

El primer paso de la destilación de modelos es seleccionar al profesor y al alumno, lo que viene determinado por la tarea prevista y tu presupuesto computacional.

Cuando se trabaja con modelos de código abierto, hay una gran variedad de LLM con diferentes capacidades y tamaños. Con la plataforma de OpenAI, las opciones son limitadas.

Una tabla que muestra una visión general de los modelos de OpenAI, incluyendo sus nombres, descripciones y capacidades.

Para nuestro ejemplo, seleccionaremos GPT-4o mini como modelo de estudiante más pequeño y GPT-4o como modelo de profesor.

GPT-4o-mini es un modelo relativamente pequeño y un buen candidato para el papel de estudiante. El GPT-4o es relativamente más grande pero mucho más capaz y puede funcionar como un profesor eficaz para el alumno.

Existen otras opciones, y cambiar los modelos requeriría un esfuerzo mínimo en nuestro proyecto de destilación de modelos.

Paso 2: Prepara tu conjunto de datos

Tu conjunto de datos para esta tarea debe ser lo suficientemente desafiante para el modelo de alumno, pero no tanto para el profesor. Las cualidades de un buen conjunto de datos, como la diversidad, la representatividad o la precisión, siguen siendo relevantes en la destilación de modelos.

Es muy importante disponer de un conjunto de datos lo suficientemente grande como para influir en el modelo del alumno. No hay una respuesta directa a "¿Qué tamaño debe tener el conjunto de datos de destilación?", ya que depende de la complejidad de tu tarea objetivo y de los modelos que hayas seleccionado como profesor y alumno.

Según documentación de OpenAIaunque unos cientos de muestras podrían ser suficientes, un grupo más diverso de miles de muestras a veces puede conducir a mejores resultados.

Nuestro conjunto de datos en este artículo se compone de 386 solicitudes de usuarios almacenadas en un archivo JSON (también podrías almacenarlas en forma de lista Python).

{    
    "requests": [
      "Initialize a new Git repository in the current directory.",
      "Clone the repository from GitHub to my local machine.",
      "Create a new branch called 'feature-login'.",
			...
      "Show the differences between the working directory and the staging area.",
      "Stage all modified and deleted files for commit.",
      ]
}

Paso 3: Genera pares de entrada/salida para el alumno (opcional)

Actualmente, nuestro conjunto de datos consta sólo de entradas, y deberíamos generar también salidas. Los resultados del alumno no son necesarios para la destilación, pero los necesitamos para obtener una línea de base de la precisión del modelo del alumno (paso 4).

Utilizamos el código siguiente para iterar sobre el conjunto de datos de entrada y generar una salida para cada uno:

def generate_responses():
    with open(JSON_PATH, 'r') as file:
        user_messages = json.load(file)
    
    for sentence in user_messages['requests']:
        # Call the OpenAI model gpt-4o-mini and store the response
        response = client.chat.completions.create(
            model="gpt-4o-mini",
            messages=[
                {"role": "system", "content": system_prompt},
                {
                    "role": "user",
                    "content": sentence
                },
            ],
            store=True,
            metadata={
                "task": "git"
            }
        )

generate_responses()

Ten en cuenta que utilizamos store=True al llamar al modelo OpenAI. Este argumento guardará los pares de entrada/salida en nuestro panel de OpenAI, por lo que no necesitaremos almacenar las salidas mediante código.

Para identificar y filtrar posteriormente estas finalizaciones de chat, no olvides incluir metadatos al llamar a la función client.chat.completions.create. Los argumentos de estos metadatos son arbitrarios.

Los resultados generados se pueden encontrar en Finalizaciones del chat de nuestro panel OpenAI.

Captura de pantalla de la sección Finalizaciones de chat del panel de control de OpenAI, que muestra una lista de interacciones de chat anteriores.

Paso 4: Evaluar el rendimiento del alumno (opcional)

Otra herramienta de OpenAI que resulta útil para la destilación de modelos es su herramienta Evaluaciones es su herramienta Evaluaciones. Utilizamos esta herramienta para evaluar el rendimiento del modelo del alumno antes del entrenamiento como métrica de referencia. También lo utilizaremos más adelante al evaluar el modelo de alumno afinado.

Tras filtrar las finalizaciones de chat del paso anterior, haz clic en el botónEvaluar. Ahora tenemos que añadir criterios de comprobación.

Captura de pantalla de la interfaz de la herramienta Evaluaciones de OpenAI, que muestra las opciones para añadir criterios de prueba.

Existen varios métodos para evaluar los pares de entrada/salida. Ten en cuenta que nuestro conjunto de datos actual está generado automáticamente por las finalizaciones de chat de OpenAI y sólo contiene las entradas y salidas. Sin embargo, algunos de estos criterios también requieren unareferencia con la que comparar.

Esta referencia podrían ser los resultados generados por un modelo más sofisticado, como GPT-4o o o1-previsión. Como el almacenamiento automático de los chats en OpenAI no nos permite proporcionar dicha referencia, estamos limitados a utilizar los métodos Criteriamatch o Custom prompt, que sólo necesitan una entrada y una salida.

Si necesitas utilizar otros métodos, no puedes utilizar las finalizaciones de chat de OpenAI y debes crear tu archivoJSON con código. Esto no es complicado, pero no entraremos en ello en este artículo.

Una captura de pantalla de la GUI OpenAI para la configuración de criterios

Una vez realizadas las evaluaciones, recibirás los resultados en breve.

Paso 5: Generar pares de entrada/salida para el profesor

Para afinar el modelo del alumno, necesitamos un conjunto de datos de alta calidad generado por el profesor. Este paso es casi igual que el paso 3: sólo tienes que cambiar el argumento model de gpt-4o-mini, a gpt-4o.

Paso 6: Afinar al alumno

De nuevo, en las Finalizaciones del Chat, filtra por el modelo de profesor y los metadatos. A continuación, selecciona el botón Destilar. El destilador de OpenAI es esencialmente la herramienta de ajuste.

Captura de pantalla de la interfaz de la herramienta de ajuste de OpenAI, que muestra las opciones para seleccionar los modelos base y los hiperparámetros.

Para el modelo base, seleccionamos al estudiante. Hay que experimentar con los hiperparámetros y probarlos para conseguir los mejores resultados: configúralos en automático. Por último, selecciona Crear y espera a que termine el ajuste.

Paso 7: Evalúa el modelo afinado

Una vez terminado, volveremos a utilizar el código del paso 3, esta vez utilizando el modelo afinado como argumento model. El nombre del modelo ajustado se muestra como "Modelo de salida" en tu página de ajuste.

def generate_responses():
    with open(JSON_PATH, 'r') as file:
        user_messages = json.load(file)

    for sentence in user_messages['requests']:
        # Call the OpenAI model gpt-4o-mini and store the response
        response = client.chat.completions.create(
            model="ft:gpt-4o-mini-2024-07-18:personal:git:AF7QSF0m",
            messages=[
                {"role": "system", "content": system_prompt},
                {
                    "role": "user",
                    "content": sentence
                },
            ],
            store=True,
            metadata={
                "task": "git"
            }
        )

generate_responses()

Después de terminar con la generación de resultados, utiliza las evaluaciones para valorar la capacidad de tu nuevo modelo sobre las entradas.

Conclusión

La receta de destilación de OpenAI es simple pero directa. Es especialmente útil porque no tendrás que preocuparte de ajustar tú mismo los modelos ni de utilizar código para evaluar los resultados.

Los modelos de OpenAI, incluso los más pequeños, ya son bastante sofisticados. Asegúrate de experimentar con los hiperparámetros antes de ajustar el modelo, prepara instrucciones adecuadas y desafiantes tanto para el profesor como para el alumno, y compara la evaluación ajustada con la evaluación de referencia.

Antes de ponerte manos a la obra con tu propia destilación de modelos, te aconsejo que leas estos dos recursos de OpenAI: Destilación de modelos OpenAI en la API y Documento de Destilación de Modelos.

Desarrollar aplicaciones de IA

Aprende a crear aplicaciones de IA utilizando la API OpenAI.
Empieza a Hacer Upskilling Gratis

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 a crear aplicaciones de IA!

Track

Developing AI Applications

23hrs hr
Learn to create AI-powered applications with the latest AI developer tools, including the OpenAI API, Hugging Face, and LangChain.
See DetailsRight Arrow
Start Course
Ver másRight Arrow
Relacionado

blog

Explicación de la destilación del LLM: Aplicaciones, implementación y más

La destilación es una técnica de entrenamiento de LLM en la que un modelo más pequeño y eficiente (como GPT-4o mini) se entrena para imitar el comportamiento y los conocimientos de un modelo más grande y complejo (como GPT-4o).
Stanislav Karzhev's photo

Stanislav Karzhev

12 min

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

blog

¿Qué es GPT-4 y por qué es importante?

OpenAI ha anunciado el lanzamiento de su último gran modelo lingüístico, GPT-4. Este modelo es un gran modelo multimodal que puede aceptar tanto entradas de imagen como de texto y generar salidas de texto.
Abid Ali Awan's photo

Abid Ali Awan

9 min

An avian AI exits its cage

blog

12 alternativas de código abierto a GPT-4

Alternativas de código abierto a GPT-4 que pueden ofrecer un rendimiento similar y requieren menos recursos informáticos para funcionar. Estos proyectos vienen con instrucciones, fuentes de código, pesos del modelo, conjuntos de datos e IU de chatbot.
Abid Ali Awan's photo

Abid Ali Awan

9 min

tutorial

Visión GPT-4: Guía completa para principiantes

Este tutorial le presentará todo lo que necesita saber sobre GPT-4 Vision, desde cómo acceder a él hasta ejemplos prácticos del mundo real y sus limitaciones.
Arunn Thevapalan's photo

Arunn Thevapalan

12 min

tutorial

Guía introductoria para el ajuste preciso de los LLM

El ajuste preciso de los grandes modelos lingüísticos (LLM) ha revolucionado el procesamiento del lenguaje natural (PLN) y ofrece capacidades sin precedentes en tareas como la traducción lingüística, el análisis del sentimiento y la generación de textos. Este enfoque transformador aprovecha modelos preentrenados como el GPT-2 y mejora su rendimiento en dominios específicos mediante el proceso de ajuste preciso.
Josep Ferrer's photo

Josep Ferrer

12 min

See MoreSee More