

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.

# Comience con la formación distribuida en Amazon SageMaker AI
<a name="distributed-training-get-started"></a>

En la siguiente página se proporciona información sobre los pasos necesarios para empezar con la formación distribuida en Amazon SageMaker AI. Si ya conoce el entrenamiento distribuido, seleccione una de las siguientes opciones que se adapte a su estrategia o marco preferido para empezar. Si desea obtener más información sobre el entrenamiento distribuido en general, consulte [Conceptos de entrenamiento distribuido](distributed-training.md#distributed-training-basic-concepts).

Las bibliotecas de formación distribuidas sobre SageMaker IA están optimizadas para el entorno de SageMaker formación, ayudan a adaptar sus tareas de formación distribuidas a la SageMaker IA y mejoran la velocidad y el rendimiento de la formación. Las bibliotecas ofrecen estrategias de entrenamiento de paralelismo de datos y paralelismo de modelos. Combinan tecnologías de software y hardware para mejorar las comunicaciones entre GPU y entre nodos, y amplían las capacidades de entrenamiento de la SageMaker IA con opciones integradas que requieren cambios mínimos de código en los guiones de entrenamiento. 

## Antes de empezar
<a name="distributed-training-before-getting-started"></a>

SageMaker La formación admite la formación distribuida en una sola instancia y en varias instancias, por lo que puede impartir formación de cualquier tamaño a escala. Le recomendamos que utilice las clases estimadoras del marco, como [PyTorch](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html#pytorch-estimator)y [TensorFlow](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/sagemaker.tensorflow.html#tensorflow-estimator)en el SDK de SageMaker Python, que son los lanzadores de tareas de formación con varias opciones de formación distribuidas. Al crear un objeto estimador, el objeto configura una infraestructura de entrenamiento distribuida, ejecuta la `CreateTrainingJob` API en el backend, encuentra la región en la que se está ejecutando la sesión actual y extrae uno de los contenedores de aprendizaje AWS profundo prediseñados y empaquetados con una serie de bibliotecas que incluyen marcos de aprendizaje profundo, marcos de entrenamiento distribuidos y el controlador [EFA](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html). Si desea montar un sistema de FSx archivos en las instancias de entrenamiento, debe pasar su ID de subred de VPC y grupo de seguridad al estimador. Antes de realizar tu trabajo de formación distribuida en SageMaker IA, lee las siguientes instrucciones generales sobre la configuración básica de la infraestructura.

### Zonas de disponibilidad y plano posterior de red
<a name="availability-zones"></a>

Cuando se utilizan varias instancias (también denominadas *nodos*), es importante entender la red que conecta las instancias, cómo leen los datos de entrenamiento y cómo comparten la información entre sí. Por ejemplo, cuando ejecuta un trabajo de formación en paralelo con datos distribuidos, varios factores, como la comunicación entre los nodos de un clúster de procesamiento para ejecutar la `AllReduce` operación y la transferencia de datos entre los nodos y el almacenamiento de datos en Amazon Simple Storage Service o Amazon FSx for Lustre, desempeñan un papel crucial para lograr un uso óptimo de los recursos informáticos y una velocidad de entrenamiento más rápida. Para reducir la sobrecarga de comunicación, asegúrate de configurar las instancias, la subred de VPC y el almacenamiento de datos en la misma Región de AWS zona y en la zona de disponibilidad.

### Instancias de GPU con una red más rápida y un almacenamiento de alto rendimiento
<a name="optimized-GPU"></a>

Técnicamente, puede utilizar cualquier instancia para un entrenamiento distribuido. En los casos en los que necesites realizar tareas de formación distribuidas en varios nodos para entrenar modelos grandes, como modelos lingüísticos de gran tamaño (LLMs) y modelos de difusión, que requieren una conmutación más rápida entre nodos, te recomendamos las instancias de GPU compatibles con [EFA y compatibles con la IA. SageMaker ](https://aws.amazon.com/about-aws/whats-new/2021/05/amazon-sagemaker-supports-elastic-fabric-adapter-distributed-training/) Especialmente, para conseguir el trabajo de formación distribuido con el máximo rendimiento en SageMaker IA, recomendamos las instancias [P4d y P4de](https://aws.amazon.com/ec2/instance-types/p4/) equipadas con NVIDIA A100. GPUs También están equipadas con almacenamiento de instancias locales de alto rendimiento y baja latencia, así como una red dentro del nodo más rápida. Para el almacenamiento de datos, recomendamos [Amazon FSx for Lustre](https://docs.aws.amazon.com/fsx/latest/LustreGuide/what-is.html), que proporciona un alto rendimiento para almacenar conjuntos de datos de entrenamiento y puntos de control de modelos.

**Utilice la biblioteca de paralelismo de datos distribuidos (SMDDP) de SageMaker IA**

La biblioteca SMDDP mejora la comunicación entre los nodos con implementaciones `AllReduce` y operaciones de comunicación `AllGather` colectiva optimizadas para la infraestructura de AWS red y la topología de instancias de Amazon SageMaker AI ML. [Puede utilizar la [biblioteca SMDDP como backend de los paquetes de formación distribuidos PyTorch basados en PyTorch ](https://docs.aws.amazon.com/sagemaker/latest/dg/data-parallel-modify-sdp-pt.html)[datos: distributed data parallel (DDP), [PyTorch fully sharded data paralelism (](https://pytorch.org/docs/stable/fsdp.html)FSDP)](https://pytorch.org/docs/stable/notes/ddp.html) y Megatron-. [DeepSpeed](https://github.com/microsoft/DeepSpeed)DeepSpeed](https://github.com/microsoft/Megatron-DeepSpeed) El siguiente ejemplo de código muestra cómo configurar un estimador de `PyTorch` para inicializar un trabajo de entrenamiento distribuido en dos instancias de `ml.p4d.24xlarge`.

```
from sagemaker.pytorch import PyTorch

estimator = PyTorch(
    ...,
    instance_count=2,
    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
)
```

Para obtener información sobre cómo preparar su guion de formación y lanzar un trabajo de formación en paralelo con datos distribuidos sobre SageMaker IA, consulte[Realice un entrenamiento distribuido con la biblioteca de paralelismo de datos distribuidos de SageMaker IA](data-parallel.md).

**Utilice la biblioteca de paralelismo de modelos de SageMaker IA (SMP)**

SageMaker La IA proporciona la biblioteca SMP y admite diversas técnicas de entrenamiento distribuidas, como el paralelismo de datos fragmentados, la canalización, el paralelismo tensorial, la fragmentación del estado del optimizador y más. Para obtener más información sobre lo que ofrece la biblioteca SMP, consulte [Características principales de la biblioteca de paralelismo de SageMaker modelos](model-parallel-core-features.md).

Para utilizar la biblioteca de paralelismo de modelos de SageMaker AI, configure el parámetro de los estimadores del marco de IA. `distribution` SageMaker Los estimadores de marcos compatibles son y. [PyTorch[TensorFlow](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/sagemaker.tensorflow.html#tensorflow-estimator)](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html#pytorch-estimator) El siguiente ejemplo de código muestra cómo construir un estimador de marco para el entrenamiento distribuido con la biblioteca de paralelismo de modelos en dos instancias `ml.p4d.24xlarge`.

```
from sagemaker.framework import Framework

distribution={
    "smdistributed": {
        "modelparallel": {
            "enabled":True,
            "parameters": {
                ...   # enter parameter key-value pairs here
            }
        },
    },
    "mpi": {
        "enabled" : True,
        ...           # enter parameter key-value pairs here
    }
}

estimator = Framework(
    ...,
    instance_count=2,
    instance_type="ml.p4d.24xlarge",
    distribution=distribution
)
```

Para aprender a adaptar tu guion de entrenamiento, configurar los parámetros de distribución en la `estimator` clase y lanzar un trabajo de entrenamiento distribuido, consulta la [biblioteca de paralelismo de modelos de SageMaker IA](model-parallel.md) (consulta también [Entrenamiento distribuido](https://sagemaker.readthedocs.io/en/stable/api/training/distributed.html#the-sagemaker-distributed-model-parallel-library) en la documentación APIs del *SDK de SageMaker Python*).

**Utilice marcos de entrenamiento distribuido de código abierto**

SageMaker La IA también admite las siguientes opciones de funcionamiento `mpirun` y `torchrun` en el backend.
+ Para usar [PyTorch DistributedDataParallel (DDP)](https://pytorch.org/docs/master/generated/torch.nn.parallel.DistributedDataParallel.html) en SageMaker IA con el `mpirun` backend, añádelo `distribution={"pytorchddp": {"enabled": True}}` a tu estimador. PyTorch Para obtener más información, consulta también el `distribution` argumento de [PyTorch Distributed Training](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#distributed-pytorch-training) y [SageMaker AI PyTorch Estimator](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html#pytorch-estimator) en la documentación del *SDK de SageMaker Python*.
**nota**  
Esta opción está disponible para la versión PyTorch 1.12.0 y versiones posteriores.

  ```
  from sagemaker.pytorch import PyTorch
  
  estimator = PyTorch(
      ...,
      instance_count=2,
      instance_type="ml.p4d.24xlarge",
      distribution={"pytorchddp": {"enabled": True}}  # runs mpirun in the backend
  )
  ```
+ SageMaker [La IA es compatible con el [PyTorch `torchrun`lanzador](https://pytorch.org/docs/stable/elastic/run.html) para el entrenamiento distribuido en instancias Amazon EC2 basadas en GPU, como P3 y P4, así como en Trn1 con la tecnología del dispositivo Trainium.AWS](https://aws.amazon.com/machine-learning/trainium/) 

  Para usar [PyTorch DistributedDataParallel (DDP) en IA con el backend, añádalo](https://pytorch.org/docs/master/generated/torch.nn.parallel.DistributedDataParallel.html) al estimador. SageMaker `torchrun` `distribution={"torch_distributed": {"enabled": True}}` PyTorch 
**nota**  
Esta opción está disponible para la versión 1.13.0 y versiones posteriores PyTorch .

  En el siguiente fragmento de código se muestra un ejemplo de creación de un PyTorch estimador de SageMaker IA para ejecutar un entrenamiento distribuido en dos `ml.p4d.24xlarge` instancias con la opción de distribución. `torch_distributed`

  ```
  from sagemaker.pytorch import PyTorch
  
  estimator = PyTorch(
      ...,
      instance_count=2,
      instance_type="ml.p4d.24xlarge",
      distribution={"torch_distributed": {"enabled": True}}   # runs torchrun in the backend
  )
  ```

  Para obtener más información, consulta el `distribution` argumento de [Distributed PyTorch Training](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#distributed-pytorch-training) y [SageMaker AI PyTorch Estimator](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html#pytorch-estimator) en la documentación del *SDK de SageMaker Python*.

  **Notas para el entrenamiento distribuido en Trn1**

  Una instancia de Trn1 consta de un máximo de 16 dispositivos Trainium y cada dispositivo de Trainium consta de dos. [NeuronCores](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/general/arch/neuron-hardware/neuroncores-arch.html#neuroncores-v2-arch) [https://awsdocs-neuron.readthedocs-hosted.com/en/latest/general/arch/neuron-hardware/trn1-arch.html#id2](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/general/arch/neuron-hardware/trn1-arch.html#id2)

  Para aprender sobre las instancias con tecnología Trainium, solo necesita especificar el código de la instancia Trn1, en cadena con el argumento de la clase AI `ml.trn1.*` estimator. `instance_type` SageMaker PyTorch Para encontrar los tipos de instancias Trn1 disponibles, consulte [AWS Arquitectura de Trn1](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/general/arch/neuron-hardware/trn1-arch.html#aws-trn1-arch) en la *documentación de Neuron de AWS *.
**nota**  
SageMaker Actualmente, la formación sobre las instancias Trn1 de Amazon EC2 solo está disponible para el PyTorch marco en AWS Deep Learning Containers for Neuron a partir de la versión 1.11.0. PyTorch Para obtener una lista completa de las versiones compatibles de PyTorch Neuron, consulte [Neuron Containers](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#neuron-containers) en el repositorio de *AWS Deep Learning Containers GitHub *.

  Cuando lanzas un trabajo de formación en instancias Trn1 con el SDK de SageMaker Python, la SageMaker IA selecciona y ejecuta automáticamente el contenedor correcto de los [contenedores Neuron](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#neuron-containers) proporcionados por AWS Deep Learning Containers. Los contenedores Neuron vienen preempaquetados con la configuración y las dependencias del entorno de formación para facilitar la adaptación del trabajo de formación a la plataforma de formación y a las instancias SageMaker Trn1 de Amazon EC2.
**nota**  
[Para ejecutar su trabajo de PyTorch entrenamiento en instancias Trn1 con SageMaker IA, debe modificar el script de entrenamiento para inicializar los grupos de procesos con el backend y usar /XLA. `xla` PyTorch](https://pytorch.org/xla/release/1.12/index.html) Para respaldar el proceso de adopción de XLA, el SDK de Neuron incluye AWS PyTorch Neuron, que utiliza XLA para convertir las operaciones en instrucciones de Trainium. PyTorch *Para obtener información sobre cómo modificar el guion de entrenamiento, consulte la [Guía para desarrolladores sobre el entrenamiento con PyTorch Neuron () en la documentación de Neuron. `torch-neuronx`](https://awsdocs-neuron.readthedocs-hosted.com/en/latest/frameworks/torch/torch-neuronx/programming-guide/training/pytorch-neuron-programming-guide.html)AWS *

  *Para obtener más información, consulta [Entrenamiento distribuido con PyTorch Neuron en instancias Trn1](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#id24) y el argumento de [SageMaker AI PyTorch Estimator](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html#pytorch-estimator) `distribution` en la documentación del SDK de Python. SageMaker *
+ Para usar MPI en SageMaker IA, agrégalo a tu estimador. `distribution={"mpi": {"enabled": True}}` La opción de distribución de MPI está disponible para los siguientes marcos: MXNet, y. PyTorch TensorFlow
+ Para usar un servidor de parámetros en SageMaker IA, agréguelo `distribution={"parameter_server": {"enabled": True}}` a su estimador. La opción de servidor de parámetros está disponible para los siguientes marcos: MXNet PyTorch, y. TensorFlow 
**sugerencia**  
Para obtener más información sobre el uso de las opciones de MPI y servidor de parámetros por marco, utilice los siguientes enlaces a la *documentación del SDK de SageMaker Python*.  
MXNet El [argumento de Distributed Training](https://sagemaker.readthedocs.io/en/stable/frameworks/mxnet/using_mxnet.html#distributed-training) y [SageMaker AI MXNet Estimator](https://sagemaker.readthedocs.io/en/stable/frameworks/mxnet/sagemaker.mxnet.html#mxnet-estimator) `distribution`
PyTorch El argumento de [Distributed Training](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#distributed-pytorch-training) y [SageMaker AI PyTorch Estimator](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html#pytorch-estimator) `distribution`
TensorFlow El [argumento de Distributed Training](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/using_tf.html#distributed-training) y [SageMaker AI TensorFlow Estimator](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/sagemaker.tensorflow.html#tensorflow-estimator). `distribution`