Conceptos de paralelismo de modelos - 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.

Conceptos de paralelismo de modelos

El paralelismo de modelos es un método de entrenamiento distribuido en el que el modelo de aprendizaje profundo (DL) se divide en múltiples instancias. GPUs La biblioteca paralela de SageMaker modelos v2 (SMPv2) es compatible con las capacidades PyTorch APIs y nativas. Esto le permite adaptar cómodamente su script de entrenamiento PyTorch Fully Sharded Data Parallel (FSDP) a la plataforma de SageMaker entrenamiento y aprovechar la mejora del rendimiento que ofrece la SMP versión 2. Esta página de introducción proporciona una descripción general de alto nivel sobre el paralelismo de modelos y una descripción de cómo puede ayudar a superar los problemas que surgen al entrenar modelos de aprendizaje profundo (DL) que suelen ser de un tamaño muy grande. También proporciona ejemplos de lo que ofrece la biblioteca paralela de SageMaker modelos para ayudar a gestionar las estrategias paralelas de los modelos y el consumo de memoria.

¿Qué es el paralelismo de modelos?

Al aumentar el tamaño de los modelos de aprendizaje profundo (capas y parámetros), se obtiene mayor precisión en tareas complejas, como la visión artificial y el procesamiento del lenguaje natural. Sin embargo, existe un límite en cuanto al tamaño máximo de modelo que puede caber en la memoria de un solo modelo. GPU Al entrenar modelos DL, las limitaciones de GPU memoria pueden ser un obstáculo de las siguientes maneras:

  • Limitan el tamaño del modelo que se puede entrenar, ya que el consumo de memoria de un modelo se amplía proporcionalmente al número de parámetros.

  • Limitan el tamaño de cada GPU lote durante el entrenamiento, lo que reduce la GPU utilización y la eficiencia del entrenamiento.

Para superar las limitaciones asociadas con el entrenamiento de un modelo en un único modeloGPU, SageMaker proporciona la biblioteca de modelos parallel para ayudar a distribuir y entrenar los modelos DL de manera eficiente en varios nodos de cómputo. Además, con la biblioteca, puede lograr un entrenamiento distribuido optimizado utilizando dispositivos EFA compatibles, que mejoran el rendimiento de la comunicación entre nodos con baja latencia, alto rendimiento y elusión del sistema operativo.

Calcule los requisitos de memoria antes de utilizar el paralelismo de modelos

Antes de utilizar la biblioteca de SageMaker modelos parallel, tenga en cuenta lo siguiente para hacerse una idea de los requisitos de memoria necesarios para el entrenamiento de modelos DL de gran tamaño.

Para un trabajo de entrenamiento que utilice una precisión mixta automática, como los optimizadores float16 bfloat16 (FP16BF16) o () y Adam, la GPU memoria requerida por parámetro es de unos 20 bytes, que podemos desglosar de la siguiente manera:

  • Un BF16 parámetro FP16 or: ~ 2 bytes

  • Un BF16 gradiente FP16 OR de ~ 2 bytes

  • Un estado del FP32 optimizador de ~ 8 bytes basado en los optimizadores Adam

  • Una FP32 copia del parámetro de ~ 4 bytes (necesaria para la operación optimizer apply (OA))

  • Una FP32 copia del gradiente de aproximadamente 4 bytes (necesaria para la operación OA)

Incluso para un modelo DL relativamente pequeño con 10 000 millones de parámetros, puede requerir al menos 200 GB de memoria, mucho más que la GPU memoria típica (por ejemplo, la NVIDIA A100 con 40 GB/80 GB de memoria) disponible en una sola unidad. GPU Además de los requisitos de memoria para los estados del modelo y del optimizador, hay otros consumidores de memoria, como las activaciones generadas en la transferencia. La memoria requerida puede superar con creces los 200 GB.

Para la formación distribuida, le recomendamos que utilice instancias EC2 P4 y P5 de Amazon que tengan NVIDIA A100 y H100 Tensor Core, respectivamente. GPUs Para obtener más información sobre especificaciones como los CPU núcleosRAM, el volumen de almacenamiento adjunto y el ancho de banda de la red, consulte la sección Computación acelerada de la página de tipos de EC2 instancias de Amazon. Para ver los tipos de instancias compatibles SMP con la versión 2, consulteTipos de instancias admitidas.

Incluso con las instancias de computación acelerada, los modelos con unos 10 000 millones de parámetros, como Megatron-LM y la T5, e incluso los modelos más grandes con cientos de miles de millones de parámetros, como GPT -3, no caben réplicas de modelos en cada dispositivo. GPU

Cómo emplea la biblioteca las técnicas de paralelismo de modelos y ahorro de memoria

La biblioteca consta de varios tipos de funciones de paralelismo de modelos y funciones de ahorro de memoria, como la fragmentación del estado del optimizador, los puntos de control de activación y la descarga de la activación. Todas estas técnicas se pueden combinar para entrenar de manera eficiente modelos grandes que constan de cientos de miles de millones de parámetros.

Paralelismo de datos fragmentados

El paralelismo de datos fragmentados es una técnica de entrenamiento distribuido que ahorra memoria y que divide el estado de un modelo (parámetros del modelo, gradientes y estados del optimizador) dentro de un grupo de datos paralelos. GPUs

SMPLa versión 2 implementa el paralelismo de datos fragmentados y lo amplía para implementar la estrategia de fragmentación híbrida basada FSDP en la escala descrita en la entrada del blog Near-linear scaling of gigantic-model training on. AWS

Puede aplicar el paralelismo de datos fragmentados a su modelo como una estrategia independiente. Además, si utilizas las GPU instancias de mayor rendimiento equipadas con el NVIDIA A100 Tensor CoreGPUs, ml.p4d.24xlarge puedes aprovechar la mayor velocidad de entrenamiento gracias a la AllGather operación que ofrece la biblioteca data parallelism (). ml.p4de.24xlarge SageMaker SMDDP

Para profundizar en el paralelismo de datos fragmentados y aprender a configurarlo o utilizar una combinación del paralelismo de datos fragmentados con otras técnicas, como el paralelismo tensorial y el entrenamiento de precisión mixta, consulte. Paralelismo híbrido de datos fragmentados

Paralelismo experto

SMPLa v2 se integra con NVIDIAMegatron para implementar un paralelismo experto además de su compatibilidad con el sistema nativo. PyTorch FSDP APIs Puede mantener su código de PyTorch FSDP entrenamiento tal como está y aplicar el paralelismo SMP experto para entrenar en él los modelos Mixture of Experts (MoE). SageMaker

Un modelo MoE es un tipo de modelo de transformador que consta de varios expertos, cada uno de los cuales consiste en una red neuronal, normalmente una red de retroalimentación (). FFN Una red de puertas llamada router determina qué tokens se envían a cada experto. Estos expertos se especializan en procesar aspectos específicos de los datos de entrada, lo que permite que el modelo se entrene más rápido, reduzca los costos de cómputo y, al mismo tiempo, logre la misma calidad de rendimiento que su modelo denso homólogo. Además, el paralelismo experto es una técnica de paralelismo que permite dividir a los expertos de un modelo MoE entre dispositivos. GPU

Para obtener información sobre cómo entrenar modelos MoE con la versión 2, consulte. SMP Paralelismo experto

Paralelismo de tensores

El paralelismo tensorial divide capas individuales o entre dispositivos para que se nn.Modules ejecuten en paralelo. La siguiente figura muestra el ejemplo más simple de cómo la SMP biblioteca divide un modelo con cuatro capas para lograr un paralelismo tensorial bidireccional (). "tensor_parallel_degree": 2 En la siguiente figura, las anotaciones para el grupo paralelo del modelo, el grupo paralelo del tensor y el grupo paralelo de datos son MP_GROUPTP_GROUP, y DP_GROUP respectivamente. Las capas de cada réplica del modelo se dividen en dos y se distribuyen en dos. GPUs La biblioteca gestiona la comunicación entre las réplicas del modelo distribuido por tensores.

El ejemplo más simple de cómo la SMP biblioteca divide un modelo con cuatro capas para lograr un paralelismo tensorial bidireccional («tensor_parallel_degree»: 2).

Para profundizar en el paralelismo tensorial y otras funciones que ahorran memoria y aprender a configurar una combinación de las funciones principales, consulte. PyTorch Paralelismo de tensores

Activación, puntos de control y descarga

Para ahorrar GPU memoria, la biblioteca admite puntos de control de activación para evitar almacenar las activaciones internas en la GPU memoria de los módulos especificados por el usuario durante la transferencia. La biblioteca vuelve a calcular estas activaciones durante la pasada hacia atrás. Además, al reducir la carga de activación, descarga las activaciones almacenadas en la CPU memoria y las recupera GPU durante la transferencia hacia atrás para reducir aún más el espacio ocupado en la memoria de activación. Para obtener más información sobre cómo utilizar estas funciones, consulte y. Puntos de control de activación Descarga de activación

Elegir las técnicas adecuadas para su modelo

Para obtener más información sobre cómo elegir las técnicas y configuraciones adecuadas, consulteSageMaker mejores prácticas de paralelismo de modelos distribuidos.