Comece com o treinamento distribuído na Amazon SageMaker - Amazon SageMaker

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

A página a seguir fornece informações sobre as etapas necessárias para começar com o treinamento distribuído na Amazon SageMaker. 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 SageMaker distribuídas são otimizadas para o ambiente de SageMaker treinamento, ajudam a adaptar seus trabalhos de treinamento distribuídos e melhoram a velocidade e a produtividade do treinamento. SageMaker 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 nós GPU e entre nós e ampliam os recursos SageMaker de treinamento com opções integradas que exigem o mínimo de alterações 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 as classes do estimador de estrutura, como PyTorche TensorFlowno SageMaker PythonSDK, que são os inicializadores de trabalhos de treinamento com várias opções de treinamento distribuídas. Quando você cria um objeto estimador, o objeto configura a infraestrutura de treinamento distribuída, a executa CreateTrainingJob API no back-end, encontra a região em que sua sessão atual está sendo executada e extrai um dos contêineres de aprendizado AWS profundo pré-criados, pré-empacotados com várias bibliotecas, incluindo estruturas de aprendizado profundo, estruturas de treinamento distribuídas e o driver. EFA Se você quiser montar um sistema de FSx arquivos nas instâncias de treinamento, precisará passar o ID da VPC sub-rede e do grupo de segurança para o estimador. Antes de executar seu trabalho de treinamento distribuído no SageMaker, 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 lêem os dados de treinamento e como compartilham informações entre si. Por exemplo, quando você executa um trabalho de treinamento paralelo de dados distribuídos, vários fatores, como a comunicação entre os nós de um cluster computacional para executar a AllReduce operação e a transferência de dados entre os nós e o armazenamento de dados no Amazon Simple Storage Service ou no Amazon for Lustre, desempenham um papel crucial FSx para obter um uso ideal dos recursos computacionais e uma velocidade de treinamento mais rápida. Para reduzir a sobrecarga de comunicação, certifique-se de configurar instâncias, VPC sub-rede e armazenamento de dados na mesma Região da AWS zona de disponibilidade.

GPUinstâncias com rede mais rápida e armazenamento de alto rendimento

Tecnicamente, você pode usar qualquer instância para treinamento distribuído. Para casos em que você precisa executar trabalhos de treinamento distribuído de vários nós para treinar modelos grandes, como modelos de linguagem grandes (LLMs) e modelos de difusão, que exigem uma comutação mais rápida entre nós, recomendamos EFA instâncias habilitadas com suporte de. GPU SageMaker Especialmente, para obter o trabalho de treinamento distribuído com o melhor desempenho SageMaker, recomendamos instâncias P4d e P4de equipadas com A100. NVIDIA GPUs 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 for Lustre, que fornece alto rendimento para armazenar conjuntos de dados de treinamento e pontos de verificação de modelos.

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

A SMDDP biblioteca 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 a infraestrutura de AWS rede e a topologia de instâncias do Amazon SageMaker ML. Você pode usar a SMDDPbiblioteca como back-end de pacotes de treinamento distribuídos PyTorch baseados: PyTorch distributed data parallel (DDP), full PyTorch sharded data paralelism (FSDP) e Megatron-. DeepSpeedDeepSpeed O exemplo de código a seguir mostra como definir um PyTorch estimador para iniciar um trabalho de treinamento distribuído em duas ml.p4d.24xlarge instâncias.

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 um trabalho de treinamento paralelo de dados distribuídos em SageMaker, consulte. Execute treinamento distribuído com a biblioteca de SageMaker paralelismo de dados distribuídos

Use a biblioteca de paralelismo de SageMaker modelos () SMP

SageMaker fornece a SMP biblioteca 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 SMP biblioteca oferece, consultePrincipais características da biblioteca de SageMaker paralelismo de modelos.

Para usar a biblioteca SageMaker de paralelismo de modelos, configure o distribution parâmetro dos estimadores da SageMaker estrutura. Os estimadores de estrutura suportados são e. PyTorchTensorFlow 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 estimator classe e iniciar um trabalho de treinamento distribuído, consulte a biblioteca de paralelismo de modelos SageMaker da (consulte também Treinamento distribuído na documentação APIs do PythonSageMaker ). SDK

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

SageMaker também suporta as seguintes opções de operação mpirun e torchrun no back-end.

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

    nota

    Essa opção está disponível para 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 )
  • SageMaker oferece suporte ao PyTorch torchrunlançador para treinamento distribuído em EC2 instâncias Amazon GPU baseadas, como P3 e P4, bem como Trn1 desenvolvido pelo dispositivo Trainium.AWS

    Para usar PyTorch DistributedDataParallel (DDP) SageMaker 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 SageMaker PyTorch estimador para executar treinamento distribuído em duas ml.p4d.24xlarge instâncias 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 obter mais informações, consulte PyTorch Treinamento distribuído e o distribution argumento do SageMaker PyTorch Estimator na documentação do PythonSageMaker . 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 especificações dos dispositivos AWS Trainium, consulte Arquitetura Trainium na documentação do AWS Neuron.

    Para treinar nas instâncias com tecnologia Trainium, você só precisa especificar o código da instância Trn1,ml.trn1.*, em sequência de caracteres para o instance_type argumento da classe estimadora. SageMaker PyTorch 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 Amazon EC2 Trn1 está disponível somente para a PyTorch estrutura nos AWS Deep Learning Containers for 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 SageMaker PythonSDK, seleciona e executa SageMaker automaticamente o contêiner certo dos Neuron Containers 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 do seu trabalho de treinamento à SageMaker plataforma de treinamento e às instâncias Amazon Trn1. EC2

    nota

    Para executar seu trabalho de PyTorch treinamento em instâncias Trn1 com SageMaker, 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 XLA adoção, o AWS Neuron SDK fornece o PyTorch Neuron que usa XLA para fazer a conversão de PyTorch operações 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 AWS Neuron.

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

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

  • Para usar um servidor de parâmetros em SageMaker, 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 do servidor de parâmetros MPI e por estrutura, use os links a seguir para a documentação do SageMaker Python SDK.