El equipo original de WizardLM de Microsoft: código gran modelo WarriorCoder, rendimiento nuevo SOTA

- Título del artículo: WarriorCoder: aprender de las batallas de expertos para aumentar los modelos lingüísticos de código grande
- Enlace al documento: https://arxiv.org/pdf/2412.17395
01 Antecedentes
En los últimos años, los Large Language Models (LLM) han mostrado un rendimiento fenomenal en tareas relacionadas con el código, con la aparición de una gran variedad de macromodelos de código. Estos éxitos demuestran que el preentrenamiento en datos de código a gran escala puede mejorar significativamente las capacidades básicas de programación de los modelos. Además del preentrenamiento, algunos métodos de postentrenamiento de LLM sobre datos de instrucciones también han dado lugar a mejoras significativas en la comprensión de las instrucciones por parte de los modelos y en la calidad de las respuestas. Sin embargo, la eficacia del post-entrenamiento depende en gran medida de la disponibilidad de datos de alta calidad, pero la recopilación y anotación de datos presenta retos considerables.
Para hacer frente a los retos anteriores, algunos métodos han diseñado varios volantes de datos para generar datos de instrucciones, como Self-Instruct, Evol-Instruct, etc. Estos métodos están diseñados para construir datos de instrucciones a través de varios medios de mejora de datos. Estos métodos construyen datos de instrucción a través de varios medios de mejora de datos, y el entrenamiento en estos datos puede mejorar efectivamente la capacidad de generación de código del modelo. Sin embargo, como se muestra en la Fig. 1, estos enfoques siguen dependiendo de la ampliación de los conjuntos de datos existentes y requieren llamar a LLM privados (por ejemplo, GPT-3.5, GPT-4, etc.), lo que hace que la recopilación de datos sea costosa. Además, el número limitado de fuentes de datos y LLM utilizados para la anotación también limita la diversidad de datos y hereda el sesgo sistemático inherente a los LLM privados limitados. Figura 1
Este documento presenta WarriorCoder, un nuevo paradigma de formación para macromodelos de código en el que el modelo integra los puntos fuertes de los macromodelos individuales de expertos en código mediante el aprendizaje de enfoques adversarios expertos.. Como se muestra en la Fig. 1, se enfrentan grandes modelos individuales de expertos en codificación, en los que los atacantes desafían a sus oponentes en sus propias áreas de especialización, y los modelos objetivo aprenden de los ganadores de estos pares de batallas. A diferencia de los métodos anteriores, que en su mayoría se basan en conjuntos de datos de código abierto existentes como datos semilla que hay que sintetizar y aumentar, warriorCoder genera datos de 0 a 1 sin necesidad de datos semilla, y el método puede fusionar los puntos fuertes de múltiples macromodelos de expertos en codificación en lugar de limitarse a destilar los puntos fuertes de modelos individuales. Además, el método propuesto en este artículo elimina la dependencia de la participación humana y de los LLM privados en el proceso de recopilación de datos, y permite recopilar datos de entrenamiento diversos y de alta calidad a un coste muy bajo. Los resultados experimentales muestran que warriorCoder no sólo alcanza el SOTA actual en tareas de generación de código, sino que también logra excelentes resultados en pruebas de referencia como el razonamiento de código y el uso de bibliotecas, lo que puede denominarse warrior hexágono de código.
02 Metodología
Este artículo construye una arena para modelos de gran código. Aquí, los macromodelos expertos en código más avanzados se enfrentan entre sí, y cada modelo desafía a los demás utilizando los conocimientos que ya posee, mientras que los modelos restantes actúan como árbitros para evaluar el resultado de los enfrentamientos. A continuación, el modelo objetivo aprende de los ganadores de estos enfrentamientos, integrando gradualmente los puntos fuertes de todos los competidores. En este trabajo, consideramos a los competidores (macromodelos expertos en códigos) como un grupo, y optimizamos el modelo por la superioridad relativa de las respuestas dentro del grupo, lo que está en consonancia con la GRPO Hay similitudes y diferencias. Figura 2
2.1 Entorno competitivo
La competencia de los participantes determina el rendimiento final de WarriorCoder. En teoría, cuanto mayor sea la diversidad y la calidad de los datos de entrenamiento obtenidos de un grupo de concursantes más numeroso y fuerte, mejor será el rendimiento del modelo entrenado final. En cada ronda de la arena, sólo se selecciona un par de codificadores como competidores, mientras que los demás actúan como jueces. En este trabajo, se seleccionaron cinco grandes modelos avanzados dentro del 75B de la clasificación de BigCodeBench - Athene-V2-Chat, DeepSeek-Coder-V2-Lite-Instruct, Llama-3.3-70B-Instruct Qwen2.5-72B-Instruct, y QwQ-32B-Preview. Cabe destacar que estos cinco grandes modelos son todos de código abierto, y WarriorCoder alcanza un excelente rendimiento basándose únicamente en la confrontación de estos grandes modelos de código abierto. Por supuesto, WarriorCoder también puede aprender de potentes macromodelos privados.
2.2 Minería de instrucciones desde cero
Para un par de oponentes, A y B (donde A es el atacante y B el defensor), el primer paso en la confrontación es desafiar a B en un área en la que A destaca, lo que requiere conocer lo que A ha aprendido durante el proceso de entrenamiento. Sin embargo, casi todos los grandes modelos de código abierto actuales no publican sus datos básicos de entrenamiento, lo que dificulta enormemente el conocimiento de en qué son buenos los atacantes. Inspirado en Magpie, este artículo diseña un enfoque basado en la compleción de diálogos para extraer las capacidades que ya domina un gran modelo. Tomando Qwen2.5 como ejemplo, si queremos que genere un algoritmo de ordenación rápida, el formato completo del prompt se muestra en la Fig. 3.El prompt debe incluir contenido del sistema, contenido del usuario y tokens especiales relacionados con el formato, como " ", "", etc. Figura 3
En cambio, si sólo se introduce en el modelo la parte del prefijo (que no tiene un significado específico por sí misma, como se muestra en la Figura 4), se puede obtener el contenido del usuario utilizando la capacidad de complementación del modelo. Figura 4
De este modo, con diferentes configuraciones de los parámetros generativos (por ejemplo, diferentes valores de temperatura y valores de top-p) es posible recoger datos de instrucciones que han sido aprendidos por el modelo. A diferencia de la síntesis de datos tradicional, los datos de instrucciones recogidos en este trabajo no son sintetizados por el modelo, sino que se obtienen por muestreo directo de la distribución del modelo, lo que evita problemas como el sobreajuste de patrones y el sesgo de la distribución de salida. Sin embargo, las instrucciones pueden ser repetitivas, ambiguas, poco claras o demasiado simples. Para abordar estos problemas, desduplicamos los datos y utilizamos un modelo de referencia para evaluar su dificultad. En este trabajo, clasificamos la dificultad en cuatro grados: Excelente, Bueno, Medio y Malo. En última instancia, sólo utilizamos las instrucciones de los grados Excelente y Bueno, y empleamos el algoritmo KcenterGreedy para comprimir aún más los datos de las instrucciones.
2.3 Decisión de ganar o perder
Tanto el retador como el defensor tienen que generar respuestas basadas en los datos de las instrucciones, y un árbitro (el modelo restante) vota al ganador: Sin embargo, basarse sólo en textit {puntuaciones locales} para seleccionar a los ganadores puede introducir el problema del azar. Dado que la votación puede verse afectada por factores como la aleatoriedad o el sesgo del revisor, un modelo más débil puede recibir más votos que un modelo más fuerte bajo ciertas instrucciones, incluso si sus respuestas no son realmente mejores que las del modelo más fuerte.
Para resolver este problema, este documento considera tanto la contingencia local como la consistencia global en el proceso de toma de decisiones. Este documento introduce el concepto de puntuación global - calificación Elo. Puede reflejar de forma más exhaustiva los cambios en el rendimiento relativo del modelo, abarcando el rendimiento a lo largo del tiempo y a través de múltiples evaluaciones. Al introducir la puntuación Elo, el rendimiento local de un modelo en una sola partida y su rendimiento global a lo largo de múltiples rondas pueden considerarse simultáneamente en el proceso de evaluación, proporcionando así una medida más sólida y precisa de la capacidad global de un modelo, lo que puede ayudar a reducir el riesgo de que un modelo más débil gane debido al azar y a una votación no representativa. La puntuación final de la respuesta se pondera mediante la clasificación Elo y los votos de los jueces:
Cada respuesta se compara con las respuestas de todos los oponentes, por lo que la puntuación representa la fuerza relativa de la respuesta actual dentro del grupo.
2.4 Formación final
En este documento, el formato de datos es la instrucción, la respuesta de cada participante y la puntuación correspondiente a cada respuesta. Este formato de datos es compatible con varios métodos de postformación, como SFT, DPO, KTO, etc. En este documento, SFT se adopta, y la respuesta con la puntuación más alta en el grupo se utiliza como la salida de oro, de modo que WarriorCoder puede integrar las fortalezas de cada participante en la formación, y combinar las fortalezas de todos los participantes.
03 Experimental
3.1 Principales resultados
La tabla 1 muestra el rendimiento de WarriorCoder en la prueba de generación de código. En comparación con otros trabajos similares, WarriorCoder logra SOTA en HumanEval, HumanEval+, MBPP y MBPP+. Cabe destacar que WarriorCoder logra resultados asombrosos sin necesidad de un modelo privado de gran tamaño (por ejemplo, GPT-4, etc.) en absoluto. Cuadro 1
WarriorCoder también obtiene excelentes resultados en el benchmark de razonamiento de código y en el benchmark de uso de bibliotecas. Como se muestra en las Tablas 2 y 3, WarriorCoder obtiene resultados óptimos en la mayoría de las métricas e incluso supera a modelos más grandes como 15B y 34B. Esto también demuestra que el método propuesto en este artículo tiene una buena generalización, lo que permite al modelo obtener muchas capacidades diferentes a partir de múltiples modelos grandes de expertos en código. Cuadro 2
Cuadro 3
3.2 Análisis de datos
Este documento también analiza los datos de entrenamiento construidos y los investiga desde tres perspectivas: Dependencia, Diversidad y Dificultad.
Dependencia
Mientras que los trabajos anteriores tienden a ampliar, mejorar los datos basándose en algunos conjuntos de datos de código existentes (por ejemplo), este trabajo construye datos completamente nuevos desde cero. Como se muestra en la Fig. 5, los autores calculan el grado de solapamiento (métrica ROUGE) entre los datos de entrenamiento y los dos conjuntos de datos de código de uso común, y la gran mayoría de las instrucciones tienen puntuaciones ROUGE inferiores a 0,3 con codealpaca y codeultrafeedback, lo que sugiere que difieren significativamente en contenido de las de los conjuntos de datos existentes. Cabe destacar que ninguna de las instrucciones extraídas tiene una métrica ROUGE superior a 0,6, lo que constituye una prueba más de que estas instrucciones proceden de la distribución interna del macromodelo experto, y no de una simple copia o ampliación de los datos de entrenamiento existentes. Como resultado, estas instrucciones son más novedosas y tienen un mayor grado de independencia, lo que resulta especialmente valioso para el entrenamiento. Gráfico 5
La tabla 4 muestra la composición de los datos de entrenamiento, que cubren siete tareas de código diferentes, razón por la cual WarriorCoder es capaz de obtener buenos resultados en varios puntos de referencia. Merece la pena señalar que el razonamiento de código sólo representa 2,9%, lo que hace que WarriorCoder tenga un rendimiento asombrosamente bueno en los puntos de referencia relevantes, lo que demuestra que el método propuesto en este artículo tiene mucho potencial, y si los datos se extraen para centrarse en los puntos débiles del modelo, puede hacer que el modelo sea aún más capaz. Además, el mapa de calor de la Fig. 6 también muestra los resultados de la confrontación de los contendientes, incluso los modelos más fuertes tienen un mal rendimiento a veces, y WarriorCoder sólo aprende de la respuesta ganadora con la puntuación más alta bajo la instrucción actual. Cuadro 4
Figura 6
La figura 7 muestra la relación de dificultad de las instrucciones generadas por los distintos modelos. La mayoría de las instrucciones se califican como buenas, con puntuaciones entre 6 y 8. Las instrucciones calificadas como excelentes (puntuaciones de 9-10) representan sólo una pequeña parte del conjunto de datos, lo que indica que las tareas muy complejas o avanzadas son relativamente raras. Los autores excluyeron las instrucciones con puntuaciones inferiores a 6 del conjunto de entrenamiento porque tendían a ser demasiado simples o demasiado vagas, lo que habría sido perjudicial para la fase de entrenamiento e incluso podría haber debilitado el rendimiento y la generalización del modelo. Gráfico 7
04 Recursos relacionados
Aunque actualmente los autores no están abriendo el modelo, hemos descubierto que alguien ya ha reproducido el trabajo de los autores en la siguiente dirección:
Enlace al proyecto: https://huggingface.co/HuggingMicah/warriorcoder_reproduce
© declaración de copyright
Derechos de autor del artículo Círculo de intercambio de inteligencia artificial Todos, por favor no reproducir sin permiso.
Artículos relacionados
Sin comentarios...