Noções básicas sobre treinamento distribuído no Amazon SageMaker AI - SageMaker IA da Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Noções básicas sobre treinamento distribuído no Amazon SageMaker AI

A página a seguir apresenta informações sobre as etapas necessárias para começar a usar o treinamento distribuído no Amazon SageMaker AI. Se você já estiver familiarizado com o treinamento distribuído, escolha uma das opções a seguir que corresponda à sua estratégia ou framework preferido para começar. Se quiser aprender sobre treinamento distribuído em geral, consulte Conceitos de treinamento distribuído.

As bibliotecas de treinamento distribuído do SageMaker AI são otimizadas para o ambiente de treinamento do SageMaker, ajudando a adaptar suas tarefas de treinamento distribuído ao SageMaker AI e aprimorando a velocidade e o throughput do treinamento. As bibliotecas oferecem estratégias de treinamento tanto para paralelismo de dados quanto para paralelismo de modelos. Elas combinam tecnologias de software e hardware para melhorar a comunicação entre GPUs e nós e ampliam os recursos de treinamento do SageMaker AI com opções integradas que exigem o mínimo de alterações de código nos scripts de treinamento. 

Antes de começar

O SageMaker Training oferece apoio ao treinamento distribuído em uma única instância e em várias instâncias, para que você possa executar treinamentos de qualquer tamanho em grande escala. Recomendamos que você utilize as classes de estimadores de framework, como PyTorch e TensorFlow, no SageMaker Python SDK, que são os iniciadores de trabalhos de treinamento com diversas opções de treinamento distribuído. Ao criar um objeto estimador, o objeto configura a infraestrutura de treinamento distribuído, executa a API CreateTrainingJob no backend, encontra a região onde sua sessão atual está sendo executada e obtém um dos contêineres predefinidos da AWS para aprendizado profundo, pré-empacotados com várias bibliotecas, incluindo frameworks de aprendizado profundo, frameworks de treinamento distribuído e o driver EFA. Se você deseja montar um sistema de arquivos FSx nas instâncias de treinamento, é necessário fornecer sua sub-rede VPC e ID do grupo de segurança ao estimador. Antes de executar uma tarefa de treinamento distribuído no SageMaker AI, leia as orientações gerais a seguir sobre a configuração básica da infraestrutura.

Zonas de disponibilidade e backplane de rede

Ao usar várias instâncias (também chamadas de nós), é importante entender a rede que conecta as instâncias, como elas leem os dados de treinamento e como compartilham informações entre si. Por exemplo, ao executar um trabalho de treinamento distribuído com paralelismo de dados, diversos fatores, como a comunicação entre os nós de um cluster de computação para a execução da operação AllReduce e a transferência de dados entre os nós e o armazenamento de dados no Amazon Simple Storage Service ou no Amazon FSx para Lustre, desempenham um papel crucial para alcançar a utilização otimizada de recursos de computação e uma velocidade de treinamento mais rápida. Para reduzir a sobrecarga de comunicação, configure as instâncias, a sub-rede da VPC e o armazenamento de dados na mesma Região da AWS e zona de disponibilidade.

Instâncias de GPU com rede mais rápida e armazenamento de alto throughput

Tecnicamente, você pode usar qualquer instância para treinamento distribuído. Para casos em que é necessário executar tarefas de treinamento distribuído de vários nós para grandes modelos, como os grandes modelos de linguagem (LLMs) e os modelos de difusão, que exigem uma comunicação entre nós mais rápida, recomendamos o uso de instâncias de GPU habilitadas para EFA compatíveis com o SageMaker AI. Especialmente, para obter a tarefa de treinamento distribuído mais eficiente no SageMaker AI, recomendamos instâncias P4d e P4de equipadas com GPUs NVIDIA A100. Essas instâncias também estão equipadas com armazenamento local de alto throughput e baixa latência, além de uma rede intra-nó mais rápida. Para armazenamento de dados, recomendamos o Amazon FSx para Lustre que fornece alta throughput para armazenar conjuntos de dados de treinamento e pontos de verificação de modelos.

Usar a biblioteca de paralelismo de dados distribuídos do SageMaker AI (SMDDP)

A biblioteca de SMDDP melhora a comunicação entre os nós com implementações de operações de comunicação coletiva AllReduce e AllGather, que são otimizadas para a infraestrutura de rede da AWS e a topologia de instância de ML do Amazon SageMaker AI. Você pode usar a biblioteca do SMDDP como backend dos pacotes de treinamento distribuídos baseados em PyTorch: PyTorch Distributed Data Parallel (DDP), paralelismo de dados totalmente fragmentados (FSDP) do PyTorch, DeepSpeed e Megatron-DeepSpeed. Os exemplos de código a seguir demonstram como definir um estimador PyTorch para iniciar um trabalho de treinamento distribuído em duas instâncias ml.p4d.24xlarge.

from sagemaker.pytorch import PyTorch estimator = PyTorch( ..., instance_count=2, instance_type="ml.p4d.24xlarge", # Activate distributed training with SMDDP distribution={ "pytorchddp": { "enabled": True } } # mpirun, activates SMDDP AllReduce OR AllGather # distribution={ "torch_distributed": { "enabled": True } } # torchrun, activates SMDDP AllGather # distribution={ "smdistributed": { "dataparallel": { "enabled": True } } } # mpirun, activates SMDDP AllReduce OR AllGather )

Para saber como preparar seu script de treinamento e iniciar uma tarefa de treinamento de paralelismo de dados distribuídos no SageMaker AI, consulte Executar um treinamento distribuído com a biblioteca de paralelismo de dados distribuídos do SageMaker AI.

Usar a biblioteca de paralelismo de modelos do SageMaker AI (SMP)

O SageMaker AI oferece a biblioteca de SMP e aceita várias técnicas de treinamento distribuído, como paralelismo de dados fragmentados, criação de pipelines, paralelismo de tensores, fragmentação de estado do otimizador, entre outras. Para saber mais sobre o que a biblioteca SMP oferece, consulte Principais atributos da Biblioteca de paralelismo de modelos do SageMaker.

Para usar a biblioteca de paralelismo de modelos do SageMaker AI, configure o parâmetro distribution dos estimadores de framework do SageMaker AI. Os estimadores de framework compatíveis são PyTorch e TensorFlow. O exemplo de código a seguir mostra como estruturar um estimador de framework para treinamento distribuído com a biblioteca de paralelismo de dados em duas instâncias ml.p4d.24xlarge.

from sagemaker.framework import Framework distribution={ "smdistributed": { "modelparallel": { "enabled":True, "parameters": { ... # enter parameter key-value pairs here } }, }, "mpi": { "enabled" : True, ... # enter parameter key-value pairs here } } estimator = Framework( ..., instance_count=2, instance_type="ml.p4d.24xlarge", distribution=distribution )

Para saber como adaptar seu script de treinamento, configurar parâmetros de distribuição na classe de estimator e iniciar uma tarefa de treinamento distribuído, consulte SageMaker AI's model parallelism library (consulte também Distributed Training APIs na documentação do SageMaker Python SDK).

Use frameworks de treinamento distribuído de código aberto

O SageMaker AI também oferece as opções a seguir para operar mpirun e torchrun no backend.

  • Para usar o PyTorch DistributedDataParallel (DDP) no SageMaker AI com o backend mpirun, adicione distribution={"pytorchddp": {"enabled": True}} ao estimador do PyTorch. Para ter mais informações, consulte também PyTorch Distributed Training e o argumento distribution do SageMaker AI PyTorch Estimator na documentação do SageMaker Python SDK.

    nota

    Essa opção está disponível para o PyTorch 1.12.0 e versões posteriores.

    from sagemaker.pytorch import PyTorch estimator = PyTorch( ..., instance_count=2, instance_type="ml.p4d.24xlarge", distribution={"pytorchddp": {"enabled": True}} # runs mpirun in the backend )
  • O SageMaker AI é compatível com o inicializador torchrun do PyTorch para treinamento distribuído em instâncias do Amazon EC2 baseadas em GPU, como P3 e P4, bem como no Trn1 com chips do AWS Trainium.

    Para usar o PyTorch DistributedDataParallel (DDP) no SageMaker AI com o backend torchrun, adicione distribution={"torch_distributed": {"enabled": True}} ao estimador do PyTorch.

    nota

    Essa opção está disponível para o PyTorch 1.13.0 e versões posteriores.

    O trecho de código a seguir mostra um exemplo de criação de um estimador do PyTorch no SageMaker AI para executar treinamento distribuído em duas instâncias ml.p4d.24xlarge com a opção de distribuição torch_distributed.

    from sagemaker.pytorch import PyTorch estimator = PyTorch( ..., instance_count=2, instance_type="ml.p4d.24xlarge", distribution={"torch_distributed": {"enabled": True}} # runs torchrun in the backend )

    Para ter mais informações, consulte Distributed PyTorch Training e o argumento distribution do SageMaker AI PyTorch Estimator na documentação do SageMaker Python SDK.

    Notas para treinamento distribuído no Trn1

    Uma instância Trn1 consiste em até 16 dispositivos Trainium, e cada dispositivo Trainium consiste em dois NeuronCores. Para as especificações dos dispositivos Trainium AWS, consulte a Arquitetura Trainium na Documentação do Neuron AWS.

    Para treinar nas instâncias com tecnologia Trainium, basta especificar o código da instância Trn1, ml.trn1.*, em sequência de caracteres para o argumento instance_type da classe de estimador do PyTorch do SageMaker AI. Para encontrar os tipos de instância Trn1 disponíveis, consulte Arquitetura Trn1 AWS na documentação do Neuron AWS.

    nota

    Atualmente, o Treinamento do SageMaker em instâncias Trn1 do Amazon EC2 está disponível somente para o framework do PyTorch nos contêineres de aprendizado profundo AWS para o PyTorch Neuron a partir da versão 1.11.0. Para encontrar uma lista completa das versões compatíveis com o PyTorch Neuron, consulte os contêineres Neuron no repositório do GitHub dos contêineres de aprendizado profundo AWS.

    Quando você inicia uma tarefa de treinamento em instâncias Trn1 usando o SageMaker Python SDK, o SageMaker AI automaticamente seleciona e executa o contêiner adequado dos contêineres do Neuron fornecidos pelos contêineres de deep learning da AWS. Os contêineres Neuron são pré-embalados com configurações e dependências do ambiente de treinamento para facilitar a adaptação do seu trabalho de treinamento à plataforma SageMaker Training e às instâncias Trn1 do Amazon EC2.

    nota

    Para executar uma tarefa de treinamento do PyTorch em instâncias Trn1 com o SageMaker AI, você deve modificar o script de treinamento para inicializar grupos de processos com o backend xla e usar o PyTorch/XLA. Para apoiar o processo de adoção do XLA, o Neuron SDK AWS fornece o PyTorch Neuron que usa o XLA para fazer a conversão das operações do PyTorch em instruções do Trainium. Para saber como modificar seu script de treinamento, consulte o Guia do desenvolvedor para treinamento com PyTorch Neuron (torch-neuronx) na documentação do Neuron AWS.

    Para ter mais informações, consulte Distributed Training with PyTorch Neuron on Trn1 instances e o argumento distribution do SageMaker AI PyTorch Estimator na documentação do SageMaker Python SDK.

  • Para usar o MPI no SageMaker AI, adicione distribution={"mpi": {"enabled": True}} ao seu estimador. A opção de distribuição MPI está disponível para as seguintes frameworks: MXNet, PyTorch e TensorFlow.

  • Para usar um servidor de parâmetros no SageMaker AI, adicione distribution={"parameter_server": {"enabled": True}} ao seu estimador. A opção de servidor de parâmetros está disponível para os seguintes frameworks: MXNet, PyTorch e TensorFlow.

    dica

    Para obter mais informações sobre como usar as opções do MPI e do servidor de parâmetros por framework, use os links a seguir para a documentação do SageMaker Python SDK.