Usa los estimadores del PyTorch framework en Python SageMaker SDK - Amazon SageMaker

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.

Usa los estimadores del PyTorch framework en Python SageMaker SDK

Puede lanzar un entrenamiento distribuido añadiendo el distribution argumento a los estimadores del SageMaker marco, PyTorcho. TensorFlow Para obtener más información, elija uno de los marcos compatibles con la biblioteca de paralelismo de datos SageMaker distribuidos (SMDDP) de las siguientes selecciones.

PyTorch

Las siguientes opciones de inicio están disponibles para iniciar la formación distribuida. PyTorch

  • pytorchddp— Esta opción ejecuta mpirun y configura las variables de entorno necesarias para ejecutar la formación PyTorch distribuida. SageMaker Para usar esta opción, pase el siguiente diccionario al distribution parámetro.

    { "pytorchddp": { "enabled": True } }
  • torch_distributed— Esta opción ejecuta torchrun y configura las variables de entorno necesarias para ejecutar el entrenamiento PyTorch distribuido SageMaker. Para usar esta opción, pase el siguiente diccionario al distribution parámetro.

    { "torch_distributed": { "enabled": True } }
  • smdistributed— Esta opción también se ejecutampirun, pero con smddprun ella se configuran las variables de entorno necesarias para ejecutar el entrenamiento PyTorch distribuido SageMaker.

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

Si opta por sustituir NCCL AllGather a SMDDPAllGather, puede utilizar las tres opciones. Elige una opción que se adapte a tu caso de uso.

Si opta por NCCL AllReduce reemplazar por SMDDPAllReduce, debe elegir una de las opciones mpirun basadas: smdistributed opytorchddp. También puede añadir MPI opciones 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 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 están preinstaladas en el. 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 formación y el envío de un trabajo, consulte Uso de bibliotecas de terceros en la SDKdocumentación de Amazon SageMaker Python.

Consideraciones para activar las operaciones SMDDP colectivas y utilizar las opciones adecuadas de un lanzador de formación distribuido
  • SMDDPAllReducey no SMDDP AllGather son compatibles entre sí en la actualidad.

  • SMDDPAllReducese activa por defecto cuando se utiliza smdistributed opytorchddp, que son lanzadores mpirun basados en, y NCCL AllGather se utiliza.

  • SMDDPAllGatherse activa de forma predeterminada cuando se utiliza el torch_distributed lanzador y vuelve AllReduce a. NCCL

  • SMDDPAllGathertambién se puede activar cuando se utilizan los lanzadores mpirun basados con una variable de entorno adicional configurada de la siguiente manera.

    export SMDATAPARALLEL_OPTIMIZE_SDP=true
TensorFlow
importante

La SMDDP biblioteca dejó de ser compatible con la TensorFlow versión 2.11.0 y ya no estará disponible a DLCs partir TensorFlow de esa fecha. Para buscar versiones anteriores TensorFlow DLCs con la SMDDP biblioteca instalada, consulte. TensorFlow (no disponible)

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 data parallel library: # ml.p4d.24xlargeml.p3dn.24xlarge, and ml.p3.16xlarge instance_type="ml.p3.16xlarge",     # Training using the SageMaker data parallel distributed training strategy distribution={ "smdistributed": { "dataparallel": { "enabled": True } } } ) tf_estimator.fit("s3://bucket/path/to/training/data")