Unsloth GRPO: 380K контекст на одном GPU. Обучение RL-моделей | AiManual
AiManual Logo Ai / Manual.
15 Янв 2026 Инструмент

Unsloth GRPO: Как обучать RL-модели с контекстом до 380K на одном GPU (обзор новых техник)

Unsloth GRPO позволяет обучать RL-модели с контекстом до 380K токенов на одном GPU. 7-12x экономия памяти, float8, QLoRA, бесплатные Colab. Обзор новых техник.

Когда 4K контекста уже мало

Представь, что твоя RL-модель читает техническую документацию в 100 страниц. Или анализирует историю чата за месяц. Или пытается понять логику кодовой базы. Стандартные 4K токенов — это примерно 8 страниц текста. Смешно.

До вчерашнего дня обучение моделей с подкреплением на длинных контекстах требовало либо кластера GPU, либо магии с оффлоадингом, либо кучу компромиссов. Команда Unsloth только что выкатила обновление GRPO, которое меняет правила игры.

💡
GRPO — это Group Relative Policy Optimization, альтернатива PPO для RLHF. Меньше вычислений, стабильнее, но до сих пор жрал память как не в себя при длинных контекстах.

Что они сделали и почему это работает

Технически, Unsloth применили три ключевые оптимизации, которые вместе дают мультипликативный эффект. Не просто сложили — перемножили.

1 Кастомные CUDA ядра для внимания

Вместо стандартного Flash Attention 2 (который, честно говоря, уже не так flash) они написали свои ядра, специализированные под паттерны доступа в GRPO. Обычно внимание вычисляет scores для всех токенов сразу. В RL-тренировке нам часто нужно только для последних N токенов — тех, где модель принимала решения.

Их ядра умеют "отсекать" вычисления для контекста, который не влияет на градиенты. Звучит просто, но реализация — ад из индексов и shared memory.

Если интересно, как вообще пишутся такие ядра, у нас есть отдельная статья про кастомные CUDA ядра. Спойлер: овчинка стоит выделки, но только если ты готов потратить месяц на отладку.

2 Динамический оффлоадинг активаций

Тут гениально просто. Вместо того чтобы хранить все активации для всего контекста в VRAM (что при 380K токенов съедает десятки гигабайт), они вычисляют, какие части точно понадобятся для обратного прохода, а какие можно выгрузить в CPU RAM и подгрузить обратно по мере необходимости.

Латентность? Да, есть. Но они компенсируют это асинхронными pre-fetch операциями. Пока GPU считает forward pass для одного чанка, CPU уже готовит следующий.

3 Float8 training без потерь

Float8 — не bfloat16 и даже не fp16. Это 8 бит на число. В теории — катастрофа для градиентов. На практике — они добавили loss scaling, который адаптируется динамически, и quantization, которая учитывает распределение значений в RL-обучении.

Ключевой трюк: они квантуют в float8 только те тензоры, которые участвуют в матричных умножениях для attention. Веса модели остаются в bfloat16. Такой гибридный подход.

Цифры, которые заставят тебя пересмотреть свои планы

Контекст Обычный GRPO (VRAM) Unsloth GRPO (VRAM) Ускорение
4K токенов 24 GB 3.2 GB 7.5x
32K токенов OOM на 24GB 8.1 GB ∞ (работает vs не работает)
128K токенов Даже не мечтай 22 GB
380K токенов Фантастика 48 GB (на A100)

Цифра 380K — не случайная. Это примерно 760 страниц текста. Или вся "Война и мир". На одном GPU. Без шуток.

С чем сравнивать? Да почти не с чем

Альтернативы есть, но они либо дороже, либо сложнее, либо просто другие.

  • TRL + PPO — классика, но PPO требует в 3-4x больше памяти на те же контексты. И нестабильнее.
  • Пакетный GRPO на нескольких GPU — если у тебя есть кластер, можешь разбить контекст на части и распределить. Но синхронизация градиентов между картами съедает половину выигрыша. У нас есть инженерный гайд по этой теме, если интересно.
  • Полный оффлоадинг на CPU — теоретически можно засунуть всё в оперативку. Но тогда обучение будет идти со скоростью 1 итерация в час. Не смешно.
  • Методы вроде ZAGORA — хороши для больших моделей (70B+), но для 7B-13B моделей overhead слишком большой. Про ZAGORA мы уже писали.

Unsloth GRPO — это решение для одного GPU. Один карта, один разъем, одна проблема (решенная).

Кому это нужно прямо сейчас

Не всем. Если твоя модель отвечает на вопросы из пары абзацев — тебе хватит и стандартных 4K. Но вот кому стоит срочно качать обновление:

  1. Разработчикам coding assistants — теперь можно дать модели на обучение целый файл на 2000 строк и сказать "найди баги". Или даже несколько файлов. FrogMini нервно курит в сторонке.
  2. Создателям исследовательских агентов — агент читает несколько научных статей (каждая по 10-20 страниц), делает выводы, формулирует гипотезы. Раньше это требовало сложных систем с RAG. Теперь можно просто скормить тексты в контекст.
  3. Тем, кто fine-tune'ит модели для анализа логов — недельные логи приложения легко укладываются в 200-300K токенов.
  4. Энтузиастам, у которых только одна карта — например, RTX 4090 с 24GB. Раньше максимальный контекст был 32K с танцами с бубном. Теперь — 128K комфортно, 256K если потерпеть латентность.

Кстати, если у тебя Mac с Apple Silicon, проверь Unsloth-MLX. Там своя экосистема, но принципы те же.

Как начать использовать (без кода, обещаю)

Unsloth выложили всё на GitHub. Колаб-ноутбуки, примеры, документацию. Самый простой способ — взять их готовый ноутбук для GRPO и заменить в нём одну строчку:

Вместо обычного импорта GRPOTrainer — импортируйте UnslothGRPOTrainer. Всё. Остальной код остаётся таким же, как в нашем гайде по обучению 7B моделей на Colab.

Параметры для длинного контекста задаются через max_length. Хочешь 128K — поставь max_length=131072. Система сама подстроит чанкинг и оффлоадинг.

Важный нюанс: чем длиннее контекст, тем меньше batch size ты сможешь использовать. При 380K токенах batch size=1. Но это нормально — каждый пример уже содержит кучу информации.

Что будет дальше? Мой прогноз

Через месяц все основные RL-фреймворки скопируют эти оптимизации. TRL, Axolotl, LLama-Factory — все добавят поддержку длинного контекста через аналогичные трюки.

Но пока Unsloth на полгода впереди. Их кастомные ядра заточены именно под их имплементацию GRPO, и переписать их под PPO или другой алгоритм — нетривиально.

Самое интересное: теперь можно экспериментировать с truly long-context RLHF. Что если дать модели не просто пару примеров хорошего/плохого ответа, а целую историю взаимодействия с пользователем? Или документацию по API + примеры использования + чат с вопросами?

Это меняет игру для создания специализированных ассистентов. Не тех, что "помогают вообще", а тех, что знают твою кодобазу, твои процессы, твою документацию. И учатся на твоих коррекциях.

Мой совет: если ты задумывался о fine-tuning'е модели под свои нужды, но откладывал из-за "а как же длинные контексты?" — проблема решена. Бери и делай. На Colab бесплатно, на своей карте — тем более.

Осталось только придумать, чем заполнить эти 380K токенов. Может, начать с стратегии масштабирования для твоего проекта?