

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 name="distributed-training-get-started"></a>

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](distributed-training.md#distributed-training-basic-concepts).

As bibliotecas de treinamento distribuído de SageMaker IA são otimizadas para o ambiente de SageMaker treinamento, ajudam a adaptar seus trabalhos de treinamento distribuídos à SageMaker IA e melhoram a velocidade e a produtividade 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
<a name="distributed-training-before-getting-started"></a>

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 [PyTorch](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html#pytorch-estimator)e [TensorFlow](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/sagemaker.tensorflow.html#tensorflow-estimator)no SDK do SageMaker Python, 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 uma infraestrutura de treinamento distribuída, executa a `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.](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html) Se você quiser montar um sistema de FSx arquivos nas instâncias de treinamento, precisará passar sua sub-rede VPC e o ID do grupo de segurança para o estimador. Antes de executar seu trabalho de treinamento distribuído em SageMaker IA, leia as orientações gerais a seguir sobre a configuração básica da infraestrutura.

### Zonas de disponibilidade e backplane de rede
<a name="availability-zones"></a>

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, 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, sub-rede VPC e armazenamento de dados na Região da AWS mesma zona de disponibilidade.

### Instâncias de GPU com rede mais rápida e armazenamento de alto throughput
<a name="optimized-GPU"></a>

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 instâncias de GPU habilitadas para [EFA suportadas pela IA](https://aws.amazon.com/about-aws/whats-new/2021/05/amazon-sagemaker-supports-elastic-fabric-adapter-distributed-training/). SageMaker Especialmente, para obter o trabalho de treinamento distribuído de melhor desempenho em SageMaker IA, recomendamos [instâncias P4d e P4de equipadas com NVIDIA A100](https://aws.amazon.com/ec2/instance-types/p4/). 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](https://docs.aws.amazon.com/fsx/latest/LustreGuide/what-is.html), 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 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 a infraestrutura de AWS rede e a topologia de instância do Amazon SageMaker AI ML. [Você pode usar a [biblioteca SMDDP como back-end de pacotes de treinamento distribuídos PyTorch baseados: distributed PyTorch ](https://docs.aws.amazon.com/sagemaker/latest/dg/data-parallel-modify-sdp-pt.html)[data parallel (DDP), PyTorch full [sharded data paralelism (](https://pytorch.org/docs/stable/fsdp.html)FSDP)](https://pytorch.org/docs/stable/notes/ddp.html) e Megatron-. [DeepSpeed](https://github.com/microsoft/DeepSpeed)DeepSpeed](https://github.com/microsoft/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 um trabalho de treinamento paralelo de dados distribuídos sobre SageMaker IA, consulte. [Execute treinamento distribuído com a biblioteca de paralelismo de dados distribuídos de SageMaker IA](data-parallel.md)

**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](model-parallel-core-features.md).

Para usar a biblioteca de paralelismo de modelos da SageMaker AI, configure o `distribution` parâmetro dos estimadores da estrutura de SageMaker IA. Os estimadores de estrutura suportados são e. [PyTorch[TensorFlow](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/sagemaker.tensorflow.html#tensorflow-estimator)](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html#pytorch-estimator) 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 da SageMaker AI](model-parallel.md) (consulte também [Treinamento distribuído na documentação do SDK APIs](https://sagemaker.readthedocs.io/en/stable/api/training/distributed.html#the-sagemaker-distributed-model-parallel-library) do *SageMaker Python*).

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

SageMaker A IA também oferece suporte às seguintes opções de operação `mpirun` e `torchrun` no back-end.
+ Para usar [PyTorch DistributedDataParallel (DDP)](https://pytorch.org/docs/master/generated/torch.nn.parallel.DistributedDataParallel.html) 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 [treinamento PyTorch distribuído](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#distributed-pytorch-training) e do [SageMaker AI PyTorch Estimator](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html#pytorch-estimator) na documentação do SDK para *SageMaker Python*.
**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 [A IA oferece suporte ao [PyTorch `torchrun`lançador](https://pytorch.org/docs/stable/elastic/run.html) para treinamento distribuído em instâncias Amazon EC2 baseadas em GPU, como P3 e P4, bem como Trn1 com tecnologia do dispositivo Trainium.AWS](https://aws.amazon.com/machine-learning/trainium/) 

  Para usar [PyTorch DistributedDataParallel (DDP)](https://pytorch.org/docs/master/generated/torch.nn.parallel.DistributedDataParallel.html) 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.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 o `distribution` argumento do [ PyTorch treinamento distribuído](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#distributed-pytorch-training) e do [SageMaker AI PyTorch Estimator](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html#pytorch-estimator) na documentação do SDK para *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](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/general/arch/neuron-hardware/neuroncores-arch.html#neuroncores-v2-arch) *Para especificações dos dispositivos AWS Trainium, consulte [Arquitetura Trainium](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/general/arch/neuron-hardware/trn1-arch.html#id2) 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.*`, na sequência de caracteres do `instance_type` argumento da classe de estimador de IA. SageMaker PyTorch Para encontrar os tipos de instância Trn1 disponíveis, consulte [Arquitetura Trn1 AWS](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/general/arch/neuron-hardware/trn1-arch.html#aws-trn1-arch) 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 AWS Deep Learning Containers for Neuron a partir da versão 1.11.0. PyTorch Para encontrar uma lista completa das versões compatíveis do PyTorch Neuron, consulte [Neuron Containers](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#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 dos contêineres [Neuron fornecidos pelo](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#neuron-containers) 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 à 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 /XLA. PyTorch](https://pytorch.org/xla/release/1.12/index.html) 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 operações em instruções do PyTorch Trainium. Para saber como modificar seu script de treinamento, consulte o [Guia do desenvolvedor para treinamento com PyTorch Neuron (`torch-neuronx`) na documentação](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/frameworks/torch/torch-neuronx/programming-guide/training/pytorch-neuron-programming-guide.html) do *AWS Neuron.*

  *Para obter mais informações, consulte [Treinamento distribuído com PyTorch neurônio em instâncias Trn1](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#id24) e o argumento do [SageMaker AI PyTorch Estimator](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html#pytorch-estimator) `distribution` na documentação do SDK para 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 PyTorch, e. 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 do MPI e do servidor de parâmetros por estrutura, use os links a seguir para a documentação do SDK do *SageMaker Python*.  
[MXNet Treinamento distribuído](https://sagemaker.readthedocs.io/en/stable/frameworks/mxnet/using_mxnet.html#distributed-training) e [SageMaker argumento do MXNet estimador de IA](https://sagemaker.readthedocs.io/en/stable/frameworks/mxnet/sagemaker.mxnet.html#mxnet-estimator) `distribution`
[PyTorch Treinamento distribuído](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#distributed-pytorch-training) e [SageMaker argumento do PyTorch estimador de IA](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html#pytorch-estimator) `distribution`
[TensorFlow Treinamento distribuído](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/using_tf.html#distributed-training) e [SageMaker argumento do TensorFlow estimador de `distribution` IA](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/sagemaker.tensorflow.html#tensorflow-estimator).