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 de PyTorch estrutura no SDK do Python SageMaker
Você pode iniciar o treinamento distribuído adicionando o distribution argumento ao estimador da PyTorch
nota
O SMDDP descontinuou o TensorFlow suporte após a v2.11.0. Para treinamento distribuído com TensorFlow, use estratégias alternativas de distribuição.
As seguintes opções de lançador estão disponíveis para iniciar o treinamento PyTorch distribuído.
-
pytorchddp— Essa opção executampirune 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âmetrodistribution:{ "pytorchddp": { "enabled": True } } -
torch_distributed— Essa opção executatorchrune 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âmetrodistribution:{ "torch_distributed": { "enabled": True } } -
smdistributed— Essa opção também é executadampirun, mas comsmddprunisso 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 ModelTrainer com opções de treinamento distribuídas.
from sagemaker.train import ModelTrainer from sagemaker.train.configs import SourceCode, Compute, InputData from sagemaker.core import image_uris # Retrieve the training image for the desired PyTorch version training_image = image_uris.retrieve( framework="pytorch", region="us-west-2", version="2.0.1", py_version="py310", instance_type="ml.p4d.24xlarge", image_scope="training" ) source_code = SourceCode( source_dir="subdirectory-to-your-code", entry_script="adapted-training-script.py" ) compute = Compute( # 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" ) pt_model_trainer = ModelTrainer( training_image=training_image, base_job_name="training_job_name_prefix", source_code=source_code, role="SageMakerRole", compute=compute, # 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_model_trainer.train(input_data_config=[ InputData(channel_name="training", data_source="s3://bucket/path/to/training/data") ])
nota
PyTorch O Lightning e suas bibliotecas de utilitários, como Lightning Bolts, não estão pré-instalados nos DLCs de IA. SageMaker PyTorch 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 Usando bibliotecas de terceiros
Considerações para ativar as operações coletivas do SMDDP e usar as opções corretas de inicializador de treinamento distribuído
-
SMDDP
AllReducee SMDDPAllGathernão são mutuamente compatíveis no momento. -
O SMDDP
AllReduceé ativado por padrão ao usarsmdistributedoupytorchddp, que são iniciadores encontrados nompirun, e é usado o NCCLAllGather. -
O SMDDP
AllGatheré ativado por padrão ao usar o iniciadortorch_distributedeAllReducevolta para o NCCL. -
O SMDDP
AllGatherpode ser ativado também com o uso dos iniciadores encontrados emmpiruncom uma variável de ambiente adicional definida da seguinte forma:export SMDATAPARALLEL_OPTIMIZE_SDP=true