Nuevas mejoras de rendimiento en la biblioteca paralela de modelos de Amazon SageMaker

Los modelos básicos son grandes modelos de aprendizaje profundo entrenados en una gran cantidad de datos a escala. Se pueden ajustar aún más para realizar una variedad de tareas posteriores y formar la columna vertebral central para habilitar varias aplicaciones de IA. La categoría más destacada son los modelos de lenguaje extenso (LLM), incluidos los modelos autorregresivos, como las variantes de GPT entrenadas para completar el texto natural. Los LLM suelen contener miles de millones de parámetros, por lo que rara vez caben en un solo acelerador y requieren técnicas de paralelismo de modelos. Otra categoría son los modelos de difusión, en particular Difusión estable, que ha llevado la generación de imágenes de IA a un hito sin precedentes donde se pueden generar imágenes notables a partir de una simple descripción de texto. Los modelos de difusión suelen ser mucho más pequeños que los LLM y la capacitación distribuida sigue desempeñando un papel fundamental para facilitar el desarrollo.

La biblioteca de modelos paralelos (SMP) de SageMaker es una solución de capacitación de modelos grandes disponible en la plataforma Amazon SageMaker. Se puede integrar con los modelos PyTorch para aplicar fácilmente una gama de técnicas de entrenamiento distribuidas de modelos grandes de última generación para entrenar a escala. A principios de este año, SMP lanzó el paralelismo de datos fragmentados, una técnica de capacitación distribuida con tecnología interna de Amazon. MiCS tecnología bajo el capó. Los fragmentos paralelos de datos fragmentados modelan los parámetros, los gradientes y los estados del optimizador en los trabajadores de datos paralelos. MiCS realiza una serie de optimizaciones, incluida la creación de particiones con reconocimiento de escala para proporcionar una escalabilidad casi lineal. En Entrenar modelos gigantes con escalado casi lineal usando paralelismo de datos fragmentados, compartimos que los datos fragmentados en paralelo en SMP lograron un 39,7 % de aceleración en comparación con DeepSpeed ​​ZeRO-3 en un modelo GPT-2 de parámetros 30B con una longitud de secuencia de 2048.

Para ayudar a nuestros clientes a minimizar aún más los costos de capacitación y acelerar el tiempo de comercialización, estamos encantados de presentar dos nuevas mejoras de rendimiento en el modelo SageMaker en paralelo: Colectivos SMDDP y FlashAtención. SMDDP Collectives es la biblioteca colectiva de mayor rendimiento en la infraestructura de AWS para el entrenamiento de modelos grandes que ofrece la biblioteca paralela de datos distribuidos de SageMaker. FlashAttention se introduce en Dao et al., que vuelve a implementar el mecanismo de atención de manera consciente de IO, lo que reduce el requisito de ancho de banda de memoria y ahorra en velocidad de atención y huella de memoria. Estos dos componentes juntos hacen que nuestra técnica de datos fragmentados en paralelo sea un 30,58 % más rápida cuando se entrena un modelo GPT-NeoX de 100 B de parámetros en 32 instancias p4d.24xlarge. Para los clientes que ya utilizan datos fragmentados en paralelo en modelos compatibles, no es necesario realizar cambios en el código para beneficiarse del aumento de rendimiento que ofrecen estas funciones más recientes. Estabilidad IAel inventor de la Difusión estable familia de modelos que mostró capacidades de generación de imágenes sin precedentes, optó por utilizar SMP para construir modelos de base. Con SMP, Stability AI logró 163 TFLOP por GPU para un GPT-NeoX de 13B de parámetros en 32 instancias p4d.24xlarge, un aumento del 58 % en comparación con DeepSpeed. Puede obtener más información sobre la misión y la asociación de Stability AI con AWS en la charla del CEO de Stability AI en AWS re:Invent 2022 o en esta publicación de blog.

“Nuestra misión en Stability AI es sentar las bases para activar el potencial de la humanidad a través de la IA. Para lograr esta misión, necesitamos entrenar de manera eficiente los modelos básicos de código abierto en cientos de instancias informáticas aceleradas. Confiamos en SageMaker y sus bibliotecas de capacitación distribuidas para optimizar el rendimiento e implementar estrategias de vanguardia para fragmentar modelos y datos en nuestro clúster de capacitación. Estas optimizaciones reducen nuestros costos de capacitación, nos ayudan a satisfacer las necesidades de los clientes más rápido y aceleran el desarrollo de nuevos modelos”.

Emad Mostaque, Fundador y CEO de Stability AI.

En esta publicación de blog, primero presentaremos nuestras últimas mejoras de rendimiento en la biblioteca paralela de modelos de SageMaker. Luego, revisaremos cómo entrenar modelos fundamentales utilizando datos fragmentados en paralelo. Finalmente, compararemos el rendimiento de los modelos autorregresivos de parámetros 13B, 50B y 100B y terminaremos con el trabajo futuro.

Nuevas mejoras de rendimiento en la biblioteca paralela de modelos de SageMaker

A partir de AWS Deep Learning Containers (DLC) PyTorch 1.12.1, la biblioteca paralela de modelos de SageMaker v1.13 viene con los siguientes dos nuevos componentes que son fundamentales para mejorar el rendimiento del entrenamiento. Actualmente están disponibles en la instancia ml.p4d.24xlarge con Elastic Fabric Adapter (EFA) habilitado:

1. AllGather optimizado para AWS de SMDDP Collectives

En datos fragmentados en paralelo, dado que solo un fragmento del estado del modelo está presente en una GPU, se necesita un colectivo AllGather para recopilar el conjunto completo de parámetros de todas las GPU en el grupo de fragmentación durante los cálculos de paso hacia adelante o hacia atrás. En las versiones anteriores del modelo paralelo de SageMaker, usábamos la Biblioteca de comunicaciones colectivas de NVIDIA (NCCL) para estos colectivos. Sin embargo, NCCL es una biblioteca de comunicaciones colectivas de propósito general que no está diseñada para la infraestructura de AWS, lo que conduce a un rendimiento subóptimo incluso con EFA habilitado.

Anteriormente, habíamos desarrollado la biblioteca SMDDP Collectives que proporcionaba una implementación optimizada para AWS del colectivo All-Reduce para acelerar el rendimiento del entrenamiento paralelo de datos puros. Para mejorar el rendimiento del entrenamiento de modelos grandes con paralelismo de datos fragmentados, ampliamos la biblioteca SMDDP Collectives para incluir una implementación optimizada del colectivo AllGather. La principal ventaja de SMDDP Collectives AllGather es que adopta un patrón de comunicación de todo tipo para la comunicación entre nodos, lo que permite que nuestro colectivo tenga un alto rendimiento y sea menos sensible a la latencia. Además, nuestro colectivo AllGather descarga el procesamiento relacionado con la comunicación a la CPU, lo que libera valiosos ciclos de GPU para el cálculo de gradientes, lo que lleva a una mejora significativa del rendimiento, especialmente en modelos grandes.

2. Atención Flash

En la arquitectura de transformadores moderna, una de las mayores fuentes de consumo de memoria es la huella de activación en la capa de autoatención. Esto se debe a que cada cabeza de atención calcula una matriz de atención SxS para cada entrada, donde S es la longitud de la secuencia, y esta matriz pasa por varias operaciones, como abandono, softmax y multiplicación de matriz, y cada salida intermedia requiere espacio de memoria para usar en retropropagación.

FlashAtención (Dao et al.) es una innovación reciente de HazyResearch en Stanford que vuelve a implementar el mecanismo de autoatención de manera consciente de E/S. La idea principal detrás de FlashAttention es que el mecanismo de autoatención está obstaculizado por el ancho de banda de la memoria hacia y desde la memoria de alto ancho de banda (HBM) de la GPU. Esto significa que la capa de autoatención se puede calcular en fragmentos a lo largo de la dimensión de la secuencia, y cada fragmento pasa por toda la canalización de autoatención a la vez. Los resultados intermedios de un fragmento se almacenan en la SRAM de gran ancho de banda, lo que evita el costoso viaje de ida y vuelta al HBM para cada iteración. Aunque una implementación ingenua se encontraría con el problema de la dependencia entre fragmentos en la capa softmax, FlashAttention presenta una implementación inteligente que elude esta dependencia. Combinado con el recálculo en paso hacia atrás, FlashAttention da como resultado un ahorro sustancial de memoria y una mejora del rendimiento (entrenamiento un 25 % más rápido para GPT-NeoX 13B sobre 16 nodos p4d), debido a que se evita el viaje de ida y vuelta de HBM y el almacenamiento de matrices SxS. Puede encontrar imágenes y más explicaciones en HazyResearch’s Repositorio FlashAttention.

Entrene modelos básicos a escala con el modelo paralelo de SageMaker

Para entrenar modelos básicos con SMP impulsado por SMDDP Collectives, no se requieren cambios adicionales en sus trabajos de entrenamiento paralelo de datos fragmentados. Si es nuevo en el uso de datos fragmentados en paralelo, siga este cuaderno tutorial completo y publicación de blog que lo guiará a través de todo el proceso, desde el procesamiento de datos, la definición y el envío de trabajos de capacitación hasta el monitoreo de registros de capacitación. Puede encontrar un script de entrenamiento listo para usar para el modelo GPT-2 en train_gpt_simple.py. Para entrenar un tipo de modelo diferente, puede seguir las documento API para obtener información sobre cómo aplicar las API de SMP.

Destacamos los hiperparámetros clave en el Estimador PyTorch de un trabajo de entrenamiento paralelo de datos fragmentados como se muestra a continuación. El hiperparámetro ddp_dist_backend en smp_options ahora tiene una nueva opción, "auto" , como su valor predeterminado. Con "auto", SMP utilizará AllGather optimizado para AWS para trabajos de paralelismo de datos fragmentados y, de lo contrario, recurrirá a NCCL. Puede consultar este documento para conocer las configuraciones admitidas. Si desea ejecutar datos fragmentados en paralelo en SMP específicamente con NCCL como el backend de comunicación de elección, puede configurar «ddp_dist_backend" a "nccl" en smp_options.

import sagemaker
from sagemaker.pytorch import PyTorch

smp_options = 

smp_estimator = PyTorch(
    entry_point="train_gpt_simple.py",
    role=sagemaker.get_execution_role(),
    instance_type="ml.p4d.24xlarge",
    instance_count=32,
    distribution=,
    ...
)

smp_estimator.fit(inputs=data_channels)

Con la última versión de SMPv1.13, la técnica de entrenamiento paralelo de datos fragmentados admite FlashAttention para modelos populares, incluidos BERT, RoBERTa, GPT-2, GPT-J, GPT-Neo y GPT-NeoX listos para usar. Esto se habilita pasando tensor_parallelism=True durante creación de modelos sin ajuste tensor_parallel_degree. Puedes encontrar un ejemplo en el mismo script de entrenamiento. train_gpt_simple.py .

Rendimiento de evaluación comparativa

Evaluamos el paralelismo de datos fragmentados en la biblioteca paralela de modelos de SageMaker en tres escalas diferentes de modelos para comprender cómo las dos nuevas funciones, FlashAttention y AllGather optimizado para AWS, contribuyen a la mejora del rendimiento. No es necesario que el grupo de ubicación reproduzca estos puntos de referencia en SageMaker.

Parámetro 13B GPT-NeoX

En esta configuración, nos enfocamos en comprender la ganancia de rendimiento aportada por FlashAttention y dejamos AllGather optimizado para AWS fuera de la imagen. El uso de la atención flash ahorra una cantidad sustancial de memoria GPU, lo que nos ayuda a aumentar el tamaño del lote o reducir el grado de fragmentación, lo que mejora el rendimiento. Como muestran los resultados a continuación, observamos un promedio de aproximadamente 20,4 % de aceleración en SMP con atención flash para el modelo GPT-NeoX de parámetro 13B en varias configuraciones en 16-64 nodos p4d. El uso de la memoria durante el cálculo de la atención estándar se escala de forma cuadrática con un aumento en la longitud de la secuencia, pero FlashAttention tiene un uso de memoria lineal en la longitud de la secuencia. Por lo tanto, FlashAttention es aún más útil a medida que aumenta la longitud de la secuencia y hace posible utilizar longitudes de secuencia más grandes. Al ser eficiente en memoria sin sacrificar la calidad del modelo, FlashAttention ha ganado terreno rápidamente en la gran comunidad de entrenamiento de modelos en los últimos meses, incluida la integración con Difusores de cara abrazadora y Mosaico ML.

Configuración Rendimiento
Modelo/Entrenamiento Grupo SMP Sin FlashAtención
(TFLOP/GPU)
Con FlashAtención
(TFLOP/GPU)
% Acelerar
13B GPT-NeoX
Longitud secuencial: 2048
Tamaño de lote global: 1024
FP16
16 nodos p4d.24xlarge Control de activación
sharded_data_parallel_degree:64
gradiente_acumulación: 1
130 159 22.31
13B GPT-NeoX
Longitud secuencial: 2048
Tamaño de lote global: 2048
FP16
32 nodos p4d.24xlarge Control de activación
sharded_data_parallel_degree:64
gradiente_acumulación: 1
131 157 19.85
13B GPT-NeoX
Longitud secuencial: 2048
Tamaño de lote global: 4096
FP16
64 nodos p4d.24xlarge Control de activación
sharded_data_parallel_degree:64
gradiente_acumulación: 1
131 156 19.08

Parámetro 50B Bloom

Ahora, analizamos cómo AllGather optimizado para AWS de SMDDP Collectives acelera el entrenamiento de modelos grandes con SMP. Comparamos un modelo Bloom de 50B-parámetro y comparamos el rendimiento con y sin el colectivo AllGather optimizado para AWS. Observamos que los colectivos SMDDP aceleran el entrenamiento del modelo hasta en un 40 % en trabajos de entrenamiento de 32 nodos a 64 nodos. Los colectivos SMDDP ayudan a lograr un mejor rendimiento debido a una mejor utilización del ancho de banda de red de 400 Gbps disponible con instancias p4d.24xlarge. Esto, junto con la opción de diseño para descargar el procesamiento relacionado con la comunicación a la CPU, ayuda a lograr una buena superposición de cómputo a red que conduce a un rendimiento optimizado. La superposición de cómputo a red se vuelve especialmente importante en modelos grandes, ya que el tamaño de los datos comunicados a través de los nodos se escala linealmente con un aumento en el tamaño del modelo.

Configuración Rendimiento
Modelo/Entrenamiento Grupo SMP Sin AllGather optimizado para AWS
(TFLOP/GPU)
Con AllGather optimizado para AWS
(TFLOP/GPU)
% Acelerar
50B flor
Longitud secuencial: 2048
Tamaño de lote global: 2048
BF16
32 nodos p4d.24xlarge Control de activación
sharded_data_parallel_degree:128
gradiente_acumulación: 1
102 143 40.20
50B flor
Longitud secuencial: 2048
Tamaño de lote global: 4096
BF16
64 nodos p4d.24xlarge Control de activación
sharded_data_parallel_degree:128
gradiente_acumulación: 1
101 140 38.61

Parámetro 100B GPT-NeoX

Finalmente, comparamos SMP con las dos funciones más recientes habilitadas. Muestra que esta nueva versión de SMP v1.13 es un 30 % más rápida que la versión anterior en un modelo GPT-NeoX de 100 B de parámetros.

Configuración Rendimiento
Modelo/Entrenamiento Grupo SMP Sin FlashAttention y sin AllGather optimizado para AWS
(TFLOP/GPU)
Con FlashAttention + AllGather optimizado para AWS
(TFLOP/GPU)
% Acelerar
100B GPT-NeoX
Longitud secuencial: 2048
Tamaño de lote global: 2048
FP16
32 nodos p4d.24xlarge Control de activación
sharded_data_parallel_degree:256
descarga_activaciones
  • Sin FlashAttention: el tamaño del lote es 4 con acumulación de gradiente de 2 pasos.
  • Con FlashAttention: el tamaño del lote es 8 sin acumulación de gradiente
121 158 30.58
100B GPT-NeoX
Longitud secuencial: 2048
Tamaño de lote global: 4096
FP16
64 nodos p4d.24xlarge Control de activación
sharded_data_parallel_degree:256
descarga_activaciones
  • Sin FlashAttention: el tamaño del lote es 4 con acumulación de gradiente de 2 pasos.
  • Con FlashAttention: el tamaño del lote es 8 sin acumulación de gradiente
122 158 29.51

Para el trabajo futuro, trabajaremos en admitir un Reduce-Scatter optimizado para AWS en SMDDP Collectives. El colectivo Reduce-Scatter es fundamental para promediar y fragmentar los gradientes calculados en el paso hacia atrás. Esperamos que esto acelere aún más la biblioteca SMP en las versiones futuras.

Conclusión

En esta publicación, analizamos las dos mejoras de rendimiento más recientes para la técnica paralela de datos fragmentados en la biblioteca paralela de modelos de SageMaker. Los LLM son muy prometedores para mejorar la calidad y la reutilización de los modelos ML. Los equipos de AWS trabajan en estrecha colaboración con los clientes para seguir reduciendo sus costos de capacitación y el tiempo de comercialización. Puede encontrar más ejemplos de modelos paralelos de SageMaker en Ejemplos de repositorio de GitHub de Amazon SageMaker o asistir a nuestro próximo talleres de formación distribuidos. Si está interesado en acelerar el entrenamiento de modelos grandes, consulte estas características y háganos saber lo que construye.


Sobre los autores

Nuevas mejoras de rendimiento en la biblioteca paralela de modelos Arjun Balasubramanian es un ingeniero de software sénior en AWS centrado en la creación de algoritmos de comunicación colectiva acelerados por hardware de alto rendimiento para el aprendizaje profundo distribuido. Está muy interesado en los sistemas de redes y aprendizaje automático a gran escala. Fuera del trabajo, le gusta viajar y practicar varios deportes.

1671407232 774 Nuevas mejoras de rendimiento en la biblioteca paralela de modelosZhaoqi Zhu es ingeniero de desarrollo de software en AWS, se especializa en sistemas distribuidos de aprendizaje profundo y trabaja en la biblioteca paralela de datos distribuidos de SageMaker. Fuera del trabajo, Zhaoqi es un apasionado del fútbol y espera no recibir ninguna tarjeta roja en la próxima temporada.

1671407233 432 Nuevas mejoras de rendimiento en la biblioteca paralela de modelosCan Karakus es un científico aplicado sénior en AWS, que optimiza el aprendizaje profundo distribuido a gran escala en AWS. Sus intereses de investigación abarcan el aprendizaje profundo, la optimización distribuida, los sistemas distribuidos y la teoría de la información. Fuera del trabajo, disfruta andar en bicicleta, viajar, leer y aprender.

Nuevas mejoras de rendimiento en la biblioteca paralela de modelosRaúl Huilgol es ingeniero de software sénior en AWS. Trabaja en sistemas de aprendizaje profundo distribuidos, para que sea fácil y eficaz entrenar grandes modelos de aprendizaje profundo en la nube. En su tiempo libre, disfruta de la fotografía, andar en bicicleta y la jardinería.

1671407234 418 Nuevas mejoras de rendimiento en la biblioteca paralela de modelosSuhit Kódgule es un ingeniero de desarrollo de software del grupo de inteligencia artificial de AWS que trabaja en marcos de aprendizaje profundo. En su tiempo libre le gusta caminar, viajar y cocinar.

1671407234 963 Nuevas mejoras de rendimiento en la biblioteca paralela de modelosfeiwu es ingeniero de software en AWS. Trabaja en capacitación distribuida para modelos de aprendizaje profundo a gran escala en la nube. Fuera del trabajo, disfruta del baloncesto, los juegos y la cocina.

Fuente del artículo

Deja un comentario