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 PyTorchCreateTrainingJob 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
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)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 PyTorchml.p4d.24xlarge.
from sagemaker.frameworkimportFrameworkdistribution={ "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
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, adicionedistribution={"pytorchddp": {"enabled": True}}ao estimador do PyTorch. Para ter mais informações, consulte também PyTorch Distributed Traininge o argumento distributiondo SageMaker AI PyTorch Estimatorna 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
torchrundo PyTorchpara 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, adicionedistribution={"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.24xlargecom a opção de distribuiçãotorch_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 distributiondo SageMaker AI PyTorch Estimatorna 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 argumentoinstance_typeda classe de estimador do PyTorch do SageMaker AI. Para encontrar os tipos de instância Trn1 disponíveis, consulte Arquitetura Trn1 AWSna 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
xlae 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 distributiondo SageMaker AI PyTorch Estimatorna 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.
-
Treinamento distribuído do MXNet
e o argumento distributiondo estimador do MXNet do SageMaker AI -
Treinamento distribuído do PyTorch
e o argumento distributiondo estimador do PyTorch do SageMaker AI -
Treinamento distribuído do TensorFlow
e o argumento distributiondo estimador do TensorFlow do SageMaker AI.
-