Локальное накопление градиентов ускоряет обучение в 1,7 раза
Скорость обучения часто упирается в «потолок» из-за простоев в конвейерах (pipelines). Этот простой называют «пузырем» (bubble).
Новый метод под названием PACI решает эту проблему. Он устраняет эти «пузыри» и ускоряет обучение в 1,69 раза.
Большинство команд используют стратегию под названием 1F1B-flush. Этот метод обеспечивает согласованность весов, но создает пустые слоты, в которых система ожидает данные. Время ожидания замедляет весь процесс.
Другие асинхронные методы пытаются исправить это. Они используют сложные приемы, такие как кэширование весов (weight stashing) или создание дубликатов. Эти приемы потребляют слишком много памяти и часто делают обучение нестабильным.
PACI идет другим путем. Он использует локальное накопление градиентов (local gradient accumulation). Это позволяет держать конвейер занятым без необходимости глобальной синхронизации.
Вот почему PACI важен:
- Он соответствует стабильности стандартных методов.
- Он использует тот же объем памяти.
- Он достигает скорости более быстрых, но более тяжеловесных конфигураций.
- Он сокращает время достижения целевой точности (time-to-accuracy) в 1,69 раза.
В тестах с GPT-2 Medium метод PACI достигал целевой точности гораздо быстрее. Это показывает, что можно пожертвовать небольшим дрейфом весов (weight drift) ради колоссального прироста эффективности.
Для инженерных команд это означает снижение затрат на оборудование на 40%. Вы получаете более быстрые результаты, не покупая дополнительные GPU и не увеличивая объем памяти.
Исследователи протестировали это на 8-этапном конвейере с моделями типа GPT. Вам может потребоваться настроить окно накопления (accumulation window), если вы измените глубину конвейера или размер батча (batch size).
Вы можете протестировать это самостоятельно. Авторы предоставляют обертку для локального накопления (local-accumulation wrapper) в своем репозитории. Замените ваш текущий синхронизатор flush на нее, чтобы увидеть ускорение.
Source: https://dev.to/olaughter/local-gradient-accumulation-speeds-training-17x-2mdk
Optional learning community: https://t.me/GyaanSetuAi