Разреженное обучение ускоряет обновление нейросетей в 50 раз
Синхронизация весов моделей в асинхронном обучении с подкреплением (RL) — непростая задача, особенно для моделей размером в терабайт (1T) и более. Традиционные методы требуют передачи полных снимков модели (около 1024 GiB для 1T параметров), что создает узкое место. Простой GPU затягивается, пока модель ожидает загрузки новых весов.
Разреженное обучение дельта-значений — решение проблемы
Эффективным решением является разреженное обучение дельта-значений. Вместо полных снимков модели передаются только "дельта-значения весов" — изменения с момента последнего обновления. Это значительно сокращает объем передаваемых данных.
Для модели с 7B параметров дельта-значения уменьшают объем данных примерно в 130 раз, а для 1T — с 1024 GiB до ~20.3 GiB (50-кратное сокращение). Время простоя GPU при выводе сокращается до 1 секунды, поскольку передача происходит в фоновом режиме, минимизируя остановки синхронизации.
Анализ показывает, что около 99% весов в формате bfloat16 (bf16) остаются неизменными между шагами обучения. Высокая разреженность обусловлена "порогом видимости bf16": обновления, меньше половины интервала между числами bf16 (\(|\Delta w| < |w|/256\)), поглощаются округлением. Байтовое представление веса не меняется.
Архитектура для разреженного обучения
Система включает трейнер, Hugging Face Bucket и vLLM rollout server. Трейнер генерирует дельта-значения весов. HF Bucket с Xet для дедупликации хранит полные снимки (`anchors/`) и разреженные патчи (`deltas/`). vLLM Rollout Server восстанавливает веса модели из бакета. Важно: трейнер и сервер вывода не общаются напрямую, все взаимодействие идет через Bucket. Это позволяет распределять нагрузку по разным регионам и облачным провайдерам.
Технологии и протоколы
Формат передачи данных — safetensors. Поддерживается отображение памяти без копирования (`mmap`) и метаданные для разделения разреженных и плотных файлов. `BF16ChangeDetector` на стороне трейнера определяет измененные веса с помощью хуков оптимизатора. На стороне вывода `DeltaWeightTransferEngine` (расширение vLLM) применяет дельта-значения. Эта система подходит для асинхронного RL без дорогих сетей.
Практическая польза для бизнеса
Система позволяет использовать обычное оборудование для асинхронного RL, не требуя специализированных сетей. Архитектура масштабируется, обеспечивая одновременную загрузку весов множеством реплик. Формат safetensors упрощает отладку и позволяет работать с моделями сверхбольшого масштаба.
Будущее развитие
vLLM готовит встроенную поддержку передачи разреженных весов (`receive_sparse_weights()`) для их прямого обновления на GPU. Планируется переход от фиксированных интервалов якорей к адаптивным политикам. Нужно масштабировать поддержку многоузловых трейнеров FSDP2.
Причина разреженности весов bf16
Ограниченная мантисса bf16 создает "порог видимости" для обновлений весов. Из-за низкой скорости обучения в RL, изменения меньше половины интервала bf16 поглощаются ошибками округления. Байтовое представление веса не меняется.
Для моделей с миллиардами параметров это дает бесплатную разреженность более 99%, что подтверждается эмпирически.
Использование hugging face buckets
Решение использует Hugging Face Buckets на базе Xet для дедупликации. Даже полные снимки передают только измененные блоки. Сочетание разреженного кодирования и Xet гарантирует оплату только за перемещенные данные.
Общая архитектура
Система состоит из трейнера, Hugging Face Bucket и vLLM rollout server. Трейнер работает на любом оборудовании, генерируя разреженные дельта-значения. Hugging Face Bucket хранит полные снимки (`anchors/`) и разреженные патчи (`deltas/`). Это единственный узел синхронизации. vLLM rollout server, развернутый независимо, получает данные из бакета, применяет дельта-значения и обслуживает вывод модели. Трейнер и сервер вывода не общаются напрямую. Это позволяет организовать географически распределенные развертывания.
Протокол и структура данных
Протокол основан на формате safetensors, структуре бакета, расширении vLLM и детекторе изменений трейнера. Якоря — периодические полные контрольные точки с метаданными `sparse=False`. Дельта-значения — только измененные веса в виде файлов индексов (`.indices`) и значений (`.values`) с метаданными `sparse=True`. Новые реплики могут начать с последнего якоря, затем применить последующие дельта-значения.
Обнаружение изменений на стороне трейнера
`BF16ChangeDetector` определяет измененные веса, создавая снимок перед шагом оптимизатора и сравнивая с текущими весами после шага. Этот метод надежнее предсказания из статистики Adam. Процесс синхронизации включает: снимок весов, шаг оптимизатора, генерацию маски, загрузку дельта-файла.
Применение дельта-значений на стороне vllm
vLLM использует `DeltaWeightTransferEngine`, которое скачивает дельта-файл. Затем восстанавливает полные веса, применяя дельта-значения к снимку модели на CPU. Эти тензоры загружаются в vLLM. vLLM активно разрабатывает нативную поддержку передачи разреженных весов для их прямого обновления на GPU.
Развертывание на hugging face spaces
Система легко развертывается на Hugging Face Spaces. Трейнер может работать на одном GPU, а парки вывода — в Spaces, устраняя необходимость прямой сетевой связи. Настройка такого распределенного обучения занимает несколько команд. Полезная нагрузка дельта-файлов остается небольшой (20-35 МБ для модели 0.6B), время простоя вывода — около одной секунды.
Ключевые возможности
Система позволяет выполнять асинхронное RL без выделенного кластера и многорепликационный вывод без значительных затрат. Формат safetensors упрощает отладку. Для модели 1 ТБ дельта-значения могут составлять около 20.3 GiB — управляемый размер для объектного хранилища.
Области для дальнейшего развития
Текущая реализация требует двух снимков модели на CPU. Планируется убрать снимок на сервере вывода после добавления vLLM нативной поддержки разреженных весов. Переход к адаптивной политике интервала якорей может снизить затраты. Требуется масштабирование поддержки многоузловых трейнеров FSDP2. Исследуется возможность точного предсказания масок изменений из статистики Adam.
Ранее по теме
Фейковый репозиторий Hugging Face украл данные пользователей
Больше новостей в нашем Телеграм. Подпишись!
Ссылка на источник тык.