Aceleração ND-Parallel: Guia para Treinamento Eficiente com Múltiplas GPUs
Sources: https://huggingface.co/blog/accelerate-nd-parallel, Hugging Face Blog
Visão geral
Treinar modelos extremamente grandes em várias GPUs exige mais do que apenas deixar os dados passarem por uma única placa. O Accelerate, junto com o Axolotl, oferece uma forma rápida e integrada de compor várias estratégias de paralelismo no seu script de treinamento. O objetivo é minimizar a sobrecarga de comunicação e, ao mesmo tempo, maximizar a taxa de processamento de dados e a eficiência de memória conforme os modelos crescem para dezenas ou centenas de bilhões de parâmetros. A abordagem ND-Parallel combina paralelismo de dados, particionamento de memória e estratégias de paralelismo de modelo em um fluxo configurável. Nessa filosofia, o paralelismo de Dados (DP) é o nível superior: o modelo, os gradientes e os estados do otimizador são replicados entre dispositivos e os dados são distribuídos entre eles. Se o modelo for muito grande para caber em uma única placa, o Fully Sharded Data Parallel (FSDP) fragmenta pesos, gradientes e estados do otimizador entre as GPUs, trocando memória por comunicação. O Tensor Parallel (TP) distribui a computação de camadas lineares entre os dispositivos, enquanto o Context Parallel (CP) fragmenta as sequências para mitigar o crescimento de memória da atenção. A estrutura também permite combinar essas estratégias entre nós, formando um “world size” que aumenta com o número de dispositivos no cluster. O modelo de configuração de Axolotl espelha o ParallelismConfig do Accelerate, permitindo definir os grados de cada estratégia e como elas se combinam. À medida que modelos evoluem para sequências muito longas ou para bilhões de parâmetros, os padrões de comunicação e o layout de memória tornam-se gargalos dominantes. O ND-Parallel atua para ajudar usuários a entender esses trade-offs e escolher configurações que minimizam a comunicação entre dispositivos, mantendo o rendimento de treinamento. O artigo descreve o comportamento de DP, FSDP, TP e CP, como eles interagem e quando combiná-los para obter desempenho prático. Você encontrará também como os fragmentos do modelo são reunidos e reduzidos, como os dispositivos em nós diferentes participam de operações de all-reduce e reduce-scatter, e como o tamanho do world size influencia a escalabilidade. O script de treinamento de ponta a ponta no repositório Accelerate demonstra como configurar o data loader, o otimizador, o loop de treinamento e como salvar o modelo treinado. A capacidade ND-Parallel está integrada ao Axolotl para facilitar o ajuste fino em escala, tornando simples adicionar uma ou mais estratégias de paralelismo aos configs existentes.
Principais recursos
- Permite compor várias estratégias de paralelismo (DP, FSDP, TP, CP) em um único script de treinamento via Accelerate e Axolotl.
- Controle do grau de cada estratégia com ParallelismConfig no Accelerate ou por meio de campos de configuração no Axolotl (por exemplo, dp_replicate_size, tp_size, dp_shard_size).
- Paralelismo de Dados (DP) no topo: o modelo, gradientes e estados do otimizador são replicados entre dispositivos e os dados são particionados entre eles; suporta configurações entre nós.
- Fully Sharded Data Parallel (FSDP) fragmenta pesos, gradientes e estados do otimizador para modelos grandes, trocando memória por comunicação; a granularidade de coleta afeta o trade-off memória–comunicação.
- Tensor Parallel (TP) distribui a computação de camadas lineares entre dispositivos para redução constante de memória, ideal em blocos de camadas grandes; melhor dentro de um único nó devido a maior comunicação.
- Context Parallel (CP) fragmenta as sequências para reduzir o custo de memória de atenções em contextos muito longos.
- Escala entre nós com backends de comunicação intra- e inter-nó para suportar treinamento distribuído, aproveitando ligações rápidas dentro do nó (ex.: NVLink) e redes entre nós mais lentas (ex.: Infiniband).
- Exemplo de ponta a ponta no Accelerate demonstra configuração de dados, otimizador, loop de treinamento e salvamento do modelo; integração com Axolotl para ajuste fino em escala.
- Considerações de trade-offs memória–compute, incluindo opções de offload, para permitir treinar modelos maiores dentro de limites de hardware.
Casos de uso comuns
- Ajuste fino ou treinamento de modelos com dezenas a centenas de bilhões de parâmetros em várias GPUs.
- Cenários que exigem comprimentos de contexto muito grandes (ajuste fino de longas sequências) onde a memória da atenção é dominante.
- Usuários que desejam minimizar a comunicação entre dispositivos ao combinar DP com FSDP, TP e CP.
- Configurações com clusters multi-nó disponíveis, onde abordagens apenas em um nó não cabem o modelo na memória.
- Situações em que a colaboração entre Accelerate e Axolotl simplifica a adição de várias estratégias de paralelismo a configs existentes.
Setup & instalação
O artigo faz referência a configurar e usar o Accelerate junto com o Axolotl, incluindo um script de treinamento ponta a ponta no repositório Accelerate. Menciona a classe ParallelismConfig do Accelerate e os campos de configuração correspondentes no Axolotl para habilitar o ND-Parallel, mas não fornece comandos exatos no trecho fornecido.
Observação: comandos exatos de instalação e configuração não são fornecidos no trecho de origem. Consulte o repositório Accelerate e a documentação do Axolotl para comandos e arquivos de configuração concretos.
# Setup & instalação não fornecidos no trecho de origem.
Quick start
A peça aponta para um exemplo executável mínimo no repositório Accelerate que demonstra:
- como configurar um dataloader, um otimizador e um loop de treinamento,
- aplicar uma ou mais estratégias ND-Parallel via ParallelismConfig (dp_replicate_size, tp_size, dp_shard_size),
- e salvar o modelo treinado.
O código de quick start não está incluído no trecho fornecido. Um exemplo mínimo pode ser encontrado no repositório Accelerate, junto com as configurações ND-Parallel e a integração com o Axolotl.
# Quickstart não fornecido no trecho da fonte.
Prós e contras
- Prós
- Permite treinar modelos grandes combinando paralelismo de dados com particionamento de memória e estratégias de paralelismo de modelo.
- Reduz o uso máximo de memória em comparação com a réplica completa apenas de DP, via FSDP e CP.
- Pode escalar entre nós, aproveitando a comunicação intra-nó rápida e redes inter-nó para treinamento distribuído.
- Configuração flexível via ParallelismConfig e Axolotl para ajustar trade-offs de memória e computação ao caso de uso.
- Contras
- A configuração torna-se complexa conforme o número de estratégias e suas interações aumenta.
- FSDP entre nós pode ter overhead elevado de comunicação; há recomendações para evitar FSDP em toda a extensão de um nó em alguns cenários.
- TP é mais eficaz dentro de um único nó; pode introduzir sincronização e overhead de comunicação, especialmente em setups multi-nó.
- CP adiciona particionamento adicional de dados de entrada e pode exigir tratamento específico para dados longos.
Alternativas (breves comparações)
| Abordagem | Observações | Foco típico de uso |---|---|---| | ND-Parallel (Accelerate + Axolotl) | Combina DP, FSDP, TP, CP em um único config; exemplos de treinamento no repositório Accelerate | Treinamento em larga escala com várias estratégias de paralelismo em um único pipeline |DeepSpeed ZeRO-3 | Economia de memória via otimizações ZeRO-3; escalonamento forte em single-machine e multi-GPU | Modelos muito grandes com otimizador de memória eficiente |DP em single-node | Paralelismo de dados simples em um único nó | Modelos que cabem na memória de um único nó mas requerem maiorThroughput |
Licença
Informação de licença não está explicitamente fornecida no conteúdo da fonte.
Referências
More resources
CUDA Toolkit 13.0 para Jetson Thor: Ecossistema Unificado de Arm e Mais
Kit de ferramentas CUDA unificado para Arm no Jetson Thor com coerência total de memória, compartilhamento de GPU entre processos, interoperabilidade OpenRM/dmabuf, suporte NUMA e melhorias de ferramentas para embarcados e servidores.
Reduzir Custos de Implantação de Modelos Mantendo Desempenho com Swap de Memória de GPU
Utilize o swap de memória da GPU (hot-swapping de modelos) para compartilhar GPUs entre múltiplos LLMs, reduzir custos de ociosidade e melhorar o autoscaling mantendo os SLAs.
Aprimorando a auto-tunagem de GEMM com nvMatmulHeuristics no CUTLASS 4.2
Apresenta nvMatmulHeuristics para escolher rapidamente um conjunto pequeno de configurações de kernels GEMM com alto potencial para o CUTLASS 4.2, reduzindo drasticamente o tempo de tuning enquanto se aproxima do desempenho da busca exaustiva.
Deixe os ZeroGPU Spaces mais rápidos com compilação ahead-of-time (AoT) do PyTorch
Descubra como a AoT do PyTorch acelera ZeroGPU Spaces exportando um modelo compilado e recarregando-o instantaneamente, com quantização FP8, formas dinâmicas e integração cuidadosa com o fluxo Spaces GPU.
Como detectar (e resolver) 5 gargalos de pandas com cudf.pandas (aceleração GPU)
Recurso técnico para desenvolvedores que descreve cinco gargalos comuns do pandas, soluções práticas para CPU e GPU e aceleração por GPU com cudf.pandas.
Dentro do NVIDIA Blackwell Ultra: o chip que impulsiona a era da fábrica de IA
Perfil detalhado do Blackwell Ultra, com design de dois núcleos NV‑HBI, precisão NVFP4, 288 GB HBM3e por GPU e interconexões de sistema para fábricas de IA e inferência em grande escala.