ChatPaper.aiChatPaper

Equilibrando o Paralelismo de Pipeline com o Paralelismo de Vocabulário

Balancing Pipeline Parallelism with Vocabulary Parallelism

November 8, 2024
Autores: Man Tsung Yeung, Penghui Qi, Min Lin, Xinyi Wan
cs.AI

Resumo

A paralelismo de pipeline é amplamente utilizada para escalar o treinamento de grandes modelos de linguagem baseados em transformadores, diversos trabalhos têm sido realizados para melhorar sua taxa de processamento e pegada de memória. Neste artigo, abordamos um problema frequentemente negligenciado: as camadas de vocabulário podem causar desequilíbrio na computação e uso de memória entre os estágios do pipeline, piorando as bolhas do pipeline e o gargalo de memória. Para lidar com isso, particionamos uniformemente as camadas de vocabulário entre os dispositivos do pipeline e agrupamos a computação em passagens do pipeline. Para reduzir a sobrecarga de memória de ativação, propomos vários algoritmos para reduzir as barreiras de comunicação dentro das camadas de vocabulário. Além disso, utilizamos um método generalizável para integrar o Paralelismo de Vocabulário com os cronogramas de pipeline existentes. Ao combinar essas técnicas, nossos métodos equilibram efetivamente a computação e a memória de parâmetros, com apenas uma pequena sobrecarga de memória de ativação constante. Notavelmente, ao ser combinada com cronogramas de memória de ativação equilibrados como o V-Half, nossa abordagem alcança um equilíbrio perfeito tanto na memória quanto na computação. Avaliações extensivas demonstram que nosso método alcança equilíbrio de computação e memória, independentemente do tamanho do vocabulário, resultando em uma melhoria de 5% a 51% na taxa de processamento em comparação com abordagens ingênuas, ao mesmo tempo em que reduz significativamente o uso máximo de memória, especialmente para cenários de vocabulário grande. Nossa implementação está disponível em código aberto em https://github.com/sail-sg/VocabularyParallelism.
English
Pipeline parallelism is widely used to scale the training of transformer-based large language models, various works have been done to improve its throughput and memory footprint. In this paper, we address a frequently overlooked issue: the vocabulary layers can cause imbalanced computation and memory usage across pipeline stages, worsening pipeline bubbles and the memory bottleneck. To tackle this, we partition the vocabulary layers evenly across pipeline devices and group the computation into pipeline passes. To reduce the activation memory overhead, we propose several algorithms to reduce communication barriers within vocabulary layers. Additionally, we utilize a generalizable method to integrate Vocabulary Parallelism with existing pipeline schedules. By combining these techniques, our methods effectively balance the computation and parameter memory, with only a small constant activation memory overhead. Notably, when combined with activation memory-balanced schedules like V-Half, our approach achieves perfect balance in both memory and computation. Extensive evaluations demonstrate that our method achieves computation and memory balance regardless of the vocabulary size, resulting in a 5% to 51% improvement in throughput compared to naive approaches, meanwhile significantly reducing peak memory usage especially for large vocabulary scenarios. Our implementation is open-sourced at https://github.com/sail-sg/VocabularyParallelism .
PDF203November 14, 2024