Tech

LongWriter: Liberando a geração de mais de 10.000 palavras a partir de LLMs de contexto longo

Os atuais modelos de linguagem grande (LLMs) de contexto longo podem processar entradas de até 100.000 tokens, mas eles lutam para gerar saídas que excedam até mesmo um comprimento modesto de 2.000 palavras. Experimentos controlados revelam que o comprimento efetivo de geração do modelo é inerentemente limitado pelos exemplos vistos durante o ajuste fino supervisionado (SFT). Em outras palavras, essa limitação de saída decorre da escassez de exemplos de saída longa em conjuntos de dados SFT existentes.

Avanços recentes em LLMs de contexto longo levaram ao desenvolvimento de modelos com capacidades de memória significativamente expandidas, capazes de processar histórico excedendo 100.000 tokens em comprimento. No entanto, apesar de sua capacidade de lidar com entradas extensas, os LLMs de contexto longo atuais lutam para gerar saídas igualmente longas.

Para explorar essa limitação, o LongWriter sonda o comprimento máximo de saída de modelos de contexto longo de última geração com várias consultas que exigem respostas de comprimentos variados, como “Escreva um artigo de 10.000 palavras sobre a história do Império Romano”. Os resultados mostram que todos os modelos falham consistentemente em produzir saídas com mais de 2.000 palavras de comprimento. Enquanto isso, a análise dos logs de interação do usuário revela que mais de 1% dos prompts do usuário solicitam explicitamente saídas que excedem esse limite, destacando uma necessidade urgente na pesquisa atual para superar essa limitação.

Para resolver isso, o LongWriter apresenta o AgentWrite, um pipeline baseado em agente que decompõe tarefas de geração ultralongas em subtarefas, permitindo que LLMs prontos para uso gerem saídas coerentes que excedem 20.000 palavras. Aproveitando o AgentWrite, o LongWriter constrói o LongWriter-6k, um conjunto de dados contendo 6.000 amostras de dados SFT com comprimentos de saída variando de 2k a 32k palavras. Ao incorporar esse conjunto de dados no treinamento do modelo, o LongWriter dimensiona com sucesso o comprimento de saída dos modelos existentes para mais de 10.000 palavras, mantendo a qualidade da saída.

O LongWriter também desenvolve o LongBench-Write, um benchmark abrangente para avaliar capacidades de geração ultralongas. O modelo de parâmetro 9B, melhorado ainda mais por meio do DPO, atinge desempenho de ponta neste benchmark, superando até mesmo modelos proprietários muito maiores.

Neste artigo, discutiremos o framework LongWriter, exploraremos sua arquitetura e compararemos seu desempenho com modelos de linguagem grande de contexto longo de última geração. Vamos começar.

Avanços recentes em modelos de linguagem de contexto longo (LLMs) levaram à criação de modelos com capacidades de memória significativamente maiores, capazes de processar históricos que excedem 100.000 tokens. Apesar dessa capacidade de lidar com entradas extensas, os LLMs de contexto longo atuais têm dificuldade para gerar saídas de comprimento comparável. Para investigar essa limitação, o LongWriter examina o comprimento máximo de saída de modelos de contexto longo de última geração por meio de várias consultas que exigem diferentes comprimentos de resposta, como “Escreva um artigo de 10.000 palavras sobre a história do Império Romano”. Com base nas descobertas, o LongWriter observa que todos os modelos falham consistentemente em gerar saídas com mais de 2.000 palavras. Além disso, uma análise dos logs de interação do usuário indica que mais de 1% dos prompts do usuário solicitam especificamente saídas além desse limite, destacando uma necessidade urgente na pesquisa atual para abordar esse problema.

O estudo da LongWriter revela um perception importante: a restrição no comprimento da saída está enraizada principalmente nas características dos conjuntos de dados Supervised Positive-Tuning (SFT). Especificamente, a LongWriter descobre que o comprimento máximo de geração de um modelo é efetivamente limitado pelo limite superior de comprimentos de saída presentes em seu conjunto de dados SFT, apesar de sua exposição a sequências muito mais longas durante a fase de pré-treinamento. Essa descoberta explica o limite de geração onipresente de 2.000 palavras nos modelos atuais, já que os conjuntos de dados SFT existentes raramente contêm exemplos que excedem esse comprimento. Além disso, como muitos conjuntos de dados são destilados de LLMs de última geração, eles também herdam a limitação do comprimento de saída de seus modelos de origem.

Para lidar com essa limitação, o LongWriter apresenta o AgentWrite, um novo pipeline baseado em agentes projetado para alavancar LLMs prontos para uso para construir automaticamente saídas estendidas e coerentes. O AgentWrite opera em dois estágios: primeiro, ele cria um plano de escrita detalhado descrevendo a estrutura e a contagem de palavras-alvo para cada parágrafo com base na entrada do usuário. Então, seguindo esse plano, ele solicita que o modelo gere conteúdo para cada parágrafo de forma sequencial. Os experimentos do LongWriter validam que o AgentWrite pode produzir saídas coerentes e de alta qualidade de até 20.000 palavras.

Com base no pipeline AgentWrite, o LongWriter aproveita o GPT-4o para gerar 6.000 dados SFT de saída longa, chamados LongWriter-6k, e adiciona esses dados para treinar modelos existentes. Notavelmente, o LongWriter-6k desbloqueia com sucesso a capacidade do modelo de gerar saídas bem estruturadas que excedem 10.000 palavras de comprimento. Para avaliar rigorosamente a eficácia dessa abordagem, o LongWriter desenvolve o benchmark LongBench-Write, que contém um conjunto diversificado de instruções de escrita do usuário, com especificações de comprimento de saída variando de 0 a 500 palavras, 500 a 2.000 palavras, 2.000 a 4.000 palavras e além de 4.000 palavras. A avaliação no LongBench-Write mostra que o modelo de tamanho 9B do LongWriter atinge desempenho de última geração, mesmo em comparação com modelos proprietários maiores. O LongWriter constrói ainda mais dados de preferência e usa o DPO para ajudar o modelo a seguir melhor instruções de escrita longa e gerar conteúdo escrito de maior qualidade, o que também se mostrou eficaz por meio de experimentos.

Para resumir, o trabalho de LongWriter faz as seguintes contribuições inovadoras:

  • Análise dos limites de duração da geração: LongWriter identifica o principal fator que limita o comprimento de saída dos LLMs de contexto longo atuais, que é a restrição no comprimento de saída nos dados SFT.
  • AgenteWrite: Para superar essa limitação, o LongWriter propõe o AgentWrite, que usa uma abordagem de dividir e conquistar com LLMs prontos para uso para construir automaticamente dados SFT com saídas ultralongas. Usando esse método, o LongWriter constrói o conjunto de dados LongWriter-6k.
  • Dimensionamento do tamanho da janela de saída dos LLMs atuais: O LongWriter incorpora o conjunto de dados LongWriter-6k em seus dados SFT, escalando com sucesso o tamanho da janela de saída de modelos existentes para mais de 10.000 palavras sem comprometer a qualidade da saída. O LongWriter mostra que o DPO aprimora ainda mais os recursos de escrita de texto longo do modelo.

AgentWrite: Construção Automática de Dados

Para utilizar LLMs prontos para uso para gerar automaticamente dados SFT com saídas mais longas, o LongWriter projeta o AgentWrite, um pipeline de agente no estilo dividir e conquistar. O AgentWrite primeiro divide tarefas de escrita longas em várias subtarefas, com cada subtarefa exigindo que o modelo escreva apenas um parágrafo. O modelo então executa essas subtarefas sequencialmente, e o LongWriter concatena as saídas da subtarefa para obter a saída longa last. Essa abordagem de dividir uma tarefa complexa em várias subtarefas usando agentes LLM já foi aplicada em vários campos, como resolução de problemas, desenvolvimento de software program e avaliação de modelos. O trabalho do LongWriter é o primeiro a explorar a integração do planejamento para permitir que os modelos concluam tarefas complexas de escrita de formato longo. Cada etapa do AgentWrite é apresentada em detalhes abaixo.

2

Etapa I: Planejar

Inspirado pelo processo de pensamento de escritores humanos, que normalmente começam fazendo um plano geral para tarefas longas de escrita, o LongWriter utiliza os recursos de planejamento de LLMs para produzir tal esboço de escrita, dada uma instrução de escrita. Este plano inclui o conteúdo principal e os requisitos de contagem de palavras para cada parágrafo. O immediate usado pelo LongWriter é o seguinte:

“Preciso que você me ajude a dividir as seguintes instruções de escrita de formato longo em várias subtarefas. Cada subtarefa orientará a escrita de um parágrafo na redação e deve incluir os pontos principais e os requisitos de contagem de palavras para esse parágrafo. As instruções de escrita são as seguintes: {Instrução do usuário}. Divida-as no seguinte formato, com cada subtarefa ocupando uma linha:

Parágrafo 1 – Ponto principal: (Descreva o ponto principal do parágrafo, em detalhes) – Contagem de palavras: (Requisito de contagem de palavras, por exemplo, 400 palavras)
Parágrafo 2 – Ponto principal: (Descreva o ponto principal do parágrafo, em detalhes) – Contagem de palavras: (Requisito de contagem de palavras, por exemplo, 1000 palavras).

Certifique-se de que cada subtarefa seja clara e específica, e que todas as subtarefas cubram todo o conteúdo da instrução de escrita. Não divida as subtarefas muito finamente; o parágrafo de cada subtarefa deve ter no mínimo 200 palavras e no máximo 1000 palavras. Não produza nenhum outro conteúdo.”

Etapa II: Escreva

Após obter o plano de escrita da Etapa I, o LongWriter chama o LLM serialmente para concluir cada subtarefa, gerando o conteúdo de escrita seção por seção. Para garantir a coerência da saída, quando o LongWriter chama o modelo para gerar a n-ésima seção, as n−1 seções geradas anteriormente também são inseridas, permitindo que o modelo proceed escrevendo a próxima seção com base no histórico de escrita existente. Embora essa maneira serial impeça chamadas paralelas ao modelo para concluir várias subtarefas simultaneamente, e o comprimento da entrada se torne maior, o LongWriter mostra na validação que a coerência geral e a qualidade da escrita obtida dessa maneira são muito superiores à saída gerada em paralelo. O immediate em uso pelo LongWriter é:

“Você é um excelente assistente de escrita. Vou lhe dar uma instrução de escrita unique e meus passos de escrita planejados. Também lhe fornecerei o texto que já escrevi. Por favor, ajude-me a continuar escrevendo o próximo parágrafo com base nas instruções de escrita, passos de escrita e no texto já escrito.

Instruções de escrita:
{Instruções do usuário}
Etapas de escrita:
{O plano de escrita gerado na Etapa I}
Texto já escrito:
{Parágrafos gerados anteriormente (n-1)}

Por favor, integre as instruções de escrita originais, as etapas de escrita e o texto já escrito, e agora proceed escrevendo {O plano para o n-ésimo parágrafo, ou seja, a n-ésima linha no plano de escrita}.”

Validação

O LongWriter testa o comprimento e a qualidade da geração do método AgentWrite proposto em dois conjuntos de dados de escrita de formato longo. O primeiro, LongWrite-Ruler, é usado para medir exatamente o tamanho de uma saída que o método pode fornecer. O segundo, LongBench-Write, é usado principalmente para avaliar o quão bem o conteúdo gerado pelo modelo se alinha com as instruções do usuário em termos de comprimento e qualidade de escrita.

LongBench-Escrever: Para avaliar o desempenho do modelo em uma gama mais diversa de instruções de escrita de formato longo, o LongWriter coleta 120 prompts de escrita de usuários variados, com 60 em chinês e 60 em inglês. Para avaliar melhor se o comprimento de saída do modelo atende aos requisitos do usuário, o LongWriter garante que todas essas instruções incluam requisitos explícitos de contagem de palavras. Essas instruções são divididas em quatro subconjuntos com base nos requisitos de contagem de palavras: 0-500 palavras, 500-2.000 palavras, 2.000-4.000 palavras e mais de 4.000 palavras. Além disso, as instruções são categorizadas em sete tipos com base no tipo de saída: Literatura e Escrita Criativa, Acadêmico e Monografia, Ciência Standard, Escrita Funcional, Reportagem de Notícias, Fórum Comunitário e Educação e Treinamento.

Durante a avaliação, o LongWriter adota duas métricas: uma para pontuar o comprimento da saída e outra para pontuar a qualidade da saída. O comprimento da saída do modelo é pontuado com base em quão próximo ele está dos requisitos especificados nas instruções. Para a qualidade da saída, o LongWriter usa a abordagem LLM-como-juiz, selecionando o modelo GPT-4o de última geração para pontuar a saída em seis dimensões: Relevância, Precisão, Coerência, Clareza, Amplitude e Profundidade e Experiência de Leitura. A pontuação last é calculada pela média da pontuação do comprimento e da pontuação da qualidade.

Resultados da validação: O LongWriter apresenta a medição do comprimento de saída no LongWrite-Ruler e descobre que o AgentWrite estende com sucesso o comprimento de saída do GPT-4o de um máximo de 2k palavras para aproximadamente 20k palavras. O LongWriter também avalia a qualidade da saída e a aderência ao comprimento de saída necessário no LongBench-Write, mostrando que o GPT-4o pode concluir com sucesso tarefas com saídas com menos de 2.000 palavras de comprimento ao avaliar o desempenho do AgentWrite.

3

Ajuste fino supervisionado

O LongWriter conduz o treinamento com base em dois dos modelos de código aberto mais recentes, a saber, GLM-4-9B e Llama-3.1-8B. Ambos são modelos base e suportam uma janela de contexto de até 128k tokens, tornando-os naturalmente adequados para treinamento em saídas longas. Para tornar o treinamento mais eficiente, o LongWriter adota o treinamento de empacotamento com ponderação de perda. O treinamento nos dois modelos resulta em dois modelos: LongWriter-9B (abreviado para GLM-4-9B-LongWriter) e LongWriter-8B (abreviado para Llama-3.1-8B-LongWriter).

Ao mesmo tempo, o LongWriter percebe que se a perda for calculada pela sequência, ou seja, tomando a média da perda média de cada sequência dentro de um lote, a contribuição de cada token alvo para a perda em dados de saída longa seria significativamente menor do que aqueles com saídas mais curtas. Nos experimentos do LongWriter, também é descoberto que isso leva a um desempenho de modelo abaixo do excellent em tarefas com saídas longas. Portanto, o LongWriter escolhe uma estratégia de ponderação de perda que calcula a média da perda por token, onde a perda é computada como a média das perdas em todos os tokens alvo dentro desse lote.

Todos os modelos são treinados usando um nó com 8 GPUs H800 80G e DeepSpeed+ZeRO3+CPU offloading. O LongWriter usa um tamanho de lote de 8, uma taxa de aprendizado de 1e-5 e um comprimento de empacotamento de 32k. Os modelos são treinados para 4 épocas, o que leva aproximadamente 2.500-3.000 etapas.

Alinhamento (DPO)

Para melhorar ainda mais a qualidade de saída do modelo e aumentar sua capacidade de seguir restrições de comprimento em instruções, o LongWriter executa a otimização de preferência direta (DPO) no modelo LongWriter-9B supervisionado e ajustado. Os dados do DPO vêm dos dados do DPO de bate-papo do GLM-4 (aproximadamente 50 mil entradas). Além disso, o LongWriter constrói 4 mil pares de dados visando especificamente instruções de escrita de formato longo. Para cada instrução de escrita, o LongWriter faz a amostragem de 4 saídas do LongWriter-9B e pontua essas saídas seguindo um método específico. Uma pontuação de acompanhamento de comprimento também é combinada conforme computada. A saída com a pontuação mais alta é então selecionada como a amostra positiva, e uma das três saídas restantes é escolhida aleatoriamente como a amostra negativa.

O modelo resultante, LongWriter-9B-DPO, é treinado para 250 passos na mistura de dados acima. O LongWriter segue uma receita específica para treinamento de DPO.

LongWriter: Experimentos e Resultados

O LongWriter avalia 4 modelos proprietários e 5 modelos de código aberto no LongBench-Write, juntamente com os modelos LongWriter treinados. Até onde o LongWriter sabe, Suri-IORPO é o único modelo anterior que também está alinhado para geração de texto de formato longo. Ele é treinado com base no Mistral-7B-Instruct-v0.2 usando LoRA. Consistente com a configuração de avaliação no LongWrite-Ruler, o LongWriter outline a temperatura de saída para 0,5 e configura o parâmetro de tokens máximos de geração do modelo para o máximo permitido por sua chamada de API. Para modelos de código aberto, ele é definido como 32.768.

4

A maioria dos modelos anteriores não consegue atender ao requisito de comprimento de mais de 2.000 palavras, enquanto os modelos LongWriter fornecem consistentemente respostas mais longas e ricas para tais prompts.

Observando a pontuação do comprimento de saída SlS_lSl​ para prompts em cada intervalo de comprimento necessário, o LongWriter descobre que os modelos anteriores geralmente têm um desempenho ruim (pontuação abaixo de 70) em prompts no intervalo (2k, 4k), com apenas Claude 3.5 Sonnet alcançando uma pontuação decente. Para prompts no intervalo (4k, 20k), quase todos os modelos anteriores são completamente incapazes de atingir o comprimento de saída alvo, mesmo pontuando 0 (o que significa que todos os comprimentos de saída são menores que um terço do comprimento necessário). Ao adicionar dados de treinamento do LongWriter-6k, o modelo treinado do LongWriter pode efetivamente atingir o comprimento de saída necessário, mantendo boa qualidade, conforme sugerido pelas pontuações no intervalo (2k, 20k) e os gráficos de dispersão.

5

O DPO melhora efetivamente tanto a qualidade de saída do modelo quanto sua capacidade de atender aos requisitos de comprimento na geração longa.

Ao comparar as pontuações do LongWriter-9B e do LongWriter9B-DPO, descobrimos que o DPO melhora significativamente as pontuações Sl (+4%) e Sq (+3%), e a melhoria é consistente em todos os intervalos. Isso mostra que, no cenário de geração longa, o DPO ainda ajuda a melhorar a qualidade de saída do modelo e pode alinhar melhor o comprimento de saída do modelo com 8 Figura de pré-impressão 7: Perda média cumulativa de NLL de GLM4-9B e Llama-3.1-8B em diferentes posições das saídas dos modelos LongWriter. Figura 8: Resultados do teste LongWrite-Ruler dos modelos LongWriter, mostrando seus comprimentos máximos de geração entre 10k-20k palavras. o comprimento solicitado. A última conclusão também foi observada recentemente em Yuan et al. (2024) em gerações mais curtas. Também anotamos manualmente vitórias e perdas em pares para GPT-4o e três modelos longwriter em suas saídas no LongBench-Write e visualizamos os resultados na Figura 9. Podemos ver que os humanos preferem o modelo treinado por DPO em vez do LongWriter-9B em 58% dos casos. Além disso, apesar de ter menos parâmetros, o LongWriter-9B-DPO empata com o GPT-4o.

6

O limite de comprimento de saída dos modelos LongWriter é estendido para entre 10 mil e 20 mil palavras, enquanto mais dados com saídas longas são necessários para dar suporte a saídas ainda maiores.

Após os testes LongWrite-Ruler, também apresentamos os resultados do teste LongWrite-Ruler dos modelos LongWriter. Os resultados sugerem que seus comprimentos máximos de geração estão entre 10k-20k palavras. A falta de dados SFT com saídas mais longas é provavelmente a principal razão que impede o modelo de atingir comprimentos de saída mais longos.

Considerações finais

Neste trabalho, falamos sobre o LongWriter, um pipeline baseado em agente que decompõe tarefas de geração ultralongas em subtarefas, identifica um limite de geração de 2.000 palavras para LLMs atuais e propõe aumentar o tamanho da janela de saída adicionando dados de saída longa durante o alinhamento. Para construir automaticamente dados de saída longa, o LongWriter desenvolve o AgentWrite, um pipeline baseado em agente que usa LLMs prontos para uso para criar saídas estendidas e coerentes. O LongWriter dimensiona com sucesso o tamanho da janela de saída dos LLMs atuais para mais de 10.000 palavras com o LongWriter-6k construído. Estudos extensivos de ablação nos dados de treinamento demonstram a eficácia dessa abordagem. Para trabalhos futuros, o LongWriter sugere as três direções a seguir: 1. Expandir a estrutura AgentWrite para construir dados com saídas mais longas para estender ainda mais o tamanho da janela de saída dos LLMs. 2. Refinar a estrutura AgentWrite para obter dados de saída longa de maior qualidade. 3. Saídas de modelos mais longas trazem desafios à eficiência de inferência. Vários métodos foram propostos para melhorar a eficiência de inferência. Vale a pena investigar como esses métodos podem garantir eficiência de modelo melhorada sem comprometer a qualidade da geração.

join the future newsletter Unite AI Mobile Newsletter 1

Artigos relacionados

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button