Introducción a la biblioteca de paralelismo de datos SageMaker distribuidos - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Introducción a la biblioteca de paralelismo de datos SageMaker distribuidos

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

  1. La biblioteca ofrece ofertas AllReduce optimizadas para. AWSAllReducees una operación clave que se utiliza para sincronizar los gradientes entre las GPU al final de cada iteración de entrenamiento durante el entrenamiento con datos distribuidos.

  2. La biblioteca ofrece ofertas optimizadas para. AllGather AWSAllGatheres 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 SageMaker modelos (SMP), DeepSpeed Zero Redundancy Optimizer (ZeRO) y Fully Sharded Data Parallelism (FSDP). PyTorch

  3. 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 SMDDP puede aumentar la velocidad de entrenamiento al ofrecer mejoras en el rendimiento a medida que se amplía el clúster de entrenamiento, con una eficiencia de escalado casi lineal.

nota

Las bibliotecas de formación SageMaker distribuidas 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, debe usar el SDK de SageMaker Python o las SageMaker API a través de SDK for 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

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 de SMDDP AllReduce

La biblioteca SMDDP logra una superposición óptima de la AllReduce operación 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 las CPU y las GPU. La biblioteca funciona AllReduce en paralelo mientras la GPU calcula los gradientes sin eliminar ciclos de GPU adicionales, lo que hace que la biblioteca logre un entrenamiento más rápido.

  • Aprovecha las CPU: la biblioteca utiliza las CPU como AllReduce gradientes, lo que descarga esta tarea de las GPU.

  • Uso mejorado de la GPU: las GPU del clúster se centran en los gradientes informáticos, mejorando su utilización durante toda el entrenamiento.

El siguiente es el flujo de trabajo de alto nivel de la operación SMDDP. AllReduce

  1. La biblioteca asigna rangos a las GPU (trabajadores).

  2. 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.

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

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

  5. 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

Operación AllGather colectiva SMDDP

AllGatheres 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.

AllGatherse utiliza mucho en técnicas de formación distribuidas, como el paralelismo de datos fragmentados, en el que cada trabajador individual tiene una fracción de un modelo o una capa fragmentada. Los trabajadores se desplazan AllGather antes de avanzar y retroceder para reconstruir las capas fragmentadas. Los pases hacia adelante y hacia atrás continúan hacia adelante una vez recopilados todos los parámetros. Durante el paso hacia atrás, cada trabajador también llama ReduceScatter para recolectar (reducir) los gradientes y dividirlos (dispersarlos) en fragmentos de degradado para actualizar la capa fragmentada correspondiente. Para obtener más información sobre el papel de estas operaciones colectivas en el paralelismo de datos fragmentados, consulte la implementación de la biblioteca SMP sobre el paralelismo de datos fragmentados, ZeRO, en la documentación, y el blog sobre el paralelismo de datos fragmentado completo. DeepSpeed PyTorch

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 en la convergencia. Para lograrlo, la biblioteca SMDDP ofrece instancias AllGather optimizadas para P4d.

SMDDP AllGather utiliza las siguientes técnicas para mejorar el rendimiento computacional en las instancias P4d.

  1. Transfiere datos entre instancias (entre nodos) a través de la red Elastic Fabric Adapter (EFA) con una topología de malla. EFA es la solución de red de AWS 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 del NCCL, que implica varios saltos de paquetes, el SMDDP evita la acumulación de latencia a partir de varios saltos, ya que solo necesita un salto. El SMDDP implementa un algoritmo de control de velocidad de red que equilibra la carga de trabajo de cada par de comunicación en una topología de malla y logra un mayor rendimiento de la red global.

  2. Adopta una biblioteca de copias en memoria GPU de baja latencia basada en la tecnología NVIDIA GPUDirect RDMA (GDRCopy) para coordinar el tráfico de red local de 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 SMDDP puede canalizar el movimiento de datos dentro y entre nodos.

  3. Reduce el uso de multiprocesadores de streaming mediante GPU a fin de aumentar la potencia de cómputo necesaria para ejecutar núcleos de modelos. Las instancias P4d y P4de están equipadas con GPU NVIDIA A100, cada una con 108 multiprocesadores de streaming. Mientras que el NCCL utiliza hasta 24 multiprocesadores de streaming para ejecutar operaciones colectivas, el SMDDP utiliza menos de 9 multiprocesadores de streaming. Los núcleos de cómputo modelo recogen los multiprocesadores de streaming guardados para agilizar los cálculos.