Glossário

Formação distribuída

Acelera o treino de IA com treino distribuído! Aprende a reduzir o tempo de formação, a dimensionar modelos e a otimizar recursos para projectos complexos de ML.

Treina os modelos YOLO simplesmente
com Ultralytics HUB

Aprende mais

O treinamento distribuído é uma técnica usada no aprendizado de máquina (ML) para acelerar significativamente o processo de treinamento de modelos, particularmente os grandes e complexos comuns no aprendizado profundo (DL). À medida que os conjuntos de dados se tornam massivos e modelos como transformadores ou grandes redes convolucionais crescem em tamanho, treiná-los em um único processador, como uma CPU ou mesmo uma poderosa GPUpode levar um tempo impraticável - dias, semanas ou até meses. O treinamento distribuído supera esse gargalo dividindo a carga de trabalho computacional em várias unidades de processamento. Estas unidades (frequentemente GPUs) podem residir numa única máquina potente ou ser distribuídas por várias máquinas ligadas em rede, utilizando frequentemente recursos de computação em nuvem.

Como funciona a formação distribuída

O princípio fundamental por detrás da formação distribuída é o paralelismo - dividir a tarefa de formação de modo a que várias partes possam ser executadas em simultâneo. Em vez de um processador tratar todos os dados e cálculos sequencialmente, o trabalho é partilhado entre vários processadores, frequentemente designados por "trabalhadores". Existem duas estratégias principais para conseguir isto:

  • Paralelismo de dados: Esta é a abordagem mais comum. Coloca uma cópia completa do modelo em cada trabalhador. O conjunto de dados de treinamento é dividido em partes menores, e cada trabalhador processa a parte que lhe foi atribuída usando sua cópia local do modelo. Os trabalhadores calculam as atualizações dos pesos do modelo com base no seu subconjunto de dados. Essas atualizações (gradientes) são então agregadas a todos os trabalhadores (geralmente calculadas como média) e usadas para atualizar o modelo mestre ou sincronizar todas as cópias do modelo. Isso permite processar lotes maiores com eficiência. Estruturas como PyTorch oferecem Distributed Data Parallel (DDP) e TensorFlow fornece várias estratégias de formação distribuída que implementam o paralelismo de dados. A comunicação eficiente entre os trabalhadores é crucial, muitas vezes gerenciada por bibliotecas como a NVIDIA Collective Communications Library (NCCL).
  • Paralelismo de modelos: Esta estratégia é normalmente utilizada quando um modelo é tão grande que não cabe na memória de uma única GPU. Em vez de replicar o modelo inteiro, diferentes partes (por exemplo, camadas) do modelo são colocadas em diferentes workers. Os dados fluem sequencialmente através dessas partes entre os workers durante as passagens para frente e para trás. Esta abordagem é mais complexa de implementar do que o paralelismo de dados, mas é necessária para treinar modelos verdadeiramente enormes. Algumas estruturas oferecem ferramentas para ajudar, como as abordagens doTensorFlow para modelar o paralelismo, e técnicas como o paralelismo de pipeline são frequentemente usadas.

Aplicações no mundo real

A formação distribuída é indispensável para muitas aplicações de ponta de Inteligência Artificial (IA):

  • Treina grandes modelos de linguagem (LLMs): Modelos como o GPT-4 da OpenAI ou o Gemini da Google têm biliões ou triliões de parâmetros. Para os treinar, é necessário distribuir a computação por potencialmente milhares de GPUs durante longos períodos. Isto é essencial para tarefas como o processamento de linguagem natural (PNL), a tradução automática e a criação de chatbots avançados.
  • Modelos avançados de visão por computador: Treina modelos de visão computacional de última geração, tais como Ultralytics YOLO da Ultralytics para deteção de objectos ou modelos complexos para segmentação de imagens, em grandes conjuntos de dados como o ImageNet ou o COCO, beneficia imenso da formação distribuída. Por exemplo, o treino de um modelo de deteção de objectos para veículos autónomos envolve grandes quantidades de dados de imagem e requer uma elevada precisão, tornando o treino distribuído em várias GPUs uma necessidade para obter resultados num período de tempo razoável. Isto também se aplica a campos especializados como a análise de imagens médicas.
  • Sistemas de recomendação: Empresas como a Netflix ou a Amazon treinam modelos complexos em dados de interação do utilizador para gerar recomendações personalizadas. A escala destes dados necessita frequentemente de abordagens distribuídas.
  • Computação científica: As simulações em grande escala em domínios como a modelação climática, a física e a descoberta de medicamentos utilizam frequentemente princípios de computação distribuída semelhantes aos utilizados na formação distribuída de ML.

Formação distribuída vs. outros métodos de formação

É importante distinguir a formação distribuída de conceitos relacionados:

  • Aprendizagem Federada: Embora ambos envolvam vários dispositivos, a Aprendizagem Federada foi concebida para cenários em que os dados são descentralizados e não podem (ou não devem) ser movidos para uma localização central devido a preocupações com a privacidade dos dados (por exemplo, modelos de treino em dados de utilizadores guardados em telemóveis). Na aprendizagem federada, as actualizações dos modelos são calculadas localmente nos dispositivos e enviadas para um servidor central para agregação, mas os dados em bruto nunca saem do dispositivo. O treinamento distribuído geralmente assume que os dados podem ser movidos e distribuídos pelo cluster de computação (por exemplo, em um data center ou nuvem). Consulta o TensorFlow Federated para veres um exemplo de estrutura.
  • Treinamento com um único dispositivo: Este é o método tradicional em que todo o processo de treinamento é executado em uma única CPU ou GPU. É mais simples de configurar(ver Início rápido do Ultralytics ), mas torna-se inviável para modelos ou conjuntos de dados grandes devido a restrições de tempo e memória.

Ferramentas e implementação

A implementação da formação distribuída é facilitada por várias ferramentas e plataformas:

  • Estruturas de ML: Estruturas centrais como PyTorch e TensorFlow fornecem suporte integrado para APIs de treinamento distribuído.
  • Bibliotecas especializadas: Bibliotecas como a Horovod, desenvolvida pela Uber, oferecem uma abordagem agnóstica de estrutura para o aprendizado profundo distribuído.
  • Plataformas de nuvem: Os principais fornecedores de serviços em nuvem, como a AWS, Google Cloud e oMicrosoft Azure, oferecem serviços de ML geridos e infra-estruturas optimizadas para formação distribuída em grande escala.
  • Plataformas de MLOps: Plataformas como o Ultralytics HUB simplificam o processo, fornecendo interfaces para gerenciar conjuntos de dados, selecionar modelos e iniciar trabalhos de treinamento, incluindo opções de treinamento na nuvem que lidam com a infraestrutura distribuída subjacente. Boas práticas de MLOps são fundamentais para gerenciar o treinamento distribuído de forma eficaz.

A formação distribuída é uma técnica fundamental que permite o desenvolvimento dos modelos de IA mais poderosos da atualidade, tornando a formação em grande escala viável e eficiente.

Lê tudo