Модели и платформы ИИ

LongWriter: Раскрытие потенциала генерации текста длиной 10 000+ слов из длинных контекстных моделей LLM

mm
Добавьте Unite.AI в избранные источники в Google
LONGWRITER: UNLEASHING 10,000+ WORD GENERATION FROM LONG CONTEXT LLMS

Текущие модели LLM с длинным контекстом могут обрабатывать входные данные длиной до 100 000 токенов, но они испытывают трудности с генерацией выходных данных, превышающих даже умеренную длину 2000 слов. Контролируемые эксперименты показывают, что эффективная длина генерации модели внутренне ограничена примерами, увиденными во время научения с учителем (SFT). Другими словами, это ограничение на длину выходных данных обусловлено нехваткой примеров с длинными выходными данными в существующих наборах данных SFT.

Недавние достижения в области моделей LLM с длинным контекстом привели к разработке моделей с значительно расширенными возможностями памяти, способных обрабатывать истории длиной более 100 000 токенов. Однако, несмотря на их способность обрабатывать обширные входные данные, текущие модели LLM с длинным контекстом испытывают трудности с генерацией выходных данных подобной длины.

Чтобы изучить это ограничение, LongWriter исследует максимальную длину выходных данных современных моделей с длинным контекстом с помощью нескольких запросов, требующих ответов разной длины, таких как «Напишите статью длиной 10 000 слов об истории Римской империи». Результаты показывают, что все модели последовательно не могут генерировать выходные данные длиной более 2000 слов. Между тем, анализ журналов взаимодействия пользователей показывает, что более 1% пользовательских запросов явно требуют выходных данных, превышающих это ограничение, подчеркивая насущную необходимость в текущих исследованиях решить эту проблему.

Чтобы решить эту проблему, LongWriter представляет AgentWrite, агентный конвейер, который разбивает задачи генерации ультра-длинного текста на подзадачи, позволяя использовать модели LLM из коробки для генерации связных выходных данных длиной до 20 000 слов. Используя AgentWrite, LongWriter создает LongWriter-6k, набор данных, содержащий 6000 образцов данных SFT с длиной выходных данных от 2 тыс. до 32 тыс. слов. Включая этот набор данных в обучение модели, LongWriter успешно увеличивает длину выходных данных существующих моделей до более 10 000 слов, сохраняя качество выходных данных.

LongWriter также разрабатывает LongBench-Write, комплексную оценку для оценки возможностей ультра-длинной генерации. Модель с 9 млрд параметров, улучшенная с помощью DPO, достигает лучших результатов на этой оценке, превосходя даже более крупные проприетарные модели.

В этой статье мы обсудим фреймворк LongWriter, исследуем его архитектуру и сравним его производительность с современными моделями LLM с длинным контекстом. Давайте начнем.

LongWriter: Фреймворк генерации 10 000+ слов

Недавние достижения в области моделей LLM с длинным контекстом привели к созданию моделей с значительно расширенными возможностями памяти, способных обрабатывать истории длиной более 100 000 токенов. Несмотря на их способность обрабатывать обширные входные данные, текущие модели LLM с длинным контекстом испытывают трудности с генерацией выходных данных подобной длины. Чтобы изучить это ограничение, LongWriter исследует максимальную длину выходных данных современных моделей с длинным контекстом с помощью нескольких запросов, требующих ответов разной длины, таких как «Напишите статью длиной 10 000 слов об истории Римской империи». Основываясь на результатах, LongWriter наблюдает, что все модели последовательно не могут генерировать выходные данные длиной более 2000 слов. Кроме того, анализ журналов взаимодействия пользователей показывает, что более 1% пользовательских запросов явно требуют выходных данных, превышающих это ограничение, подчеркивая насущную необходимость в текущих исследованиях решить эту проблему.

Исследование LongWriter показывает ключевое наблюдение: ограничение на длину выходных данных в первую очередь обусловлено характеристиками наборов данных SFT. Конкретно, LongWriter обнаруживает, что максимальная длина генерации модели эффективно ограничена верхним пределом длин выходных данных, присутствующих в ее наборе данных SFT, несмотря на ее воздействие на более длинные последовательности во время предварительного обучения. Это наблюдение объясняет повсеместное ограничение генерации 2000 слов в текущих моделях, поскольку существующие наборы данных SFT редко содержат примеры, превышающие эту длину. Кроме того, поскольку многие наборы данных получены из современных моделей LLM, они также наследуют ограничение на длину выходных данных от своих исходных моделей.

Чтобы решить эту проблему, LongWriter представляет AgentWrite, новый агентный конвейер, предназначенный для использования моделей LLM из коробки для автоматического создания расширенных, связных выходных данных. AgentWrite работает в два этапа: сначала он создает подробный план написания, определяющий структуру и требуемую длину каждого абзаца на основе входных данных пользователя. Затем, следуя этому плану, он запрашивает модель генерировать контент для каждого абзаца в последовательном порядке. LongWriter показывает, что AgentWrite может производить высококачественные и связные выходные данные длиной до 20 000 слов.

Основываясь на конвейере AgentWrite, LongWriter использует GPT-4o для генерации 6000 образцов данных SFT с длинными выходными данными, называемых LongWriter-6k, и добавляет эти данные в обучение существующих моделей. Заметно, что LongWriter-6k успешно разблокирует способность модели генерировать хорошо структурированные выходные данные длиной более 10 000 слов, сохраняя качество выходных данных.

Чтобы суммировать, работа LongWriter делает следующие новые вклады:

  • Анализ ограничений длины генерации: LongWriter выявляет основной фактор, ограничивающий длину выходных данных современных моделей LLM с длинным контекстом, который является ограничением на длину выходных данных в наборах данных SFT.
  • AgentWrite: Чтобы преодолеть это ограничение, LongWriter предлагает AgentWrite, который использует подход «разделяй и властвуй» с моделями LLM из коробки для автоматического создания наборов данных SFT с ультра-длинными выходными данными. Используя этот метод, LongWriter создает набор данных LongWriter-6k.
  • Масштабирование размера окна выходных данных текущих моделей LLM: LongWriter включает набор данных LongWriter-6k в обучение существующих моделей, успешно увеличивая размер окна выходных данных до 10 000+ слов, сохраняя качество выходных данных. LongWriter показывает, что DPO进一步 улучшает способность модели генерировать длинные тексты.

AgentWrite: Автоматическое создание данных

Чтобы использовать модели LLM из коробки для автоматического создания наборов данных SFT с длинными выходными данными, LongWriter разрабатывает AgentWrite, агентный конвейер, который разбивает задачи генерации ультра-длинного текста на подзадачи. AgentWrite работает в два этапа: сначала он создает подробный план написания, определяющий структуру и требуемую длину каждого абзаца на основе входных данных пользователя. Затем, следуя этому плану, он запрашивает модель генерировать контент для каждого абзаца в последовательном порядке.

Этап I: Планирование

Вдохновленный процессом мышления человеческих писателей, которые обычно начинают с создания общего плана для задач написания длинных текстов, LongWriter использует возможности планирования моделей LLM для создания плана написания, учитывая входные данные пользователя. Этот план включает основной контент и требования к длине каждого абзаца.

“Мне нужно, чтобы вы помогли разбить следующую задачу написания длинного текста на несколько подзадач. Каждая подзадача будет руководить написанием одного абзаца в эссе и должна включать основные моменты и требования к длине для этого абзаца. Задача написания следующая: {входные данные пользователя}. Пожалуйста, разбейте ее в следующем формате, с каждой подзадачей на отдельной строке:

Абзац 1 – Основной момент: [Опишите основной момент абзаца в деталях] – Длина: [Требуемая длина, например, 400 слов]
Абзац 2 – Основной момент: [Опишите основной момент абзаца в деталях] – Длина: [Требуемая длина, например, 1000 слов].

Убедитесь, что каждая подзадача ясна и конкретна, и что все подзадачи охватывают весь контент задачи написания. Не разбивайте подзадачи слишком мелко; каждый абзац должен быть не менее 200 слов и не более 1000 слов. Не выводите никакой другой контент.”

Этап II: Написание

После создания плана написания на этапе I, LongWriter последовательно запрашивает модель генерировать контент для каждого абзаца, используя план. Чтобы обеспечить связность выходных данных, когда LongWriter запрашивает модель генерировать n-й раздел, предыдущие n-1 разделы также вводятся, позволяя модели продолжать написание следующего раздела на основе существующей истории написания.

“Вы являетесь отличным помощником в написании. Я дам вам исходную задачу написания и запланированные шаги написания. Я также предоставлю вам текст, который я уже написал. Пожалуйста, помогите мне продолжить написание следующего абзаца на основе задачи написания, плана написания и уже написанного текста.

Задача написания:
{входные данные пользователя}
План написания:
{созданный план написания}
Уже написанный текст:
{предыдущие разделы}

Пожалуйста, объедините исходную задачу написания, план написания и уже написанный текст, и теперь продолжите написание {план для n-го абзаца, т.е. n-я строка в плане написания}.”

Валидация

LongWriter тестирует длину генерации и качество предложенного метода AgentWrite на двух наборах данных для написания длинных текстов. Первый, LongWrite-Ruler, используется для измерения максимальной длины выходных данных, которую может обеспечить метод. Второй, LongBench-Write, в основном используется для оценки того, насколько хорошо контент, сгенерированный моделью, соответствует задачам написания в плане длины и качества написания.

LongBench-Write: Чтобы оценить производительность модели на более разнообразном наборе задач написания длинных текстов, LongWriter собирает 120 различных задач написания, с 60 на английском и 60 на китайском языках. Чтобы лучше оценить, соответствует ли длина выходных данных модели требованиям пользователя, LongWriter обеспечивает, чтобы все эти задачи включали явные требования к длине. Эти задачи разделены на четыре подмножества на основе требований к длине: 0-500 слов, 500-2000 слов, 2000-4000 слов и более 4000 слов. Кроме того, задачи категоризированы на семь типов на основе типа выходных данных: Литература и творческое написание, Академическое и монографическое написание, Популярная наука, Функциональное написание, Новостные отчеты, Сообщества и форумы, а также Образование и обучение.

Во время оценки LongWriter использует два метрика: один для оценки длины выходных данных и другой для оценки качества выходных данных. Длина выходных данных модели оценивается на основе того, насколько близко она соответствует требованиям, указанным в задаче. Для качества выходных данных LongWriter использует подход «модель как судья», выбирая модель GPT-4o для оценки выходных данных по шести измерениям: Релевантность, Точность, Связность, Ясность, Глубина и Ширина, а также Опыт чтения. Окончательный балл рассчитывается как среднее значение балла длины и балла качества.

Результаты валидации: LongWriter представляет измерение длины выходных данных на LongWrite-Ruler и обнаруживает, что AgentWrite успешно увеличивает длину выходных данных GPT-4o с максимальной длины 2 тыс. слов до примерно 20 тыс. слов. LongWriter также оценивает качество выходных данных и соответствие требуемой длине на LongBench-Write, показывая, что GPT-4o может успешно выполнить задачи с выходными данными длиной менее 2000 слов.

Научение с учителем

LongWriter проводит обучение на основе двух последних открытых моделей, а именно GLM-4-9B и Llama-3.1-8B. Обе эти модели являются базовыми и поддерживают контекстное окно длиной до 128к токенов, что делает их естественно подходящими для обучения на длинных выходных данных. Чтобы сделать обучение более эффективным, LongWriter采用 упаковку обучения с взвешиванием потерь. Обучение на этих двух моделях приводит к двум моделям: LongWriter-9B (аббревиатура для GLM-4-9B-LongWriter) и LongWriter-8B (аббревиатура для Llama-3.1-8B-LongWriter).

В то же время LongWriter замечает, что если потеря усредняется по последовательности, т.е. берется среднее значение каждой последовательности внутри пакета, вклад каждой целевой токены в потерю в длинных выходных данных будет значительно меньше, чем у тех, у которых более короткие выходные данные. В экспериментах LongWriter также обнаруживается, что это приводит к субоптимальной производительности модели на задачах с длинными выходными данными. Поэтому LongWriter выбирает стратегию взвешивания потерь, которая усредняет потерю по токену, где потеря рассчитывается как среднее значение потерь по всем целевым токенам в пакете.

Все модели обучаются на узле с 8xH800 80G GPU и DeepSpeed+ZeRO3+CPU offloading. LongWriter использует пакет размером 8, скорость обучения 1e-5 и длину упаковки 32к. Модели обучаются в течение 4 эпох, что занимает примерно 2500-3000 шагов.

Выравнивание (DPO)

Чтобы进一步 улучшить качество выходных данных модели и повысить ее способность следовать ограничениям длины в задачах, LongWriter выполняет прямую оптимизацию предпочтений (DPO) на модели LongWriter-9B. Данные DPO получены из набора данных чата GLM-4 (приблизительно 50к записей). Кроме того, LongWriter создает 4к пар данных, специально ориентированных на задачи написания длинных текстов. Для каждой задачи LongWriter выбирает 4 выходных данных из LongWriter-9B и оценивает эти выходные данные по определенному методу. Также вычисляется балл, следующий ограничениям длины. Выходные данные с наивысшим баллом затем выбираются как положительные примеры, а один из оставшихся трех выходных данных случайным образом выбирается как отрицательный пример.

Результирующая модель, LongWriter-9B-DPO, обучается в течение 250 шагов на смеси вышеуказанных данных. LongWriter следует определенному рецепту для обучения DPO.

LongWriter: Эксперименты и результаты

LongWriter оценивает 4 проприетарные модели и 5 открытых моделей на LongBench-Write, а также обученные модели LongWriter. По мнению LongWriter, Suri-IORPO является единственной предыдущей моделью, также выровненной для генерации длинных текстов. Она обучена на основе Mistral-7B-Instruct-v0.2 с использованием LoRA. Согласно настройке оценки на LongWrite-Ruler, LongWriter устанавливает температуру выходных данных 0,5 и конфигурирует параметр максимального количества токенов генерации модели до максимально допустимого значения API-запроса. Для открытых моделей он устанавливается в 32 768.

Большинство предыдущих моделей не могут удовлетворить требованию длины более 2000 слов, в то время как модели LongWriter последовательно обеспечивают более длинные и богатые ответы на такие запросы.

Наблюдая за баллом длины выходных данных SlS_lSl​ для запросов в каждом диапазоне длины, LongWriter обнаруживает, что предыдущие модели обычно показывают плохие результаты (балл ниже 70) на запросах в диапазоне [2к, 4к), с исключением модели Claude 3.5 Sonnet, которая достигает приличного балла. Для запросов в диапазоне [4к, 20к) почти все предыдущие модели полностью не могут достичь требуемой длины выходных данных, даже получая балл 0 (что означает, что все длины выходных данных меньше одной трети от требуемой длины). Добавляя обучающие данные из LongWriter-6k, обученная модель LongWriter может эффективно достичь требуемой длины выходных данных, сохраняя при этом хорошее качество, как это подтверждают баллы в диапазоне [2к, 20к) и разбросанные графики.

DPO эффективно улучшает как качество выходных данных модели, так и ее способность следовать ограничениям длины в длинной генерации.

Сравнивая баллы моделей LongWriter-9B и LongWriter-9B-DPO, мы обнаруживаем, что DPO значительно улучшает как балл Sl (+4%), так и балл Sq (+3%), и это улучшение последовательно наблюдается во всех диапазонах. Это показывает, что в сценарии длинной генерации DPO все еще помогает улучшить качество выходных данных модели и может лучше выровнять длину выходных данных модели с запрошенной длиной. Последний вывод также был недавно сделан в работе Yuan et al. (2024) для более коротких генераций. Мы также вручную аннотируем победы и поражения для GPT-4o и трех моделей LongWriter на их выходных данных в LongBench-Write и визуализируем результаты на рисунке 9. Мы видим, что люди предпочитают модель, обученную с DPO, над LongWriter-9B в 58% случаев. Более того, несмотря на меньшее количество параметров, LongWriter-9B-DPO достигает ничьей с GPT-4o.

Ограничение длины выходных данных моделей LongWriter расширено до диапазона между 10к и 20к слов, в то время как для поддержки еще более длинных выходных данных требуется больше данных с длинными выходными данными.

Следуя тесту LongWrite-Ruler, мы также представляем результаты теста LongWrite-Ruler для моделей LongWriter. Результаты показывают, что их максимальная длина генерации находится в диапазоне между 10к и 20к слов. Недостаток данных SFT с более длинными выходными данными, вероятно, является основной причиной, препятствующей модели достижению еще более длинных выходных данных.

 

Окончательные мысли

В этой работе мы говорили о LongWriter, агентном конвейере, который разбивает задачи генерации ультра-длинного текста на подзадачи, выявляет ограничение длины генерации 2000 слов для текущих моделей LLM и предлагает увеличение размера окна выходных данных, добавляя данные с длинными выходными данными во время выравнивания. Чтобы автоматически создать данные с длинными выходными данными, LongWriter разрабатывает AgentWrite, агентный конвейер, который использует модели LLM из коробки для создания расширенных, связных выходных данных. LongWriter успешно увеличивает размер окна выходных данных текущих моделей LLM до более 10 000 слов с помощью созданного набора данных LongWriter-6k. Обширные исследования по обучающим данным демонстрируют эффективность этого подхода. Для будущей работы LongWriter предлагает следующие три направления: 1. Расширить фреймворк AgentWrite для создания данных с еще более длинными выходными данными, чтобы еще больше увеличить размер окна выходных данных моделей LLM. 2. Усовершенствовать фреймворк AgentWrite для достижения более высокого качества данных с длинными выходными данными. 3. Более длинные выходные данные моделей представляют собой проблемы для эффективности вывода. Были предложены несколько методов для улучшения эффективности вывода. Стоит изучить, как эти методы могут обеспечить улучшение эффективности модели без ущерба для качества генерации.

"Инженер по профессии, писатель по сердцу". Кунал - технический писатель с глубокой любовью и пониманием ИИ и МО, посвященный упрощению сложных концепций в этих областях посредством своей увлекательной и информативной документации.