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

Use a SMDDP biblioteca em seu script de treinamento do PyTorch Lightning

Se quiser trazer seu script de treinamento do PyTorchLightning e executar um trabalho de treinamento paralelo de dados distribuídos SageMaker, você pode executar o trabalho de treinamento com o mínimo de alterações em seu script de treinamento. As mudanças necessárias incluem o seguinte: importar os PyTorch módulos da smdistributed.dataparallel biblioteca, configurar as variáveis de ambiente para que o PyTorch Lightning aceite as variáveis de SageMaker ambiente predefinidas pelo kit de ferramentas de SageMaker treinamento e ative a SMDDP biblioteca configurando o back-end do grupo de processos como. "smddp" Para saber mais, siga as instruções a seguir que detalham as etapas com exemplos de código.

nota

O suporte ao PyTorch Lightning está disponível na biblioteca paralela de SageMaker dados v1.5.0 e versões posteriores.

  1. Importe a biblioteca pytorch_lightning e os módulos smdistributed.dataparallel.torch.

    import lightning as pl import smdistributed.dataparallel.torch.torch_smddp
  2. Instancie o. LightningEnvironment

    from lightning.fabric.plugins.environments.lightning import LightningEnvironment env = LightningEnvironment() env.world_size = lambda: int(os.environ["WORLD_SIZE"]) env.global_rank = lambda: int(os.environ["RANK"])
  3. Para PyTorch DDP — Crie um objeto da DDPStrategyclasse com "smddp" for process_group_backend e "gpu" for e passe isso para accelerator a classe Trainer.

    import lightning as pl from lightning.pytorch.strategies import DDPStrategy ddp = DDPStrategy( cluster_environment=env, process_group_backend="smddp", accelerator="gpu" ) trainer = pl.Trainer( max_epochs=200, strategy=ddp, devices=num_gpus, num_nodes=num_nodes )

    Para PyTorch FSDP — Crie um objeto da FSDPStrategyclasse (com a política de empacotamento de sua escolha) com "smddp" for process_group_backend e "gpu" for e passe isso para accelerator a classe Trainer.

    import lightning as pl from lightning.pytorch.strategies import FSDPStrategy from functools import partial from torch.distributed.fsdp.wrap import size_based_auto_wrap_policy policy = partial( size_based_auto_wrap_policy, min_num_params=10000 ) fsdp = FSDPStrategy( auto_wrap_policy=policy, process_group_backend="smddp", cluster_environment=env ) trainer = pl.Trainer( max_epochs=200, strategy=fsdp, devices=num_gpus, num_nodes=num_nodes )

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

nota

Ao criar um SageMaker PyTorch estimador e enviar uma solicitação de trabalho de treinamentoLançamento de trabalhos de treinamento distribuídos com o SMDDP uso do SageMaker Python SDK, você precisa fornecer requirements.txt para instalação pytorch-lightning e lightning-bolts no contêiner de SageMaker PyTorch treinamento.

# requirements.txt pytorch-lightning lightning-bolts

Para obter mais informações sobre como especificar o diretório de origem para colocar o requirements.txt arquivo junto com seu script de treinamento e o envio de um trabalho, consulte Uso de bibliotecas de terceiros na documentação do Amazon SageMaker SDK Python.