Connect with us

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

Искусственный интеллект

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Чтобы использовать готовые модели LLM для автоматического генерации данных SFT с более длинными выходными данными, LongWriter проектирует AgentWrite, агентный конвейер в стиле «разделить и завоевать». AgentWrite сначала разбивает задачи длинного написания на несколько подзадач, каждая из которых требует от модели написать только один абзац. Затем модель выполняет эти подзадачи последовательно, и LongWriter объединяет выходные данные подзадач, чтобы получить окончательный длинный выход. Такой подход разбиения сложной задачи на несколько подзадач с помощью агентов LLM уже был применен в различных областях, таких как решение проблем, разработка программного обеспечения и оценка моделей. Работа LongWriter является первой, которая исследует интеграцию планирования для ermögления моделям выполнения сложных задач длинного написания. Каждый шаг AgentWrite представлен подробно ниже.

Шаг I: План

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

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

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

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

Шаг II: Написание

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

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

Инструкция написания:{Инструкция пользователя}Шаги написания:{План написания, сгенерированный на Шаге I}Уже написанный текст:{Ранее сгенерированные (n-1) абзацы}

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

Проверка

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

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

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

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

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

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 эпох, что занимает примерно 2 500-3 000 шагов.

Совпадение (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.

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

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