Use a biblioteca SMDDP em seu script de treinamento do PyTorch - 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á.

Use a biblioteca SMDDP em seu script de treinamento do PyTorch

A partir da biblioteca de paralelismo de dados distribuídos do SageMaker AI (SMDDP) v1.4.0, você pode usar a biblioteca como uma opção de backend para o pacote distribuído do PyTorch. Para usar o SMDDP AllReduce e as operações coletivas AllGather, você só precisa importar a biblioteca SMDDP no início do seu script de treinamento e definir o SMDDP como o backend dos módulos distribuídos do PyTorch durante a inicialização do grupo de processos. Com uma única linha de especificação de backend, você pode manter todos os módulos distribuídos do PyTorch e manter o script inteiro de treinamento inalterado. Os trechos de código a seguir mostram como usar a biblioteca SMDDP como backend dos pacotes de treinamento distribuídos no PyTorch: Paralelo de dados distribuídos (DDP) do PyTorch, paralelismo de dados totalmente fragmentados (FSDP) do PyTorch, DeepSpeed e Megatron-DeepSpeed.

Para DDP ou FSDP do PyTorch

Inicialize o grupo de processos da seguinte maneira:

import torch.distributed as dist import smdistributed.dataparallel.torch.torch_smddp dist.init_process_group(backend="smddp")
nota

(Somente para trabalhos DDP do PyTorch) Atualmente, o backend smddp não oferece apoio à criação de grupos de subprocessos com a API torch.distributed.new_group(). Você não pode usar o backend smddp simultaneamente com outros backends de grupos de processos, como NCCL e Gloo.

Para DeepSpeed ou Megatron-DeepSpeed

Inicialize o grupo de processos da seguinte maneira:

import deepspeed import smdistributed.dataparallel.torch.torch_smddp deepspeed.init_distributed(dist_backend="smddp")
nota

Para usar o SMDDP AllGather com os iniciadores do mpirun (smdistributed e pytorchddp) em Lançamento de trabalhos de treinamento distribuídos com SMDDP com o uso do SageMaker Python SDK, você também precisa definir a seguinte variável de ambiente em seu script de treinamento:

export SMDATAPARALLEL_OPTIMIZE_SDP=true

Para obter orientação geral para escrever um script de treinamento do PyTorch FSDP, consulte Treinamento de modelo avançado com dados paralelos totalmente fragmentados (FSDP) na documentação do PyTorch.

Para obter orientação geral para escrever um script de treinamento do PyTorch DDP, consulte Conceitos básicos do paralelismo de dados distribuídos na documentação do PyTorch.

Depois de concluir a adaptação do seu script de treinamento, prossiga para Lançamento de trabalhos de treinamento distribuídos com SMDDP com o uso do SageMaker Python SDK.