View a markdown version of this page

Comece com o treinamento distribuído na 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á.

Comece com o treinamento distribuído na Amazon SageMaker AI

A página a seguir fornece informações sobre as etapas necessárias para começar a usar o treinamento distribuído na 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 de SageMaker IA são otimizadas para o ambiente de SageMaker treinamento, ajudam a adaptar suas tarefas de treinamento distribuído à SageMaker IA e melhoram a velocidade e o rendimento do treinamento. As bibliotecas oferecem estratégias de treinamento tanto para paralelismo de dados quanto para paralelismo de modelos. Eles combinam tecnologias de software e hardware para melhorar as comunicações entre GPUs e entre nós e ampliam os recursos de treinamento da SageMaker IA com opções integradas que exigem alterações mínimas de código em seus scripts de treinamento. 

Antes de começar

SageMaker O treinamento oferece suporte 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ê use a ModelTrainer classe com PyTorch e TensorFlow no SDK do SageMaker Python, que são os lançadores de tarefas de treinamento com várias opções de treinamento distribuídas. Quando você cria um ModelTrainer objeto, o objeto configura a infraestrutura de treinamento distribuído, executa a CreateTrainingJob API no back-end, localiza a região em que sua sessão atual está sendo executada e usa um dos contêineres pré-criados de aprendizado AWS profundo pré-fabricados com várias bibliotecas, incluindo estruturas de aprendizado profundo, estruturas de treinamento distribuído e o driver EFA. https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html Se quiser montar um sistema de arquivos FSx nas instâncias de treinamento, você precisa passar sua sub-rede VPC e ID do grupo de segurança para o. ModelTrainer

Antes de executar seu trabalho de treinamento distribuído em SageMaker IA, leia as seguintes orientações gerais 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, certifique-se de configurar instâncias, sub-rede VPC e armazenamento de dados na mesma Região da AWS 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 você precisa executar trabalhos de treinamento distribuído em vários nós para treinar modelos grandes, como modelos de linguagem grande (LLMs) e modelos de difusão, que exigem uma comutação mais rápida entre nós, recomendamos EFA-enabled instâncias de GPU suportadas pela IA. SageMaker Especialmente, para obter o trabalho de treinamento distribuído de melhor desempenho em SageMaker IA, 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.

Use a biblioteca de paralelismo de dados distribuídos de SageMaker IA (SMDDP)

A biblioteca SMDDP melhora a comunicação entre os nós com implementações AllReduce e operações de comunicação AllGather coletiva que são otimizadas para infraestrutura de AWS rede e topologia de instância do Amazon SageMaker AI ML. Você pode usar a biblioteca SMDDP como back-end de pacotes de treinamento PyTorch-based distribuídos: dados PyTorch distribuídos paralelos (DDP), paralelismo de dados PyTorch totalmente fragmentados (FSDP) e. DeepSpeed 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.train import ModelTrainer from sagemaker.train.configs import Compute from sagemaker.train.distributed import Torchrun model_trainer = ModelTrainer( ..., compute=Compute(instance_count=2, instance_type="ml.p4d.24xlarge"), # Activate distributed training with SMDDP distributed=Torchrun() )

Para saber como preparar seu roteiro de treinamento e iniciar um trabalho de treinamento distribuído com dados paralelos sobre SageMaker IA, consulte. Execute treinamento distribuído com a biblioteca de paralelismo de dados distribuídos de SageMaker IA

Use a biblioteca de paralelismo de modelos de SageMaker IA (SMP)

SageMaker A IA fornece a biblioteca SMP e oferece suporte a várias técnicas de treinamento distribuído, como paralelismo de dados fragmentados, pipelining, paralelismo de tensores, fragmentação de estado do otimizador e muito mais. Para saber mais sobre o que a biblioteca SMP oferece, consulte Principais características da biblioteca de SageMaker paralelismo de modelos.

Para usar a biblioteca de paralelismo de modelos da SageMaker IA, configure o distribution parâmetro dos estimadores da estrutura de SageMaker IA.

A ModelTrainer classe suporta PyTorch TensorFlow e. O exemplo de código a seguir mostra como construir um treinamento ModelTrainer para distribuição com a biblioteca de paralelismo de modelos em duas instâncias. ml.p4d.24xlarge

from sagemaker.train import ModelTrainer from sagemaker.train.configs import Compute from sagemaker.train.distributed import Torchrun model_trainer = ModelTrainer( ..., compute=Compute(instance_count=2, instance_type="ml.p4d.24xlarge"), distributed=Torchrun() )

Para saber como adaptar seu script de treinamento, configurar parâmetros de distribuição na estimator classe e iniciar um trabalho de treinamento distribuído, consulte a biblioteca de paralelismo de modelos da SageMaker IA (consulte também APIs de treinamento distribuído na documentação do SDK do SageMaker Python).

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

SageMaker A IA também oferece suporte às seguintes opções para operar mpirun e torchrun no back-end.

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

    nota

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

    from sagemaker.train import ModelTrainer from sagemaker.train.configs import Compute from sagemaker.train.distributed import Torchrun model_trainer = ModelTrainer( ..., compute=Compute(instance_count=2, instance_type="ml.p4d.24xlarge"), distributed=Torchrun() # runs torchrun in the backend )
  • SageMaker A IA oferece suporte ao PyTorch torchrun lançador para treinamento distribuído em instâncias do GPU-based Amazon EC2, como P3 e P4, bem como em Trn1 alimentado pelo dispositivo Trainium. AWS

    Para usar PyTorch DistributedDataParallel (DDP) na SageMaker IA com o torchrun back-end, adicione distribution={"torch_distributed": {"enabled": True}} ao PyTorch estimador.

    nota

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

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

    from sagemaker.train import ModelTrainer from sagemaker.train.configs import Compute from sagemaker.train.distributed import Torchrun model_trainer = ModelTrainer( ..., compute=Compute(instance_count=2, instance_type="ml.p4d.24xlarge"), distributed=Torchrun() # runs torchrun in the backend )

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

    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 obter as especificações dos dispositivos AWS Trainium, consulte Arquitetura Trainium na documentação do AWS Neuron.

    Para treinar nas Trainium-powered instâncias, você só precisa especificar o código da instância Trn1,ml.trn1.*, em string para o instance_type argumento da classe PyTorch estimadora de SageMaker IA. Para encontrar os tipos de instância Trn1 disponíveis, consulte Arquitetura Trn1 AWS na documentação do Neuron AWS .

    nota

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

    Quando você inicia um trabalho de treinamento em instâncias Trn1 usando o SDK do SageMaker Python, a SageMaker IA seleciona e executa automaticamente o contêiner certo a partir dos contêineres Neuron fornecidos pelo Deep Learning Containers. AWS Os contêineres Neuron são pré-embalados com configurações e dependências do ambiente de treinamento para facilitar a adaptação de seu trabalho de treinamento à plataforma de treinamento e às instâncias SageMaker Trn1 do Amazon EC2.

    nota

    Para executar seu trabalho de PyTorch treinamento em instâncias Trn1 com SageMaker IA, você deve modificar seu script de treinamento para inicializar grupos de processos com o xla back-end e usar. PyTorch/XLA Para apoiar o processo de adoção do XLA, o AWS Neuron SDK fornece o PyTorch Neuron que usa o XLA para fazer a conversão de PyTorch operações em instruções 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 AWS Neuron.

    Para obter mais informações, consulte Treinamento distribuído com PyTorch Neuron em instâncias Trn1 e o distribution argumento do SageMaker AI PyTorch Estimator na documentação do SDK do Python. SageMaker

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

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

    dica

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