NVIDIA / Megatron-LM

Ongoing research training transformer models at scale
https://docs.nvidia.com/megatron-core/developer-guide/latest/user-guide/index.html#quick-start
Other
10.13k stars 2.28k forks source link

[QUESTION] how to profile bubble time in pipeline parallelism? #828

Open starstream opened 4 months ago

starstream commented 4 months ago

Your question Ask a clear and concise question about Megatron-LM. How can I profile bubble time and p2p comm time in pipeline parallelism?

felipeliliti commented 4 months ago

O paralelismo de pipeline é uma técnica crucial para treinamento distribuído em larga escala, mas pode sofrer com "bolhas" no pipeline. Essas bolhas são ineficiências que surgem devido a atrasos de sincronização entre diferentes estágios do pipeline. Vamos explorar algumas estratégias para lidar com isso:

  1. DataParallel (DP): Essa abordagem replica o modelo inteiro em várias GPUs, com cada GPU processando uma parte dos dados. Após cada etapa de treinamento, as configurações sincronizam seus resultados. No entanto, o DP não aborda diretamente as bolhas no pipeline.

  2. TensorParallel (TP): No TP, os tensores são divididos em pedaços, e cada fragmento reside em uma GPU designada. Durante o processamento, os fragmentos são calculados em paralelo, e os resultados são sincronizados no final da etapa. O TP reduz o uso de memória, mas ainda não elimina as bolhas no pipeline.

  3. PipelineParallel (PP): O PP divide verticalmente o modelo entre as GPUs, colocando apenas camadas específicas em cada GPU. Cada GPU processa diferentes estágios do pipeline em paralelo, trabalhando com pequenos lotes de dados. O PP pode mitigar as bolhas no pipeline otimizando o paralelismo em nível de camada.

  4. Zero Redundancy Optimizer (ZeRO): O ZeRO divide os tensores de maneira semelhante ao TP, mas reconstrói o tensor inteiro durante os cálculos de avanço ou retrocesso. Isso evita a modificação do modelo e suporta técnicas de descarregamento para memória limitada da GPU.

  5. Zero Bubble Pipeline Parallelism: Pesquisas recentes introduzem estratégias de agendamento para alcançar zero bolhas no pipeline sob semântica de treinamento síncrono. Esses métodos visam minimizar os atrasos de sincronização e melhorar a eficiência.

  6. Adaptive Blockwise Task-interleaved Pipeline Parallelism (ZeroPP): O ZeroPP equilibra bolhas no pipeline, memória e comunicação usando agendamento adaptativo. Ele agenda os cálculos de gradiente de entrada cedo e insere cálculos de gradiente de peso para reduzir as bolhas.

github-actions[bot] commented 2 months ago

Marking as stale. No activity in 60 days.