Нейросети требуют знать границы каждого исходного блока данных, поэтому вместе с упакованными токенами система несёт метаданные: длины последовательностей, кумулятивные сдвиги, максимальную длину и структуру внимания. Раньше для фиксированной упаковки эти данные rebuilding или re-synchronizing на каждом слое, что зря тратит ресурсы. Главная идея нового подхода: собрать метаданные B один раз и использовать их L раз. Это убирает лишние синхронизации между устройством и хостом, которые возникали при повторном восстановлении информации. Кэширование таких структур и внимания на устройстве для текущей упаковки позволяет перенести их на все слои, избавляя от повторяющейся работы. В результате для Qwen3-14B QLoRA SFT форвард-проход ускоряется на 43,3%, бэквард — на 5,8%, а время на пакет выросло на 14,3%. Наибольший выигрыш даёт именно форвард, так как там чаще всего потребляются те самые упакованные метаданные и маски.
Вторая проблема — активационная проверка с перегрузкой данных. Обычно промежуточные результаты отключаются, чтобы не занимать видеопамять, а загружать обратно только когда нужно. Но если копировать активацию с CPU на GPU, ждать окончания и сразу считать, процесс становится последовательным. Это можно улучшить, используя два буфера. Пока один буфер считается на бэкварде, второй уже наполняется следующей активацией, создавая перекрывание потоков. Этот метод не сокращает количество вычислений, но прячет время копирования за полезной работой. Для больших моделей, где вычисления существенны, скрытие перемещения данных становится критичным. Реализация умеет плавно переходить в безопасный режим, если памяти не хватает, и не меняет корректность. На GPU NVIDIA B200 Blackwell для модели 8B шаги в секунду выросли с 0,3739 до 0,4053, что плюс 8,4%. Для моделей 14B и 32B прирост составил 6,7% и 4,61% соответственно.
Третье изменение затронуло маршрутизацию в моделях MoE на базе PyTorch. Там дорогой этап — понять, какие токены идут к какому эксперту. Наивный подход вызывает динамические запросы для каждого эксперта, что может вызывать синхронизацию CPU и GPU. Лучший способ — сразу сгруппировать все назначения, отсортировать по ID эксперта и использовать bincount, чтобы получить токены за один раз. Это снижает динамические запросы с пропорции к количеству экспертов до почти константы. В GPT-OSS это дало ускорение на 23% в форварде и 13% в бэкварде для целевого пути. Все три оптимизации борются с одной проблемой: лишние запросы времени и синхронизации в коде-клее вокруг основных ядер. Когда сами вычисления становятся быстрее, такие накладные расходы становятся заметными, и их нужно либо убрать, либо распараллелить.