ChatPaper.aiChatPaper

Распределенная реализация оптимизатора Shampoo с параллельной обработкой данных в PyTorch для масштабного обучения нейронных сетей

A Distributed Data-Parallel PyTorch Implementation of the Distributed Shampoo Optimizer for Training Neural Networks At-Scale

September 12, 2023
Авторы: Hao-Jun Michael Shi, Tsung-Hsien Lee, Shintaro Iwasaki, Jose Gallego-Posada, Zhijing Li, Kaushik Rangadurai, Dheevatsa Mudigere, Michael Rabbat
cs.AI

Аннотация

Shampoo — это алгоритм онлайн- и стохастической оптимизации, относящийся к семейству методов AdaGrad для обучения нейронных сетей. Он строит блочно-диагональный предобуславливатель, где каждый блок представляет собой грубое приближение Кронекера к полноматричному AdaGrad для каждого параметра нейронной сети. В данной работе мы предоставляем полное описание алгоритма, а также оптимизации производительности, которые использует наша реализация для масштабного обучения глубоких сетей в PyTorch. Наша реализация обеспечивает быстрое распределенное обучение с использованием нескольких GPU и параллелизацией данных за счет распределения памяти и вычислений, связанных с блоками каждого параметра, с использованием структуры данных DTensor в PyTorch и выполнения примитива AllGather для вычисленных направлений поиска на каждой итерации. Это значительное улучшение производительности позволяет нам достичь снижения времени выполнения на шаг не более чем на 10% по сравнению со стандартными адаптивными градиентными методами, основанными на диагональном масштабировании. Мы проверяем нашу реализацию, проводя исследование на обучении модели ResNet50 на наборе данных ImageNet, демонстрируя превосходство Shampoo над стандартными подходами к обучению при минимальной настройке гиперпараметров.
English
Shampoo is an online and stochastic optimization algorithm belonging to the AdaGrad family of methods for training neural networks. It constructs a block-diagonal preconditioner where each block consists of a coarse Kronecker product approximation to full-matrix AdaGrad for each parameter of the neural network. In this work, we provide a complete description of the algorithm as well as the performance optimizations that our implementation leverages to train deep networks at-scale in PyTorch. Our implementation enables fast multi-GPU distributed data-parallel training by distributing the memory and computation associated with blocks of each parameter via PyTorch's DTensor data structure and performing an AllGather primitive on the computed search directions at each iteration. This major performance enhancement enables us to achieve at most a 10% performance reduction in per-step wall-clock time compared against standard diagonal-scaling-based adaptive gradient methods. We validate our implementation by performing an ablation study on training ImageNet ResNet50, demonstrating Shampoo's superiority over standard training recipes with minimal hyperparameter tuning.
PDF70December 15, 2024