ZeRO
Определение
ZeRO — способ параллельного обучения по данным, который уменьшает дублирование состояний модели, распределяя их между участниками. Стадия определяет, какие состояния делятся: состояния оптимизатора, градиенты или также параметры.
Также ищут: Zero Redundancy Optimizer · оптимизатор ZeRO · ZeRO-1 · ZeRO-2 · ZeRO-3
Зачем это знать
Размер файла весов не равен памяти обучения. Стадия ZeRO определяет, какие состояния делятся между участниками. Рассчитайте их объём, отдельно учтите активации и временные буферы, затем измерьте пик памяти полного шага.
Карта понятия
Что подтверждено
В ZeRO-DP стадии последовательно расширяют набор разделяемых состояний: стадия 1 распределяет состояния оптимизатора между участниками параллельного обучения по данным; стадия 2 также распределяет градиенты; стадия 3 — ещё и параметры.
Граница применимости: Стадии ZeRO-DP в статье 2020 года и обзоре DeepSpeed. Разделение состояний само по себе не означает применения тензорного параллелизма внутри слоя.
В учёте статьи ZeRO для P параметров схема Adam со смешанной точностью даёт 16P байт состояний модели: параметры FP16 — 2P, градиенты FP16 — 2P, копия параметров FP32 — 4P и два состояния Adam FP32 — по 4P каждое.
Граница применимости: Схема §3.1 статьи: параметры и градиенты FP16, копия параметров и два состояния Adam FP32. Это учёт перечисленных состояний, а не полный пик памяти; другие схемы точности и оптимизаторы сюда не входят.
В учебном расчёте P=2×10⁹ параметров схемы Adam из статьи ZeRO при равном разделении между четырьмя участниками состояния модели занимают на участника: 32 ГБ без разделения, 14 ГБ на стадии 1, 11 ГБ на стадии 2 и 8 ГБ на стадии 3. Формулы в байтах: 16P; 4P+12P/4; 2P+2P/4+12P/4; 16P/4 соответственно. Здесь 1 ГБ = 10⁹ байт.
Граница применимости: Редакторский расчёт по §3.1 и §§5.1–5.3 статьи и стадиям из обзора DeepSpeed. Учтены параметры и градиенты FP16, копия параметров и два состояния Adam FP32. Это объём перечисленных состояний, а не пик памяти GPU.
Число байт для состояний модели не включает активации, временные буферы и потери полезной памяти из-за фрагментации; эти составляющие нужно учитывать отдельно.
Граница применимости: Граница расчёта по §3.2 статьи ZeRO; дополнительный расход памяти зависит от модели, запуска и устройства.
Что проверить
- Зафиксируйте число параметров, точность параметров и градиентов, оптимизатор и число участников параллельного обучения по данным.
- Назовите стадию ZeRO и состояния, которые в ней разделяются.
- Учтите активации, временные буферы и фрагментацию памяти. Измерьте пик полного шага: расчёт состояний модели не заменяет замер.
Первоисточники
- ZeRO: Memory Optimizations Toward Training Trillion Parameter Models
§3.1: состояния Adam со смешанной точностью; §3.2: активации, временные буферы и фрагментация; §5: разделение состояний оптимизатора, градиентов и параметров; §7: обмены в модели анализа статьи.
- Zero Redundancy Optimizer
Стадии 1–3 разделяют состояния оптимизатора, затем также градиенты и параметры. Перенос состояний в память CPU или на накопители описан отдельно и не приписывается каждой стадии.
Связанные понятия
Курсы по теме
В каталоге
- GPU для распределённого обучения — Сравните объём памяти GPU с расчётом состояний и измеренным пиком полного шага обучения. Стадия ZeRO сама по себе не подтверждает достаточность оборудования.