

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.

# Realice un entrenamiento distribuido con la biblioteca de paralelismo de datos distribuidos de SageMaker IA
<a name="data-parallel"></a>

La biblioteca de paralelismo de datos distribuidos (SMDDP) de SageMaker IA amplía las capacidades de SageMaker formación en modelos de aprendizaje profundo con una eficiencia de escalado casi lineal al proporcionar implementaciones de operaciones de comunicación colectiva optimizadas para la infraestructura. AWS 

Al entrenar modelos de machine learning (ML) de gran tamaño, como los modelos de lenguaje de gran tamaño (LLM) y los modelos de difusión, en un enorme conjunto de datos de entrenamiento, los profesionales de ML utilizan clústeres de aceleradores y técnicas de entrenamiento distribuido para reducir el tiempo de entrenamiento o resolver las limitaciones de memoria de los modelos que no caben en la memoria de cada GPU. Los profesionales de ML suelen empezar con varios aceleradores en una sola instancia y, después, escalarlos a clústeres de instancias a medida que aumentan sus requisitos de carga de trabajo. A medida que aumenta el tamaño del clúster, también lo hace la sobrecarga de comunicación entre varios nodos, lo que conduce a una disminución del rendimiento de computación general.

Para solucionar estos problemas de sobrecarga y memoria, la biblioteca de SMDDP ofrece lo siguiente.
+ La biblioteca SMDDP optimiza los trabajos de formación para la infraestructura de AWS red y la topología de instancias de Amazon SageMaker AI ML.
+ La biblioteca SMDDP mejora la comunicación entre los nodos con implementaciones `AllReduce` y operaciones de comunicación `AllGather` colectiva optimizadas para la infraestructura. AWS 

Para obtener más información sobre los detalles de las ofertas de bibliotecas de SMDDP, consulte [Introducción a la biblioteca de paralelismo de datos distribuidos de SageMaker IA](data-parallel-intro.md).

Para obtener más información sobre el entrenamiento con la estrategia de modelo paralelo que ofrece la SageMaker IA, consulte también. [(Archivado) Biblioteca de paralelismo de modelos de SageMaker v1.x](model-parallel.md)

**Topics**
+ [Introducción a la biblioteca de paralelismo de datos distribuidos de SageMaker IA](data-parallel-intro.md)
+ [Marcos y tipos Regiones de AWS de instancias compatibles](distributed-data-parallel-support.md)
+ [Entrenamiento distribuido con la biblioteca de paralelismo de datos distribuidos de SageMaker IA](data-parallel-modify-sdp.md)
+ [Ejemplos de bibliotecas de paralelismo de datos de Amazon SageMaker AI](distributed-data-parallel-v2-examples.md)
+ [Consejos de configuración para la biblioteca de paralelismo de datos distribuidos de SageMaker IA](data-parallel-config.md)
+ [Preguntas frecuentes sobre la biblioteca de paralelismo de datos distribuidos de Amazon SageMaker AI](data-parallel-faq.md)
+ [Solución de problemas para la formación distribuida en Amazon SageMaker AI](distributed-troubleshooting-data-parallel.md)
+ [SageMaker Notas de publicación de la biblioteca de paralelismo de datos de IA](data-parallel-release-notes.md)

# Introducción a la biblioteca de paralelismo de datos distribuidos de SageMaker IA
<a name="data-parallel-intro"></a>

La biblioteca de paralelismo de datos distribuidos de SageMaker IA (SMDDP) es una biblioteca de comunicación colectiva que mejora el rendimiento informático del entrenamiento en paralelo de datos distribuidos. La biblioteca de SMDDP aborda la sobrecarga de comunicaciones de las principales operaciones de comunicación colectiva ofreciendo lo siguiente.

1. La biblioteca ofrece ofertas optimizadas para. `AllReduce` AWS`AllReduce`es una operación clave que se utiliza para sincronizar los gradientes GPUs al final de cada iteración de entrenamiento durante el entrenamiento con datos distribuidos.

1. La biblioteca ofrece ofertas `AllGather` optimizadas para. AWS`AllGather`es otra operación clave utilizada en el entrenamiento paralelo de datos fragmentados, que es una técnica de paralelismo de datos eficiente en memoria que ofrecen bibliotecas populares, como la biblioteca de paralelismo de modelos de SageMaker IA (SMP), DeepSpeed Zero Redundancy Optimizer (ZeRO) y Fully Sharded Data Parallelism (FSDP). PyTorch 

1. La biblioteca realiza una node-to-node comunicación optimizada al utilizar completamente la infraestructura AWS de red y la topología de instancias de Amazon EC2. 

La biblioteca de SMDDP puede aumentar la velocidad de entrenamiento ofreciendo una mejora del rendimiento a medida que escala el clúster de entrenamiento, con una eficiencia de escalado casi lineal.

**nota**  
Las bibliotecas de formación distribuidas por SageMaker IA están disponibles a través de los contenedores de aprendizaje AWS profundo PyTorch y Hugging Face de SageMaker la plataforma de formación. Para usar las bibliotecas, debes usar el SDK de SageMaker Python o el SDK SageMaker APIs completo para Python (Boto3) o. AWS Command Line Interface En toda la documentación, las instrucciones y los ejemplos se centran en cómo utilizar las bibliotecas de formación distribuidas con el SDK de SageMaker Python.

## Operaciones de comunicación colectiva SMDDP optimizadas para los recursos AWS informáticos y la infraestructura de red
<a name="data-parallel-collective-operations"></a>

La biblioteca SMDDP proporciona implementaciones y operaciones `AllGather` colectivas optimizadas para los AWS recursos informáticos `AllReduce` y la infraestructura de red.

### Operación colectiva `AllReduce` de SMDDP
<a name="data-parallel-allreduce"></a>

La biblioteca de SMDDP consigue una superposición óptima de la operación `AllReduce` con la transferencia hacia atrás, lo que mejora significativamente el uso de la GPU. Logra una eficiencia de escalado casi lineal y una velocidad de entrenamiento más rápida al optimizar las operaciones del núcleo entre y. CPUs GPUs La biblioteca ejecuta `AllReduce` en paralelo mientras la GPU calcula gradientes sin quitar ciclos de GPU adicionales, lo que permite que la biblioteca consiga un entrenamiento más rápido.
+  *Ventajas CPUs*: La biblioteca utiliza dos CPUs `AllReduce` gradientes, lo que descarga esta tarea del. GPUs 
+ *Uso mejorado de la GPU*: el clúster se GPUs centra en calcular los gradientes y mejorar su utilización durante el entrenamiento.

Este es el flujo de trabajo de alto nivel de la operación `AllReduce` de SMDDP.

1. La biblioteca asigna rangos a GPUs (los trabajadores).

1. En cada iteración, la biblioteca divide cada lote global entre el número total de trabajadores (tamaño mundial) y asigna pequeños lotes (fragmentos por lotes) a los trabajadores.
   + El tamaño del lote global es `(number of nodes in a cluster) * (number of GPUs per node) * (per batch shard)`. 
   + Un fragmento por lotes (lote pequeño) es un subconjunto de conjuntos de datos asignado a cada GPU (trabajador) por iteración. 

1. La biblioteca lanza un script de entrenamiento para cada trabajador.

1. La biblioteca administra copias de los pesos y degradados del modelo de los trabajadores al final de cada iteración.

1. La biblioteca sincroniza los pesos y degradados del modelo entre los trabajadores para agregar un solo modelo entrenado.

El siguiente diagrama de arquitectura muestra un ejemplo de cómo la biblioteca configura el paralelismo de datos para un clúster de 3 nodos. 

 

![\[Diagrama de arquitectura de paralelismo de datos AllReduce y SMDDP\]](http://docs.aws.amazon.com/es_es/sagemaker/latest/dg/images/distributed/data-parallel/sdp-architecture.png)


### Operación colectiva `AllGather` de SMDDP
<a name="data-parallel-allgather"></a>

`AllGather` es una operación colectiva en la que cada trabajador comienza con un búfer de entrada y, a continuación, concatena o *reúne* los búferes de entrada de todos los demás trabajadores en un búfer de salida.

**nota**  
La operación `AllGather` colectiva SMDDP está disponible en AWS Deep Learning Containers (DLC) para PyTorch la versión 2.0.1 `smdistributed-dataparallel>=2.0.1` y versiones posteriores.

`AllGather` se utiliza mucho en técnicas de entrenamiento distribuido, como el paralelismo de datos particionados, en el que cada trabajador individual tiene una fracción de un modelo o una capa particionada. Los trabajadores llaman a `AllGather` antes de las transferencias hacia delante y hacia atrás para reconstruir las capas particionadas. Las transferencias hacia adelante y hacia atrás continúan hacia delante una vez *recopilados todos* los parámetros. Durante la transferencia hacia atrás, cada trabajador también llama a `ReduceScatter` para recolectar (reducir) los gradientes y dividirlos (dispersarlos) en particiones de gradiente para actualizar la capa particionada correspondiente. [https://deepspeed.readthedocs.io/en/latest/zero3.html#](https://deepspeed.readthedocs.io/en/latest/zero3.html#)

Como las operaciones colectivas se invocan en todas las iteraciones, AllGather son las que más contribuyen a la sobrecarga de comunicación de la GPU. Un cálculo más rápido de estas operaciones colectivas se traduce directamente en un tiempo de entrenamiento más corto sin efectos secundarios sobre la convergencia. Para lograrlo, la biblioteca de SMDDP ofrece `AllGather` optimizado para [instancias P4d](https://aws.amazon.com/ec2/instance-types/p4/).

`AllGather` de SMDDP utiliza las siguientes técnicas para mejorar el rendimiento de computación en las instancias P4d.

1. Transfiere datos entre instancias (entre nodos) a través de la red [Elastic Fabric Adapter (EFA)](https://aws.amazon.com/hpc/efa/) con topología de malla. EFA es la solución de red AWS de baja latencia y alto rendimiento. Una topología en malla para la comunicación de red entre nodos se adapta mejor a las características de la EFA y de la infraestructura de red. AWS En comparación con la topología en anillo o árbol de NCCL, que implica varios saltos de paquetes, SMDDP evita la acumulación de latencia con varios saltos, ya que solo necesita un salto. SMDDP implementa un algoritmo de control de velocidad de red que equilibra la carga de trabajo de cada nivel de comunicación en una topología de malla y consigue un mayor rendimiento de la red global.

1. Adopta una [biblioteca de copias en memoria GPU de baja latencia basada en la tecnología GPUDirect RDMA de NVIDIA (GDRCopy)](https://github.com/NVIDIA/gdrcopy) para coordinar el tráfico de red local NVLink y EFA. GDRCopy, una biblioteca de copias de memoria para GPU de baja latencia ofrecida por NVIDIA, proporciona una comunicación de baja latencia entre los procesos de la CPU y los núcleos CUDA de la GPU. Con esta tecnología, la biblioteca de SMDDP puede canalizar el movimiento de datos entre nodos y dentro de ellos.

1. Reduce el uso de multiprocesadores de streaming de GPU para aumentar la potencia de cómputo necesaria para ejecutar kernels de modelo. Las instancias P4d y P4de están equipadas con NVIDIA A100 GPUs, cada una de las cuales tiene 108 multiprocesadores de streaming. Mientras que el NCCL utiliza hasta 24 multiprocesadores de streaming para ejecutar operaciones colectivas, SMDDP utiliza menos de 9 multiprocesadores de streaming. Los kernels de cómputo de modelos recogen los multiprocesadores de streaming guardados para agilizar la computación.

# Marcos y tipos Regiones de AWS de instancias compatibles
<a name="distributed-data-parallel-support"></a>

Antes de usar la biblioteca de paralelismo de datos distribuidos por SageMaker IA (SMDDP), comprueba cuáles son los marcos de aprendizaje automático y los tipos de instancias compatibles y si hay suficientes cuotas en tu cuenta y. AWS Región de AWS

## Marcos admitidos
<a name="distributed-data-parallel-supported-frameworks"></a>

En las tablas siguientes se muestran los marcos de aprendizaje profundo y sus versiones compatibles con la IA y el SMDDP SageMaker . La biblioteca SMDDP está disponible en contenedores [SageMaker AI Framework, integrada en contenedores](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) [Docker distribuidos por la biblioteca de paralelismo de SageMaker modelos (SMP)](distributed-model-parallel-support-v2.md#distributed-model-parallel-supported-frameworks-v2) v2 o se puede descargar como un archivo binario.

**nota**  
Para ver las últimas actualizaciones y notas de la versión de la biblioteca de SMDDP, consulte las [SageMaker Notas de publicación de la biblioteca de paralelismo de datos de IA](data-parallel-release-notes.md).

**Topics**
+ [PyTorch](#distributed-data-parallel-supported-frameworks-pytorch)
+ [PyTorch Lightning](#distributed-data-parallel-supported-frameworks-lightning)
+ [Hugging Face Transformers](#distributed-data-parallel-supported-frameworks-transformers)
+ [TensorFlow (obsoleto)](#distributed-data-parallel-supported-frameworks-tensorflow)

### PyTorch
<a name="distributed-data-parallel-supported-frameworks-pytorch"></a>


| PyTorch versión | Versión de la biblioteca de SMDDP | SageMaker Imágenes de AI Framework Container preinstaladas con SMDDP | Imágenes de Docker de SMP preinstaladas con SMDDP | URL del archivo binario\$1\$1 | 
| --- | --- | --- | --- | --- | 
| v2.3.1 | smdistributed-dataparallel==v2.5.0 | No disponible | 658645717510.dkr.ecr.<us-west-2>.amazonaws.com/smdistributed-modelparallel:2.4.1-gpu-py311-cu121 | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.4.1/cu121/2024-10-09/smdistributed\$1dataparallel-2.5.0-cp311-cp311-linux\$1x86\$164.whl | 
| v2.3.0 | smdistributed-dataparallel==v2.3.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.3.0-gpu-py311-cu121-ubuntu20.04-sagemaker | No disponible actualmente | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.3.0/cu121/2024-05-23/smdistributed\$1dataparallel-2.3.0-cp311-cp311-linux\$1x86\$164.whl | 
| v2.2.0 | smdistributed-dataparallel==v2.2.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.2.0-gpu-py310-cu121-ubuntu20.04-sagemaker | 658645717510.dkr.ecr.<region>.amazonaws.com/smdistributed-modelparallel:2.2.0-gpu-py310-cu121 | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.2.0/cu121/2024-03-04/smdistributed\$1dataparallel-2.2.0-cp310-cp310-linux\$1x86\$164.whl | 
| v2.1.0 | smdistributed-dataparallel==v2.1.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.1.0-gpu-py310-cu121-ubuntu20.04-sagemaker | 658645717510.dkr.ecr.<region>.amazonaws.com/smdistributed-modelparallel:2.1.2-gpu-py310-cu121 | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.1.0/cu121/2024-02-04/smdistributed\$1dataparallel-2.1.0-cp310-cp310-linux\$1x86\$164.whl | 
| v2.0.1 | smdistributed-dataparallel==v2.0.1 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.0.1-gpu-py310-cu118-ubuntu20.04-sagemaker | No disponible | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.0.1/cu118/2023-12-07/smdistributed\$1dataparallel-2.0.2-cp310-cp310-linux\$1x86\$164.whl | 
| v2.0.0 | smdistributed-dataparallel==v1.8.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.0.0-gpu-py310-cu118-ubuntu20.04-sagemaker | No disponible | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.0.0/cu118/2023-03-20/smdistributed\$1dataparallel-1.8.0-cp310-cp310-linux\$1x86\$164.whl | 
| Versión 1.13.1 | smdistributed-dataparallel==v1.7.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:1.13.1-gpu-py39-cu117-ubuntu20.04-sagemaker | No disponible | https://smdataparallel.s3.amazonaws.com/binary/pytorch/1.13.1/cu117/2023-01-09/smdistributed\$1dataparallel-1.7.0-cp39-cp39-linux\$1x86\$164.whl | 
| v1.12.1 | smdistributed-dataparallel==v1.6.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:1.12.1-gpu-py38-cu113-ubuntu20.04-sagemaker | No disponible | https://smdataparallel.s3.amazonaws.com/binary/pytorch/1.12.1/cu113/2022-12-05/smdistributed\$1dataparallel-1.6.0-cp38-cp38-linux\$1x86\$164.whl | 
| Versión 1.12.0 | smdistributed-dataparallel==v1.5.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:1.12.0-gpu-py38-cu113-ubuntu20.04-sagemaker | No disponible | https://smdataparallel.s3.amazonaws.com/binary/pytorch/1.12.0/cu113/2022-07-01/smdistributed\$1dataparallel-1.5.0-cp38-cp38-linux\$1x86\$164.whl | 
| v1.11.0 | smdistributed-dataparallel==v1.4.1 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:1.11.0-gpu-py38-cu113-ubuntu20.04-sagemaker | No disponible | https://smdataparallel.s3.amazonaws.com/binary/pytorch/1.11.0/cu113/2022-04-14/smdistributed\$1dataparallel-1.4.1-cp38-cp38-linux\$1x86\$164.whl | 

\$1\$1 Los URLs archivos binarios son para instalar la biblioteca SMDDP en contenedores personalizados. Para obtener más información, consulte [Cree su propio contenedor Docker con la biblioteca paralela de datos distribuidos de SageMaker IA](data-parallel-bring-your-own-container.md).

**nota**  
La biblioteca SMDDP está disponible Regiones de AWS donde están en servicio los [contenedores de SageMaker AI Framework](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) y las imágenes de [Docker SMP](distributed-model-parallel-support-v2.md).

**nota**  
La biblioteca SMDDP, versión 1.4.0 y versiones posteriores, funciona como un servidor de paralelismo de datos distribuidos (torch.distributed) (torch.parallel). PyTorch DistributedDataParallel). De acuerdo con el cambio, el siguiente [smdistributed APIs](https://sagemaker.readthedocs.io/en/stable/api/training/sdp_versions/latest/smd_data_parallel_pytorch.html#pytorch-api) para el paquete PyTorch distribuido ha quedado obsoleto.  
`smdistributed.dataparallel.torch.distributed` está en desuso. Utilice el paquete [torch.distributed](https://pytorch.org/docs/stable/distributed.html) en su lugar.
`smdistributed.dataparallel.torch.parallel.DistributedDataParallel` está en desuso. [Usa torch.nn.parallel. DistributedDataParallel](https://pytorch.org/docs/stable/generated/torch.nn.parallel.DistributedDataParallel.html) API en su lugar.
*Si necesitas usar las versiones anteriores de la biblioteca (v1.3.0 o anteriores), consulta la documentación [archivada sobre el paralelismo de datos distribuidos de SageMaker IA en la documentación](https://sagemaker.readthedocs.io/en/stable/api/training/sdp_versions/latest.html#documentation-archive) del SDK de Python para IA. SageMaker *

### PyTorch Lightning
<a name="distributed-data-parallel-supported-frameworks-lightning"></a>

La biblioteca SMDDP está disponible para PyTorch Lightning en los siguientes contenedores de SageMaker AI Framework PyTorch y en los contenedores SMP Docker.

**PyTorch Lightning v2**


| PyTorch Versión Lightning | PyTorch versión | Versión de la biblioteca de SMDDP | SageMaker Imágenes de AI Framework Container preinstaladas con SMDDP | Imágenes de Docker de SMP preinstaladas con SMDDP | URL del archivo binario\$1\$1 | 
| --- | --- | --- | --- | --- | --- | 
| 2.2.5 | 2.3.0 | smdistributed-dataparallel==v2.3.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.3.0-gpu-py311-cu121-ubuntu20.04-sagemaker | No disponible actualmente | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.3.0/cu121/2024-05-23/smdistributed\$1dataparallel-2.3.0-cp311-cp311-linux\$1x86\$164.whl | 
| 2.2.0 | 2.2.0 | smdistributed-dataparallel==v2.2.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.2.0-gpu-py310-cu121-ubuntu20.04-sagemaker | 658645717510.dkr.ecr.<region>.amazonaws.com/smdistributed-modelparallel:2.2.0-gpu-py310-cu121 | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.2.0/cu121/2024-03-04/smdistributed\$1dataparallel-2.2.0-cp310-cp310-linux\$1x86\$164.whl | 
| 2.1.2 | 2.1.0 | smdistributed-dataparallel==v2.1.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.1.0-gpu-py310-cu121-ubuntu20.04-sagemaker | 658645717510.dkr.ecr.<region>.amazonaws.com/smdistributed-modelparallel:2.1.2-gpu-py310-cu121 | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.1.0/cu121/2024-02-04/smdistributed\$1dataparallel-2.1.0-cp310-cp310-linux\$1x86\$164.whl | 
| 2.1.0 | 2.0.1 | smdistributed-dataparallel==v2.0.1 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.0.1-gpu-py310-cu118-ubuntu20.04-sagemaker | No disponible | https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.0.1/cu118/2023-12-07/smdistributed\$1dataparallel-2.0.2-cp310-cp310-linux\$1x86\$164.whl | 

**PyTorch Lightning v1**


| PyTorch Versión Lightning | PyTorch versión | Versión de la biblioteca de SMDDP | SageMaker Imágenes de AI Framework Container preinstaladas con SMDDP | URL del archivo binario\$1\$1 | 
| --- | --- | --- | --- | --- | 
|  1.7.2 1.7.0 1.6.4 1.6.3 1.5.10  | 1.12.0 | smdistributed-dataparallel==v1.5.0 | 763104351884.dkr.ecr. <region>.amazonaws.com/pytorch-training:1.12.0-gpu-py38-cu113-ubuntu20.04-sagemaker | https://smdataparallel.s3.amazonaws.com/binary/pytorch/1.12.0/cu113/2022-07-01/smdistributed\$1dataparallel-1.5.0-cp38-cp38-linux\$1x86\$164.whl | 

\$1\$1 Los archivos binarios son para instalar la biblioteca SMDDP en contenedores personalizados. URLs Para obtener más información, consulte [Cree su propio contenedor Docker con la biblioteca paralela de datos distribuidos de SageMaker IA](data-parallel-bring-your-own-container.md).

**nota**  
PyTorch Lightning y sus bibliotecas de utilidades, como Lightning Bolts, no vienen preinstaladas en el. PyTorch DLCs Cuando crees un PyTorch estimador de SageMaker IA y envíes una solicitud de trabajo de formación en el [paso 2](https://docs.aws.amazon.com/sagemaker/latest/dg/data-parallel-use-api.html#data-parallel-framework-estimator), tendrás que proporcionarlo para instalarlo `pytorch-lightning` e `requirements.txt` incluirlo `lightning-bolts` en el contenedor de formación sobre SageMaker IA PyTorch.  

```
# requirements.txt
pytorch-lightning
lightning-bolts
```
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](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#id12) en la *documentación del SDK de Python de Amazon SageMaker AI*.

### Hugging Face Transformers
<a name="distributed-data-parallel-supported-frameworks-transformers"></a>

Los AWS Deep Learning Containers de Hugging Face utilizan SageMaker los contenedores PyTorch de TensorFlow formación como imágenes base. Para buscar las versiones y versiones PyTorch combinadas de la biblioteca Hugging Face Transformers, consulta las versiones más recientes de [Hugging Face Containers TensorFlow y las versiones anteriores de Hugging](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#huggingface-training-containers) [Face Container](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#prior-hugging-face-container-versions).

### TensorFlow (obsoleto)
<a name="distributed-data-parallel-supported-frameworks-tensorflow"></a>

**importante**  
La biblioteca SMDDP dejó de ofrecer soporte para la versión TensorFlow 2.11.0 y ya no estará disponible a partir de DLCs esa fecha TensorFlow . En la siguiente tabla se enumeran las versiones anteriores TensorFlow con la biblioteca DLCs SMDDP instalada.


| TensorFlow versión | Versión de la biblioteca de SMDDP | 
| --- | --- | 
| 2.9.1, 2.10.1, 2.11.0 |  smdistributed-dataparallel==v1.4.1  | 
| 2.8.3 |  smdistributed-dataparallel==v1.3.0  | 

## Regiones de AWS
<a name="distributed-data-parallel-availablity-zone"></a>

La biblioteca SMDDP está disponible en todos los Regiones de AWS lugares donde estén en servicio los [AWS Deep Learning Containers for SageMaker AI](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) y las [imágenes SMP Docker](distributed-model-parallel-support-v2.md).

## Tipos de instancias admitidas
<a name="distributed-data-parallel-supported-instance-types"></a>

La biblioteca de SMDDP requiere uno de los siguientes tipos de instancia.


| Tipo de instancia | 
| --- | 
| ml.p3dn.24xlarge\$1 | 
| ml.p4d.24xlarge | 
| ml.p4de.24xlarge | 

**sugerencia**  
Para ejecutar correctamente entrenamiento distribuido en los tipos de instancia habilitadas para EFA, debe habilitar tráfico entre las instancias mediante la configuración del grupo de seguridad de su VPC que permita todo el tráfico entrante y saliente hacia y desde el propio grupo de seguridad. Para obtener información sobre cómo configurar reglas de grupo de seguridad, consulte [Paso 1: preparar un grupo de seguridad habilitado para EFA](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start.html#efa-start-security) en la *Guía del usuario de Amazon EC2*.

**importante**  
\$1 Se ha dejado de admitir la biblioteca de SMDDP para la optimización de sus operaciones de comunicación colectiva en las instancias P3. Si bien puede seguir utilizando el colectivo `AllReduce` optimizado para SMDDP en instancias de `ml.p3dn.24xlarge`, no habrá más compatibilidad de desarrollo para mejorar el rendimiento en este tipo de instancias. Tenga en cuenta que el colectivo `AllGather` optimizado para SMDDP solo está disponible para instancias P4.

Para ver las especificaciones de los tipos de instancias, consulte la sección **Computación acelerada** en la [página de tipos de instancias de Amazon EC2](https://aws.amazon.com/ec2/instance-types/). Para obtener información sobre los precios de las instancias, consulta [Amazon SageMaker Pricing](https://aws.amazon.com/sagemaker/pricing/).

Si te aparece un mensaje de error similar al siguiente, sigue las instrucciones que se indican en [Solicitar un aumento de la cuota de servicio para los recursos de SageMaker IA](https://docs.aws.amazon.com/sagemaker/latest/dg/regions-quotas.html#service-limit-increase-request-procedure).

```
ResourceLimitExceeded: An error occurred (ResourceLimitExceeded) when calling
the CreateTrainingJob operation: The account-level service limit 'ml.p3dn.24xlarge
for training job usage' is 0 Instances, with current utilization of 0 Instances
and a request delta of 1 Instances.
Please contact AWS support to request an increase for this limit.
```

# Entrenamiento distribuido con la biblioteca de paralelismo de datos distribuidos de SageMaker IA
<a name="data-parallel-modify-sdp"></a>

La biblioteca de paralelismo de datos distribuido (SMDDP) de SageMaker IA está diseñada para facilitar su uso y ofrecer una integración perfecta con ella. PyTorch

Cuando entrenes un modelo de aprendizaje profundo con la biblioteca SMDDP sobre SageMaker IA, puedes centrarte en escribir el guion de entrenamiento y el modelo de entrenamiento. 

Para empezar, importe la biblioteca de SMDDP para utilizar sus operaciones colectivas optimizadas para AWS. En los temas siguientes se proporcionan instrucciones sobre qué añadir al script de entrenamiento en función de la operación colectiva que desee optimizar.

**Topics**
+ [Adaptación del script de entrenamiento para utilizar las operaciones colectivas de SMDDP](data-parallel-modify-sdp-select-framework.md)
+ [Lanzamiento de trabajos de formación distribuidos con SMDDP mediante el SDK de Python SageMaker](data-parallel-use-api.md)

# Adaptación del script de entrenamiento para utilizar las operaciones colectivas de SMDDP
<a name="data-parallel-modify-sdp-select-framework"></a>

Los ejemplos de guiones de entrenamiento que se proporcionan en esta sección están simplificados y destacan solo los cambios necesarios para habilitar la biblioteca de paralelismo de datos distribuidos (SMDDP) de SageMaker IA en su guión de entrenamiento. Para ver ejemplos del cuaderno de end-to-end Jupyter que muestran cómo ejecutar un trabajo de formación distribuido con la biblioteca SMDDP, consulte. [Ejemplos de bibliotecas de paralelismo de datos de Amazon SageMaker AI](distributed-data-parallel-v2-examples.md)

**Topics**
+ [Utilice la biblioteca SMDDP en su guion de formación PyTorch](data-parallel-modify-sdp-pt.md)
+ [Utilice la biblioteca SMDDP en su PyTorch script de entrenamiento de Lightning](data-parallel-modify-sdp-pt-lightning.md)
+ [Utilice la biblioteca SMDDP en su script de TensorFlow entrenamiento (obsoleta)](data-parallel-modify-sdp-tf2.md)

# Utilice la biblioteca SMDDP en su guion de formación PyTorch
<a name="data-parallel-modify-sdp-pt"></a>

[A partir de la biblioteca de paralelismo de datos distribuidos (SMDDP) de SageMaker IA, versión 1.4.0, puede utilizarla como una opción de back-end para el paquete distribuido. PyTorch ](https://pytorch.org/tutorials/beginner/dist_overview.html) Para usar el SMDDP `AllReduce` y las operaciones `AllGather` colectivas, solo necesita importar la biblioteca SMDDP al principio del script de entrenamiento y configurar SMDDP como el servidor de los módulos distribuidos durante la inicialización del grupo de procesos. PyTorch Con la especificación de backend de una sola línea, puede mantener intactos todos los módulos distribuidos nativos PyTorch y todo el guion de formación. [Los siguientes fragmentos de código muestran cómo utilizar la biblioteca SMDDP como backend de los paquetes de formación distribuidos PyTorch basados en [PyTorch 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)

## PyTorch Para DDP o FSDP
<a name="data-parallel-enable-for-ptddp-ptfsdp"></a>

Inicialice el grupo de procesos de la siguiente manera.

```
import torch.distributed as dist
import smdistributed.dataparallel.torch.torch_smddp

dist.init_process_group(backend="smddp")
```

**nota**  
(Solo para trabajos de PyTorch DDP) Actualmente, el `smddp` backend no admite la creación de grupos de subprocesos con la API. `torch.distributed.new_group()` No puede usar el backend `smddp` simultáneamente con otros backends de grupos de procesos, como `NCCL` y `Gloo`.

## Para DeepSpeed Megatron- DeepSpeed
<a name="data-parallel-enable-for-deepspeed"></a>

Inicialice el grupo de procesos de la siguiente manera.

```
import deepspeed
import smdistributed.dataparallel.torch.torch_smddp

deepspeed.init_distributed(dist_backend="smddp")
```

**nota**  
Para usar `AllGather` de SMDDP con los lanzadores basados en `mpirun` (`smdistributed` y `pytorchddp`) en [Lanzamiento de trabajos de formación distribuidos con SMDDP mediante el SDK de Python SageMaker](data-parallel-use-api.md), también debe establecer la siguiente variable de entorno en el script de entrenamiento.  

```
export SMDATAPARALLEL_OPTIMIZE_SDP=true
```

Para obtener orientación general sobre cómo escribir un guion de entrenamiento del PyTorch FSDP, consulte Capacitación [avanzada de modelos con datos totalmente fragmentados en paralelo (FSDP](https://pytorch.org/tutorials/intermediate/FSDP_adavnced_tutorial.html)) en la documentación. PyTorch

Para obtener orientación general sobre cómo escribir un guion de formación sobre PyTorch DDP, consulte [Introducción a los datos distribuidos en paralelo](https://pytorch.org/tutorials/intermediate/ddp_tutorial.html) en la PyTorch documentación.

Cuando haya terminado de adaptar su script de entrenamiento, continúe con [Lanzamiento de trabajos de formación distribuidos con SMDDP mediante el SDK de Python SageMaker](data-parallel-use-api.md).

# Utilice la biblioteca SMDDP en su PyTorch script de entrenamiento de Lightning
<a name="data-parallel-modify-sdp-pt-lightning"></a>

Si desea utilizar su guion de entrenamiento de [PyTorchLightning](https://pytorch-lightning.readthedocs.io/en/latest/starter/introduction.html) y ejecutar un trabajo de formación en paralelo de datos distribuidos en SageMaker IA, puede ejecutar el trabajo de formación con cambios mínimos en su guion de formación. Los cambios necesarios incluyen los siguientes: importar los PyTorch módulos de la `smdistributed.dataparallel` biblioteca, configurar las variables de entorno para que PyTorch Lightning acepte las variables de entorno de SageMaker IA predefinidas en el kit de herramientas de SageMaker entrenamiento y activar la biblioteca SMDDP configurando el backend del grupo de procesos en. `"smddp"` Para obtener más información, siga las siguientes instrucciones que desglosan los pasos con ejemplos de código.

**nota**  
La compatibilidad con PyTorch Lightning está disponible en la biblioteca paralela de datos de SageMaker IA v1.5.0 y versiones posteriores.

## PyTorch Lightning == v2.1.0 y == 2.0.1 PyTorch
<a name="smddp-pt-201-lightning-210"></a>

1. Importe la biblioteca `pytorch_lightning` y los módulos `smdistributed.dataparallel.torch`.

   ```
   import lightning as pl
   import smdistributed.dataparallel.torch.torch_smddp
   ```

1. Instancie el. [LightningEnvironment](https://pytorch-lightning.readthedocs.io/en/stable/api/pytorch_lightning.plugins.environments.LightningEnvironment.html)

   ```
   from lightning.fabric.plugins.environments.lightning import LightningEnvironment
   
   env = LightningEnvironment()
   env.world_size = lambda: int(os.environ["WORLD_SIZE"])
   env.global_rank = lambda: int(os.environ["RANK"])
   ```

1. **Para el PyTorch DDP**[: crea un objeto de la [DDPStrategy](https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.strategies.DDPStrategy.html)clase con el para y el `"smddp"``"gpu"` para`accelerator`, `process_group_backend` y pásalo a la clase Trainer.](https://pytorch-lightning.readthedocs.io/en/stable/common/trainer.html)

   ```
   import lightning as pl
   from lightning.pytorch.strategies import DDPStrategy
   
   ddp = DDPStrategy(
       cluster_environment=env, 
       process_group_backend="smddp", 
       accelerator="gpu"
   )
   
   trainer = pl.Trainer(
       max_epochs=200, 
       strategy=ddp, 
       devices=num_gpus, 
       num_nodes=num_nodes
   )
   ```

   **Para el PyTorch FSDP**[: crea un objeto de la [FSDPStrategy](https://lightning.ai/docs/pytorch/stable/api/lightning.pytorch.strategies.FSDPStrategy.html)clase (con la [política de empaquetado](https://pytorch.org/docs/stable/fsdp.html) que prefieras) con un para y un `"smddp"``"gpu"` para `process_group_backend` y `accelerator` pásalo a la clase de entrenador.](https://pytorch-lightning.readthedocs.io/en/stable/common/trainer.html)

   ```
   import lightning as pl
   from lightning.pytorch.strategies import FSDPStrategy
   
   from functools import partial
   from torch.distributed.fsdp.wrap import size_based_auto_wrap_policy
   
   policy = partial(
       size_based_auto_wrap_policy, 
       min_num_params=10000
   )
   
   fsdp = FSDPStrategy(
       auto_wrap_policy=policy,
       process_group_backend="smddp", 
       cluster_environment=env
   )
   
   trainer = pl.Trainer(
       max_epochs=200, 
       strategy=fsdp, 
       devices=num_gpus, 
       num_nodes=num_nodes
   )
   ```

Cuando haya terminado de adaptar su script de entrenamiento, continúe con [Lanzamiento de trabajos de formación distribuidos con SMDDP mediante el SDK de Python SageMaker](data-parallel-use-api.md). 

**nota**  
Cuando crees un PyTorch estimador de SageMaker IA y envíes una solicitud de trabajo de formación[Lanzamiento de trabajos de formación distribuidos con SMDDP mediante el SDK de Python SageMaker](data-parallel-use-api.md), tendrás que proporcionar la instalación `pytorch-lightning` y el `requirements.txt` SageMaker contenedor de formación `lightning-bolts` en IA. PyTorch   

```
# requirements.txt
pytorch-lightning
lightning-bolts
```
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](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#id12) en la *documentación del SDK de Python de Amazon SageMaker AI*.

# Utilice la biblioteca SMDDP en su script de TensorFlow entrenamiento (obsoleta)
<a name="data-parallel-modify-sdp-tf2"></a>

**importante**  
La biblioteca SMDDP dejó de ofrecer soporte para la versión TensorFlow 2.11.0 y ya no estará disponible a partir DLCs de TensorFlow esa fecha. Para encontrar versiones anteriores TensorFlow DLCs con la biblioteca SMDDP instalada, consulte. [Marcos admitidos](distributed-data-parallel-support.md#distributed-data-parallel-supported-frameworks)

Los siguientes pasos le muestran cómo modificar un script de TensorFlow entrenamiento para utilizar la biblioteca paralela de datos distribuidos de SageMaker AI.  

La biblioteca APIs está diseñada para ser similar a Horovod APIs. Para obtener información adicional sobre cada API que ofrece la biblioteca TensorFlow, consulta la [documentación de la TensorFlow API paralela de datos distribuidos de SageMaker IA](https://sagemaker.readthedocs.io/en/stable/api/training/smd_data_parallel.html#api-documentation).

**nota**  
SageMaker AI distributed data parallel se adapta a guiones de TensorFlow entrenamiento compuestos por módulos `tf` principales, excepto `tf.keras` módulos. SageMaker Los datos distribuidos paralelos de IA no son compatibles TensorFlow con la implementación de Keras.

**nota**  
La biblioteca de paralelismo de datos distribuidos mediante SageMaker IA es compatible con la precisión mixta automática (AMP) desde el primer momento. No se necesita ninguna acción adicional para habilitar AMP que no sean las modificaciones a nivel de marco de su script de entrenamiento. Si los gradientes están activados FP16, la biblioteca de paralelismo de datos de SageMaker IA ejecuta su operación en ella. `AllReduce` FP16 Para obtener más información sobre cómo implementar AMP APIs en tu guion de entrenamiento, consulta los siguientes recursos:  
[Marcos: TensorFlow](https://docs.nvidia.com/deeplearning/performance/mixed-precision-training/index.html#tensorflow) en la *documentación de rendimiento del aprendizaje profundo de NVIDIA*
[Precisión mixta automática para aprendizaje profundo](https://developer.nvidia.com/automatic-mixed-precision) en los *Documentos para desarrolladores de NVIDIA*
[TensorFlow precisión mixta APIs](https://www.tensorflow.org/guide/mixed_precision) en la *TensorFlowdocumentación*

1. Importa el TensorFlow cliente de la biblioteca e inicialízalo.

   ```
   import smdistributed.dataparallel.tensorflow as sdp 
   sdp.init()
   ```

1. Fijar cada GPU a un único proceso de `smdistributed.dataparallel` con `local_rank`: esto se refiere a la clasificación relativa del proceso dentro de un nodo determinado. La API `sdp.tensorflow.local_rank()` proporciona la clasificación local del dispositivo. El nodo principal es el rango 0 y los nodos de trabajo son de rango 1, 2, 3, etc. Esto se invoca en el siguiente bloque de código como`sdp.local_rank()`. `set_memory_growth`no está directamente relacionado con la SageMaker IA distribuida, pero debe configurarse para el entrenamiento distribuido con ella TensorFlow. 

   ```
   gpus = tf.config.experimental.list_physical_devices('GPU')
   for gpu in gpus:
       tf.config.experimental.set_memory_growth(gpu, True)
   if gpus:
       tf.config.experimental.set_visible_devices(gpus[sdp.local_rank()], 'GPU')
   ```

1. Escale la tasa de aprendizaje según el número de trabajadores. La API `sdp.tensorflow.size()` le proporciona el número de trabajadores del clúster. Esto se invoca en el siguiente código como `sdp.size()`. 

   ```
   learning_rate = learning_rate * sdp.size()
   ```

1. Utilice el `DistributedGradientTape` de la biblioteca para optimizar las operaciones `AllReduce`durante el entrenamiento. Esto envuelve `tf.GradientTape`.  

   ```
   with tf.GradientTape() as tape:
         output = model(input)
         loss_value = loss(label, output)
       
   # SageMaker AI data parallel: Wrap tf.GradientTape with the library's DistributedGradientTape
   tape = sdp.DistributedGradientTape(tape)
   ```

1. Transmite las variables de modelo iniciales desde el nodo principal (rango 0) a todos los nodos de trabajo (rangos 1 a n). Esto es necesario para garantizar una inicialización coherente en todos los rangos de trabajo. Utilice la API `sdp.tensorflow.broadcast_variables` después de inicializar el modelo y las variables del optimizador. Esto se invoca en el siguiente bloque de código como `sdp.broadcast_variables()`. 

   ```
   sdp.broadcast_variables(model.variables, root_rank=0)
   sdp.broadcast_variables(opt.variables(), root_rank=0)
   ```

1. Por último, modifique su script para guardar los puntos de control solo en el nodo principal. El nodo principal tiene un modelo sincronizado. Esto también evita que los nodos de trabajo sobrescriban los puntos de control y, posiblemente, corrompa los puntos de control. 

   ```
   if sdp.rank() == 0:
       checkpoint.save(checkpoint_dir)
   ```

El siguiente es un ejemplo de guion de TensorFlow entrenamiento para un entrenamiento distribuido con la biblioteca.

```
import tensorflow as tf

# SageMaker AI data parallel: Import the library TF API
import smdistributed.dataparallel.tensorflow as sdp

# SageMaker AI data parallel: Initialize the library
sdp.init()

gpus = tf.config.experimental.list_physical_devices('GPU')
for gpu in gpus:
    tf.config.experimental.set_memory_growth(gpu, True)
if gpus:
    # SageMaker AI data parallel: Pin GPUs to a single library process
    tf.config.experimental.set_visible_devices(gpus[sdp.local_rank()], 'GPU')

# Prepare Dataset
dataset = tf.data.Dataset.from_tensor_slices(...)

# Define Model
mnist_model = tf.keras.Sequential(...)
loss = tf.losses.SparseCategoricalCrossentropy()

# SageMaker AI data parallel: Scale Learning Rate
# LR for 8 node run : 0.000125
# LR for single node run : 0.001
opt = tf.optimizers.Adam(0.000125 * sdp.size())

@tf.function
def training_step(images, labels, first_batch):
    with tf.GradientTape() as tape:
        probs = mnist_model(images, training=True)
        loss_value = loss(labels, probs)

    # SageMaker AI data parallel: Wrap tf.GradientTape with the library's DistributedGradientTape
    tape = sdp.DistributedGradientTape(tape)

    grads = tape.gradient(loss_value, mnist_model.trainable_variables)
    opt.apply_gradients(zip(grads, mnist_model.trainable_variables))

    if first_batch:
       # SageMaker AI data parallel: Broadcast model and optimizer variables
       sdp.broadcast_variables(mnist_model.variables, root_rank=0)
       sdp.broadcast_variables(opt.variables(), root_rank=0)

    return loss_value

...

# SageMaker AI data parallel: Save checkpoints only from master node.
if sdp.rank() == 0:
    checkpoint.save(checkpoint_dir)
```

Cuando haya terminado de adaptar su script de entrenamiento, pase a [Lanzamiento de trabajos de formación distribuidos con SMDDP mediante el SDK de Python SageMaker](data-parallel-use-api.md). 

# Lanzamiento de trabajos de formación distribuidos con SMDDP mediante el SDK de Python SageMaker
<a name="data-parallel-use-api"></a>

Para ejecutar un trabajo de entrenamiento distribuido con su script adaptado[Adaptación del script de entrenamiento para utilizar las operaciones colectivas de SMDDP](data-parallel-modify-sdp-select-framework.md), utilice el marco del SDK de SageMaker Python o estimadores genéricos especificando el script de entrenamiento preparado como un script de punto de entrada y la configuración de entrenamiento distribuida.

En esta página, se explica cómo utilizar el [SDK de Python para SageMaker IA](https://sagemaker.readthedocs.io/en/stable/api/training/index.html) de dos maneras.
+ Si quieres lograr una rápida adopción de tu trabajo de formación distribuida en SageMaker IA, configura una clase de SageMaker IA [PyTorch](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html#sagemaker.pytorch.estimator.PyTorch)o un estimador de [TensorFlow](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/sagemaker.tensorflow.html#tensorflow-estimator)marcos. El estimador del marco recoge el guion de entrenamiento y automáticamente coincide con el URI de imagen correcto de los Deep Learning Containers (DLC) [prediseñados PyTorch o de los TensorFlow Deep Learning Containers (DLC)](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only), dado el valor especificado para el parámetro. `framework_version`
+ Si desea ampliar uno de los contenedores prediseñados o crear un contenedor personalizado para crear su propio entorno de aprendizaje automático con SageMaker IA, utilice la `Estimator` clase genérica SageMaker AI y especifique el URI de imagen del contenedor Docker personalizado alojado en su Amazon Elastic Container Registry (Amazon ECR).

Sus conjuntos de datos de entrenamiento deben almacenarse en Amazon S3 o [Amazon FSx for Lustre](https://docs.aws.amazon.com/fsx/latest/LustreGuide/what-is.html) Región de AWS en los que vaya a iniciar su trabajo de entrenamiento. Si utilizas los cuadernos de Jupyter, deberías tener una instancia de bloc de notas o una SageMaker aplicación de SageMaker Studio Classic ejecutándose en el mismo. Región de AWS Para obtener más información sobre cómo almacenar los datos de entrenamiento, consulta la documentación de [entradas de datos del SDK de SageMaker Python](https://sagemaker.readthedocs.io/en/stable/overview.html#use-file-systems-as-training-input). 

**sugerencia**  
Le recomendamos que utilice Amazon FSx for Lustre en lugar de Amazon S3 para mejorar el rendimiento del entrenamiento. Amazon FSx tiene un rendimiento más alto y una latencia más baja que Amazon S3.

**sugerencia**  
Para ejecutar correctamente entrenamiento distribuido en los tipos de instancia habilitadas para EFA, debe habilitar tráfico entre las instancias mediante la configuración del grupo de seguridad de su VPC de forma que permita que todo el tráfico entrante y saliente hacia y desde el propio grupo de seguridad. Para obtener información sobre cómo configurar reglas de grupo de seguridad, consulte [Paso 1: preparar un grupo de seguridad habilitado para EFA](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa-start.html#efa-start-security) en la *Guía del usuario de Amazon EC2*.

Seleccione uno de los siguientes temas para obtener instrucciones sobre cómo ejecutar un trabajo de entrenamiento distribuido de su script de entrenamiento. Tras iniciar un trabajo de formación, puede supervisar la utilización del sistema y el rendimiento del modelo mediante [Amazon SageMaker Debugger](train-debugger.md) Amazon CloudWatch.

Siga las instrucciones de los siguientes temas para obtener más información sobre los detalles técnicos, pero también le recomendamos que pruebe [Ejemplos de bibliotecas de paralelismo de datos de Amazon SageMaker AI](distributed-data-parallel-v2-examples.md) para empezar.

**Topics**
+ [Usa los estimadores del PyTorch framework del SDK de Python SageMaker](data-parallel-framework-estimator.md)
+ [Utilice el estimador genérico de SageMaker IA para ampliar los contenedores de DLC prediseñados](data-parallel-use-python-skd-api.md)
+ [Cree su propio contenedor Docker con la biblioteca paralela de datos distribuidos de SageMaker IA](data-parallel-bring-your-own-container.md)

# Usa los estimadores del PyTorch framework del SDK de Python SageMaker
<a name="data-parallel-framework-estimator"></a>

Puede lanzar un entrenamiento distribuido añadiendo el `distribution` argumento a los estimadores del marco de SageMaker IA, [https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html#sagemaker.pytorch.estimator.PyTorch](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html#sagemaker.pytorch.estimator.PyTorch)o. [https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/sagemaker.tensorflow.html#tensorflow-estimator](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/sagemaker.tensorflow.html#tensorflow-estimator) Para obtener más información, elige uno de los marcos compatibles con la biblioteca de paralelismo de datos distribuidos de SageMaker IA (SMDDP) de entre 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 en SageMaker IA. Para usar esta opción, pase el siguiente diccionario al parámetro `distribution`.

  ```
  { "pytorchddp": { "enabled": True } }
  ```
+ `torch_distributed`— Esta opción ejecuta `torchrun` 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ámetro `distribution`.

  ```
  { "torch_distributed": { "enabled": True } }
  ```
+ `smdistributed`— Esta opción también funciona`mpirun`, pero con ella `smddprun` 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](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/using_pytorch.html#id12) en la *documentación del SDK de Python de Amazon SageMaker AI*.

**Consideraciones para activar las operaciones colectivas de SMDDP y utilizar las opciones del iniciador de entrenamiento distribuido adecuadas**
+ Actualmente, `AllReduce` de SMDDP y `AllGather` de SMDDP no son compatibles entre sí.
+ `AllReduce` de SMDDP se activa de forma predeterminada cuando se utiliza `smdistributed` o `pytorchddp`, que son iniciadores basados en `mpirun` y se utiliza `AllGather` de NCCL.
+ `AllGather` de SMDDP se activa de forma predeterminada cuando se utiliza el iniciador de `torch_distributed` y `AllReduce` recurre a NCCL.
+ `AllGather` de SMDDP también se puede activar cuando se utilizan los iniciadores basados en `mpirun` con una variable de entorno adicional configurada de la siguiente manera.

  ```
  export SMDATAPARALLEL_OPTIMIZE_SDP=true
  ```

------
#### [ TensorFlow ]

**importante**  
La biblioteca SMDDP dejó de ser compatible con la versión TensorFlow 2.11.0 y ya no estará disponible a partir DLCs de TensorFlow esa fecha. Para encontrar versiones anteriores TensorFlow DLCs con la biblioteca SMDDP instalada, consulte. [TensorFlow (obsoleto)](distributed-data-parallel-support.md#distributed-data-parallel-supported-frameworks-tensorflow)

```
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.24xlarge, ml.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")
```

------

# Utilice el estimador genérico de SageMaker IA para ampliar los contenedores de DLC prediseñados
<a name="data-parallel-use-python-skd-api"></a>

Puedes personalizar los contenedores prediseñados de SageMaker IA o ampliarlos para cumplir con cualquier requisito funcional adicional de tu algoritmo o modelo que no sea compatible con la imagen de Docker de SageMaker IA prediseñada. Para ver un ejemplo de cómo ampliar un contenedor prediseñado, consulte [Ampliar un contenedor prediseñado](https://docs.aws.amazon.com/sagemaker/latest/dg/prebuilt-containers-extend.html).

Para ampliar un contenedor prediseñado o adaptar su propio contenedor para usar la biblioteca, debe usar una de las imágenes que aparecen en [Marcos admitidos](distributed-data-parallel-support.md#distributed-data-parallel-supported-frameworks).

**nota**  
A partir de las TensorFlow versiones 2.4.1 y PyTorch 1.8.1, el marco DLCs de SageMaker IA admite tipos de instancias compatibles con EFA. Te recomendamos que utilices las imágenes del DLC que contengan las TensorFlow versiones 2.4.1 o versiones posteriores y 1.8.1 o posteriores. PyTorch 

Por ejemplo, si las usas PyTorch, tu Dockerfile debe contener una `FROM` declaración similar a la siguiente:

```
# SageMaker AI PyTorch image
FROM 763104351884.dkr.ecr.<aws-region>.amazonaws.com/pytorch-training:<image-tag>

ENV PATH="/opt/ml/code:${PATH}"

# this environment variable is used by the SageMaker AI PyTorch container to determine our user code directory.
ENV SAGEMAKER_SUBMIT_DIRECTORY /opt/ml/code

# /opt/ml and all subdirectories are utilized by SageMaker AI, use the /code subdirectory to store your user code.
COPY train.py /opt/ml/code/train.py

# Defines cifar10.py as script entrypoint
ENV SAGEMAKER_PROGRAM train.py
```

Puede personalizar aún más su propio contenedor de Docker para que funcione con la SageMaker IA mediante el [kit de herramientas de SageMaker formación](https://github.com/aws/sagemaker-training-toolkit) y el archivo binario de la biblioteca paralela de SageMaker datos distribuidos de IA. Para obtener más información, consulte las instrucciones de la siguiente sección.

# Cree su propio contenedor Docker con la biblioteca paralela de datos distribuidos de SageMaker IA
<a name="data-parallel-bring-your-own-container"></a>

Para crear tu propio contenedor Docker para entrenar y usar la biblioteca paralela de datos de SageMaker IA, debes incluir las dependencias correctas y los archivos binarios de las bibliotecas paralelas distribuidas por SageMaker IA en tu Dockerfile. En esta sección, se proporcionan instrucciones sobre cómo crear un Dockerfile completo con el conjunto mínimo de dependencias para el entrenamiento distribuido en SageMaker IA mediante la biblioteca data parallel.

**nota**  
Esta opción personalizada de Docker con la biblioteca paralela de datos de SageMaker IA como binaria solo está disponible para PyTorch.

**Para crear un Dockerfile con el kit de herramientas de SageMaker formación y la biblioteca de datos paralelos**

1. Comience con una imagen de Docker de [NVIDIA CUDA](https://hub.docker.com/r/nvidia/cuda). [Utilice las versiones para desarrolladores de cuDNN que contienen herramientas de desarrollo y tiempo de ejecución de CUDA (encabezados y bibliotecas) para compilar a partir del código fuente. PyTorch ](https://github.com/pytorch/pytorch#from-source)

   ```
   FROM nvidia/cuda:11.3.1-cudnn8-devel-ubuntu20.04
   ```
**sugerencia**  
[Las imágenes oficiales del AWS Deep Learning Container (DLC) se crean a partir de las imágenes base de NVIDIA CUDA.](https://hub.docker.com/r/nvidia/cuda) Si quieres usar las imágenes del DLC prediseñadas como referencia mientras sigues el resto de las instrucciones, consulta [AWS Deep Learning Containers for PyTorch ](https://github.com/aws/deep-learning-containers/tree/master/pytorch) Dockerfiles. 

1. Agregue los siguientes argumentos para especificar las versiones y otros paquetes. PyTorch Además, indique las rutas de los buckets de Amazon S3 a la biblioteca paralela de datos de SageMaker IA y a otro software para utilizar AWS los recursos, como el complemento Amazon S3. 

   Para utilizar versiones de bibliotecas de terceros distintas de las que se proporcionan en el siguiente ejemplo de código, le recomendamos que consulte los [Dockerfiles oficiales de AWS Deep Learning Container PyTorch para](https://github.com/aws/deep-learning-containers/tree/master/pytorch/training/docker) encontrar versiones probadas, compatibles y adecuadas para su aplicación. 

    URLs Para encontrar el `SMDATAPARALLEL_BINARY` argumento, consulte las tablas de consulta en. [Marcos admitidos](distributed-data-parallel-support.md#distributed-data-parallel-supported-frameworks)

   ```
   ARG PYTORCH_VERSION=1.10.2
   ARG PYTHON_SHORT_VERSION=3.8
   ARG EFA_VERSION=1.14.1
   ARG SMDATAPARALLEL_BINARY=https://smdataparallel.s3.amazonaws.com/binary/pytorch/${PYTORCH_VERSION}/cu113/2022-02-18/smdistributed_dataparallel-1.4.0-cp38-cp38-linux_x86_64.whl
   ARG PT_S3_WHL_GPU=https://aws-s3-plugin.s3.us-west-2.amazonaws.com/binaries/0.0.1/1c3e69e/awsio-0.0.1-cp38-cp38-manylinux1_x86_64.whl
   ARG CONDA_PREFIX="/opt/conda"
   ARG BRANCH_OFI=1.1.3-aws
   ```

1. Configure las siguientes variables de entorno para crear correctamente los componentes de SageMaker entrenamiento y ejecutar la biblioteca data parallel. Estas variables se utilizan para los componentes en los pasos siguientes.

   ```
   # Set ENV variables required to build PyTorch
   ENV TORCH_CUDA_ARCH_LIST="7.0+PTX 8.0"
   ENV TORCH_NVCC_FLAGS="-Xfatbin -compress-all"
   ENV NCCL_VERSION=2.10.3
   
   # Add OpenMPI to the path.
   ENV PATH /opt/amazon/openmpi/bin:$PATH
   
   # Add Conda to path
   ENV PATH $CONDA_PREFIX/bin:$PATH
   
   # Set this enviroment variable for SageMaker AI to launch SMDDP correctly.
   ENV SAGEMAKER_TRAINING_MODULE=sagemaker_pytorch_container.training:main
   
   # Add enviroment variable for processes to be able to call fork()
   ENV RDMAV_FORK_SAFE=1
   
   # Indicate the container type
   ENV DLC_CONTAINER_TYPE=training
   
   # Add EFA and SMDDP to LD library path
   ENV LD_LIBRARY_PATH="/opt/conda/lib/python${PYTHON_SHORT_VERSION}/site-packages/smdistributed/dataparallel/lib:$LD_LIBRARY_PATH"
   ENV LD_LIBRARY_PATH=/opt/amazon/efa/lib/:$LD_LIBRARY_PATH
   ```

1. Instale o actualice `curl`, `wget` y `git` para descargar y crear paquetes en los pasos siguientes.

   ```
   RUN --mount=type=cache,id=apt-final,target=/var/cache/apt \
       apt-get update && apt-get install -y  --no-install-recommends \
           curl \
           wget \
           git \
       && rm -rf /var/lib/apt/lists/*
   ```

1. Instale el software [Elastic Fabric Adapter (EFA)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html) para la comunicación de red de Amazon EC2.

   ```
   RUN DEBIAN_FRONTEND=noninteractive apt-get update
   RUN mkdir /tmp/efa \
       && cd /tmp/efa \
       && curl --silent -O https://efa-installer.amazonaws.com/aws-efa-installer-${EFA_VERSION}.tar.gz \
       && tar -xf aws-efa-installer-${EFA_VERSION}.tar.gz \
       && cd aws-efa-installer \
       && ./efa_installer.sh -y --skip-kmod -g \
       && rm -rf /tmp/efa
   ```

1. Instale [Conda](https://docs.conda.io/en/latest/) para gestionar la administración de paquetes. 

   ```
   RUN curl -fsSL -v -o ~/miniconda.sh -O  https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh  && \
       chmod +x ~/miniconda.sh && \
       ~/miniconda.sh -b -p $CONDA_PREFIX && \
       rm ~/miniconda.sh && \
       $CONDA_PREFIX/bin/conda install -y python=${PYTHON_SHORT_VERSION} conda-build pyyaml numpy ipython && \
       $CONDA_PREFIX/bin/conda clean -ya
   ```

1. Obtenga, compile e instale PyTorch y sus dependencias. Creamos [PyTorch a partir del código fuente](https://github.com/pytorch/pytorch#from-source) porque necesitamos tener el control de la versión NCCL para garantizar la compatibilidad con el complemento [AWS OFI](https://github.com/aws/aws-ofi-nccl) NCCL.

   1. [Siguiendo los pasos del [docker PyTorch oficial, instalamos](https://github.com/pytorch/pytorch/blob/master/Dockerfile) las dependencias de compilación y configuramos ccache para acelerar la recompilación.](https://ccache.dev/)

      ```
      RUN DEBIAN_FRONTEND=noninteractive \
          apt-get install -y --no-install-recommends \
              build-essential \
              ca-certificates \
              ccache \
              cmake \
              git \
              libjpeg-dev \
              libpng-dev \
          && rm -rf /var/lib/apt/lists/*
        
      # Setup ccache
      RUN /usr/sbin/update-ccache-symlinks
      RUN mkdir /opt/ccache && ccache --set-config=cache_dir=/opt/ccache
      ```

   1. Instala las dependencias comunes y [PyTorchde Linux.](https://github.com/pytorch/pytorch#install-dependencies)

      ```
      # Common dependencies for PyTorch
      RUN conda install astunparse numpy ninja pyyaml mkl mkl-include setuptools cmake cffi typing_extensions future six requests dataclasses
      
      # Linux specific dependency for PyTorch
      RUN conda install -c pytorch magma-cuda113
      ```

   1. Clona el [PyTorch GitHubrepositorio.](https://github.com/pytorch/pytorch)

      ```
      RUN --mount=type=cache,target=/opt/ccache \
          cd / \
          && git clone --recursive https://github.com/pytorch/pytorch -b v${PYTORCH_VERSION}
      ```

   1. Instale y cree una versión específica de [NCCL](https://developer.nvidia.com/nccl). Para ello, sustituye el contenido PyTorch de la carpeta NCCL predeterminada (`/pytorch/third_party/nccl`) por la versión NCCL específica del repositorio de NVIDIA. La versión NCCL se configuró en el paso 3 de esta guía.

      ```
      RUN cd /pytorch/third_party/nccl \
          && rm -rf nccl \
          && git clone https://github.com/NVIDIA/nccl.git -b v${NCCL_VERSION}-1 \
          && cd nccl \
          && make -j64 src.build CUDA_HOME=/usr/local/cuda NVCC_GENCODE="-gencode=arch=compute_70,code=sm_70 -gencode=arch=compute_80,code=sm_80" \
          && make pkg.txz.build \
          && tar -xvf build/pkg/txz/nccl_*.txz -C $CONDA_PREFIX --strip-components=1
      ```

   1. Compile e instale. PyTorch Para completar este proceso se necesita por lo general algo más de una hora. Compilar con la versión NCCL descargada en un paso anterior.

      ```
      RUN cd /pytorch \
          && CMAKE_PREFIX_PATH="$(dirname $(which conda))/../" \
          python setup.py install \
          && rm -rf /pytorch
      ```

1. Cree e instale el [complemento OFI NCCL de AWS](https://github.com/aws/aws-ofi-nccl). Esto permite que [libfabric sea](https://github.com/ofiwg/libfabric) compatible con la biblioteca paralela de datos de SageMaker IA.

   ```
   RUN DEBIAN_FRONTEND=noninteractive apt-get update \
       && apt-get install -y --no-install-recommends \
           autoconf \
           automake \
           libtool
   RUN mkdir /tmp/efa-ofi-nccl \
       && cd /tmp/efa-ofi-nccl \
       && git clone https://github.com/aws/aws-ofi-nccl.git -b v${BRANCH_OFI} \
       && cd aws-ofi-nccl \
       && ./autogen.sh \
       && ./configure --with-libfabric=/opt/amazon/efa \
       --with-mpi=/opt/amazon/openmpi \
       --with-cuda=/usr/local/cuda \
       --with-nccl=$CONDA_PREFIX \
       && make \
       && make install \
       && rm -rf /tmp/efa-ofi-nccl
   ```

1. Compila e instala [TorchVision](https://github.com/pytorch/vision.git).

   ```
   RUN pip install --no-cache-dir -U \
       packaging \
       mpi4py==3.0.3
   RUN cd /tmp \
       && git clone https://github.com/pytorch/vision.git -b v0.9.1 \
       && cd vision \
       && BUILD_VERSION="0.9.1+cu111" python setup.py install \
       && cd /tmp \
       && rm -rf vision
   ```

1. Instale y configure OpenSSL. Se requiere OpenSSH para que MPI se comunique entre contenedores. Permita que OpenSSH se comunique con los contenedores sin necesidad de confirmación.

   ```
   RUN apt-get update \
       && apt-get install -y  --allow-downgrades --allow-change-held-packages --no-install-recommends \
       && apt-get install -y --no-install-recommends openssh-client openssh-server \
       && mkdir -p /var/run/sshd \
       && cat /etc/ssh/ssh_config | grep -v StrictHostKeyChecking > /etc/ssh/ssh_config.new \
       && echo "    StrictHostKeyChecking no" >> /etc/ssh/ssh_config.new \
       && mv /etc/ssh/ssh_config.new /etc/ssh/ssh_config \
       && rm -rf /var/lib/apt/lists/*
   
   # Configure OpenSSH so that nodes can communicate with each other
   RUN mkdir -p /var/run/sshd && \
    sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
   RUN rm -rf /root/.ssh/ && \
    mkdir -p /root/.ssh/ && \
    ssh-keygen -q -t rsa -N '' -f /root/.ssh/id_rsa && \
    cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys \
    && printf "Host *\n StrictHostKeyChecking no\n" >> /root/.ssh/config
   ```

1. Instale el complemento PT S3 para acceder de manera eficiente a los conjuntos de datos de Amazon S3.

   ```
   RUN pip install --no-cache-dir -U ${PT_S3_WHL_GPU}
   RUN mkdir -p /etc/pki/tls/certs && cp /etc/ssl/certs/ca-certificates.crt /etc/pki/tls/certs/ca-bundle.crt
   ```

1. Instale la biblioteca [libboost](https://www.boost.org/). Este paquete es necesario para conectar en red la funcionalidad de E/S asíncrona de la biblioteca paralela de SageMaker datos de IA.

   ```
   WORKDIR /
   RUN wget https://sourceforge.net/projects/boost/files/boost/1.73.0/boost_1_73_0.tar.gz/download -O boost_1_73_0.tar.gz \
       && tar -xzf boost_1_73_0.tar.gz \
       && cd boost_1_73_0 \
       && ./bootstrap.sh \
       && ./b2 threading=multi --prefix=${CONDA_PREFIX} -j 64 cxxflags=-fPIC cflags=-fPIC install || true \
       && cd .. \
       && rm -rf boost_1_73_0.tar.gz \
       && rm -rf boost_1_73_0 \
       && cd ${CONDA_PREFIX}/include/boost
   ```

1. Instale las siguientes herramientas de SageMaker IA para la formación. PyTorch 

   ```
   WORKDIR /root
   RUN pip install --no-cache-dir -U \
       smclarify \
       "sagemaker>=2,<3" \
       sagemaker-experiments==0.* \
       sagemaker-pytorch-training
   ```

1. Por último, instale el binario paralelo de datos de SageMaker IA y las dependencias restantes.

   ```
   RUN --mount=type=cache,id=apt-final,target=/var/cache/apt \
     apt-get update && apt-get install -y  --no-install-recommends \
     jq \
     libhwloc-dev \
     libnuma1 \
     libnuma-dev \
     libssl1.1 \
     libtool \
     hwloc \
     && rm -rf /var/lib/apt/lists/*
   
   RUN SMDATAPARALLEL_PT=1 pip install --no-cache-dir ${SMDATAPARALLEL_BINARY}
   ```

1. Cuando termine de crear el Dockerfile, consulte [Adaptación de su propio contenedor de formación](https://docs.aws.amazon.com/sagemaker/latest/dg/adapt-training-container.html) para obtener información sobre cómo crear el contenedor de Docker, alojarlo en Amazon ECR y ejecutar un trabajo de formación con el SDK de Python. SageMaker 

El siguiente código de ejemplo muestra un dockerfile completo tras combinar todos los bloques de código anteriores.

```
# This file creates a docker image with minimum dependencies to run SageMaker AI data parallel training
FROM nvidia/cuda:11.3.1-cudnn8-devel-ubuntu20.04

# Set appropiate versions and location for components
ARG PYTORCH_VERSION=1.10.2
ARG PYTHON_SHORT_VERSION=3.8
ARG EFA_VERSION=1.14.1
ARG SMDATAPARALLEL_BINARY=https://smdataparallel.s3.amazonaws.com/binary/pytorch/${PYTORCH_VERSION}/cu113/2022-02-18/smdistributed_dataparallel-1.4.0-cp38-cp38-linux_x86_64.whl
ARG PT_S3_WHL_GPU=https://aws-s3-plugin.s3.us-west-2.amazonaws.com/binaries/0.0.1/1c3e69e/awsio-0.0.1-cp38-cp38-manylinux1_x86_64.whl
ARG CONDA_PREFIX="/opt/conda"
ARG BRANCH_OFI=1.1.3-aws

# Set ENV variables required to build PyTorch
ENV TORCH_CUDA_ARCH_LIST="3.7 5.0 7.0+PTX 8.0"
ENV TORCH_NVCC_FLAGS="-Xfatbin -compress-all"
ENV NCCL_VERSION=2.10.3

# Add OpenMPI to the path.
ENV PATH /opt/amazon/openmpi/bin:$PATH

# Add Conda to path
ENV PATH $CONDA_PREFIX/bin:$PATH

# Set this enviroment variable for SageMaker AI to launch SMDDP correctly.
ENV SAGEMAKER_TRAINING_MODULE=sagemaker_pytorch_container.training:main

# Add enviroment variable for processes to be able to call fork()
ENV RDMAV_FORK_SAFE=1

# Indicate the container type
ENV DLC_CONTAINER_TYPE=training

# Add EFA and SMDDP to LD library path
ENV LD_LIBRARY_PATH="/opt/conda/lib/python${PYTHON_SHORT_VERSION}/site-packages/smdistributed/dataparallel/lib:$LD_LIBRARY_PATH"
ENV LD_LIBRARY_PATH=/opt/amazon/efa/lib/:$LD_LIBRARY_PATH

# Install basic dependencies to download and build other dependencies
RUN --mount=type=cache,id=apt-final,target=/var/cache/apt \
  apt-get update && apt-get install -y  --no-install-recommends \
  curl \
  wget \
  git \
  && rm -rf /var/lib/apt/lists/*

# Install EFA.
# This is required for SMDDP backend communication
RUN DEBIAN_FRONTEND=noninteractive apt-get update
RUN mkdir /tmp/efa \
    && cd /tmp/efa \
    && curl --silent -O https://efa-installer.amazonaws.com/aws-efa-installer-${EFA_VERSION}.tar.gz \
    && tar -xf aws-efa-installer-${EFA_VERSION}.tar.gz \
    && cd aws-efa-installer \
    && ./efa_installer.sh -y --skip-kmod -g \
    && rm -rf /tmp/efa

# Install Conda
RUN curl -fsSL -v -o ~/miniconda.sh -O  https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh  && \
    chmod +x ~/miniconda.sh && \
    ~/miniconda.sh -b -p $CONDA_PREFIX && \
    rm ~/miniconda.sh && \
    $CONDA_PREFIX/bin/conda install -y python=${PYTHON_SHORT_VERSION} conda-build pyyaml numpy ipython && \
    $CONDA_PREFIX/bin/conda clean -ya

# Install PyTorch.
# Start with dependencies listed in official PyTorch dockerfile
# https://github.com/pytorch/pytorch/blob/master/Dockerfile
RUN DEBIAN_FRONTEND=noninteractive \
    apt-get install -y --no-install-recommends \
        build-essential \
        ca-certificates \
        ccache \
        cmake \
        git \
        libjpeg-dev \
        libpng-dev && \
    rm -rf /var/lib/apt/lists/*

# Setup ccache
RUN /usr/sbin/update-ccache-symlinks
RUN mkdir /opt/ccache && ccache --set-config=cache_dir=/opt/ccache

# Common dependencies for PyTorch
RUN conda install astunparse numpy ninja pyyaml mkl mkl-include setuptools cmake cffi typing_extensions future six requests dataclasses

# Linux specific dependency for PyTorch
RUN conda install -c pytorch magma-cuda113

# Clone PyTorch
RUN --mount=type=cache,target=/opt/ccache \
    cd / \
    && git clone --recursive https://github.com/pytorch/pytorch -b v${PYTORCH_VERSION}
# Note that we need to use the same NCCL version for PyTorch and OFI plugin.
# To enforce that, install NCCL from source before building PT and OFI plugin.

# Install NCCL.
# Required for building OFI plugin (OFI requires NCCL's header files and library)
RUN cd /pytorch/third_party/nccl \
    && rm -rf nccl \
    && git clone https://github.com/NVIDIA/nccl.git -b v${NCCL_VERSION}-1 \
    && cd nccl \
    && make -j64 src.build CUDA_HOME=/usr/local/cuda NVCC_GENCODE="-gencode=arch=compute_70,code=sm_70 -gencode=arch=compute_80,code=sm_80" \
    && make pkg.txz.build \
    && tar -xvf build/pkg/txz/nccl_*.txz -C $CONDA_PREFIX --strip-components=1

# Build and install PyTorch.
RUN cd /pytorch \
    && CMAKE_PREFIX_PATH="$(dirname $(which conda))/../" \
    python setup.py install \
    && rm -rf /pytorch

RUN ccache -C

# Build and install OFI plugin. \
# It is required to use libfabric.
RUN DEBIAN_FRONTEND=noninteractive apt-get update \
    && apt-get install -y --no-install-recommends \
        autoconf \
        automake \
        libtool
RUN mkdir /tmp/efa-ofi-nccl \
    && cd /tmp/efa-ofi-nccl \
    && git clone https://github.com/aws/aws-ofi-nccl.git -b v${BRANCH_OFI} \
    && cd aws-ofi-nccl \
    && ./autogen.sh \
    && ./configure --with-libfabric=/opt/amazon/efa \
        --with-mpi=/opt/amazon/openmpi \
        --with-cuda=/usr/local/cuda \
        --with-nccl=$CONDA_PREFIX \
    && make \
    && make install \
    && rm -rf /tmp/efa-ofi-nccl

# Build and install Torchvision
RUN pip install --no-cache-dir -U \
    packaging \
    mpi4py==3.0.3
RUN cd /tmp \
    && git clone https://github.com/pytorch/vision.git -b v0.9.1 \
    && cd vision \
    && BUILD_VERSION="0.9.1+cu111" python setup.py install \
    && cd /tmp \
    && rm -rf vision

# Install OpenSSH.
# Required for MPI to communicate between containers, allow OpenSSH to talk to containers without asking for confirmation
RUN apt-get update \
    && apt-get install -y  --allow-downgrades --allow-change-held-packages --no-install-recommends \
    && apt-get install -y --no-install-recommends openssh-client openssh-server \
    && mkdir -p /var/run/sshd \
    && cat /etc/ssh/ssh_config | grep -v StrictHostKeyChecking > /etc/ssh/ssh_config.new \
    && echo "    StrictHostKeyChecking no" >> /etc/ssh/ssh_config.new \
    && mv /etc/ssh/ssh_config.new /etc/ssh/ssh_config \
    && rm -rf /var/lib/apt/lists/*
# Configure OpenSSH so that nodes can communicate with each other
RUN mkdir -p /var/run/sshd && \
    sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
RUN rm -rf /root/.ssh/ && \
    mkdir -p /root/.ssh/ && \
    ssh-keygen -q -t rsa -N '' -f /root/.ssh/id_rsa && \
    cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys \
    && printf "Host *\n StrictHostKeyChecking no\n" >> /root/.ssh/config

# Install PT S3 plugin.
# Required to efficiently access datasets in Amazon S3
RUN pip install --no-cache-dir -U ${PT_S3_WHL_GPU}
RUN mkdir -p /etc/pki/tls/certs && cp /etc/ssl/certs/ca-certificates.crt /etc/pki/tls/certs/ca-bundle.crt

# Install libboost from source.
# This package is needed for smdataparallel functionality (for networking asynchronous IO).
WORKDIR /
RUN wget https://sourceforge.net/projects/boost/files/boost/1.73.0/boost_1_73_0.tar.gz/download -O boost_1_73_0.tar.gz \
    && tar -xzf boost_1_73_0.tar.gz \
    && cd boost_1_73_0 \
    && ./bootstrap.sh \
    && ./b2 threading=multi --prefix=${CONDA_PREFIX} -j 64 cxxflags=-fPIC cflags=-fPIC install || true \
    && cd .. \
    && rm -rf boost_1_73_0.tar.gz \
    && rm -rf boost_1_73_0 \
    && cd ${CONDA_PREFIX}/include/boost

# Install SageMaker AI PyTorch training.
WORKDIR /root
RUN pip install --no-cache-dir -U \
    smclarify \
    "sagemaker>=2,<3" \
    sagemaker-experiments==0.* \
    sagemaker-pytorch-training

# Install SageMaker AI data parallel binary (SMDDP)
# Start with dependencies
RUN --mount=type=cache,id=apt-final,target=/var/cache/apt \
    apt-get update && apt-get install -y  --no-install-recommends \
        jq \
        libhwloc-dev \
        libnuma1 \
        libnuma-dev \
        libssl1.1 \
        libtool \
        hwloc \
    && rm -rf /var/lib/apt/lists/*

# Install SMDDP
RUN SMDATAPARALLEL_PT=1 pip install --no-cache-dir ${SMDATAPARALLEL_BINARY}
```

**sugerencia**  
[Para obtener más información general sobre cómo crear un Dockerfile personalizado para la formación en SageMaker IA, consulte Use sus propios algoritmos de entrenamiento.](https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms-training-algo.html)

**sugerencia**  
Si desea ampliar el Dockerfile personalizado para incorporar la biblioteca paralela de SageMaker modelos AI, consulte. [Cree su propio contenedor Docker con la biblioteca paralela de modelos distribuidos SageMaker](model-parallel-sm-sdk.md#model-parallel-bring-your-own-container)

# Ejemplos de bibliotecas de paralelismo de datos de Amazon SageMaker AI
<a name="distributed-data-parallel-v2-examples"></a>

Esta página incluye cuadernos de Jupyter con ejemplos de implementación de la biblioteca de paralelismo de datos distribuidos de SageMaker IA (SMDDP) para realizar trabajos de formación distribuidos sobre IA. SageMaker 

## Blogs y casos prácticos
<a name="distributed-data-parallel-v2-examples-blog"></a>

En los siguientes blogs se analizan casos prácticos sobre el uso de la biblioteca de SMDDP.

**Blogs sobre SMDDP v2**
+ [Realice un entrenamiento más rápido con la biblioteca paralela de datos Amazon SageMaker AI](https://aws.amazon.com/blogs/machine-learning/enable-faster-training-with-amazon-sagemaker-data-parallel-library/), *AWS Machine Learning Blog* (5 de diciembre de 2023)

**Blogs sobre SMDDP v1**
+ [Cómo entrené 10 TB para Stable Diffusion con SageMaker IA en](https://medium.com/@emilywebber/how-i-trained-10tb-for-stable-diffusion-on-sagemaker-39dcea49ce32) *Medium* (29 de noviembre de 2022)
+ [Ejecute PyTorch Lightning y el PyTorch DDP nativo en Amazon SageMaker Training, que incluye Amazon Search](https://aws.amazon.com/blogs/machine-learning/run-pytorch-lightning-and-native-pytorch-ddp-on-amazon-sagemaker-training-featuring-amazon-search/), *AWS Machine Learning Blog* (18 de agosto de 2022)
+ [Capacitación YOLOv5 sobre la biblioteca paralela de datos distribuidos AWS con PyTorch SageMaker IA](https://medium.com/@sitecao/training-yolov5-on-aws-with-pytorch-and-sagemaker-distributed-data-parallel-library-a196ab01409b), *Medium* (6 de mayo de 2022)
+ [Acelere el entrenamiento de EfficientNet modelos sobre SageMaker IA con PyTorch la biblioteca paralela de datos distribuidos de SageMaker IA](https://medium.com/@dangmz/speed-up-efficientnet-model-training-on-amazon-sagemaker-with-pytorch-and-sagemaker-distributed-dae4b048c01a), *Medium* (21 de marzo de 2022)
+ [Acelere el EfficientNet entrenamiento AWS con la biblioteca paralela de datos distribuidos de SageMaker IA](https://towardsdatascience.com/speed-up-efficientnet-training-on-aws-by-up-to-30-with-sagemaker-distributed-data-parallel-library-2dbf6d1e18e8), *Towards Data Science* (12 de enero de 2022)
+ [Hyundai reduce el tiempo de entrenamiento de los modelos de aprendizaje automático para modelos de conducción autónoma mediante Amazon SageMaker AI](https://aws.amazon.com/blogs/machine-learning/hyundai-reduces-training-time-for-autonomous-driving-models-using-amazon-sagemaker/), *AWS Machine Learning Blog* (25 de junio de 2021)
+ [Capacitación distribuida: entrena a BART/T5 para resumir con Transformers y Amazon AI, SageMaker el](https://huggingface.co/blog/sagemaker-distributed-training-seq2seq) sitio web de Hugging Face (8 de *abril de 2021*)

## Cuadernos de ejemplo
<a name="distributed-data-parallel-v2-examples-pytorch"></a>

[En el repositorio de ejemplos de IA se proporcionan cuadernos de ejemplo. SageMaker GitHub ](https://github.com/aws/amazon-sagemaker-examples/tree/master/training/distributed_training/) Para descargar los ejemplos, ejecute el siguiente comando para clonar el repositorio e ir a `training/distributed_training/pytorch/data_parallel`.

**nota**  
Clona y ejecuta los cuadernos de ejemplo en el siguiente SageMaker AI ML. IDEs  
[SageMaker IA JupyterLab](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated-jl.html) (disponible en [Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated.html) creado después de diciembre de 2023)
[SageMaker Editor de código AI](https://docs.aws.amazon.com/sagemaker/latest/dg/code-editor.html) (disponible en [Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated.html) creado después de diciembre de 2023)
[Studio Classic](https://docs.aws.amazon.com/sagemaker/latest/dg/studio.html) (disponible como aplicación en [Studio](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-updated.html) creado después de diciembre de 2023)
[SageMaker Instancias de cuadernos](https://docs.aws.amazon.com/sagemaker/latest/dg/nbi.html)

```
git clone https://github.com/aws/amazon-sagemaker-examples.git
cd amazon-sagemaker-examples/training/distributed_training/pytorch/data_parallel
```

**Ejemplos de SMDDP v2**
+ [Entrene a Llama 2 con la biblioteca paralela de datos distribuidos de SageMaker IA (SMDDP) y DeepSpeed](https://github.com/aws/amazon-sagemaker-examples/blob/main/training/distributed_training/pytorch/data_parallel/deepspeed/llama2/smddp_deepspeed_example.ipynb)
+ [Entrene a Falcon con la biblioteca paralela de datos distribuidos de SageMaker IA (SMDDP) y el paralelismo de datos PyTorch totalmente fragmentado (FSDP)](https://github.com/aws/amazon-sagemaker-examples/blob/main/training/distributed_training/pytorch/data_parallel/fully_sharded_data_parallel/falcon/smddp_fsdp_example.ipynb)

**Ejemplos de SMDDP v1**
+ [CNN PyTorch con la biblioteca de paralelismo de datos de SageMaker IA](https://github.com/aws/amazon-sagemaker-examples/blob/main/training/distributed_training/pytorch/data_parallel/mnist/pytorch_smdataparallel_mnist_demo.ipynb)
+ [BERT con PyTorch y la biblioteca de paralelismo de datos de SageMaker IA](https://github.com/aws/amazon-sagemaker-examples/blob/main/training/distributed_training/pytorch/data_parallel/bert/pytorch_smdataparallel_bert_demo.ipynb)
+ [CNN con la TensorFlow versión 2.3.1 y la biblioteca de paralelismo de datos de IA SageMaker ](https://sagemaker-examples.readthedocs.io/en/latest/training/distributed_training/tensorflow/data_parallel/mnist/tensorflow2_smdataparallel_mnist_demo.html)
+ [BERT con TensorFlow 2.3.1 y la biblioteca de paralelismo de datos de IA SageMaker ](https://sagemaker-examples.readthedocs.io/en/latest/training/distributed_training/tensorflow/data_parallel/bert/tensorflow2_smdataparallel_bert_demo.html)
+ [HuggingFace Formación paralela sobre datos distribuidos PyTorch sobre SageMaker IA: respuestas a preguntas distribuidas](https://github.com/huggingface/notebooks/blob/master/sagemaker/03_distributed_training_data_parallelism/sagemaker-notebook.ipynb)
+ [HuggingFace Formación paralela sobre datos distribuidos PyTorch sobre la SageMaker IA: resumen de textos distribuidos](https://github.com/huggingface/notebooks/blob/master/sagemaker/08_distributed_summarization_bart_t5/sagemaker-notebook.ipynb)
+ [HuggingFace Formación paralela sobre datos distribuidos TensorFlow sobre la IA SageMaker ](https://github.com/huggingface/notebooks/blob/master/sagemaker/07_tensorflow_distributed_training_data_parallelism/sagemaker-notebook.ipynb)

# Consejos de configuración para la biblioteca de paralelismo de datos distribuidos de SageMaker IA
<a name="data-parallel-config"></a>

Revise los siguientes consejos antes de usar la biblioteca de paralelismo de datos distribuidos de SageMaker IA (SMDDP). Esta lista incluye sugerencias que se aplican en todos los marcos.

**Topics**
+ [Preprocesamiento de datos](#data-parallel-config-dataprep)
+ [Nodos únicos frente a nodos múltiples](#data-parallel-config-multi-node)
+ [Depuración de la eficiencia del escalado con el depurador](#data-parallel-config-debug)
+ [Tamaño de lote](#data-parallel-config-batch-size)
+ [Opciones MPI personalizadas](#data-parallel-config-mpi-custom)
+ [Usa Amazon FSx y configura una capacidad óptima de almacenamiento y rendimiento](#data-parallel-config-fxs)

## Preprocesamiento de datos
<a name="data-parallel-config-dataprep"></a>

Si preprocesas los datos durante el entrenamiento con una biblioteca externa que utiliza la CPU, es posible que te encuentres con un cuello de botella en la CPU, ya que los datos SageMaker distribuidos por IA en paralelo utilizan la CPU para las operaciones. `AllReduce` Es posible que puedas mejorar el tiempo de entrenamiento trasladando los pasos de preprocesamiento a una biblioteca que utilice GPUs o completando todo el preprocesamiento antes del entrenamiento.

## Nodos únicos frente a nodos múltiples
<a name="data-parallel-config-multi-node"></a>

Le recomendamos que utilice esta biblioteca con varios nodos. La biblioteca se puede utilizar con una configuración de un solo host y varios dispositivos (por ejemplo, una sola instancia de procesamiento de aprendizaje automático con varios GPUs); sin embargo, cuando se utilizan dos o más nodos, el `AllReduce` funcionamiento de la biblioteca mejora considerablemente el rendimiento. Además, en un solo host, NVLink ya contribuye a la eficiencia en los nodos. `AllReduce`

## Depuración de la eficiencia del escalado con el depurador
<a name="data-parallel-config-debug"></a>

Puede utilizar Amazon SageMaker Debugger para supervisar y visualizar el uso de la CPU y la GPU y otras métricas de interés durante el entrenamiento. Puede utilizar las [reglas integradas](https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-built-in-rules.html) del depurador para monitorizar los problemas de rendimiento computacional, como `CPUBottleneck`, `LoadBalancing` y `LowGPUUtilization`. Puede especificar estas reglas con las [configuraciones del depurador](https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-configuration-for-debugging.html) al definir un estimador del SDK de Amazon SageMaker Python. Si utilizas AWS CLI y AWS SDK para Python (Boto3) para formarte en SageMaker IA, puedes habilitar el depurador como se muestra en [Configurar el SageMaker depurador mediante la API de Amazon SageMaker ](https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-createtrainingjob-api.html).

[Para ver un ejemplo del uso de Debugger en un trabajo de SageMaker formación, puedes consultar uno de los ejemplos de cuadernos del repositorio Notebook SageMaker Examples. GitHub ](https://github.com/aws/amazon-sagemaker-examples/tree/master/sagemaker-debugger) Para obtener más información sobre Debugger, consulte [Amazon SageMaker Debugger](https://docs.aws.amazon.com/sagemaker/latest/dg/train-debugger.html).

## Tamaño de lote
<a name="data-parallel-config-batch-size"></a>

En el entrenamiento distribuido, a medida que se agreguen más nodos, el tamaño de los lotes debería aumentar proporcionalmente. Para mejorar la velocidad de convergencia a medida que añade más nodos a su trabajo de entrenamiento y aumenta el tamaño de los lotes globales, aumente la tasa de aprendizaje.

Una forma de lograrlo es mediante un calentamiento gradual de la tasa de aprendizaje, en el que la tasa de aprendizaje aumente de un valor pequeño a uno grande a medida que avanza el trabajo de entrenamiento. Esta rampa evita un aumento repentino de la tasa de aprendizaje, lo que permite una convergencia saludable al inicio del entrenamiento. Por ejemplo, puede utilizar una *regla de escalado lineal* según la cual cada vez que el tamaño del minilote se multiplique por k, la tasa de aprendizaje también se multiplique por k. Para obtener más información sobre esta técnica, consulte el paper de investigación Accurate[, Large Minibatch SGD: Training ImageNet in 1 Hour](https://arxiv.org/pdf/1706.02677.pdf), secciones 2 y 3.

## Opciones MPI personalizadas
<a name="data-parallel-config-mpi-custom"></a>

La biblioteca paralela de datos distribuidos de SageMaker IA emplea la interfaz de paso de mensajes (MPI), un estándar popular para gestionar la comunicación entre los nodos de un clúster de alto rendimiento, y utiliza la biblioteca NCCL de NVIDIA para la comunicación a nivel de GPU. Cuando utilizas la biblioteca paralela de datos con un Pytorch TensorFlow o Pytorch`Estimator`, el contenedor correspondiente configura el entorno MPI y ejecuta el `mpirun` comando para iniciar las tareas en los nodos del clúster.

Puede configurar operaciones de MPI personalizadas mediante el parámetro `custom_mpi_options` en el `Estimator`. Todos los `mpirun` indicadores que se pasen en este campo se añadirán al `mpirun` comando y la IA los ejecutará como entrenamiento. SageMaker Por ejemplo, puede definir el parámetro `distribution` de un `Estimator` utilizando lo siguiente para utilizar la variable [https://docs.nvidia.com/deeplearning/nccl/user-guide/docs/env.html#nccl-debug](https://docs.nvidia.com/deeplearning/nccl/user-guide/docs/env.html#nccl-debug) para imprimir la versión NCCL al inicio del programa:

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

## Usa Amazon FSx y configura una capacidad óptima de almacenamiento y rendimiento
<a name="data-parallel-config-fxs"></a>

[Cuando se entrena un modelo en varios nodos con paralelismo de datos distribuido, se recomienda encarecidamente utilizar Lustre. FSx ](https://docs.aws.amazon.com/fsx/latest/LustreGuide/what-is.html) Amazon FSx es un servicio de almacenamiento escalable y de alto rendimiento que admite el almacenamiento de archivos compartidos con un rendimiento más rápido. Al utilizar el FSx almacenamiento de Amazon a escala, puede lograr una velocidad de carga de datos más rápida en todos los nodos de procesamiento.

Por lo general, con el paralelismo de datos distribuidos, es de esperar que el rendimiento total del entrenamiento aumente casi linealmente con el número de. GPUs Sin embargo, si utilizas un almacenamiento de FSx Amazon inferior al óptimo, es posible que el rendimiento del entrenamiento se ralentice debido al bajo rendimiento de Amazon FSx . 

Por ejemplo, si utilizas el [tipo de despliegue **SCRATCH\$12** del sistema de FSx archivos de Amazon](https://docs.aws.amazon.com/fsx/latest/LustreGuide/performance.html#fsx-aggregate-perf) con una capacidad de almacenamiento mínima de 1,2 TiB, la capacidad de I/O procesamiento es de 240. MB/s. Amazon FSx storage works in a way that you can assign physical storage devices, and the more devices assigned, the larger throughput you get. The smallest storage increment for the SRATCH\$12 type is 1.2 TiB, and the corresponding throughput gain is 240 MB/s

Suponga que tiene un modelo para entrenar en un clúster de 4 nodos con un conjunto de datos de 100 GB. Con un tamaño de lote determinado que esté optimizado para el clúster, suponga que el modelo puede completar una época en unos 30 segundos. En este caso, la I/O velocidad mínima requerida es de aproximadamente 3 GB/s (100 GB/ 30 s). Aparentemente, este es un requisito de rendimiento mucho mayor que 240 problemas de MB/s. With such a limited Amazon FSx capacity, scaling your distributed training job up to larger clusters might aggravate I/O cuello de botella; el rendimiento del entrenamiento de modelos podría mejorar en épocas posteriores a medida que se acumula la memoria caché, pero el FSx rendimiento de Amazon puede seguir siendo un cuello de botella.

Para aliviar estos problemas de I/O embotellamiento, deberías aumentar el tamaño de FSx almacenamiento de Amazon para obtener una mayor capacidad de procesamiento. Por lo general, para encontrar un I/O rendimiento óptimo, puede experimentar con diferentes capacidades de FSx rendimiento de Amazon y asignar un rendimiento igual o ligeramente inferior al estimado, hasta que descubra que es suficiente para resolver los problemas de embotellamiento. I/O En el caso del ejemplo mencionado anteriormente, el FSx almacenamiento de Amazon con un GB/s rendimiento de 2,4 y una caché RAM de 67 GB sería suficiente. Si el sistema de archivos tiene un rendimiento óptimo, el rendimiento de entrenamiento del modelo debería alcanzar el máximo inmediatamente o después de la primera fase a medida que se acumule la memoria caché.

Para obtener más información sobre cómo aumentar los tipos FSx de almacenamiento y despliegue de Amazon, consulte las siguientes páginas de la *documentación de Amazon FSx for Lustre*:
+  [Cómo aumentar la capacidad de almacenamiento](https://docs.aws.amazon.com/fsx/latest/LustreGuide/managing-storage-capacity.html#increase-storage-capacity) 
+  [Rendimiento agregado del sistema de archivos](https://docs.aws.amazon.com/fsx/latest/LustreGuide/performance.html#fsx-aggregate-perf) 

# Preguntas frecuentes sobre la biblioteca de paralelismo de datos distribuidos de Amazon SageMaker AI
<a name="data-parallel-faq"></a>

Utilice lo siguiente para buscar respuestas a las preguntas más frecuentes sobre la biblioteca de SMDDP.

**P: Cuando utiliza la biblioteca, ¿cómo se gestionan las instancias de CPU compatibles con `allreduce`? ¿Tengo que crear clústeres de CPU-GPU heterogéneos o el servicio de SageMaker AI crea C5 adicionales para trabajos que utilizan la biblioteca de SMDDP?**

La biblioteca de SMDDP solo admite instancias de GPU, más específicamente, instancias P4d y P4de con GPU NVIDIA A100 y EFA. No se inicializan instancias C5 o CPU adicionales; si su trabajo de entrenamiento de SageMaker AI es en un clúster P4d de 8 nodos, solo se utilizan 8 instancias de `ml.p4d.24xlarge`. No se aprovisionan instancias adicionales.

**P: Tengo un trabajo de entrenamiento que tarda 5 días en una sola instancia de `ml.p3.24xlarge` con un conjunto de hiperparámetros H1 (tasa de aprendizaje, tamaño de lote, optimizador, etc.). ¿Usar la biblioteca de paralelismo de datos de SageMaker AI y un clúster cinco veces más grande es suficiente para lograr una aceleración aproximada multiplicada por cinco? ¿O tengo que revisar sus hiperparámetros de entrenamiento después de activar la biblioteca de SMDDP?**

La biblioteca cambia el tamaño total del lote. El nuevo tamaño general del lote se escala linealmente con la cantidad de instancias de entrenamiento utilizadas. Como resultado de esto, hay que cambiar los hiperparámetros, como la tasa de aprendizaje, para garantizar la convergencia. 

**P: ¿La biblioteca de SMDDP admite Spot?**

Sí. Cómo utilizar el entrenamiento puntual gestionado. Usted debe especificar la ruta al archivo de punto de control en el trabajo de entrenamiento de SageMaker. Se habilitan los puntos de control para guardar y restaurar en su script de entrenamiento, tal como se menciona en los últimos pasos de [Utilice la biblioteca SMDDP en su script de TensorFlow entrenamiento (obsoleta)](data-parallel-modify-sdp-tf2.md) y [Utilice la biblioteca SMDDP en su guion de formación PyTorch](data-parallel-modify-sdp-pt.md). 

**P: ¿Es relevante la biblioteca de SMDDP en la configuración de un solo host y varios dispositivos?**

Es posible utilizar la biblioteca en el entrenamiento con un solo host y varios dispositivos, pero solo ofrece mejoras de rendimiento en el entrenamiento con varios hosts.

**P: ¿Dónde debe almacenarse el conjunto de datos de entrenamiento?**

El conjunto de datos de entrenamiento puede almacenarse en un bucket de Amazon S3 o en una unidad de Amazon FSx. Consulte este [documento para conocer varios sistemas de archivos de entrada compatibles para un trabajo de entrenamiento](https://sagemaker.readthedocs.io/en/stable/api/utility/inputs.html#sagemaker.inputs.FileSystemInput). 

**P: Al utilizar la biblioteca de SMDDP, ¿es obligatorio tener datos de entrenamiento en FSx para Lustre? ¿Se pueden utilizar Amazon EFS y Amazon S3?**

Por lo general, le recomendamos que utilice Amazon FSx debido a su menor latencia y mayor rendimiento. Si lo prefiere, puede utilizar Amazon EFS o Amazon S3.

**P: ¿Se puede utilizar la biblioteca con nodos de CPU?** 

No. Para buscar tipos de instancias compatibles con la biblioteca SMDDP, consulte [Tipos de instancias admitidas](distributed-data-parallel-support.md#distributed-data-parallel-supported-instance-types).

**P: ¿Qué marcos y versiones de marco admite actualmente la biblioteca de SMDDP en la inicialización?** 

La biblioteca de SMDDP admite actualmente PyTorch v1.6.0 o versiones posteriores y TensorFlow v2.3.0 o versiones posteriores. No es compatible con TensorFlow 1.x. Para obtener más información sobre qué versión de la biblioteca de SMDDP está empaquetada en los contenedores de aprendizaje profundo de AWS, consulte [Notas de versión para los contenedores de aprendizaje profundo](https://docs.aws.amazon.com/deep-learning-containers/latest/devguide/dlc-release-notes.html).

**P: ¿La biblioteca admite AMP?**

Sí, la biblioteca de SMDDP admite precisión mixta automática (AMP) desde el primer momento. No se necesita ninguna acción adicional para habilitar AMP que no sean las modificaciones a nivel de marco de su script de entrenamiento. Si los gradientes están en FP16, la biblioteca de paralelismo de datos de SageMaker AI ejecuta su operación `AllReduce` en FP16. Para obtener más información sobre la implementación de API de AMP en su script de entrenamiento, consulte los siguientes recursos:
+ [Marcos: PyTorch](https://docs.nvidia.com/deeplearning/performance/mixed-precision-training/index.html#pytorch) en la *documentación de rendimiento de aprendizaje profundo de NVIDIA*
+ [Marcos: TensorFlow](https://docs.nvidia.com/deeplearning/performance/mixed-precision-training/index.html#tensorflow) en la *documentación de rendimiento de aprendizaje profundo de NVIDIA*
+ [Precisión mixta automática para aprendizaje profundo](https://developer.nvidia.com/automatic-mixed-precision) en los *Documentos para desarrolladores de NVIDIA*
+ [Presentamos la precisión mixta automática nativa de PyTorch para un entrenamiento más rápido en las GPU NVIDIA](https://pytorch.org/blog/accelerating-training-on-nvidia-gpus-with-pytorch-automatic-mixed-precision/) en el *Blog de PyTorch*
+ [API de precisión mixta de TensorFlow](https://www.tensorflow.org/guide/mixed_precision) en la *documentación de TensorFlow*

**P: ¿Cómo identifico si mi trabajo de entrenamiento distribuido se ralentiza debido a un cuello de botella de E/S?**

Con un clúster más grande, el trabajo de entrenamiento requiere más rendimiento de E/S y, por lo tanto, el rendimiento del entrenamiento podría tardar más (más épocas) en aumentar el rendimiento máximo. Esto indica que E/S está teniendo cuellos de botella y que el caché es más difícil de crear a medida que aumenta la escala de los nodos (mayor requerimiento de rendimiento, topología de red más compleja). Para obtener más información sobre la supervisión del rendimiento de Amazon FSx en CloudWatch, consulte [Monitorización de FSx para Lustre](https://docs.aws.amazon.com/fsx/latest/LustreGuide/monitoring_overview.html) en la *Guía del usuario de FSx para Lustre*. 

**P: ¿Cómo puedo resolver los cuellos de botella de E/S al ejecutar un trabajo de entrenamiento distribuido con paralelismo de datos?**

Le recomendamos encarecidamente que utilice Amazon FSx como canal de datos si utiliza Amazon S3. Si ya utiliza Amazon FSx pero sigue teniendo problemas de cuello de botella de E/S, es posible que haya configurado el sistema de archivos Amazon FSx con un bajo rendimiento de E/S y una pequeña capacidad de almacenamiento. Para obtener más información sobre cómo estimar y elegir el tamaño correcto de la capacidad de rendimiento de E/S, consulte[Usa Amazon FSx y configura una capacidad óptima de almacenamiento y rendimiento](data-parallel-config.md#data-parallel-config-fxs).

**P: (Para la biblioteca v1.4.0 o versiones posteriores) ¿Cómo puedo resolver el error `Invalid backend` al inicializar el grupo de procesos?**

Si aparece el mensaje de error `ValueError: Invalid backend: 'smddp'` al llamar a `init_process_group`, se debe a un cambio radical en la biblioteca de SMDDP v1.4.0 y versiones posteriores. Debe importar el cliente PyTorch de la biblioteca, `smdistributed.dataparallel.torch.torch_smddp`, que registra `smddp` como backend de PyTorch. Para obtener más información, consulte [Utilice la biblioteca SMDDP en su guion de formación PyTorch](data-parallel-modify-sdp-pt.md).

**P: (Para la biblioteca de SMDDP v1.4.0 o versiones posteriores) Me gustaría llamar a las primitivas colectivas de la interfaz [https://pytorch.org/docs/stable/distributed.html](https://pytorch.org/docs/stable/distributed.html). ¿Qué primitivas admite el backend de `smddp`?**

En v1.4.0, la biblioteca de SMDDP admite `all_reduce`, `broadcast`, `reduce`, `all_gather` y `barrier` de la interfaz de `torch.distributed`.

**P: (Para la biblioteca de SMDDP v1.4.0 o versiones posteriores) ¿Funciona esta nueva API con otras clases o bibliotecas de DDP personalizadas, como Apex DDP?**

La biblioteca de SMDDP se ha probado con otras bibliotecas de paralelismo de datos distribuidos por terceros e implementaciones de marcos que utilizan los módulos `torch.distribtued`. El uso de la biblioteca de SMDDP con clases de DDP personalizadas funciona siempre que la biblioteca de SMDDP admita las operaciones colectivas utilizadas por las clases de DDP personalizadas. Consulte la pregunta anterior para ver una lista de los colectivos compatibles. Si necesita más ayuda, póngase en contacto con el equipo de SageMaker AI a través del [Centro de soporte de AWS](https://console.aws.amazon.com/support/) o [Foros para desarrolladores de AWS para Amazon SageMaker AI](https://forums.aws.amazon.com/forum.jspa?forumID=285).

**P: ¿La biblioteca de SMDDP admite la opción de traer su propio contenedor (BYOC)? Si es así, ¿cómo instalo la biblioteca y ejecuto un trabajo de entrenamiento distribuido escribiendo un Dockerfile personalizado?**

Si quiere integrar la biblioteca de SMDDP y sus dependencias mínimas en su propio contenedor de Docker, BYOC es el enfoque correcto. Puede crear su propio contenedor utilizando el archivo binario de la biblioteca. El proceso recomendado consiste en escribir un Dockerfile personalizado con la biblioteca y sus dependencias, crear el contenedor de Docker, alojarlo en Amazon ECR y utilizar el URI de la imagen ECR para lanzar un trabajo de entrenamiento con la clase de estimador genérico de SageMaker AI. Para obtener más instrucciones sobre cómo preparar un Dockerfile personalizado para un entrenamiento distribuido en SageMaker AI con la biblioteca de SMDDP, consulte [Cree su propio contenedor Docker con la biblioteca paralela de datos distribuidos de SageMaker IA](data-parallel-bring-your-own-container.md).

# Solución de problemas para la formación distribuida en Amazon SageMaker AI
<a name="distributed-troubleshooting-data-parallel"></a>

Si tiene problemas para ejecutar un trabajo de entrenamiento cuando utiliza la biblioteca, utilice la siguiente lista para intentar solucionar el problema. Si necesitas más ayuda, ponte en contacto con el equipo de SageMaker IA a través del [AWS Support Center](https://console.aws.amazon.com/support/) o de [los foros de AWS desarrolladores de Amazon Amazon SageMaker AI](https://forums.aws.amazon.com/forum.jspa?forumID=285).

**Topics**
+ [Uso de datos distribuidos de SageMaker IA en paralelo con Amazon SageMaker Debugger y puntos de control](#distributed-ts-data-parallel-debugger)
+ [Un prefijo inesperado adjunto a las claves de parámetros del modelo](#distributed-ts-data-parallel-pytorch-prefix)
+ [SageMaker La IA distribuyó el trabajo de formación y se paralizó durante la inicialización](#distributed-ts-data-parallel-efa-sg)
+ [SageMaker La IA distribuyó el trabajo de formación y se estancó al final de la formación](#distributed-ts-data-parallel-stall-at-the-end)
+ [Observando la degradación de la eficiencia de escalado debido a los cuellos de botella en FSx el rendimiento de Amazon](#distributed-ts-data-parallel-fxs-bottleneck)
+ [SageMaker Un trabajo de formación distribuido por IA PyTorch devuelve advertencias de obsolescencia](#distributed-ts-data-parallel-deprecation-warnings)

## Uso de datos distribuidos de SageMaker IA en paralelo con Amazon SageMaker Debugger y puntos de control
<a name="distributed-ts-data-parallel-debugger"></a>

Para monitorear los cuellos de botella del sistema, perfilar las operaciones del marco y depurar los tensores de salida del modelo para tareas de entrenamiento con datos SageMaker distribuidos de IA en paralelo, utilice Amazon Debugger. SageMaker 

Sin embargo, cuando utilizas SageMaker Debugger, SageMaker AI distributed data parallel y SageMaker AI checkpoints, es posible que veas un error parecido al del siguiente ejemplo. 

```
SMDebug Does Not Currently Support Distributed Training Jobs With Checkpointing Enabled
```

Esto se debe a un error interno entre el depurador y los puntos de control, que se produce cuando se habilitan los datos distribuidos de SageMaker IA en paralelo. 
+ Si habilitas las tres funciones, el SDK de SageMaker Python desactiva automáticamente el Debugger de pasada`debugger_hook_config=False`, lo que equivale al siguiente `estimator` ejemplo de marco.

  ```
  bucket=sagemaker.Session().default_bucket()
  base_job_name="sagemaker-checkpoint-test"
  checkpoint_in_bucket="checkpoints"
  
  # The S3 URI to store the checkpoints
  checkpoint_s3_bucket="s3://{}/{}/{}".format(bucket, base_job_name, checkpoint_in_bucket)
  
  estimator = TensorFlow(
      ...
  
      distribution={"smdistributed": {"dataparallel": { "enabled": True }}},
      checkpoint_s3_uri=checkpoint_s3_bucket,
      checkpoint_local_path="/opt/ml/checkpoints",
      debugger_hook_config=False
  )
  ```
+ Si quieres seguir utilizando SageMaker AI distributed data parallel y SageMaker Debugger, una solución alternativa consiste en añadir manualmente funciones de puntos de control a tu guion de entrenamiento en lugar de especificar `checkpoint_local_path` los parámetros `checkpoint_s3_uri` y del estimador. Para obtener más información sobre cómo configurar los puntos de control manuales en un script de entrenamiento, consulte [Guardar puntos de control](distributed-troubleshooting-model-parallel.md#distributed-ts-model-parallel-checkpoints).

## Un prefijo inesperado adjunto a las claves de parámetros del modelo
<a name="distributed-ts-data-parallel-pytorch-prefix"></a>

En el caso de los trabajos de formación PyTorch distribuidos, es posible que se añada un prefijo inesperado (`model`por ejemplo) a `state_dict` las claves (parámetros del modelo). La biblioteca paralela de datos de SageMaker IA no altera ni antepone directamente ningún nombre de parámetro del modelo cuando los trabajos de PyTorch entrenamiento guardan artefactos del modelo. La PyTorch formación distribuida cambia los nombres de la `state_dict` red, anteponiendo el prefijo. Si encuentra algún problema de falla en el modelo debido a nombres de parámetros diferentes mientras utiliza la biblioteca paralela de datos de SageMaker IA y los puntos de control para el PyTorch entrenamiento, adapte el siguiente código de ejemplo para eliminar el prefijo en el paso en que carga los puntos de control en su script de entrenamiento.

```
state_dict = {k.partition('model.')[2]:state_dict[k] for k in state_dict.keys()}
```

Esto lleva cada clave `state_dict` como valor de cadena, separa la cadena en la primera aparición de `'model.'` y toma el tercer elemento de lista (con el índice 2) de la cadena particionada.

Para obtener más información sobre el problema de los prefijos, consulta un hilo de discusión en ¿[Prefijar los nombres de los parámetros en el modelo guardado](https://discuss.pytorch.org/t/prefix-parameter-names-in-saved-model-if-trained-by-multi-gpu/494) si se entrenan con varias GPU? *en el foro de debatePyTorch .*

Para obtener más información sobre los PyTorch métodos para guardar y cargar modelos, consulte [Guardar y cargar modelos en todos los dispositivos](https://pytorch.org/tutorials/beginner/saving_loading_models.html#saving-loading-model-across-devices) en la *PyTorchdocumentación*.

## SageMaker La IA distribuyó el trabajo de formación y se paralizó durante la inicialización
<a name="distributed-ts-data-parallel-efa-sg"></a>

Si su trabajo de formación en paralelo de datos distribuidos mediante SageMaker IA se detiene durante la inicialización al utilizar instancias habilitadas para EFA, es posible que se deba a un error de configuración en el grupo de seguridad de la subred de VPC que se utiliza para el trabajo de formación. EFA requiere una configuración de grupo de seguridad adecuada para habilitar el tráfico entre los nodos.

**Reglas de entrada y de salida para los grupos de seguridad**

1. Inicie sesión en la consola de Amazon VPC Consola de administración de AWS y ábrala en. [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/)

1. En el panel de navegación izquierdo, elija **Grupos de seguridad**.

1. Seleccione el grupo de seguridad vinculado a la subred de VPC que utiliza para el entrenamiento. 

1. En la sección **Detalles**, copie el **ID del grupo de seguridad**.

1. En la pestaña **Reglas de entrada**, seleccione **Editar reglas de entrada**.

1. En la página **Editar reglas de entrada**, haga lo siguiente: 

   1. Seleccione **Agregar regla**.

   1. En **Tipo**, seleccione **Todo el tráfico**.

   1. En **Fuente**, seleccione **Personalizado**, pegue el ID del grupo de seguridad en el cuadro de búsqueda y, a continuación, seleccione el grupo de seguridad que aparece.

1. Seleccione **Guardar reglas** para finalizar la configuración de la regla de entrada para el grupo de seguridad.

1. En la pestaña **Reglas de salida**, seleccione **Editar reglas de salida**.

1. Repita los pasos 6 y 7 para añadir la misma regla que una regla saliente.

Después de completar los pasos anteriores para configurar el grupo de seguridad con las reglas de entrada y salida, vuelva a ejecutar el trabajo de entrenamiento y verifique si se ha resuelto el problema de retraso.

Para obtener más información sobre la configuración de grupos de seguridad para VPC y EFA, consulte [Grupos de seguridad para la VPC](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) y [Elastic Fabric Adapter](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html).

## SageMaker La IA distribuyó el trabajo de formación y se estancó al final de la formación
<a name="distributed-ts-data-parallel-stall-at-the-end"></a>

Una de las causas fundamentales de los problemas de estancamiento al final del entrenamiento es la falta de coincidencia en el número de lotes que se procesan por época en diferentes rangos. Todos los trabajadores (GPUs) sincronizan sus gradientes locales al retroceder para garantizar que todos tengan la misma copia del modelo al final de la iteración por lotes. Si los tamaños de los lotes se asignan de forma desigual a diferentes grupos de trabajadores durante la última época del entrenamiento, el trabajo de entrenamiento se detiene. Por ejemplo, mientras un grupo de trabajadores (grupo A) termina de procesar todos los lotes y sale del ciclo de entrenamiento, otro grupo de trabajadores (grupo B) comienza a procesar otro lote y espera la comunicación del grupo A para sincronizar los degradados. Esto hace que el grupo B espere al grupo A, que ya ha completado el entrenamiento y no tiene degradados que sincronizar. 

Por lo tanto, al configurar el conjunto de datos del entrenamiento, es importante que cada trabajador obtenga el mismo número de muestras de datos para que cada trabajador pase por el mismo número de lotes durante el entrenamiento. Asegúrese de que cada rango obtenga el mismo número de lotes para evitar este problema de estancamiento.

## Observando la degradación de la eficiencia de escalado debido a los cuellos de botella en FSx el rendimiento de Amazon
<a name="distributed-ts-data-parallel-fxs-bottleneck"></a>

Una posible causa de la disminución de la eficiencia de escalado es el límite de rendimiento. FSx Si observa una caída repentina en la eficiencia del escalado al cambiar a un clúster de entrenamiento más grande, intente utilizar un sistema de archivos FSx para Lustre más grande con un límite de rendimiento más alto. Para obtener más información, consulte el [rendimiento agregado del sistema de archivos](https://docs.aws.amazon.com/fsx/latest/LustreGuide/performance.html#fsx-aggregate-perf) y la [administración de la capacidad de almacenamiento y rendimiento](https://docs.aws.amazon.com/fsx/latest/LustreGuide/managing-storage-capacity.html) en la Guía del *usuario de Amazon FSx for Lustre*.

## SageMaker Un trabajo de formación distribuido por IA PyTorch devuelve advertencias de obsolescencia
<a name="distributed-ts-data-parallel-deprecation-warnings"></a>

Desde la versión 1.4.0, la biblioteca de paralelismo de datos distribuidos de SageMaker IA funciona como un backend de datos distribuidos. PyTorch Debido al cambio radical que supone el uso de la biblioteca PyTorch, es posible que aparezca un mensaje de advertencia que indique que los `smdistributed` APIs paquetes distribuidos están obsoletos. PyTorch El mensaje de advertencia debería ser similar al siguiente:

```
smdistributed.dataparallel.torch.dist is deprecated in the SageMaker AI distributed data parallel library v1.4.0+.
Please use torch.distributed and specify 'smddp' as a backend when initializing process group as follows:
torch.distributed.init_process_group(backend='smddp')
For more information, see the library's API documentation at
https://docs.aws.amazon.com/sagemaker/latest/dg/data-parallel-modify-sdp-pt.html
```

En la versión 1.4.0 y versiones posteriores, la biblioteca solo debe importarse una vez en la parte superior del guion de entrenamiento y configurarse como servidor durante la inicialización distribuida. PyTorch Con una sola línea de especificaciones de backend, puedes mantener tu guion de PyTorch entrenamiento sin cambios y utilizar directamente los módulos distribuidos. PyTorch Consulte [Utilice la biblioteca SMDDP en su guion de formación PyTorch](data-parallel-modify-sdp-pt.md) para obtener más información sobre los cambios más importantes y la nueva forma de utilizar la biblioteca. PyTorch

# SageMaker Notas de publicación de la biblioteca de paralelismo de datos de IA
<a name="data-parallel-release-notes"></a>

Consulta las siguientes notas de la versión para hacer un seguimiento de las últimas actualizaciones de la biblioteca de paralelismo de datos distribuido de SageMaker IA (SMDDP).

## La biblioteca de paralelismo de datos distribuidos de SageMaker IA, versión 2.5.0
<a name="data-parallel-release-notes-20241017"></a>

*Fecha: 17 de octubre de 2024*

**Nuevas características**
+ Se agregó soporte para PyTorch la versión 2.4.1 con la versión 12.1 de CUDA.

**Integración en contenedores Docker distribuidos por la biblioteca de paralelismo de modelos de SageMaker IA (SMP)**

Esta versión de la biblioteca de SMDDP se ha migrado a [La biblioteca de paralelismo de SageMaker modelos v2.6.0](model-parallel-release-notes.md#model-parallel-release-notes-20241017).

```
658645717510.dkr.ecr.<us-west-2>.amazonaws.com/smdistributed-modelparallel:2.4.1-gpu-py311-cu121
```

Para ver las regiones en las que están disponibles las imágenes de Docker de SMP, consulte [Regiones de AWS](distributed-model-parallel-support-v2.md#distributed-model-parallel-availablity-zone-v2).

**Archivo binario de esta versión**

Puede descargar o instalar la biblioteca mediante la siguiente dirección URL.

```
https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.4.1/cu121/2024-10-09/smdistributed_dataparallel-2.5.0-cp311-cp311-linux_x86_64.whl
```

## La biblioteca de paralelismo de datos distribuidos mediante SageMaker IA, versión 2.3.0
<a name="data-parallel-release-notes-20240611"></a>

*Fecha: 11 de junio de 2024*

**Nuevas características**
+ Se agregó soporte para PyTorch v2.3.0 con CUDA v12.1 y Python v3.11.
+ Se agregó soporte para Lightning PyTorch v2.2.5. Está integrado en el contenedor del marco de SageMaker IA de la versión 2.3.0. PyTorch 
+ Se ha añadido validación de tipo de instancia en la importación para evitar que se cargue la biblioteca de SMDDP en tipos de instancia no compatibles. Para obtener una lista de los tipos de instancia compatibles con la biblioteca de SMDDP, consulte [Marcos y tipos Regiones de AWS de instancias compatibles](distributed-data-parallel-support.md).

**Integración en SageMaker AI Framework Containers**

Esta versión de la biblioteca SMDDP se migra al siguiente contenedor de [SageMaker AI Framework](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only).
+ PyTorch v2.3.0

  ```
  763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.3.0-gpu-py311-cu121-ubuntu20.04-sagemaker
  ```

Para obtener una lista completa de las versiones de la biblioteca de SMDDP y de los contenedores prediseñados, consulte [Marcos y tipos Regiones de AWS de instancias compatibles](distributed-data-parallel-support.md).

**Archivo binario de esta versión**

Puede descargar o instalar la biblioteca mediante la siguiente dirección URL.

```
https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.3.0/cu121/2024-05-23/smdistributed_dataparallel-2.3.0-cp311-cp311-linux_x86_64.whl
```

**Otros cambios**
+ La biblioteca SMDDP v2.2.0 está integrada en el contenedor AI Framework de la SageMaker versión 2.2.0. PyTorch 

## La SageMaker biblioteca de paralelismo de datos distribuidos mediante IA, versión 2.2.0
<a name="data-parallel-release-notes-20240304"></a>

*Fecha: 4 de marzo de 2024*

**Nuevas características**
+ Se agregó soporte para PyTorch la versión 2.2.0 con la versión 12.1 de CUDA.

**Integración en contenedores Docker distribuidos por la biblioteca de paralelismo de modelos de SageMaker IA (SMP)**

Esta versión de la biblioteca de SMDDP se ha migrado a [La biblioteca de SageMaker modelos de paralelismo v2.2.0](model-parallel-release-notes.md#model-parallel-release-notes-20240307).

```
658645717510.dkr.ecr.<region>.amazonaws.com/smdistributed-modelparallel:2.2.0-gpu-py310-cu121
```

Para ver las regiones en las que están disponibles las imágenes de Docker de SMP, consulte [Regiones de AWS](distributed-model-parallel-support-v2.md#distributed-model-parallel-availablity-zone-v2).

**Archivo binario de esta versión**

Puede descargar o instalar la biblioteca mediante la siguiente dirección URL.

```
https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.2.0/cu121/2024-03-04/smdistributed_dataparallel-2.2.0-cp310-cp310-linux_x86_64.whl
```

## La biblioteca de paralelismo de datos distribuidos mediante SageMaker IA, versión 2.1.0
<a name="data-parallel-release-notes-20240301"></a>

*Fecha: 1 de marzo de 2024*

**Nuevas características**
+ Se agregó soporte para PyTorch la versión 2.1.0 con la versión 12.1 de CUDA.

**Correcciones de errores**
+ Se ha corregido el problema de pérdida de memoria de la CPU en [SMDDP v2.0.1](#data-parallel-release-notes-20231207).

**Integración en AI Framework Containers SageMaker **

Esta versión de la biblioteca SMDDP ha superado las pruebas comparativas y se ha migrado al siguiente contenedor de [SageMaker AI Framework](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only).
+ PyTorch v2.1.0

  ```
  763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.1.0-gpu-py310-cu121-ubuntu20.04-sagemaker
  ```

**Integración en contenedores Docker distribuidos por la biblioteca de paralelismo de modelos de SageMaker IA (SMP)**

Esta versión de la biblioteca de SMDDP se ha migrado a [La biblioteca de SageMaker modelos de paralelismo v2.1.0](model-parallel-release-notes.md#model-parallel-release-notes-20240206).

```
658645717510.dkr.ecr.<region>.amazonaws.com/smdistributed-modelparallel:2.1.2-gpu-py310-cu121
```

Para ver las regiones en las que están disponibles las imágenes de Docker de SMP, consulte [Regiones de AWS](distributed-model-parallel-support-v2.md#distributed-model-parallel-availablity-zone-v2).

**Archivo binario de esta versión**

Puede descargar o instalar la biblioteca mediante la siguiente dirección URL.

```
https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.1.0/cu121/2024-02-04/smdistributed_dataparallel-2.1.0-cp310-cp310-linux_x86_64.whl
```

## La biblioteca de paralelismo de datos distribuidos mediante SageMaker IA, versión 2.0.1
<a name="data-parallel-release-notes-20231207"></a>

*Fecha: 7 de diciembre de 2023*

**Nuevas características**
+ Se agregó una nueva implementación de SMDDP de operación `AllGather` colectiva optimizada para los recursos de cómputo y la infraestructura de red. AWS Para obtener más información, consulte [Operación colectiva `AllGather` de SMDDP](data-parallel-intro.md#data-parallel-allgather).
+ La operación `AllGather` colectiva del SMDDP es compatible con el FSDP y. PyTorch DeepSpeed Para obtener más información, consulte [Utilice la biblioteca SMDDP en su guion de formación PyTorch](data-parallel-modify-sdp-pt.md).
+ Se agregó soporte para la versión 2.0.1 PyTorch 

**Problemas conocidos**
+ Hay un problema de pérdida de memoria de la CPU debido a un aumento gradual de la memoria de la CPU en el entrenamiento con SMDDP `AllReduce` en modo DDP.

**Integración en contenedores de SageMaker AI Framework**

Esta versión de la biblioteca SMDDP ha superado las pruebas comparativas y se ha migrado al siguiente contenedor de [SageMaker AI Framework](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only).
+ PyTorch v2.0.1

  ```
  763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.0.1-gpu-py310-cu118-ubuntu20.04-sagemaker
  ```

**Archivo binario de esta versión**

Puede descargar o instalar la biblioteca mediante la siguiente dirección URL.

```
https://smdataparallel.s3.amazonaws.com/binary/pytorch/2.0.1/cu118/2023-12-07/smdistributed_dataparallel-2.0.2-cp310-cp310-linux_x86_64.whl
```

**Otros cambios**
+ A partir de esta versión, la documentación de la biblioteca SMDDP está totalmente disponible en esta guía para *desarrolladores de Amazon SageMaker AI*. En favor de la guía completa para desarrolladores de SMDDP v2 incluida en la Guía para *desarrolladores de Amazon SageMaker AI*, ya no se admite la documentación para la [referencia adicional de SMDDP v1.x](https://sagemaker.readthedocs.io/en/stable/api/training/smd_data_parallel.html) en la documentación del *SDK de SageMaker AI Python*. Si aún necesita la documentación de SMP v1.x, consulte la siguiente instantánea de la documentación en la documentación del [SDK de SageMaker Python](https://sagemaker.readthedocs.io/en/v2.212.0/api/training/distributed.html#the-sagemaker-distributed-data-parallel-library) v2.212.0.