Connect with us

LongWriter: Desbloqueando la generación de 10,000+ palabras desde LLMs de contexto largo

Inteligencia artificial

LongWriter: Desbloqueando la generación de 10,000+ palabras desde LLMs de contexto largo

mm
LONGWRITER: UNLEASHING 10,000+ WORD GENERATION FROM LONG CONTEXT LLMS

Los actuales modelos de lenguaje grande de contexto largo (LLMs) pueden procesar entradas de hasta 100,000 tokens, pero luchan por generar salidas que superen incluso una longitud modesta de 2,000 palabras. Experimentos controlados revelan que la longitud de generación efectiva del modelo está inherentemente limitada por los ejemplos vistos durante el ajuste fino supervisado (SFT). En otras palabras, esta limitación de salida se debe a la escasez de ejemplos de salida larga en los conjuntos de datos de SFT existentes.

Los avances recientes en LLMs de contexto largo han llevado al desarrollo de modelos con capacidades de memoria significativamente expandidas, capaces de procesar historias que exceden 100,000 tokens de longitud. Sin embargo, a pesar de su capacidad para manejar entradas extensas, los actuales LLMs de contexto largo luchan por generar salidas igualmente largas.

Para explorar esta limitación, LongWriter examina la longitud máxima de salida de los modelos de contexto largo de estado del arte con múltiples consultas que requieren respuestas de longitudes variables, como “Escribe un artículo de 10,000 palabras sobre la historia del Imperio Romano”. Los resultados muestran que todos los modelos fallan consistentemente en producir salidas que superen las 2,000 palabras de longitud. Mientras que, el análisis de los registros de interacción del usuario revela que más del 1% de las solicitudes del usuario solicitan explícitamente salidas que superen este límite, lo que destaca una necesidad apremiante en la investigación actual para superar esta limitación.

Para abordar esto, LongWriter introduce AgentWrite, una canalización basada en agentes que descompone tareas de generación ultra-larga en subtareas, lo que permite a los LLMs estándar generar salidas coherentes que superan las 20,000 palabras. Aprovechando AgentWrite, LongWriter construye LongWriter-6k, un conjunto de datos que contiene 6,000 muestras de datos de SFT con longitudes de salida que van desde 2k hasta 32k palabras. Al incorporar este conjunto de datos en el entrenamiento del modelo, LongWriter logra escalar la longitud de salida de los modelos existentes a más de 10,000 palabras mientras mantiene la calidad de la salida.

LongWriter también desarrolla LongBench-Write, una benchmark integral para evaluar las capacidades de generación ultra-larga. El modelo de 9B de parámetros, mejorado aún más a través de DPO, logra un rendimiento de estado del arte en esta benchmark, superando incluso a modelos propietarios más grandes.

En este artículo, discutiremos el marco de LongWriter, exploraremos su arquitectura y compararemos su rendimiento con los LLMs de contexto largo de estado del arte. Comencemos.

LongWriter: Marco de generación de 10,000+ palabras

Los avances recientes en modelos de lenguaje grande de contexto largo (LLMs) han llevado a la creación de modelos con capacidades de memoria significativamente aumentadas, capaces de procesar historias que exceden 100,000 tokens. A pesar de esta capacidad para manejar entradas extensas, los actuales LLMs de contexto largo luchan por generar salidas de longitud comparable. Para investigar esta limitación, LongWriter examina la longitud máxima de salida de los modelos de contexto largo de estado del arte a través de varias consultas que requieren longitudes de respuesta diferentes, como “Escribe un artículo de 10,000 palabras sobre la historia del Imperio Romano”. Basado en los hallazgos, LongWriter observa que todos los modelos fallan consistentemente en generar salidas más largas que 2,000 palabras. Además, un análisis de los registros de interacción del usuario indica que más del 1% de las solicitudes del usuario solicitan explícitamente salidas que superen este límite, lo que destaca una necesidad apremiante en la investigación actual para abordar este problema.

El estudio de LongWriter revela una idea clave: la restricción en la longitud de salida está principalmente arraigada en las características de los conjuntos de datos de ajuste fino supervisado (SFT). Específicamente, LongWriter encuentra que la longitud de generación máxima de un modelo está efectivamente limitada por el límite superior de longitudes de salida presentes en su conjunto de datos de SFT, a pesar de su exposición a secuencias mucho más largas durante la fase de preentrenamiento. Este hallazgo explica el límite de generación de 2,000 palabras ubicuo en los modelos actuales, ya que los conjuntos de datos de SFT existentes rara vez contienen ejemplos que superen esta longitud. Además, como muchos conjuntos de datos se destilan de LLMs de estado del arte, también heredan la limitación de longitud de salida de sus modelos de origen.

Para abordar esta limitación, LongWriter introduce AgentWrite, una canalización basada en agentes diseñada para aprovechar los LLMs estándar para construir automáticamente salidas extendidas y coherentes. AgentWrite opera en dos etapas: Primero, crea un plan de escritura detallado que describe la estructura y el recuento de palabras objetivo para cada párrafo en función de la entrada del usuario. Luego, siguiendo este plan, solicita al modelo que genere contenido para cada párrafo de manera secuencial. Los experimentos de LongWriter validan que AgentWrite puede producir salidas de alta calidad y coherentes de hasta 20,000 palabras.

Basándose en la canalización AgentWrite, LongWriter aprovecha GPT-4o para generar 6,000 datos de SFT de salida larga, denominados LongWriter-6k, y agrega estos datos al entrenamiento de los modelos existentes. Notablemente, LongWriter-6k logra desbloquear la capacidad del modelo para generar salidas bien estructuradas que superan las 10,000 palabras de longitud. Para evaluar rigurosamente la efectividad de este enfoque, LongWriter desarrolla la benchmark LongBench-Write, que contiene un conjunto diverso de instrucciones de escritura del usuario, con especificaciones de longitud de salida que van desde 0-500 palabras, 500-2,000 palabras, 2,000-4,000 palabras y más allá de 4,000 palabras. La evaluación en LongBench-Write muestra que el modelo de 9B de LongWriter logra un rendimiento de estado del arte, incluso en comparación con modelos propietarios más grandes. LongWriter también construye datos de preferencia y utiliza DPO para ayudar al modelo a seguir mejor las instrucciones de escritura larga y generar contenido escrito de mayor calidad, lo que también se ha demostrado ser efectivo a través de experimentos.

Para resumir, el trabajo de LongWriter hace las siguientes contribuciones novedosas:

  • Análisis de los límites de longitud de generación: LongWriter identifica el factor principal que limita la longitud de salida de los LLMs de contexto largo actuales, que es la restricción en la longitud de salida en los datos de SFT.
  • AgentWrite: Para superar esta limitación, LongWriter propone AgentWrite, que utiliza un enfoque de divide y vencerás con LLMs estándar para construir automáticamente datos de SFT con salidas ultra-largas. Utilizando este método, LongWriter construye el conjunto de datos LongWriter-6k.
  • Escalado de la ventana de salida de los LLMs actuales: LongWriter incorpora el conjunto de datos LongWriter-6k en su conjunto de datos de SFT, escalando con éxito la ventana de salida de los modelos existentes a 10,000+ palabras sin comprometer la calidad de la salida. LongWriter muestra que DPO mejora aún más la capacidad del modelo para escribir textos largos.

AgentWrite: Construcción automática de datos

Para aprovechar los LLMs estándar para generar automáticamente datos de SFT con salidas más largas, LongWriter diseña AgentWrite, una canalización basada en agentes de estilo divide y vencerás. AgentWrite primero descompone tareas de escritura larga en múltiples subtareas, con cada subtarea que requiere que el modelo escriba solo un párrafo. El modelo entonces ejecuta estas subtareas secuencialmente, y LongWriter concatena las salidas de las subtareas para obtener la salida final larga. Este enfoque de descomposición de una tarea compleja en múltiples subtareas utilizando agentes LLM ya se ha aplicado en varios campos, como la resolución de problemas, el desarrollo de software y la evaluación de modelos. El trabajo de LongWriter es el primero en explorar la integración de la planificación para permitir que los modelos completen tareas de escritura larga y compleja. Cada paso de AgentWrite se introduce con detalle a continuación.

Paso I: Plan

Inspirado en el proceso de pensamiento de los escritores humanos, que generalmente comienzan haciendo un plan general para tareas de escritura larga, LongWriter utiliza las capacidades de planificación de los LLMs para producir dicho esquema de escritura dado una instrucción de escritura. Este plan incluye el contenido principal y los requisitos de recuento de palabras para cada párrafo. La solicitud utilizada por LongWriter es la siguiente:

“Necesito que me ayudes a descomponer la siguiente instrucción de escritura larga en múltiples subtareas. Cada subtarea guiará la escritura de un párrafo en el ensayo y debería incluir los puntos principales y los requisitos de recuento de palabras para ese párrafo. La instrucción de escritura es la siguiente: {Instrucción del usuario}. Por favor, descompóngala en el siguiente formato, con cada subtarea en una línea:

Párrafo 1 – Punto principal: [Describe el punto principal del párrafo, con detalle] – Recuento de palabras: [Requisito de recuento de palabras, por ejemplo, 400 palabras]Párrafo 2 – Punto principal: [Describe el punto principal del párrafo, con detalle] – Recuento de palabras: [Requisito de recuento de palabras, por ejemplo, 1000 palabras].

Asegúrate de que cada subtarea sea clara y específica, y que todas las subtareas cubran todo el contenido de la instrucción de escritura. No divides las subtareas demasiado finamente; cada subtarea del párrafo debería tener un mínimo de 200 palabras y un máximo de 1000 palabras. No salgas de la subtarea.”

Paso II: Escribe

Después de obtener el plan de escritura del Paso I, LongWriter llama al LLM secuencialmente para completar cada subtarea, generando el contenido de escritura sección por sección. Para asegurar la coherencia de la salida, cuando LongWriter llama al modelo para generar la sección n-ésima, las secciones n-1 previamente generadas también se ingresan, lo que permite al modelo continuar escribiendo la siguiente sección basándose en la historia de escritura existente. Aunque este modo secuencial impide las llamadas paralelas al modelo para completar múltiples subtareas simultáneamente, y la longitud de entrada se vuelve más larga, LongWriter muestra en la validación que la coherencia y la calidad generales de la escritura obtenida de esta manera son muy superiores a la salida generada en paralelo. La solicitud en uso por LongWriter es:

“Eres un excelente asistente de escritura. Te daré una instrucción de escritura original y mis pasos de escritura planificados. También te proporcionaré el texto que ya he escrito. Por favor, ayúdame a continuar escribiendo el próximo párrafo basado en la instrucción de escritura, los pasos de escritura y el texto ya escrito.

Instrucción de escritura:{Instrucción del usuario}Pasos de escritura:{El plan de escritura generado en el Paso I}Texto ya escrito:{Párrafos (n-1) generados previamente}

Por favor, integra la instrucción de escritura original, los pasos de escritura y el texto ya escrito, y ahora continúa escribiendo {El plan para el párrafo n-ésimo, es decir, la n-ésima línea en el plan de escritura}.”

Validación

LongWriter prueba la longitud de generación y la calidad del método AgentWrite propuesto en dos conjuntos de datos de escritura larga. El primero, LongWrite-Ruler, se utiliza para medir exactamente qué tan larga es la salida que el método puede proporcionar. El segundo, LongBench-Write, se utiliza principalmente para evaluar cómo se alinean los contenidos generados por el modelo con las instrucciones del usuario en términos de longitud y calidad de escritura.

LongBench-Write: Para evaluar el rendimiento del modelo en una gama más diversa de instrucciones de escritura larga, LongWriter recopila 120 instrucciones de escritura variadas del usuario, con 60 en chino y 60 en inglés. Para evaluar mejor si la longitud de la salida del modelo cumple con los requisitos del usuario, LongWriter asegura que todas estas instrucciones incluyen requisitos de recuento de palabras explícitos. Estas instrucciones se dividen en cuatro subconjuntos según los requisitos de recuento de palabras: 0-500 palabras, 500-2,000 palabras, 2,000-4,000 palabras y más de 4,000 palabras. Además, las instrucciones se categorizan en siete tipos según el tipo de salida: Literatura y Escritura Creativa, Académica y Monografía, Ciencia Popular, Escritura Funcional, Informe de Noticias, Foro de la Comunidad y Educación y Capacitación.

Durante la evaluación, LongWriter adopta dos métricas: una para puntuar la longitud de la salida y otra para puntuar la calidad de la salida. La longitud de la salida del modelo se puntuación según lo cerca que esté de los requisitos especificados en las instrucciones. Para la calidad de la salida, LongWriter utiliza el enfoque LLM como juez, seleccionando el modelo GPT-4o de estado del arte para puntuar la salida en seis dimensiones: Relevancia, Precisión, Coherencia, Claridad, Amplitud y Profundidad, y Experiencia de Lectura. La puntuación final se calcula promediando la puntuación de longitud y la puntuación de calidad.

Resultados de la validación: LongWriter presenta la medición de la longitud de la salida en LongWrite-Ruler y encuentra que AgentWrite extiende con éxito la longitud de la salida de GPT-4o desde un máximo de 2k palabras hasta aproximadamente 20k palabras. LongWriter también evalúa la calidad de la salida y el cumplimiento del requisito de longitud de la salida en LongBench-Write, mostrando que GPT-4o puede completar con éxito tareas con salidas de menos de 2,000 palabras de longitud cuando se evalúa el rendimiento de AgentWrite.

Ajuste fino supervisado

LongWriter realiza entrenamiento basado en dos de los modelos de código abierto más recientes, a saber, GLM-4-9B y Llama-3.1-8B. Ambos son modelos base y admiten una ventana de contexto de hasta 128k tokens, lo que los hace naturalmente adecuados para el entrenamiento en salidas largas. Para hacer que el entrenamiento sea más eficiente, LongWriter adopta el entrenamiento de empaquetado con ponderación de pérdida. El entrenamiento en los dos modelos da como resultado dos modelos: LongWriter-9B (abreviado para GLM-4-9B-LongWriter) y LongWriter-8B (abreviado para Llama-3.1-8B-LongWriter).

Al mismo tiempo, LongWriter nota que si la pérdida se promedia por secuencia, es decir, tomando el promedio de la pérdida promedio de cada secuencia dentro de un lote, la contribución de cada token de destino a la pérdida en datos de salida larga sería significativamente menor que los de salidas más cortas. En los experimentos de LongWriter, también se encuentra que esto conduce a un rendimiento subóptimo del modelo en tareas con salidas largas. Por lo tanto, LongWriter elige una estrategia de ponderación de pérdida que promedia la pérdida por token, donde la pérdida se calcula como el promedio de las pérdidas en todos los tokens de destino dentro de ese lote.

Todos los modelos se entrenan utilizando un nodo con 8xH800 80G GPUs y DeepSpeed+ZeRO3+CPU offloading. LongWriter utiliza un tamaño de lote de 8, una tasa de aprendizaje de 1e-5 y una longitud de empaquetado de 32k. Los modelos se entrenan durante 4 épocas, lo que toma aproximadamente 2,500-3,000 pasos.

Alineación (DPO)

Para mejorar aún más la calidad de la salida del modelo y aumentar su capacidad para seguir los requisitos de longitud en las instrucciones, LongWriter realiza una optimización de preferencia directa (DPO) en el modelo LongWriter-9B ajustado finamente supervisado. Los datos DPO provienen de los datos de chat DPO de GLM-4 (aproximadamente 50k entradas). Además, LongWriter construye 4k pares de datos dirigidos específicamente a instrucciones de escritura larga. Para cada instrucción de escritura, LongWriter muestrea 4 salidas de LongWriter-9B y puntuación de estas salidas siguiendo un método específico. Una puntuación de seguimiento de longitud también se combina como se calcula. La salida con la puntuación más alta se selecciona como la muestra positiva, y una de las salidas restantes se elige aleatoriamente como la muestra negativa.

El modelo resultante, LongWriter-9B-DPO, se entrena durante 250 pasos en la mezcla de datos anterior. LongWriter sigue una receta específica para el entrenamiento DPO.

LongWriter: Experimentos y resultados

LongWriter evalúa 4 modelos propietarios y 5 modelos de código abierto en LongBench-Write, junto con los modelos LongWriter entrenados. Hasta donde llega el conocimiento de LongWriter, Suri-IORPO es el único modelo previo que también se alinea para la generación de texto largo. Se entrena en función del modelo Mistral-7B-Instruct-v0.2 utilizando LoRA. Consistente con la configuración de evaluación en LongWrite-Ruler, LongWriter establece la temperatura de salida en 0,5 y configura el parámetro de tokens máximos de generación del modelo al máximo permitido por su llamada API. Para los modelos de código abierto, se establece en 32,768.

La mayoría de los modelos anteriores no pueden cumplir con el requisito de longitud de más de 2,000 palabras, mientras que los modelos LongWriter proporcionan consistentemente respuestas más largas y ricas a dichas solicitudes.

Al observar la puntuación de la longitud de la salida SlS_lSl​ para las solicitudes en cada rango de longitud requerida, LongWriter encuentra que los modelos anteriores generalmente tienen un rendimiento deficiente (puntuación por debajo de 70) en las solicitudes en el rango [2k, 4k), con solo Claude 3.5 Sonnet logrando una puntuación decente. Para las solicitudes en el rango [4k, 20k), casi todos los modelos anteriores son completamente incapaces de alcanzar la longitud de salida objetivo, incluso puntuando 0 (lo que significa que todas las longitudes de salida son menos de un tercio de la longitud requerida). Al agregar datos de entrenamiento de LongWriter-6k, el modelo entrenado de LongWriter puede alcanzar efectivamente la longitud de salida requerida mientras mantiene una buena calidad, como se sugiere por las puntuaciones en el rango [2k, 20k) y los gráficos de dispersión.

DPO mejora efectivamente la calidad de la salida del modelo y su capacidad para seguir los requisitos de longitud en la generación larga.

Al comparar las puntuaciones de LongWriter-9B y LongWriter9B-DPO, se encuentra que DPO mejora significativamente tanto las puntuaciones Sl (+4%) como Sq (+3%), y la mejora es consistente en todos los rangos. Esto muestra que en el escenario de generación larga, DPO aún ayuda a mejorar la calidad de la salida del modelo y puede alinear mejor la longitud de la salida del modelo con la longitud solicitada. La última conclusión también se ha observado recientemente en Yuan et al. (2024) en generaciones más cortas. También anotamos manualmente victorias y derrotas emparejadas para GPT-4o y tres modelos LongWriter en sus salidas en LongBench-Write y visualizamos los resultados en la Figura 9. Podemos ver que los humanos prefieren el modelo entrenado con DPO sobre LongWriter-9B en el 58% de los casos. Además, a pesar de tener menos parámetros, LongWriter-9B-DPO logra un empate con GPT-4o.

El límite de longitud de salida de los modelos LongWriter se extiende a entre 10k y 20k palabras, mientras que se requiere más datos con salidas largas para admitir salidas aún más largas.

Siguiendo la prueba LongWrite-Ruler, también presentamos los resultados de la prueba LongWrite-Ruler de los modelos LongWriter. Los resultados sugieren que sus longitudes de generación máximas están entre 10k-20k palabras. La falta de datos de SFT con salidas más largas es probablemente la razón principal que impide que el modelo logre longitudes de salida aún más largas.

 

Pensamientos finales

En este trabajo, hemos hablado sobre LongWriter, una canalización basada en agentes que descompone tareas de generación ultra-larga en subtareas, identifica un límite de generación de 2,000 palabras para los LLMs actuales y propone aumentar su ventana de salida agregando datos de salida larga durante la alineación. Para construir automáticamente datos de salida larga, LongWriter desarrolla AgentWrite, una canalización basada en agentes que utiliza LLMs estándar para crear salidas extendidas y coherentes. LongWriter logra escalar con éxito la ventana de salida de los LLMs actuales a más de 10,000 palabras con los datos construidos LongWriter-6k. Estudios de ablation extensivos en los datos de entrenamiento demuestran la efectividad de este enfoque. Para el trabajo futuro, LongWriter sugiere las siguientes tres direcciones: 1. Expandir el marco de AgentWrite para construir datos con salidas más largas para extender aún más la ventana de salida de los LLMs. 2. Refinar el marco de AgentWrite para lograr datos de salida larga de mayor calidad. 3. Las salidas del modelo más largas plantean desafíos para la eficiencia de inferencia. Se han propuesto varios métodos para mejorar la eficiencia de inferencia. Vale la pena investigar cómo estos métodos pueden garantizar una mayor eficiencia del modelo sin comprometer la calidad de la generación.

Un ingeniero por profesión, un escritor por corazón. Kunal es un escritor técnico con un profundo amor y comprensión de la IA y el ML, dedicado a simplificar conceptos complejos en estos campos a través de su documentación atractiva e informativa.