Entrenando modelos de lenguaje con datos sintéticos de calidad de libro de texto
Training language models with high-quality synthetic textbook data.
Una exploración del artículo de investigación de Microsoft Research “Los libros de texto son todo lo que necesitas”

Microsoft Research acaba de publicar un artículo que añade nuevo combustible a los debates en curso sobre el papel de los datos en el entrenamiento de modelos, tocando específicamente los roles de la calidad de los datos y los datos sintéticos. Si bien el enfoque del artículo está en entrenar modelos para escribir código Python, sus implicaciones van mucho más allá de la programación. Los conocimientos de este trabajo pueden servir como un valioso estudio de caso para proyectos de modelos de lenguaje en diversos contextos.
Los modelos en “Los libros de texto son todo lo que necesitas” no deben su éxito a un diseño o métodos de entrenamiento revolucionarios. De hecho, los autores afirman que “nuestra arquitectura de modelo y nuestros métodos de entrenamiento son bastante convencionales”. En cambio, la innovación radica en los datos de entrenamiento. Cito del artículo:
“Hipotetizamos que estos datos de alta calidad mejoran drásticamente la eficiencia de aprendizaje de los modelos de lenguaje para el código, ya que proporcionan ejemplos claros, autocontenidos, instructivos y equilibrados de conceptos y habilidades de programación”.
El valor de la calidad de los datos es, de alguna manera, un hecho dado: es difícil imaginar que alguien defienda el entrenamiento con datos de menor calidad cuando se dispone de una cantidad igual de datos de mejor calidad. Pero las opiniones sobre la importancia relativa de la calidad de los datos han experimentado un notable cambio en los últimos años.
En 2020, el artículo de OpenAI “Leyes de Escala para Modelos de Lenguaje Neurales” posicionó el tamaño del modelo como el factor más importante: “el entrenamiento óptimo computacionalmente eficiente implica entrenar modelos muy grandes con una cantidad relativamente modesta de datos”. Luego, en 2022, el artículo de DeepMind “Chinchilla, Entrenamiento de Modelos de Lenguaje Grandes Óptimos en Cómputo” argumentó que el tamaño de los datos era igualmente crítico: “los modelos de lenguaje grandes actuales están significativamente subentrenados”. Pero ahora, en 2023, el foco se está desplazando hacia la calidad de los datos. Este cambio se subraya por una sección en el recientemente filtrado memorando de Google titulado “No tenemos fososo”, que declaraba: “La calidad de los datos escala mejor que el tamaño de los datos”.
- Agregación de datos en Python con Pandas Analizando datos de litolo...
- 3 Tipos de Estacionalidad y Cómo Detectarlos
- ¿Reemplazará ChatGPT a los científicos de datos?
El artículo “Los libros de texto son todo lo que necesitas” analizado aquí es solo un destacado de este movimiento más amplio. Otro ejemplo destacado es LIMA: “Menos es más para la alineación”, que muestra cómo se puede utilizar un conjunto de datos pequeño pero de alta calidad para lograr resultados impresionantes en la alineación del modelo.
La utilidad de los datos sintéticos, es decir, los datos generados por los propios modelos, ha sido objeto de un debate intenso. Los intentos de entrenar modelos más pequeños con la salida de modelos más grandes, como en la creación de Alpaca y Vicuna, han sido recibidos con escepticismo. Los críticos a menudo señalan argumentos como los del artículo de Berkeley “La falsa promesa de imitar LLMs propietarios”, que afirma que “la imitación del modelo es una promesa falsa: existe una brecha sustancial de capacidades entre LMs abiertos y cerrados que, con los métodos actuales, solo se puede superar utilizando una cantidad incómoda de datos de imitación o utilizando LMs base más capaces”.
Sin embargo, “Los libros de texto son todo lo que necesitas” desafía esta perspectiva, demostrando que la salida de modelos más grandes se puede utilizar para fines más allá de la mera imitación. Sorprendentemente, el modelo pequeño del artículo incluso logra superar al modelo grande que generó los datos sintéticos con los que fue entrenado. Esta observación plantea una pregunta tentadora: ¿Se podría mejorar el rendimiento de los modelos grandes entrenándolos con su propia salida?
Los resultados
Antes de adentrarnos en los datos de entrenamiento utilizados para entrenar los modelos, echemos un vistazo a los resultados que logran. Los tres modelos del artículo son phi-1-base, phi-1 y phi-1-small. Es importante destacar que estos modelos no solo son compactos en términos de parámetros, también están entrenados con una cantidad limitada de datos. Dado esto, su rendimiento es nada menos que asombroso.

Las puntuaciones aquí se encuentran en el benchmark HumanEval de OpenAI, introducido en su artículo Evaluating Large Language Models Trained on Code. En los problemas de este benchmark, al modelo se le proporciona una firma de función y una descripción y se le pide que escriba el cuerpo de la función. A modo de ejemplo, consideremos el siguiente ejemplo extraído del artículo HumanEval, donde al modelo se le da la siguiente firma y descripción.

Para este problema, esperamos que el modelo genere algo como esto:

Sin embargo, el modelo no se evalúa en función de producir esta cadena exacta (eso requeriría que el modelo resolviera el problema de la misma manera y con los mismos nombres de variables que la solución), sino que el cuerpo que el modelo produce se evalúa en varias pruebas unitarias (en promedio, 7.7 pruebas unitarias por problema, cada prueba consiste en una elección de parámetros para la función y la salida esperada que el código generado debe coincidir). El código se considera correcto si pasa todas las pruebas unitarias. La métrica pass@1 en la tabla anterior es simplemente el porcentaje de cuerpos de función generados que pasan todas las pruebas unitarias. Las métricas pass@k más generales permiten que los modelos generen k muestras y se considera un éxito si alguna de esas muestras pasa todas las pruebas unitarias.
Los modelos en el artículo se entrenaron con datos de tres fuentes diferentes. La primera, The Stack+, es una versión deduplicada de The Stack de 35 mil millones de tokens, junto con código de StackOverflow y restringida a Python. Sin embargo, es importante tener en cuenta que phi-1 y sus variantes no se entrenaron con esta fuente. En su lugar, estos modelos se entrenaron con CodeTextbook, una selección filtrada de 6 mil millones de tokens de calidad de libro de texto de The Stack+ junto con un componente sintético de 1 mil millones de tokens, y CodeExercises, un conjunto sintético de 180 millones de tokens de ejercicios y soluciones que reflejan el estilo de problemas que se encuentra en el conjunto de datos HumanEval. Los efectos se muestran en la siguiente figura.

Aquí vemos 9 modelos con parámetros variables entrenados en subconjuntos variables de estos datos. Los modelos en verde claro en este gráfico se entrenaron solo con CodeTextbook y no con The Stack+, por lo que es evidente que CodeTextbook es una mejor fuente. El ajuste fino en CodeExercises que recibieron los modelos en verde oscuro hace una diferencia aún mayor.
Tres de los modelos en el gráfico tienen nombres:
- phi-1-base es un modelo con 1.3 mil millones de parámetros (pre)entrenado con “alrededor de 8 pases” sobre los 7 mil millones de tokens de CodeTextbook. Esto equivale a aproximadamente 50 mil millones de tokens de datos de entrenamiento y tomó 4 días en 8 A100s.
- phi-1 es el resultado del ajuste fino de phi-1-base en los 180 millones de tokens de CodeExercises. Este ajuste fino tomó 7 horas en 8 A100s.
- phi-1-small se crea utilizando un proceso similar a phi-1, pero con un diseño de modelo de 350 millones de parámetros y aparentemente alrededor de 11 pases sobre CodeTextbook. Se tarda aproximadamente 2 días en entrenar en 8 A100s.
La parte filtrada de CodeTextbook (6 mil millones de tokens)
Para esta parte de CodeTextbook, comenzaron con una copia deduplicada y restringida a Python de The Stack de 35 mil millones de tokens junto con código de StackOverflow, llamada Stack+ en el gráfico anterior. Luego filtraron hasta obtener un subconjunto de 6 mil millones de tokens de calidad de libro de texto.
Para realizar este filtrado, primero se utiliza GPT-4 para determinar el valor educativo de aproximadamente el 0.3% de todo el conjunto de datos de 35 mil millones de tokens (100 millones de tokens). La frase utilizada es “determinar su valor educativo para un estudiante cuyo objetivo es aprender conceptos básicos de programación”.
No se especifica explícitamente por qué se eligió GPT-4 en lugar de GPT-3.5 para este paso, ya que GPT-3.5 se utiliza en todas las demás etapas del proceso. Sin embargo, considerando que la tarea consiste en clasificar “solo” 100 millones de tokens, el uso de GPT-4 no es excesivamente costoso y ciertamente dará resultados más precisos.
A continuación, estas anotaciones se utilizan para entrenar otro modelo (un clasificador de bosque aleatorio) para clasificar el resto del conjunto de datos como alto o bajo valor educativo. Posteriormente, este clasificador se utiliza para filtrar el conjunto de datos original y obtener un conjunto de datos de alta calidad educativa de 6 mil millones de tokens.
La parte sintética de CodeTextbook (1 mil millones de tokens)
Aquí es donde las cosas se vuelven más interesantes, ya que los autores utilizan GPT-3.5 para generar “libros de texto” sintéticos de alta calidad en Python.
Hay ciertos antecedentes en el uso de modelos de lenguaje grandes para generar datos sintéticos utilizados para entrenar modelos más pequeños. En un artículo anterior de Microsoft Research, TinyStories: ¿Qué tan pequeños pueden ser los modelos de lenguaje y aún así hablar un inglés coherente?, el objetivo es entrenar modelos de lenguaje pequeños (de 1 a 33 millones de parámetros) para escribir historias inteligibles al nivel de los niños pequeños, y el conjunto de datos consiste enteramente en historias escritas por GPT-3.5 y GPT-4. Citando el artículo de TinyStories:
“El principal desafío en el uso de grandes modelos de lenguaje para producir datos de entrenamiento es generar un conjunto de datos que sea lo suficientemente diverso: aunque se le pida a esos modelos que produzcan historias, incluso si la temperatura de generación se establece en un valor alto, se obtendrá un conjunto de datos muy repetitivo, cuya diversidad está muy lejos de lo que se requiere para entrenar un modelo de lenguaje que tenga una comprensión comparable del lenguaje a la de los niños”.
El truco que utiliza TinyStories para diversificar los datos sintéticos es elegir tres palabras al azar (un sustantivo, un verbo y un adjetivo) y un pequeño número de “características de la historia” para cada solicitud. Por ejemplo, una de sus solicitudes es la siguiente.

Desafortunadamente, Microsoft Research no nos proporciona muchos detalles sobre su truco para generar una colección diversa de texto de calidad de libro de texto, y el proyecto no parece haber lanzado ningún código o datos para que podamos investigar. Sí mencionan que se enfocan en contenido “que fomenta el razonamiento y las habilidades algorítmicas básicas” y que establecen restricciones en los temas y en el público objetivo del libro de texto. A continuación, se muestra su ejemplo de una respuesta típica a una de sus solicitudes, citado del artículo.

Sobra decir que sería interesante conocer más detalles sobre esta etapa del proceso. ¿Cuáles son las solicitudes específicas? ¿Cómo se eligen los temas? ¿Para qué audiencia(s) se le indica a GPT-3.5 que escriba? También sería interesante inspeccionar CodeTextbook, pero los datos no han sido lanzados.
CodeExercises (180 millones de tokens)
La última parte de los datos de entrenamiento para phi-1 y phi-1-small (aunque no para phi-1-base) es un conjunto de ejercicios y soluciones que siguen el formato de los problemas de referencia de HumanEval. Una vez más, estos datos son completamente sintéticos y generados por GPT-3.5. Los autores dicen que se logró diversidad en las salidas al restringir los nombres de las funciones. Aunque el significado exacto de esto no está claro para mí, podría implicar que otro modelo genera primero una lista de nombres y firmas de funciones, y luego se le indica a GPT-3.5 que genere la descripción y el cuerpo correspondientes. Los autores proporcionan un ejemplo de una salida típica, citado a continuación.

Los autores se refieren a este conjunto de datos como pequeño porque contiene solo 180M de tokens. Sin embargo, si el ejemplo anterior es representativo, entonces CodeExercises contiene del orden de un millón de ejercicios y soluciones.
Es comprensible que se sospeche que CodeExercises simplemente se encuentra con las mismas funciones que el benchmark de HumanEval, lo que lleva a que phi-1 se ajuste en base a soluciones a los mismos ejercicios en los que se prueba. Los autores dedican considerable espacio (toda la Sección 5) a argumentar en contra de esta preocupación. En primer lugar, sostienen que hay una similitud limitada entre CodeExercises y HumanEval. En segundo lugar, argumentan que incluso cuando se eliminan los ejercicios en CodeExercises que se asemejan ligeramente a los de HumanEval (donde la semejanza se mide en términos de distancia de inserción), los modelos entrenados con los conjuntos de datos podados siguen siendo impresionantes.
Costo
El enfoque del artículo y de este análisis en profundidad del artículo ha sido la calidad de los datos. Sin embargo, es esclarecedor considerar cuánto costaría duplicar el experimento hoy, al menos para considerar los costos relativos de sus componentes individuales.
- Filtrado. El proceso de filtrado de The Stack+ implicó el uso de GPT-4 para determinar el valor educativo de 100,000 archivos, o aproximadamente 100M de tokens de entrada. Sin tener en cuenta los tokens de salida (que serían mínimos) y utilizando el precio actual de $0.03 / 1K tokens de entrada, esto costaría alrededor de $3,000.
- Síntesis. CodeTextbook y CodeExercises juntos contienen alrededor de 1280M de tokens de texto generado por GPT-3.5. Al precio actual de $0.002 / 1K tokens de salida, crear estos datos costaría un poco más de $2,500.
- Entrenamiento. El modelo phi-1 fue entrenado durante 1090 horas. Al precio actual de aproximadamente $1/hora para una A100, esto representaría alrededor de $1,000. El phi-1-small de 350M de parámetros podría ser entrenado por $400.
Aproximadamente $6,500 de recursos informáticos se utilizaron en la creación de phi-1.
Los autores especulan que el uso de GPT-4 para la síntesis sería mucho mejor: “también creemos que se podrían lograr mejoras significativas utilizando GPT-4 para generar los datos sintéticos en lugar de GPT-3.5, ya que notamos que los datos de GPT-3.5 tienen una alta tasa de error”. Pero estos costos muestran por qué no lo hicieron. A 30 veces el precio de GPT-3.5, costaría alrededor de $75,000 generar la parte sintética de CodeTextbook y CodeExercises con GPT-4.
Conclusión
Los resultados de Los libros de texto son todo lo que necesitas son muy impresionantes, especialmente dada la menor tamaño de los modelos y los datos de entrenamiento limitados que se les proporcionaron. Este artículo es una prueba más de que la calidad de los datos puede compensar la cantidad de datos y el tamaño del modelo.
La discusión sobre los datos sintéticos sin duda persistirá. El concepto es atractivo: si no tenemos datos de alta calidad disponibles fácilmente, ¿podríamos simplemente sintetizarlos? Los libros de texto son todo lo que necesitas muestra algunas posibilidades prometedoras en esta área. Aún así, no es el experimento perfecto que podríamos soñar, dado que solo alrededor de 1B de los 7B de tokens en CodeTextbook fueron creados sintéticamente. Pero vale la pena señalar que los otros 6B de tokens fueron filtrados sintéticamente.
El entrenamiento en datos completamente sintéticos ha mostrado resultados interesantes en el campo del procesamiento de imágenes. El estudio de Google Research, StableRep: Synthetic Images from Text-to-Image Models Make Strong Visual Representation Learners, toma un modelo de texto a imagen y lo entrena completamente en datos sintéticos producidos por Stable Diffusion. Los resultados que informan coinciden o superan el rendimiento de Stable Diffusion en sí mismo.
Un enfoque similar se tomó con el artículo TinyStories, que se basó únicamente en datos sintéticos para el entrenamiento. Pero los modelos que utilizó eran muy pequeños. ¿Qué sucedería si se entrenaran modelos de lenguaje más grandes de la misma manera? El potencial que esto presenta es emocionante y sin duda será el foco de numerosos estudios en el futuro.
Referencias
Chen, M., Tworek, J., Jun, H., Yuan, Q., de Oliveira Pinto, H. P., Kaplan, J., Edwards, H., Burda, Y., Joseph, N., Brockman, G., Ray, A., Puri, R., Krueger, G., Petrov, M., Khlaaf, H., Sastry, G., Mishkin, P., Chan, B., Gray, S., Ryder, N., Pavlov, M., Power, A., Kaiser, L., Bavarian, M., Winter, C., Tillet, P., Such, F. P., Cummings, D., Plappert, M., Chantzis, F., Barnes, E., Herbert-Voss, A., Guss, W. H., Nichol, A., Paino, A., Tezak, N., Tang, J., Babuschkin, I., Balaji, S., Jain, S., Saunders, W., Hesse, C., Carr, A. N., Leike, J., Achiam, J., Misra, V., Morikawa, E., Radford, A., Knight, M., Brundage, M., Murati, M., Mayer, K., Welinder, P., McGrew, B., Amodei, D., McCandlish, S., Sutskever, I., y Zaremba, W. (2021). Evaluación de modelos de lenguaje grandes entrenados en código . arXiv:2107.03374.
Eldan, R. y Li, Y. (2023). TinyStories: ¿Qué tan pequeños pueden ser los modelos de lenguaje y aún así hablar inglés coherente? arXiv:2305.07759.
Gudibande, A., Wallace, E., Snell, C., Geng, X., Liu, H., Abbeel, P., Levine, S., y Song, D. (2023). La falsa promesa de imitar LLMs propietarios . arXiv:2305.15717.
Gunasekar, S., Zhang, Y., Aneja, J., Mendes, C. C. T., Giorno, A. D., Gopi, S., Javaheripi, M., Kau mann, P., de Rosa, G., Saarikivi, O., Salim, A., Shah, S., Behl, H. S., Wang, X., Bubeck, S., Eldan, R., Kalai, A. T., Lee, Y. T., y Li, Y. (2023). Los libros de texto son todo lo que necesitas . arXiv:2306.11644.
Hoffmann, J., Borgeaud, S., Mensch, A., Buchatskaya, E., Cai, T., Rutherford, E., de Las Casas, D., Hendricks, L. A., Welbl, J., Clark, A., Hennigan, T., Noland, E., Millican, K., van den Driessche, G., Damoc, B., Guy, A., Osin- dero, S., Simonyan, K., Elsen, E., Rae, J. W., Vinyals, O., y Sifre, L. (2022). Entrenando modelos de lenguaje grandes optimizados para cómputo . arXiv:2203.15556.
Kaplan, J., McCandlish, S., Henighan, T., Brown, T. B., Chess, B., Child, R., Gray, S., Radford, A., Wu, J., y Amodei, D. (2020). Leyes de escalamiento para modelos de lenguaje neural. arXiv:2001.08361. Tian, Y., Fan, L., Isola, P., Chang, H., y Krishnan, D. (2023). StableRep: Imágenes sintéticas de modelos de texto a imagen para un aprendizaje de representación visual sólido. arXiv:2306.00984. Zhou, C., Liu, P., Xu, P., Iyer, S., Sun, J., Mao, Y., Ma, X., Efrat, A., Yu, P., Yu, L., Zhang, S., Ghosh, G., Lewis, M., Zettlemoyer, L., y Levy, O. (2023). LIMA: Menos es más para la alineación . arXiv:2305.11206.