Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
starstream opened this issue May 15, 2024 · 1 comment
Open

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

starstream opened this issue May 15, 2024 · 1 comment

Comments

@starstream
Copy link

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
Copy link

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants