Use os estimadores da PyTorch estrutura no SDK do Python SageMaker - 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 os estimadores da PyTorch estrutura no SDK do Python SageMaker

Você pode iniciar o treinamento distribuído adicionando o distribution argumento aos estimadores da estrutura de SageMaker IA ou. PyTorchTensorFlow Para obter mais detalhes, escolha uma das estruturas suportadas pela biblioteca de paralelismo de dados distribuídos de SageMaker IA (SMDDP) entre as seleções a seguir.

PyTorch

As seguintes opções de lançador estão disponíveis para iniciar o treinamento PyTorch distribuído.

  • pytorchddp— Essa opção executa mpirun e configura as variáveis de ambiente necessárias para executar o treinamento PyTorch distribuído em SageMaker IA. Para usar essa opção, transfira o seguinte dicionário para o parâmetro distribution:

    { "pytorchddp": { "enabled": True } }
  • torch_distributed— Essa opção executa torchrun e configura as variáveis de ambiente necessárias para executar o treinamento PyTorch distribuído em SageMaker IA. Para usar essa opção, transfira o seguinte dicionário para o parâmetro distribution:

    { "torch_distributed": { "enabled": True } }
  • smdistributed— Essa opção também é executadampirun, mas com smddprun isso configura as variáveis de ambiente necessárias para executar o treinamento PyTorch distribuído em SageMaker IA.

    { "smdistributed": { "dataparallel": { "enabled": True } } }

Se você optar por substituir o NCCL AllGather pelo SMDDP AllGather, poderá usar todas as três opções. Escolha uma opção que seja mais adequada ao caso de uso.

Se você optar por substituir o NCCL AllReduce pelo SMDDP AllReduce, deverá escolher uma das opções encontradas em mpirun: smdistributed ou pytorchddp. Você também pode adicionar outras opções de MPI da seguinte forma:

{ "pytorchddp": { "enabled": True, "custom_mpi_options": "-verbose -x NCCL_DEBUG=VERSION" } }
{ "smdistributed": { "dataparallel": { "enabled": True, "custom_mpi_options": "-verbose -x NCCL_DEBUG=VERSION" } } }

O exemplo de código a seguir mostra a estrutura básica de um PyTorch estimador com opções de treinamento distribuídas.

from sagemaker.pytorch import PyTorch pt_estimator = PyTorch( base_job_name="training_job_name_prefix", source_dir="subdirectory-to-your-code", entry_point="adapted-training-script.py", role="SageMakerRole", py_version="py310", framework_version="2.0.1",     # For running a multi-node distributed training job, specify a value greater than 1     # Example: 2,3,4,..8 instance_count=2,     # Instance types supported by the SageMaker AI data parallel library: # ml.p4d.24xlarge, ml.p4de.24xlarge 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 ) pt_estimator.fit("s3://bucket/path/to/training/data")
nota

PyTorch O Lightning e suas bibliotecas de utilitários, como o Lightning Bolts, não estão pré-instalados na IA. SageMaker PyTorch DLCs Crie o arquivo requirements.txt a seguir e salve no diretório de origem em que você salva o script de treinamento.

# requirements.txt pytorch-lightning lightning-bolts

Por exemplo, o diretório de árvore estruturada deve ser semelhante ao seguinte:

├── pytorch_training_launcher_jupyter_notebook.ipynb └── sub-folder-for-your-code ├── adapted-training-script.py └── requirements.txt

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 AI Python SDK.

Considerações para ativar as operações coletivas do SMDDP e usar as opções corretas de inicializador de treinamento distribuído
  • SMDDP AllReduce e SMDDP AllGather não são mutuamente compatíveis no momento.

  • O SMDDP AllReduce é ativado por padrão ao usar smdistributed ou pytorchddp, que são iniciadores encontrados no mpirun, e é usado o NCCL AllGather.

  • O SMDDP AllGather é ativado por padrão ao usar o iniciador torch_distributed e AllReduce volta para o NCCL.

  • O SMDDP AllGather pode ser ativado também com o uso dos iniciadores encontrados em mpirun com uma variável de ambiente adicional definida da seguinte forma:

    export SMDATAPARALLEL_OPTIMIZE_SDP=true
TensorFlow
Importante

A biblioteca SMDDP interrompeu o suporte TensorFlow e não está mais disponível para versões TensorFlow posteriores à DLCs v2.11.0. Para saber mais sobre TensorFlow DLCs a biblioteca SMDDP instalada, consulte. TensorFlow (obsoleto)

from sagemaker.tensorflow import TensorFlow tf_estimator = TensorFlow( base_job_name = "training_job_name_prefix", entry_point="adapted-training-script.py", role="SageMakerRole", framework_version="2.11.0", py_version="py38",     # For running a multi-node distributed training job, specify a value greater than 1 # Example: 2,3,4,..8 instance_count=2,     # Instance types supported by the SageMaker AI data parallel library: # ml.p4d.24xlargeml.p3dn.24xlarge, and ml.p3.16xlarge instance_type="ml.p3.16xlarge",     # Training using the SageMaker AI data parallel distributed training strategy distribution={ "smdistributed": { "dataparallel": { "enabled": True } } } ) tf_estimator.fit("s3://bucket/path/to/training/data")