Моделі та платформи ШІ
LongWriter: Розблокування генерації 10 000+ слів з довгими контекстами LLM
Поточні великі мови моделі (LLM) з довгим контекстом можуть обробляти вхідні дані до 100 000 токенів, але вони борються з генерацією виводів, що перевищують навіть скромну довжину 2000 слів. Контрольовані експерименти показують, що ефективна довжина генерації моделі обмежена прикладами, побаченими під час наглядового тонкого налаштування (SFT). Інакше кажучи, це обмеження виводу походить від нестачі довгих виводів у існуючих наборах даних SFT.
Нещодавні досягнення у великих моделях мови з довгим контекстом призвели до розробки моделей з значно розширеною пам’яттю, здатних обробляти історії, що перевищують 100 000 токенів. Однак, незважаючи на їхню здатність обробляти обширні вхідні дані, поточні великі мови моделі з довгим контекстом борються з генерацією рівнозначних виводів.
Для дослідження цього обмеження LongWriter досліджує максимальну довжину виводу державних моделей з довгим контекстом за допомогою кількох запитів, які вимагають відповідей різної довжини, таких як “Напишіть статтю у 10 000 слів про історію Римської імперії”. Результати показують, що всі моделі постійно не можуть виробити виводи довше 2000 слів. Тим часом аналіз журналів взаємодії користувачів показує, що понад 1% запитів користувачів явно вимагають виводів, що перевищують це обмеження, підкреслюючи нагальну потребу у поточних дослідженнях подолати це обмеження.
Для вирішення цієї проблеми LongWriter вводить AgentWrite, агентний трубопровід, який розбиває завдання генерації ультра-довгих виводів на підзадачі, дозволяючи використовувати готові LLM для генерації сполучених виводів довше 20 000 слів. Використовуючи AgentWrite, LongWriter створює LongWriter-6k, набір даних, що містить 6 000 зразків даних SFT з довжинами виводу від 2 тис. до 32 тис. слів. Включивши цей набір даних до навчання моделі, LongWriter успішно розширює довжину виводу існуючих моделей до понад 10 000 слів, зберігаючи якість виводу.
LongWriter також розробляє LongBench-Write, комплексний бенчмарк для оцінки можливостей ультра-довгої генерації. Модель з 9 млрд параметрів, додатково покращена за допомогою DPO, демонструє найкращу продуктивність на цьому бенчмарку, перевершуючи навіть великі пропріетарні моделі.
У цій статті ми обговоримо.framework LongWriter, дослідимо його архітектуру та порівняємо його продуктивність з державними великими моделями мови з довгим контекстом. Почнімо.
LongWriter: Фреймворк генерації 10 000+ слів
Нещодавні досягнення у великих моделях мови з довгим контекстом призвели до розробки моделей з значно розширеною пам’яттю, здатних обробляти історії, що перевищують 100 000 токенів. Незважаючи на їхню здатність обробляти обширні вхідні дані, поточні великі мови моделі з довгим контекстом борються з генерацією виводів порівняної довжини. Для дослідження цього обмеження LongWriter досліджує максимальну довжину виводу державних моделей з довгим контекстом за допомогою кількох запитів, які вимагають відповідей різної довжини, таких як “Напишіть статтю у 10 000 слів про історію Римської імперії”. На підставі результатів LongWriter спостерігає, що всі моделі постійно не можуть виробити виводи довше 2000 слів. Крім того, аналіз журналів взаємодії користувачів показує, що понад 1% запитів користувачів явно вимагають виводів, що перевищують це обмеження, підкреслюючи нагальну потребу у поточних дослідженнях подолати це обмеження.

Дослідження LongWriter показує ключовий висновок: обмеження на довжину виводу в першу чергу корениться у характеристиках наборів даних SFT. Зокрема, LongWriter виявляє, що максимальна довжина генерації моделі ефективно обмежена верхнім лімітом довжин виводу, присутніх у її наборі даних SFT, незважаючи на її експозицію до значно довших послідовностей під час фази попереднього навчання. Це відкриття пояснює універсальне обмеження генерації у 2000 слів серед поточних моделей, оскільки існуючі набори даних SFT рідко містять приклади, що перевищують цю довжину. Крім того, оскільки багато наборів даних відфільтровані від державних великих моделей мови, вони також успадковують обмеження довжини виводу від своїх джерельних моделей.
Для вирішення цього обмеження LongWriter вводить AgentWrite, новий агентний трубопровід, призначений для використання готових LLM для автоматичної генерації розширених, сполучених виводів. AgentWrite діє у двох етапах: спочатку він створює детальний план написання, що містить структуру та вимоги до кількості слів для кожного абзацу на основі вводу користувача. Потім, згідно з цим планом, він просить модель згенерувати вміст для кожного абзацу послідовно. LongWriter показує, що AgentWrite може виробити високоякісні та сполучені виводи довше 20 000 слів.
На основі трубопроводу AgentWrite LongWriter створює LongWriter-6k, набір даних, що містить 6 000 зразків даних SFT з довжинами виводу від 2 тис. до 32 тис. слів. Включивши цей набір даних до навчання моделі, LongWriter успішно розширює довжину виводу існуючих моделей до понад 10 000 слів, зберігаючи якість виводу.
Для підсумкування, робота LongWriter робить наступні нові внески:
- Аналіз обмежень довжини генерації: LongWriter ідентифікує основну причину, що обмежує довжину виводу поточних великих моделей мови з довгим контекстом, яка полягає в обмеженні довжини виводу в наборах даних 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 є першою, яка досліджує інтеграцію планування для надання моделям можливості виконання складних завдань генерації довгих текстів. Кожен етап 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-2000 слів, 2000-4000 слів та понад 4000 слів. Крім того, запити категоризуються на сім типів на основі типу виводу: Література та творче письмо, Академічне та монографічне, Популярна наука, Функціональне письмо, Новинні повідомлення, Форум спільноти та Освіта та тренінг.
Під час оцінки LongWriter використовує два метрики: один для оцінки довжини виводу та інший для оцінки якості виводу. Довжина виводу моделі оцінюється на основі того, наскільки вона близька до вимог, вказаних у запитах. Для якості виводу LongWriter використовує підхід “LLM як суддя”, вибравши державну модель 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 епох, що займає приблизно 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.

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












