

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ê 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 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, 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 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 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 compatíveis com IA. SageMaker ](https://aws.amazon.com/about-aws/whats-new/2021/05/amazon-sagemaker-supports-elastic-fabric-adapter-distributed-training/) Especialmente, para obter o trabalho de treinamento distribuído de maior desempenho em SageMaker IA, recomendamos [instâncias P4d e P4de equipadas com GPUs NVIDIA A100](https://aws.amazon.com/ec2/instance-types/p4/). 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](https://docs.aws.amazon.com/fsx/latest/LustreGuide/what-is.html) 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 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 PyTorch-based distribuídos](https://docs.aws.amazon.com/sagemaker/latest/dg/data-parallel-modify-sdp-pt.html): [paralelo de PyTorch dados distribuídos (DDP), paralelismo](https://pytorch.org/docs/stable/notes/ddp.html) de [dados PyTorch totalmente fragmentado (FSDP) e. [DeepSpeed[Megatron-DeepSpeed](https://github.com/microsoft/Megatron-DeepSpeed)](https://github.com/microsoft/DeepSpeed)](https://pytorch.org/docs/stable/fsdp.html) 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 [APIs de treinamento distribuído na](https://sagemaker.readthedocs.io/en/stable/api/training/distributed.html#the-sagemaker-distributed-model-parallel-library) documentação do SDK do PythonSageMaker ).*

**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 do GPU-based Amazon EC2, como P3 e P4, bem como Trn1 desenvolvido pelo 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 Trainium-powered instâncias, você só precisa especificar o código da instância Trn1,`ml.trn1.*`, na sequência de caracteres do `instance_type` argumento da classe do PyTorch estimador de SageMaker IA. 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 o uso. [PyTorch/XLA](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, 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 do MPI e do servidor de parâmetros por estrutura, use os links a seguir para a documentação do SDK do *SageMaker Python*.  
O [MXNet Distributed Training](https://sagemaker.readthedocs.io/en/stable/frameworks/mxnet/using_mxnet.html#distributed-training) e o argumento do AI [SageMaker MXNet Estimator](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).