Treinamento Distribuído
Acelere o treinamento de IA com treinamento distribuído! Aprenda como reduzir o tempo de treinamento, escalar modelos e otimizar recursos para projetos complexos de ML.
A formação distribuída é uma técnica poderosa na
aprendizagem automática (ML) que acelera o processo de
processo de criação de modelos, dividindo a carga de trabalho computacional por vários processadores, tais como
Unidades de processamento gráfico (GPUs) ou
Unidades de Processamento Tensor (TPUs). Ao aproveitar o poder combinado de dispositivos simultâneos - localizados numa única
estação de trabalho ou em rede em um vasto cluster, os desenvolvedores podem reduzir drasticamente o tempo necessário para treinar arquiteturas complexas de
arquitecturas complexas de aprendizagem profunda (DL). Esta abordagem é
essencial para lidar com conjuntos de dados maciços e desenvolver sistemas de
sistemas de inteligência artificial (IA) de última geração,
permitindo ciclos de iteração mais rápidos e uma experimentação mais alargada.
Estratégias principais para paralelização
To effectively distribute the workload, engineers typically employ one of two primary strategies, or a hybrid approach
designed to maximize efficiency:
-
Paralelismo de dados: Este é o método mais comum para tarefas como
deteção de objectos. Nesta configuração, uma cópia completa
do modelo reside em cada dispositivo. Os dados de
dados de treino são divididos em pedaços mais pequenos e
cada dispositivo processa um subconjunto diferente em simultâneo. Durante a fase de
fase de retropropagação, os gradientes são calculados
calculados independentemente e depois sincronizados em todos os dispositivos usando protocolos de comunicação como a
como o MPI (Message Passing Interface) para atualizar os
pesos do modelo de forma consistente.
-
Paralelismo de modelos: Quando uma
rede neural (NN) é demasiado grande para caber na
memória de uma única GPU, é necessário o paralelismo do modelo. As camadas ou componentes do modelo são particionados
em diferentes dispositivos. Os dados fluem sequencialmente ou simultaneamente entre dispositivos à medida que passam pela rede.
Esta técnica é fundamental para o treino de modelos de
modelos de base e
modelos de linguagem de grande porte (LLMs), onde
onde a contagem de parâmetros pode atingir os triliões, exigindo ferramentas especializadas como o
Microsoft DeepSpeed para gerenciar a memória.
Aplicações no Mundo Real
A formação distribuída permite às indústrias resolver problemas que anteriormente eram computacionalmente inviáveis devido a restrições de tempo ou de memória.
ou restrições de memória.
-
Condução autónoma: O desenvolvimento de carros autónomos fiáveis requer o processamento de petabytes de vídeo
e dados de sensores. As empresas do sector automóvel utilizam clusters distribuídos em grande escala para treinar modelos de visão para segmentação semântica em tempo real
segmentação semântica e rastreamento de objetos em tempo real.
Ao utilizar a IA nos fluxos de trabalho do sector automóvel,
os engenheiros podem iterar rapidamente em modelos críticos de segurança para melhorar o desempenho.
-
Imagiologia médica: Em
IA nos cuidados de saúde, a análise de exames 3D de alta resolução
de alta resolução, como as ressonâncias magnéticas ou as tomografias computorizadas, exige recursos computacionais significativos. A formação distribuída permite aos investigadores
treinar modelos de diagnóstico de alta precisão em diversos
em conjuntos de dados diversos e compatíveis com a privacidade. Estruturas como a
NVIDIA CLARA dependem frequentemente de técnicas distribuídas
para processar essas imagens médicas complexas de forma eficiente.
Implementação de formação distribuída com YOLO
O ultralytics simplifica a implementação da formação Distributed Data Parallel (DDP). O utilizador
pode facilmente escalar o seu treino de YOLO11 modelos em
múltiplas GPUs, especificando simplesmente os índices de dispositivos.
from ultralytics import YOLO
# Load a pre-trained YOLO11 model
model = YOLO("yolo11n.pt")
# Train the model using two GPUs (device 0 and 1)
# The library automatically handles DDP setup for parallel processing
results = model.train(data="coco8.yaml", epochs=5, device=[0, 1])
Treinamento Distribuído vs. Conceitos Relacionados
É importante distinguir a formação distribuída de outros termos relacionados no ecossistema da IA:
-
vs. Aprendizagem Federada: Embora ambos envolvam vários dispositivos, os seus principais objectivos são diferentes.
O treinamento distribuído normalmente centraliza os dados em um cluster de alto desempenho para maximizar a velocidade e o rendimento. Em
Em contraste, a aprendizagem federada mantém os dados
descentralizados nos dispositivos dos utilizadores (como smartphones) para dar prioridade à
privacidade dos dados, agregando actualizações de modelos sem que os
sem que os dados brutos deixem o dispositivo de origem.
-
vs. Computação de Alto Desempenho (HPC): A HPC é um campo alargado que engloba a supercomputação para
simulações científicas, como a previsão meteorológica. A formação distribuída é uma aplicação específica da HPC aplicada
a algoritmos de otimização em redes
redes neurais, muitas vezes utilizando bibliotecas de comunicação especializadas como
NVIDIA NCCL para reduzir a latência entre GPUs.
Ferramentas e Ecossistema
Um ecossistema sólido de ferramentas e plataformas de código aberto apoia a implementação da formação distribuída:
-
Estruturas: PyTorch oferece suporte nativo
através do seu pacote distribuído, enquanto o
TensorFlow fornece estratégias como
MirroredStrategy para um escalonamento perfeito.
-
Orquestração: A gestão de recursos num grande cluster envolve frequentemente a orquestração de contentores
como o Kubernetes ou o
Kubeflow, que automatizam a implantação e o dimensionamento de trabalhos de treinamento.
-
Infraestrutura de nuvem: Os principais fornecedores oferecem serviços geridos, tais como
AWS SageMaker e
Google Cloud TPUs que fornecem uma infraestrutura optimizada para
cargas de trabalho distribuídas, eliminando o fardo da manutenção de hardware.
-
Escalabilidade universal: Bibliotecas como Horovod e
Ray fornecem abordagens agnósticas de estrutura para escalonamento, permitindo que os desenvolvedores adaptem
seu código para ambientes distribuídos com alterações mínimas.