GShard — фреймворк разработки и выполнения крупных нейронных сетей, разработанный компанией Google для масштабирования моделей с условными вычислениями и автоматическим разбиением параметров и операций по множеству вычислительных устройств. Основная задача GShard — упростить обучение и инференс очень больших трансформерных и других архитектур путём автоматического шардирования (sharding) параметров и вычислений, а также организации маршрутизации запросов к подпроцессам модели в случаях conditional computation. Фреймворк интегрируется с существующими библиотеками для распределённых вычислений и предоставляет программистам средства для описания модели на более высоком уровне, освобождая от ручного распределения веса и градиентов по устройствам.
Изначально GShard был представлен в контексте исследований по обучению моделей с триллионами параметров и демонстрировал подходы комбинированного шардирования по данным, по моделям и по параметрам, включая методы для балансировки нагрузки и сокращения коммуникационных издержек. Одной из ключевых идей является использование условной вычислительной логики (routing/mixture-of-experts), когда на каждом шаге исполнения активируется лишь часть параметров модели, что позволяет масштабировать число параметров без пропорционального роста вычислительной нагрузки. В публикациях и примерах GShard показал эффективность при создании больших языковых и мультимодальных моделей, сочетая автоматическое распределение памяти и вычислений с оптимизациями коммуникации.
- Автоматическое шардирование параметров: разбиение весов и связанных градиентов по множеству устройств для оптимального использования памяти и вычислительных ресурсов.
 - Комбинированные стратегии шардирования: поддержка шардирования по оси параметров, по данным и гибридных схем с целью снижения коммуникационных затрат.
 - Поддержка условных вычислений: интеграция механизмов маршрутизации и mixture-of-experts для активации ограниченного набора параметров в каждом прогоне модели.
 - Балансировка нагрузки: алгоритмы и эвристики для распределения вычислений и экспертов, уменьшающие перекосы в загрузке устройств.
 - Оптимизации коммуникации: методы сжатия обмена данными и упорядочивания операций для сокращения сетевых задержек между узлами.
 - Совместимость с экосистемой: проект ориентирован на интеграцию с фреймворками и инструментами для распределённого обучения, предоставляя программистам знакомые абстракции.
 - Масштабирование до триллионов параметров: архитектурные решения, позволяющие увеличивать число параметров модели без эквивалентного увеличения вычислительной нагрузки за счёт условной активации и шардирования.
 - Инструменты отладки и профилирования: средства для анализа распределения параметров и узких мест в коммуникации при масштабном запуске моделей.