Acelere PyTorch con DeepSpeed ​​para entrenar grandes modelos de lenguaje con instancias DL1 EC2 basadas en Intel Habana Gaudi | Servicios web de Amazon

Acelere PyTorch con DeepSpeed ​​para entrenar grandes modelos de lenguaje con instancias DL1 EC2 basadas en Intel Habana Gaudi | Servicios web de Amazon

Entrenar modelos de lenguaje grande (LLM) con miles de millones de parámetros puede ser un desafío. Además de diseñar la arquitectura del modelo, los investigadores deben establecer técnicas de entrenamiento de última generación para el entrenamiento distribuido, como soporte de precisión mixta, acumulación de gradientes y puntos de control. Con modelos grandes, la configuración de entrenamiento es aún más desafiante porque la memoria disponible en un solo dispositivo acelerador limita el tamaño de los modelos entrenados usando solo paralelismo de datos, y el uso de entrenamiento paralelo de modelos requiere un nivel adicional de modificaciones al código de entrenamiento. bibliotecas como velocidadprofunda (una biblioteca de optimización de aprendizaje profundo de código abierto para PyTorch) aborda algunos de estos desafíos y puede ayudar a acelerar el desarrollo y la capacitación de modelos.

En este post, montamos una formación en el Intel Habana con sede en Gaudí Nube informática elástica de Amazon (Amazon EC2) DL1 instancias y cuantificar los beneficios de usar un marco de escala como DeepSpeed. Presentamos resultados de escalado para un modelo de transformador tipo codificador (BERT con 340 millones a 1.5 mil millones de parámetros). Para el modelo de 1.5 millones de parámetros, logramos una eficiencia de escalado del 82.7 % en 128 aceleradores (16 instancias dl1.24xlarge) usando Velocidad profunda cero Optimizaciones de la etapa 1. Los estados del optimizador fueron particionados por DeepSpeed ​​para entrenar modelos grandes usando el paradigma paralelo de datos. Este enfoque se ha ampliado para entrenar un modelo de 5 mil millones de parámetros utilizando paralelismo de datos. También utilizamos el soporte nativo de Gaudí del tipo de datos BF16 para reducir el tamaño de la memoria y aumentar el rendimiento del entrenamiento en comparación con el tipo de datos FP32. Como resultado, logramos la convergencia del modelo previo al entrenamiento (fase 1) en 16 horas (nuestro objetivo era entrenar un modelo grande en un día) para el modelo BERT de 1.5 millones de parámetros usando el conjunto de datos de wikicorpus-en.

Configuración de entrenamiento

Aprovisionamos un clúster de computación administrado compuesto por 16 instancias dl1.24xlarge mediante Lote de AWS. Desarrollamos un Taller de lote de AWS que ilustra los pasos para configurar el clúster de entrenamiento distribuido con AWS Batch. Cada instancia dl1.24xlarge tiene ocho aceleradores Habana Gaudi, cada uno con 32 GB de memoria y una red RoCE de malla completa entre tarjetas con un ancho de banda de interconexión bidireccional total de 700 Gbps cada una (ver Análisis profundo de las instancias DL2 de Amazon EC1 para más información). El clúster dl1.24xlarge también usó cuatro Adaptadores de tela elástica de AWS (EFA), con un total de 400 Gbps de interconexión entre nodos.

El taller de capacitación distribuida ilustra los pasos para configurar el clúster de capacitación distribuida. El taller muestra la configuración de capacitación distribuida con AWS Batch y, en particular, la función de trabajos paralelos de múltiples nodos para lanzar trabajos de capacitación en contenedores a gran escala en clústeres completamente administrados. Más específicamente, se crea un entorno informático de AWS Batch totalmente administrado con instancias DL1. Los contenedores son sacados de Registro de contenedores elásticos de Amazon (Amazon ECR) y se lanzó automáticamente en las instancias del clúster en función de la definición de trabajo paralelo de varios nodos. El taller concluye con la ejecución de un entrenamiento paralelo de datos de múltiples nodos y múltiples HPU de un modelo BERT (340 millones a 1.5 millones de parámetros) utilizando PyTorch y DeepSpeed.

Preentrenamiento BERT 1.5B con DeepSpeed

Habana SinapsisAI v1.5 y v1.6 Admite optimizaciones de DeepSpeed ​​ZeRO1. El Bifurcación Habana del repositorio GitHub de DeepSpeed incluye las modificaciones necesarias para soportar los aceleradores de Gaudí. Hay compatibilidad total con datos distribuidos en paralelo (multitarjeta, multiinstancia), optimizaciones ZeRO1 y tipos de datos BF16.

Todas estas características están habilitadas en el Repositorio de referencia del modelo BERT 1.5B, que presenta un modelo de codificador bidireccional de 48 capas, 1600 dimensiones ocultas y 25 cabezales, derivado de una implementación BERT. El repositorio también contiene la implementación básica del modelo BERT Large: una arquitectura de red neuronal de 24 capas, 1024 ocultas, 16 cabezas y 340 millones de parámetros. Los scripts de modelado previos al entrenamiento se derivan del Repositorio de ejemplos de aprendizaje profundo de NVIDIA para descargar los datos de wikicorpus_en, preprocesar los datos sin procesar en tokens y fragmentar los datos en conjuntos de datos h5 más pequeños para el entrenamiento paralelo de datos distribuidos. Puede adoptar este enfoque genérico para entrenar sus arquitecturas de modelo PyTorch personalizadas usando sus conjuntos de datos usando instancias DL1.

Resultados de escalado previos al entrenamiento (fase 1)

Para el entrenamiento previo de modelos grandes a escala, nos enfocamos principalmente en dos aspectos de la solución: el rendimiento del entrenamiento, medido por el tiempo de entrenamiento, y la rentabilidad de llegar a una solución completamente convergente. A continuación, profundizamos en estas dos métricas con el entrenamiento previo BERT 1.5B como ejemplo.

Escalar el rendimiento y el tiempo para entrenar

Comenzamos midiendo el rendimiento de la implementación de BERT Large como referencia para la escalabilidad. La siguiente tabla enumera el rendimiento medido de secuencias por segundo de 1 a 8 instancias dl1.24xlarge (con ocho dispositivos aceleradores por instancia). Usando el rendimiento de una sola instancia como referencia, medimos la eficiencia de escalar en varias instancias, lo cual es una palanca importante para comprender la métrica de capacitación de precio-rendimiento.

Numero de instancias Número de aceleradores Secuencias por Segundo Secuencias por Segundo por Acelerador Eficiencia de escalado
1 8 1,379.76 172.47 100.0%
2 16 2,705.57 169.10 98.04%
4 32 5,291.58 165.36 95.88%
8 64 9,977.54 155.90 90.39%

La siguiente figura ilustra la eficiencia de escalado.

Acelere PyTorch con DeepSpeed ​​para entrenar modelos de lenguaje grandes con instancias DL1 EC2 basadas en Intel Habana Gaudi | Amazon Web Services PlatoBlockchain Inteligencia de datos. Búsqueda vertical. Ai.

Para BERT 1.5B, modificamos los hiperparámetros del modelo en el repositorio de referencia para garantizar la convergencia. El tamaño de lote efectivo por acelerador se estableció en 384 (para una utilización máxima de la memoria), con microlotes de 16 por paso y 24 pasos de acumulación de gradiente. Se utilizaron tasas de aprendizaje de 0.0015 y 0.003 para 8 y 16 nodos, respectivamente. Con estas configuraciones, logramos la convergencia del entrenamiento previo de fase 1 de BERT 1.5B en 8 instancias dl1.24xlarge (64 aceleradores) en aproximadamente 25 horas y 15 horas en 16 instancias dl1.24xlarge (128 aceleradores). La siguiente figura muestra la pérdida promedio en función del número de épocas de entrenamiento, a medida que aumentamos el número de aceleradores.

Acelere PyTorch con DeepSpeed ​​para entrenar modelos de lenguaje grandes con instancias DL1 EC2 basadas en Intel Habana Gaudi | Amazon Web Services PlatoBlockchain Inteligencia de datos. Búsqueda vertical. Ai.

Con la configuración descrita anteriormente, obtuvimos una eficiencia de escalado fuerte del 85 % con 64 aceleradores y del 83 % con 128 aceleradores, a partir de una línea de base de 8 aceleradores en una sola instancia. La siguiente tabla resume los parámetros.

Numero de instancias Número de aceleradores Secuencias por Segundo Secuencias por Segundo por Acelerador Eficiencia de escalado
1 8 276.66 34.58 100.0%
8 64 1,883.63 29.43 85.1%
16 128 3,659.15 28.59 82.7%

La siguiente figura ilustra la eficiencia de escalado.

Acelere PyTorch con DeepSpeed ​​para entrenar modelos de lenguaje grandes con instancias DL1 EC2 basadas en Intel Habana Gaudi | Amazon Web Services PlatoBlockchain Inteligencia de datos. Búsqueda vertical. Ai.

Conclusión

En esta publicación, evaluamos el soporte para DeepSpeed ​​de Habana SynapseAI v1.5/v1.6 y cómo ayuda a escalar la capacitación LLM en aceleradores Habana Gaudi. El entrenamiento previo de un modelo BERT de 1.5 millones de parámetros tardó 16 horas en converger en un grupo de 128 aceleradores Gaudi, con un escalado sólido del 85 %. Le animamos a echar un vistazo a la arquitectura demostrada en el Taller de AWS y considere adoptarlo para entrenar arquitecturas de modelo PyTorch personalizadas utilizando instancias DL1.


Sobre los autores

Acelere PyTorch con DeepSpeed ​​para entrenar modelos de lenguaje grandes con instancias DL1 EC2 basadas en Intel Habana Gaudi | Amazon Web Services PlatoBlockchain Inteligencia de datos. Búsqueda vertical. Ai.Mahadevan Balasubramaniam es Arquitecto Principal de Soluciones para Computación Autónoma con casi 20 años de experiencia en el área de aprendizaje profundo infundido en física, construcción e implementación de gemelos digitales para sistemas industriales a escala. Mahadevan obtuvo su doctorado en Ingeniería Mecánica del Instituto Tecnológico de Massachusetts y tiene más de 25 patentes y publicaciones en su haber.

Acelere PyTorch con DeepSpeed ​​para entrenar modelos de lenguaje grandes con instancias DL1 EC2 basadas en Intel Habana Gaudi | Amazon Web Services PlatoBlockchain Inteligencia de datos. Búsqueda vertical. Ai.RJ es un ingeniero en el equipo de Search M5 que lidera los esfuerzos para construir sistemas de aprendizaje profundo a gran escala para capacitación e inferencia. Fuera del trabajo, explora diferentes cocinas de comida y practica deportes de raqueta.

Acelere PyTorch con DeepSpeed ​​para entrenar modelos de lenguaje grandes con instancias DL1 EC2 basadas en Intel Habana Gaudi | Amazon Web Services PlatoBlockchain Inteligencia de datos. Búsqueda vertical. Ai.Sundar Ranganatán es el jefe de desarrollo comercial, marcos de ML en el equipo de Amazon EC2. Se enfoca en cargas de trabajo de aprendizaje automático a gran escala en servicios de AWS como Amazon EKS, Amazon ECS, Elastic Fabric Adapter, AWS Batch y Amazon SageMaker. Su experiencia incluye roles de liderazgo en gestión y desarrollo de productos en NetApp, Micron Technology, Qualcomm y Mentor Graphics.

Acelere PyTorch con DeepSpeed ​​para entrenar modelos de lenguaje grandes con instancias DL1 EC2 basadas en Intel Habana Gaudi | Amazon Web Services PlatoBlockchain Inteligencia de datos. Búsqueda vertical. Ai.Abhinandan Patni es ingeniero de software sénior en Amazon Search. Se centra en la creación de sistemas y herramientas para la formación de aprendizaje profundo distribuido escalable y la inferencia en tiempo real.

Acelere PyTorch con DeepSpeed ​​para entrenar modelos de lenguaje grandes con instancias DL1 EC2 basadas en Intel Habana Gaudi | Amazon Web Services PlatoBlockchain Inteligencia de datos. Búsqueda vertical. Ai.Pierre Yves Aquilanti es el jefe de soluciones de ML de Frameworks en Amazon Web Services, donde ayuda a desarrollar las mejores soluciones de Frameworks de ML basadas en la nube de la industria. Su experiencia es en informática de alto rendimiento y, antes de unirse a AWS, Pierre-Yves trabajaba en la industria del petróleo y el gas. Pierre-Yves es originario de Francia y tiene un Ph.D. en Informática por la Universidad de Lille.

Sello de tiempo:

Mas de Aprendizaje automático de AWS