Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Puede lanzar un entrenamiento distribuido añadiendo el distribution
argumento a los estimadores del marco de SageMaker IA, PyTorch
TensorFlow
Las siguientes opciones de inicio están disponibles para iniciar la formación distribuida. PyTorch
-
pytorchddp
— Esta opción ejecutampirun
y configura las variables de entorno necesarias para ejecutar la formación PyTorch distribuida en SageMaker IA. Para usar esta opción, pase el siguiente diccionario al parámetrodistribution
.{ "pytorchddp": { "enabled": True } }
-
torch_distributed
— Esta opción ejecutatorchrun
y configura las variables de entorno necesarias para ejecutar la formación PyTorch distribuida en SageMaker IA. Para usar esta opción, pase el siguiente diccionario al parámetrodistribution
.{ "torch_distributed": { "enabled": True } }
-
smdistributed
— Esta opción también funcionampirun
, pero con ellasmddprun
se configuran las variables de entorno necesarias para ejecutar la formación PyTorch distribuida en SageMaker IA.{ "smdistributed": { "dataparallel": { "enabled": True } } }
Si opta por sustituir AllGather
de NCCL por AllGather
de SMDDP, puede utilizar las tres opciones. Seleccione una opción que se adapte a su caso de uso.
Si opta por sustituir AllReduce
de NCCL por AllReduce
de SMDDP, debe elegir una de las opciones basadas en mpirun
: smdistributed
o pytorchddp
. También puede agregar opciones de MPI adicionales de la siguiente manera.
{
"pytorchddp": {
"enabled": True,
"custom_mpi_options": "-verbose -x NCCL_DEBUG=VERSION"
}
}
{
"smdistributed": {
"dataparallel": {
"enabled": True,
"custom_mpi_options": "-verbose -x NCCL_DEBUG=VERSION"
}
}
}
El siguiente ejemplo de código muestra la estructura básica de un PyTorch estimador con opciones de entrenamiento distribuidas.
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 Lightning y sus bibliotecas de utilidades, como Lightning Bolts, no vienen preinstaladas en la IA. SageMaker PyTorch DLCs Cree el siguiente archivo requirements.txt
y guárdelo en el directorio de origen donde guarda el script de entrenamiento.
# requirements.txt
pytorch-lightning
lightning-bolts
Por ejemplo, el directorio con estructura de árbol debería tener el siguiente aspecto.
├──
pytorch_training_launcher_jupyter_notebook.ipynb
└── sub-folder-for-your-code ├──adapted-training-script.py
└──requirements.txt
Para obtener más información sobre cómo especificar el directorio de origen para colocar el requirements.txt
archivo junto con el guion de entrenamiento y el envío de un trabajo, consulte Uso de bibliotecas de terceros
Consideraciones para activar las operaciones colectivas de SMDDP y utilizar las opciones del iniciador de entrenamiento distribuido adecuadas
-
Actualmente,
AllReduce
de SMDDP yAllGather
de SMDDP no son compatibles entre sí. -
AllReduce
de SMDDP se activa de forma predeterminada cuando se utilizasmdistributed
opytorchddp
, que son iniciadores basados enmpirun
y se utilizaAllGather
de NCCL. -
AllGather
de SMDDP se activa de forma predeterminada cuando se utiliza el iniciador detorch_distributed
yAllReduce
recurre a NCCL. -
AllGather
de SMDDP también se puede activar cuando se utilizan los iniciadores basados enmpirun
con una variable de entorno adicional configurada de la siguiente manera.export SMDATAPARALLEL_OPTIMIZE_SDP=true