GShard

Бесплатно

Сайт: arxiv.org/abs/2006.16668

GShard — фреймворк разработки и выполнения крупных нейронных сетей, разработанный компанией Google для масштабирования моделей с условными вычислениями и автоматическим разбиением параметров и операций по множеству вычислительных устройств. Основная задача GShard — упростить обучение и инференс очень больших трансформерных и других архитектур путём автоматического шардирования (sharding) параметров и вычислений, а также организации маршрутизации запросов к подпроцессам модели в случаях conditional computation. Фреймворк интегрируется с существующими библиотеками для распределённых вычислений и предоставляет программистам средства для описания модели на более высоком уровне, освобождая от ручного распределения веса и градиентов по устройствам.

Изначально GShard был представлен в контексте исследований по обучению моделей с триллионами параметров и демонстрировал подходы комбинированного шардирования по данным, по моделям и по параметрам, включая методы для балансировки нагрузки и сокращения коммуникационных издержек. Одной из ключевых идей является использование условной вычислительной логики (routing/mixture-of-experts), когда на каждом шаге исполнения активируется лишь часть параметров модели, что позволяет масштабировать число параметров без пропорционального роста вычислительной нагрузки. В публикациях и примерах GShard показал эффективность при создании больших языковых и мультимодальных моделей, сочетая автоматическое распределение памяти и вычислений с оптимизациями коммуникации.

  • Автоматическое шардирование параметров: разбиение весов и связанных градиентов по множеству устройств для оптимального использования памяти и вычислительных ресурсов.
  • Комбинированные стратегии шардирования: поддержка шардирования по оси параметров, по данным и гибридных схем с целью снижения коммуникационных затрат.
  • Поддержка условных вычислений: интеграция механизмов маршрутизации и mixture-of-experts для активации ограниченного набора параметров в каждом прогоне модели.
  • Балансировка нагрузки: алгоритмы и эвристики для распределения вычислений и экспертов, уменьшающие перекосы в загрузке устройств.
  • Оптимизации коммуникации: методы сжатия обмена данными и упорядочивания операций для сокращения сетевых задержек между узлами.
  • Совместимость с экосистемой: проект ориентирован на интеграцию с фреймворками и инструментами для распределённого обучения, предоставляя программистам знакомые абстракции.
  • Масштабирование до триллионов параметров: архитектурные решения, позволяющие увеличивать число параметров модели без эквивалентного увеличения вычислительной нагрузки за счёт условной активации и шардирования.
  • Инструменты отладки и профилирования: средства для анализа распределения параметров и узких мест в коммуникации при масштабном запуске моделей.
Подробнее