Добавить в корзинуПозвонить
Найти в Дзене
Цифровая Переплавка

Как добиться длинного контекста в GRPO и сэкономить 90% VRAM: новые возможности Unsloth

В сообществе глубокого обучения постоянно появляются инновационные методы оптимизации моделей, которые позволяют обучать большие языковые модели (LLM) быстрее и «дешевле» в плане аппаратных ресурсов. В недавней новости о Long-context GRPO от команды Unsloth сообщается, что благодаря их «Efficient GRPO» алгоритму можно достигать 10-кратного увеличения длины контекста при снижении потребления видеопамяти на 90% по сравнению с другими реализациями GRPO (Global Retrieval Position Optimization - Глобальная оптимизация позиций выборки), включая подходы с Flash Attention 2. В классических сценариях обучения моделей последовательного вывода (reasoning models) критично уметь обрабатывать длинные цепочки текста. Но рост длины контекста (context length) неизбежно увеличивает затраты VRAM. Команда Unsloth утверждает, что их новый алгоритм:
🦥 Уменьшает VRAM: экономит порядка 90% видеопамяти за счёт сочетания оптимизированной линейной реализации GRPO и «умной» градиентной контрольной точки (gradien
Оглавление

В сообществе глубокого обучения постоянно появляются инновационные методы оптимизации моделей, которые позволяют обучать большие языковые модели (LLM) быстрее и «дешевле» в плане аппаратных ресурсов. В недавней новости о Long-context GRPO от команды Unsloth сообщается, что благодаря их «Efficient GRPO» алгоритму можно достигать 10-кратного увеличения длины контекста при снижении потребления видеопамяти на 90% по сравнению с другими реализациями GRPO (Global Retrieval Position Optimization - Глобальная оптимизация позиций выборки), включая подходы с Flash Attention 2.

Почему контекст так важен и что даёт новый GRPO

В классических сценариях обучения моделей последовательного вывода (reasoning models) критично уметь обрабатывать длинные цепочки текста. Но рост длины контекста (context length) неизбежно увеличивает затраты VRAM. Команда Unsloth утверждает, что их новый алгоритм:
🦥
Уменьшает VRAM: экономит порядка 90% видеопамяти за счёт сочетания оптимизированной линейной реализации GRPO и «умной» градиентной контрольной точки (gradient checkpointing).
🔧
Даёт 10x больший контекст: например, для Llama 3.1 (8B) при 20K длине контекста «обычный» GRPO требует вплоть до 510.8 GB VRAM, а Unsloth GRPO — всего около 54.3 GB (по их расчётам).
💡
Возможность обучать модели даже на «ограниченных» GPU: согласно статье, теперь можно тренировать Qwen2.5 (1.5B) всего при 5 GB VRAM (раньше нужно было 7 GB).

Ключевые технические фишки

🔥 Математически оптимизированный расчёт лосс-функции
Unsloth переосмыслили вычисление KL-дивергенции (Reverse KL) и фактор «преимущества»(advantages), стараясь эффективно использовать линейные операции. При этом они отмечают, что нужно аккуратно работать со смешанной точностью (mixed-precision) FP16 / FP8, иначе автоматический расчёт градиентов (autograd - автоград) может некорректно распространять градиенты.

⚙️ Smart Gradient Checkpointing
Условно, модель «сбрасывает» часть активаций в RAM и подгружает их по необходимости. Для 8 повторений (num_generations = 8) и 20K контекста это даёт огромную экономию: сотни гигабайт VRAM.

🗃️ Интеграция с vLLM
Unsloth-реализация GRPO может использовать один и тот же пространственный контекст GPU для инференса (через vLLM). Это убирает дополнительные накладные расходы, которые обычно занимают десятки GB.

Шаги к большим контекстам: почему всё это работает

🤔 Обычная проблема: при стандартном GRPO (например, через Hugging Face TRL + Flash Attention 2) нужно держать в памяти большие логиты (logits) ,например, 2 лога размера (batch_size, context_length, vocab_size) для расчёта лосса. Это буквально «съедает» сотни гигабайт VRAM при контексте в 20K.

💡 Идея Unsloth: они частично пересчитывают (или сохраняют) нужные участки GPU-памяти (Logits, K/V кэш) более экономно, применяют «линейные» операторы (с учётом reverse KL), а также «собирают» нужные данные на лету. Как итог — вместо 78.3 GB под логиты требуется только 9.8 GB.

Детали формулы и «щепотка математики»

В оригинальной статье Unsloth упоминает формулу GRPO, которая (согласно DeepSeek Math paper) опирается на reverse KL-дивергенцию:

-2

Одна из сложностей — правильно реализовать «reverse KL» и учитывать detach-операции (иначе автоград ломается). Unsloth протестировала варианты (с forward KL, без detach и т.д.) и отмечает, что без detach «всё рушится».

Дополнения: vLLM, FP8, Dynamic 4-bit

Unsloth также поддерживает несколько интересных опций:
🦥
FP8 KV cache: уменьшая формат хранения ключей/значений (K/V) в inference, экономим почти в 2 раза память.
🐱
Dynamic 4-bit: новая методика квантования, которая сохраняет точность лучше, чем стандартный 4-бит, и теперь совместима с vLLM.

Мой взгляд: революция или эволюция?

Безусловно, нынешняя «гонка» за поддержкой длинных контекстов (20K, 32K, а то и 100K токенов) сталкивается с неприятной реальностью огромных затрат VRAM. Если Unsloth действительно позволяет сократить «с сотен гигабайт» до «десятков гигабайт» без критической потери производительности — это серьёзный сдвиг парадигмы.
На практике, конечно, всё зависит от конкретных задач. Но если вы хотите обучать длинно-контекстную модель вроде Llama 3.1 (8B) с GRPO на «умеренном» GPU-кластере (т.е. без монструозных A100 по 80 GB в больших количествах), тогда этот метод может стать спасением.

Где почитать и как попробовать

🛠️ Unsloth предоставляет бесплатные вычислительные среды (ноутбуки в Google Colab и аналогах) с контекстным окном, увеличенным в 10 раз., например, для Llama 3.1 (8B) на Colab.
🕹️
Полезно прочесть их гайд по GRPO и reward функциям/verifiers — есть разбор формул и пояснения, как применять алгоритм на практике.
Поддержать проект можно, поставив звездочку на GitHub.

Если у вас уже есть опыт с TRL + Flash Attention 2, то сравнения по потреблению VRAM (примерно 54.3 GB вместо 510.8 GB при 20K контексте) выглядят впечатляюще.

Ссылки

Вывод: подход Unsloth Efficient GRPO — интересное направление для тех, кто стремится обучать модели рассуждений с колоссальным контекстом, не имея при этом суперкластера GPU. Впереди, вероятно, ещё много тестов и сравнений, но идея сокращения VRAM на 90% звучит очень заманчиво. Осталось лишь дождаться, когда это решение войдёт в мейнстрим и будет поддержано другими популярными инструментами.