Programa
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:
- Selecciona los modelos de profesor y alumno
- Prepara tu conjunto de datos
- Generar pares de entrada/salida para el alumno
- Evaluar el rendimiento del alumno
- Generar pares de entrada/salida para el profesor
- Afinar al alumno en el conjunto de datos del profesor
- 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.
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.
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.
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 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.
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
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.