[Traducción] DeepSpeed: una herramienta de entrenamiento de modelos a muy gran escala que todos pueden usar

Lanzamos DeepSpeed ​​en febrero de este año . Esta es una biblioteca de optimización de entrenamiento de aprendizaje profundo de código abierto que contiene una nueva tecnología de optimización de memoria: ZeRO (Zero Redundancy Optimizer), que promueve en gran medida el entrenamiento de modelos grandes al expandir la escala, aumentar la velocidad, controlar los costos y mejorar la disponibilidad. DeepSpeed ​​​​ha ayudado a los investigadores a desarrollar el modelo de generación de lenguaje natural de Turing (  Turing-NLG ), que en el momento de la publicación era el modelo de lenguaje más grande del mundo (con 17 mil millones de parámetros) y tenía la mayor precisión. En mayo lanzamos ZeRO-2 , que admite el entrenamiento de modelos con 200 mil millones de parámetros y es hasta 10 veces más rápido que la última tecnología, y una gama de funciones de optimización de computación, IO y convergencia para impulsar el entrenamiento BERT más rápido. Desde entonces, hemos seguido innovando a un ritmo rápido, superando los límites de la velocidad y la escala en el entrenamiento de modelos de aprendizaje profundo.

Hoy, estamos muy contentos de compartir con ustedes algunos nuevos desarrollos que no solo llevarán la capacitación en aprendizaje profundo al extremo, sino que también harán que esta tecnología se utilice más ampliamente: desde capacitación de científicos de datos en supercomputadoras hasta capacitación en un clúster de gama baja o Incluso solo una GPU. Específicamente, DeepSpeed ​​​​ha agregado cuatro nuevas tecnologías sistemáticas para expandir aún más nuestra   iniciativa AI at Scale . También promueven la innovación de los productos y plataformas de inteligencia artificial de Microsoft. Estas tecnologías proporcionan una utilización extremadamente eficiente de la informática, la memoria y la comunicación, y nos ayudan a entrenar modelos con miles de millones o billones de parámetros. Estas tecnologías también admiten secuencias de entrada muy largas y se pueden utilizar en clústeres de alta gama con GPU de una sola tarjeta, GPU de kilotarjeta o clústeres de gama baja con Ethernet lenta.

  • Lograr un entrenamiento de modelos de billones de parámetros con paralelización 3D:  DeepSpeed ​​​​implementa una combinación flexible de tres métodos paralelos: paralelismo de datos, paralelismo de tuberías y paralelismo de modelos de corte tensorial respaldado por ZeRO. El paralelismo 3D se adapta a las necesidades de diferentes cargas de trabajo para admitir modelos muy grandes con billones de parámetros y , al mismo tiempo, lograr una escalabilidad de memoria y una eficiencia de escalado del rendimiento casi perfectas. Además, su eficiencia de comunicación mejorada permite a los usuarios entrenar modelos con miles de millones de parámetros entre 2 y 7 veces más rápido en clústeres convencionales con ancho de banda de red limitado.
  • ZeRO-Offload permite que una sola tarjeta GPU entrene modelos 10 veces más grandes:  para utilizar la memoria de CPU y GPU para entrenar modelos grandes, ampliamos ZeRO-2. Nuestros usuarios, que utilizan máquinas con una única GPU NVIDIA V100 , pueden ejecutar modelos con hasta 13 mil millones de parámetros  sin quedarse sin memoria de video , escalar modelos hasta 10 veces el tamaño de los métodos existentes y seguir siendo competitivos. Esta característica democratiza el entrenamiento de modelos con miles de millones de parámetros y abre una ventana para que muchos profesionales del aprendizaje profundo exploren modelos mejores y más grandes.
  • Ejecute secuencias 10 veces más largas y 6 veces más rápido con DeepSpeed ​​​​Sparse Attention:  DeepSpeed ​​​​proporciona un núcleo de atención dispersa: una tecnología de herramienta que admite secuencias largas de entradas de modelo, incluida la entrada de texto, la entrada de imágenes y la entrada de voz. En comparación con el clásico Transformer denso, admite una secuencia de entrada un orden de magnitud más larga y logra una ejecución hasta 6 veces más rápida manteniendo una precisión comparable. También es entre 1,5 y 3 veces más rápido que las últimas implementaciones dispersas. Además, nuestro kernel disperso admite de manera flexible formatos dispersos, lo que permite a los usuarios innovar con estructuras dispersas personalizadas.
  • Adam de 1 bit reduce la comunicación 5 veces:  Adam es un optimizador eficaz (quizás el más utilizado) en escenarios de entrenamiento de modelos de aprendizaje profundo a gran escala. Sin embargo, a menudo es incompatible con los algoritmos de optimización de la eficiencia de la comunicación. Por lo tanto, la sobrecarga de comunicación puede convertirse en un cuello de botella al realizar escalado distribuido entre dispositivos. Presentamos un nuevo algoritmo Adam de 1 bit, así como su implementación eficiente. Este algoritmo reduce el volumen de comunicación hasta 5 veces y logra tasas de convergencia similares a las de Adam. En escenarios de comunicación limitada, observamos una mejora de 3,5 veces en la velocidad de entrenamiento distribuido, lo que permite que el algoritmo se extienda a diferentes tipos de clústeres de GPU y entornos de red.

una captura de pantalla de un teléfono celular

Esta publicación de blog profundizará en estas 4 tecnologías. Hemos anunciado estas interesantes técnicas de optimización en el proyecto de código abierto DeepSpeed .

Paralelo 3D: escalamiento a billones de modelos de parámetros

Con el rápido crecimiento de la informática en clústeres de GPU modernos, entrenar potentes modelos de billones de parámetros con capacidades asombrosas ya no está fuera de alcance y podría lograrse en un futuro próximo. DeepSpeed ​​​​combina tres poderosas tecnologías para entrenar modelos a escala de billones y escalar a miles de GPU: entrenamiento en paralelo de datos, entrenamiento en paralelo de modelos y entrenamiento en paralelo de tuberías. La simbiosis de estos tres permite que la capacitación en aprendizaje profundo escale mucho más allá de lo que es posible utilizando cada estrategia por sí sola. El paralelismo 3D resuelve simultáneamente dos desafíos fundamentales en el entrenamiento de modelos de billones de parámetros: la eficiencia de la memoria y la eficiencia computacional . Como resultado, DeepSpeed ​​​​puede ampliarse para adaptarse a los modelos más grandes en memoria de video sin sacrificar la velocidad.

Comprender los desafíos de la memoria y la eficiencia computacional al entrenar modelos enormes

Eficiencia de la memoria de video : la memoria de video necesaria para entrenar un modelo de un billón de parámetros excede con creces el tamaño de la memoria de video de una sola GPU. Cuando se utiliza el optimizador Adam para entrenamiento de precisión mixta, se requieren aproximadamente 16 TB de memoria de video para almacenar el estado del modelo (parámetros, gradientes y estado del optimizador). A modo de comparación, la GPU Nvidia A100 más avanzada tiene sólo 40 GB de memoria de vídeo. Sólo para almacenar el estado del modelo, se necesitan 400 de estas GPU.

La memoria de vídeo adicional consumida por la función de activación aumenta con el tamaño del lote. Cuando el lote se establece en 1, entrenar un modelo de billón de parámetros generará más de 1 TB de memoria de video para la función de activación (en lo sucesivo, memoria de video de activación). Usar  el  proceso de punto de control para activar la memoria de video e intercambiar la memoria de video con el cálculo puede reducir la memoria de video a aproximadamente 20 GB, pero aún es demasiado alta para el entrenamiento.

El estado del modelo y la memoria de video activa se deben dividir de manera eficiente entre múltiples dispositivos GPU para permitir que modelos tan grandes se entrenen sin quedarse sin memoria de video.

Eficiencia computacional : se estima que el entrenamiento de un extremo a otro de un modelo de un billón de parámetros requiere aproximadamente 5000 Zflops (es decir, 5 seguido de  24 ceros ; esta estimación se basa en  la ley de escala de investigación de OpenAI ). Esto significa que entrenar un modelo de este tipo requiere 4000 A100 funcionando con una eficiencia computacional del 50% durante aproximadamente 100 días.

Aunque los clústeres de GPU de supercomputación a gran escala pueden tener más de 4000 GPU, sigue siendo un desafío lograr una alta eficiencia informática a esta escala debido a las limitaciones del tamaño de los lotes. La eficiencia computacional aumenta con la relación entre el tiempo de cálculo y el tiempo de comunicación. Esta proporción es proporcional al tamaño del lote. Sin embargo, existe un límite superior en el tamaño del lote para entrenar un modelo, más allá del cual la convergencia puede deteriorarse significativamente.

De hecho, uno de los modelos más grandes, GPT-3  , tiene un tamaño de lote de entrenamiento de aproximadamente 1500. Si se utilizan alrededor de 4000 GPU, incluso si podemos establecer libremente el tamaño del lote en 4000, el tamaño del lote en cada tarjeta es solo 1, lo que afectará la escalabilidad.

Comprender las ventajas y desventajas entre el paralelismo de datos, el paralelismo de modelos y el paralelismo de canalización

El paralelismo de datos es una técnica comúnmente utilizada en el aprendizaje profundo. En esta técnica, cada lote de datos de entrenamiento de entrada se divide en partes iguales entre los trabajadores con datos paralelos. Después de la retropropagación, es necesario comunicar y reducir los gradientes para garantizar que el optimizador realice las mismas actualizaciones en cada trabajador. El paralelismo de datos tiene varias ventajas claras, incluida una alta eficiencia computacional y un bajo esfuerzo de implementación. Sin embargo, el tamaño del lote del paralelismo de datos aumenta con el número de trabajadores y, a menudo, no podemos aumentar el tamaño del lote todo el tiempo sin afectar la convergencia.

  • Eficiencia de la memoria : el paralelismo de datos copia modelos y optimizadores entre todos los trabajadores, por lo que la eficiencia de la memoria no es alta. DeepSpeed ​​desarrolló  ZeRO  , una serie de optimizadores diseñados para mejorar la eficiencia de la memoria para el paralelismo de datos. Este trabajo se basa en la Fase 1 de ZeRO, que divide el estado del optimizador entre los trabajadores para reducir la redundancia.
  • Eficiencia computacional : a medida que aumentamos el grado de paralelismo, la cantidad de cálculo realizado por cada trabajador es constante. El paralelismo de datos puede lograr un escalamiento casi lineal a pequeñas escalas. Sin embargo, la sobrecarga de comunicación derivada de la reducción de gradientes entre trabajadores está relacionada positivamente con el tamaño del modelo, por lo que cuando el modelo es grande o el ancho de banda de comunicación es bajo, la eficiencia computacional será limitada. . La acumulación de gradientes es una estrategia común utilizada para distribuir uniformemente los costos de comunicación. Aumentará aún más el tamaño del lote, utilizará microlotes localmente   para realizar la propagación hacia adelante y hacia atrás varias veces para acumular gradientes y luego realizará una reducción de gradiente y actualizaciones del optimizador.

El paralelismo de modelos es una clase amplia de técnicas. Divide las distintas capas del modelo entre varios trabajadores. Por su propia naturaleza, el cálculo y la comunicación del paralelismo del modelo varían dependiendo de la estructura del modelo, por lo que existe un esfuerzo significativo en su implementación. DeepSpeed ​​​​toma prestado Megatron-LM de NVIDIA   para proporcionar paralelismo de modelos a gran escala para modelos de lenguaje basados ​​​​en Transformer. El paralelismo del modelo reducirá el uso de memoria proporcionalmente al número de trabajadores y es el más eficiente en memoria entre los tres grados de paralelismo. Pero el precio es la eficiencia computacional más baja.

  • Eficiencia de la memoria de video : el paralelismo del modelo reduce el uso de la memoria de video proporcionalmente al número de trabajadores. Fundamentalmente, esta es la única forma de reducir la memoria activa de una única capa de red. DeepSpeed ​​​​mejora aún más la eficiencia de la memoria al dividir la memoria activa entre los trabajadores paralelos del modelo.
  • Eficiencia computacional : debido a la necesidad de valores de activación de comunicación adicionales en cada propagación hacia adelante y hacia atrás, la eficiencia computacional del paralelismo del modelo es muy baja. El paralelismo del modelo requiere un gran ancho de banda de comunicación y no se adapta bien a nodos con ancho de banda de comunicación limitado. Además, cada trabajador paralelo del modelo reduce la cantidad de cálculo realizado entre cada etapa de comunicación, lo que afecta la eficiencia computacional. El paralelismo de modelos se utiliza a menudo junto con el paralelismo de datos para crear un equilibrio entre memoria y eficiencia computacional.

¡ El motor de entrenamiento paralelo de tuberías también se incluye en esta versión de DeepSpeed! El paralelismo de canalización divide cada capa del modelo en etapas que se pueden procesar en paralelo . Cuando una etapa completa un paso hacia adelante de microlotes, la memoria de activación se comunica a la siguiente etapa del proceso. De manera similar, los gradientes se comunican a través de la canalización cuando la siguiente etapa completa la retropropagación. Se deben calcular varios microlotes simultáneamente para garantizar que las distintas etapas del proceso se calculen en paralelo. Se han desarrollado varios métodos para compensar la memoria, la eficiencia computacional y el comportamiento de convergencia, como  PipeDream . El método adoptado por DeepSpeed ​​​​es lograr el paralelismo mediante la acumulación de gradientes y mantener las mismas condiciones de convergencia que el entrenamiento paralelo de datos y modelos tradicionales bajo el mismo tamaño de lote total.

  • Eficiencia de la memoria de video : la memoria de video reducida por el paralelismo de la tubería es proporcional al número de etapas de la tubería, de modo que el tamaño del modelo se puede expandir linealmente con la cantidad de trabajadores. Sin embargo, el paralelismo de canalización no reduce la huella de memoria de la función de activación de cada capa. Además, cada trabajador debe almacenar valores de activación para cada microlote que se ejecuta simultáneamente. Esto da como resultado que la memoria de activación de la primera etapa de la tubería sea aproximadamente la misma que la memoria de activación total de un solo lote micro. Un modelo de un billón de parámetros requerirá aproximadamente 19 GB de memoria activa para un micro lote, que es casi la mitad de la memoria total de la nueva GPU Nvidia A100.
  • Eficiencia computacional : el paralelismo de canalización tiene el volumen de comunicación más bajo porque su volumen de comunicación es solo proporcional al valor de activación de cada capa en el límite de cada etapa. Sin embargo, no puede escalar infinitamente. Al igual que el paralelismo del modelo, aumentar el tamaño de la canalización reduce la cantidad de cálculo requerido en cada etapa de la canalización, lo que reduce la relación entre cálculo y comunicación. Para lograr una buena eficiencia informática, el paralelismo de canalización también requiere que la carga informática de cada etapa esté perfectamente equilibrada.

Además, el paralelismo de la tubería puede crear burbujas al principio y al final de cada lote debido a la necesidad de rellenar o drenar la tubería. El entrenamiento con 4x u 8x el número de etapas de canalización (y tamaño de lote) para los pasos de acumulación de gradiente logra una escalabilidad del 81% y 90%, respectivamente, en comparación con una sola etapa de canalización.

Logre simultáneamente una alta eficiencia de memoria y una alta eficiencia computacional a través del paralelismo 3D.

El paralelismo de datos, modelos y canalizaciones desempeñan funciones específicas en la mejora de la memoria y la eficiencia computacional. La Figura 1 ilustra nuestra estrategia 3D.

Eficiencia de la memoria : primero divida las capas del modelo en diferentes etapas de canalización y luego divida las capas de cada etapa a través del modelo en paralelo. Esta composición 2D reduce simultáneamente la memoria consumida por el modelo, el optimizador y las funciones de activación. Sin embargo, no podemos dividir el modelo infinitamente sin introducir una sobrecarga de comunicación, lo que limita la eficiencia computacional.

Eficiencia computacional : para ampliar la cantidad de trabajadores más allá de lo que el modelo y el paralelismo de la canalización pueden admitir sin sacrificar la eficiencia computacional, utilizamos el paralelismo de datos compatible con ZeRO (ZeRO-DP). ZeRO-DP no solo puede mejorar aún más la eficiencia de utilización de la memoria al dividir el volumen de estado del optimizador, sino que también puede extenderse a cualquier número de GPU con una sobrecarga de comunicación mínima mediante la utilización de la relación de mapeo basada en la topología de comunicación.

Mapeo 3D basado en topología de comunicación (Fig. 2) : al explotar dos propiedades arquitectónicas clave, asignamos cuidadosamente cada dimensión en paralelismo 3D a los trabajadores para lograr la máxima eficiencia computacional.

  1. Optimice el ancho de banda de comunicación dentro y entre nodos : el paralelismo de modelos tiene la mayor sobrecarga de comunicación entre las tres estrategias, por lo que priorizamos la colocación de grupos de trabajadores paralelos de modelos dentro de los nodos para utilizar un mayor ancho de banda dentro de los nodos. Aquí realizamos el paralelismo del modelo de segmentación tensorial basado en NVIDIA Megatron-LM. Cuando el grupo de paralelismo del modelo no ocupa a todos los trabajadores dentro del nodo, elegimos colocar el grupo de paralelismo de datos dentro del nodo. De lo contrario, realice el paralelismo de datos entre nodos. El paralelismo de la canalización tiene una comunicación mínima, por lo que podemos programar etapas de la canalización entre nodos sin estar limitados por el ancho de banda de comunicación.
  2. Mayor ancho de banda a través de la comunicación paralela : la cantidad de gradientes que cada grupo paralelo de datos necesita para comunicarse disminuye linealmente con el tamaño de la canalización y el paralelismo del modelo, por lo que la cantidad total de comunicación es menor que si se utilizara solo el paralelismo de datos. Además, cada grupo paralelo de datos se comunicará de forma independiente dentro de un pequeño número de trabajadores locales, y la comunicación entre grupos puede ser paralela entre sí. El resultado es que el ancho de banda efectivo de la comunicación paralela de datos aumenta al reducir el volumen de comunicación y aumentar la localidad y el paralelismo.

La figura muestra un ejemplo de paralelismo 3D con 32 trabajadores. Cada capa de la red neuronal se divide en cuatro etapas de canalización. Las capas en cada etapa del proceso se dividen entre cuatro trabajadores modelo paralelos. Finalmente, hay dos instancias de datos paralelas por etapa de canalización y ZeRO divide el estado del optimizador entre las dos réplicas.

Figura 1: Un ejemplo de paralelismo 3D con 32 trabajadores. Las capas de la red neuronal se dividen en cuatro etapas de canalización. Las capas en cada etapa de la tubería se dividen entre cuatro trabajadores paralelos del modelo. Finalmente, hay dos instancias de datos paralelos por etapa de canalización y ZeRO divide el volumen de estado del optimizador entre estas 2 réplicas.

Los bloques de colores muestran la asignación de trabajadores en la Figura 1 a las GPU en un sistema de ocho nodos con cuatro GPU cada uno. Las GPU del mismo color están en el mismo nodo.

Figura 2: Mapeo de trabajadores de la Figura 1 a GPU en un sistema de ocho nodos (cada nodo tiene cuatro GPU). Las GPU del mismo color están en el mismo nodo.

Obtenga más información sobre cómo entrenar modelos de billones de parámetros en paralelo en 3D

Utilizando el paralelismo de modelos de 8 vías, el paralelismo de canalización de 64 vías y el paralelismo de datos de 8 vías, el entrenamiento de un modelo de un billón de parámetros se puede escalar en 4096 GPU NVIDIA A100.

Al combinar el paralelismo de modelos y el paralelismo de canalización, el paralelismo 3D permite una excelente eficiencia de la memoria y una alta eficiencia computacional en múltiples nodos. El paralelismo de modelos mejora la eficiencia del almacenamiento de la memoria de activación y las cantidades de estado del modelo dentro de los nodos, mientras que el paralelismo de canalización, en comparación con el uso exclusivo del paralelismo de modelos, puede almacenar de manera eficiente el estado del modelo entre nodos sin sacrificar la eficiencia computacional. En el ejemplo de un billón de parámetros con un tamaño de microlote de 1, después de usar el punto de control del valor de activación y el paralelismo 3D anterior, la cantidad de estado del modelo consumirá 30 GB de memoria de video y el valor de activación dividido consumirá 2,5 GB de memoria. . Esto da como resultado una huella de memoria total de 32,5 GB, lo que permite el uso de una GPU NVIDIA A100 con 40 GB de memoria para acomodar y entrenar dicho modelo.

Combinando el paralelismo de modelos y el paralelismo de canalización, el paralelismo de canalización puede lograr una alta eficiencia informática con una sobrecarga mínima de burbujas en lotes muy pequeños. En el paralelismo del modelo de 8 vías, el uso de un microlote de 1 por modelo dará como resultado un tamaño de microlote efectivo de 1/8 por GPU. Por lo tanto, usar 8 veces el paso de acumulación de gradiente del paralelismo de canalización solo llevará el tamaño del lote acumulado total a 1 en cada GPU, y el procesamiento paralelo de canalización puede lograr una eficiencia computacional del 90%. Cuando se combina con el paralelismo de datos, esto da como resultado un tamaño de lote efectivo total de 4096 en 4096 GPU y aún logra una eficiencia de canalización del 90 %.

Pero, ¿cómo afecta el paralelismo de datos a la eficiencia computacional? ¿No requiere el paralelismo de datos que cada GPU tenga un lote grande para seguir siendo eficiente?

El paralelismo del modelo puede reducir el tamaño de lote efectivo en cada GPU a menos de 1. Esto permite que el paralelismo de la tubería oculte la sobrecarga de la burbuja de la tubería incluso con lotes pequeños. Tenga en cuenta que al utilizar el paralelismo de canalización entre nodos, podemos hacer que los nodos paralelos de datos para cada etapa de la canalización se comuniquen de forma independiente entre sí y en paralelo con otras etapas de la canalización. De hecho, en topologías de red completamente conectadas comunes en clústeres de GPU de alta gama, esto tiene implicaciones importantes para el ancho de banda de comunicación efectivo disponible para el entrenamiento de datos en paralelo. Dado que cada nodo en una etapa de la tubería puede comunicarse en paralelo con su correspondiente nodo paralelo de datos, el ancho de banda de comunicación efectivo es proporcional al número de etapas de la tubería. Al configurar 64 etapas de canalización paralelas, el ancho de banda efectivo se convierte en 64 veces el ancho de banda hacia y desde un solo nodo. El paralelismo de canalización aporta un ancho de banda efectivo tan grande al paralelismo de datos, lo que permite que el paralelismo de datos logre una expansión eficiente incluso en situaciones de lotes pequeños donde la relación entre cálculo y comunicación es muy baja.

Entrenamiento de modelos de billones de parámetros con escalabilidad lineal

DeepSpeed ​​puede entrenar un modelo de lenguaje con un billón de parámetros utilizando solo 800 GPU NVIDIA V100 (Figura 3). Demostramos el tamaño del modelo y el rendimiento del entrenamiento, observando que tanto la memoria como la eficiencia computacional escalan linealmente con el tamaño del modelo. En varias configuraciones, podemos entrenar aproximadamente 1,4 mil millones de parámetros por GPU, que es el tamaño máximo de modelo que una sola GPU puede admitir sin quedarse sin memoria, lo que demuestra una escalabilidad de memoria perfecta. También logramos un escalado de eficiencia computacional lineal casi perfecto, con un rendimiento de 47 Tflops por GPU V100. Para el hardware mencionado anteriormente, esto supone una escalabilidad y un rendimiento impresionantes.

Figura 3: Un gráfico del tamaño del modelo (en miles de millones de parámetros) y el rendimiento del entrenamiento (en Pflops) versus la cantidad de GPU. DeepSpeed ​​​​puede entrenar un modelo con 1 billón de parámetros utilizando 800 GPU NVIDIA V100 Tensor Core con 32 GB de memoria. Cada configuración utiliza   un modelo de paralelismo de 16 vías proporcionado por NVIDIA Megatron-LM , y las GPU restantes son responsables del paralelismo de canalización. El modelo de billones de parámetros tiene 298 capas de Transformer, su tamaño de capa oculta es 17408, la longitud de la secuencia de entrenamiento es 2048 y el tamaño del lote es 2048. Para modelos más pequeños, reducimos la cantidad de capas de Transformer y el tamaño del lote proporcionalmente a la cantidad de GPU.

Una inmersión profunda en cómo el paralelismo 3D acelera el entrenamiento de modelos a escala GPT-3

Figura 4: Rendimiento del sistema usando 2D y 3D en paralelo usando 800 GPU para entrenar un modelo a escala GPT-3 con 180 mil millones de parámetros. El modelo tiene 100 capas Transformer, un tamaño de capa oculta de 12288 y 96 cabezales de atención. El tamaño del lote utilizado para el entrenamiento es 2048 y la longitud de la secuencia es 2048. ZeRO-1 también se puede utilizar junto con el paralelismo de datos. P, M y D representan dimensiones paralelas de canalización, modelo y datos, respectivamente.

En la Figura 4, utilizamos la última  arquitectura del modelo GPT-3  con más de 175 mil millones de parámetros como base para el paralelismo 3D:

  • Primero evaluamos  las configuraciones 2D (C1-C3). Las configuraciones C1 y C2 solo usan paralelismo de canalización y modelo: pueden entrenar el modelo, pero dan como resultado un menor rendimiento y una menor utilización de la GPU debido a la sobredescomposición del modelo. C3 intenta utilizar únicamente canalización y paralelismo de datos, pero no puede resolver el problema de la memoria de video insuficiente sin reducir la cantidad de activaciones a través del paralelismo del modelo de Megatron.
  • Las configuraciones 3D (C4-C10) aumentan el paralelismo de la tubería en secuencia; la configuración intermedia que equilibra el paralelismo puede lograr el mejor rendimiento y lograr las tres mayores eficiencias de memoria gráfica, computación y comunicación.
  • El mejor enfoque 3D alcanza 49 Tflops por GPU, más del 40% del pico teórico del hardware.

Vea cómo el paralelismo híbrido puede acelerar el entrenamiento de GPT-2 hasta 7 veces en clústeres de bajo ancho de banda

Entrenamos un modelo GPT-2 de 1.500 millones de parámetros y demostramos las ventajas de comunicación del paralelismo híbrido en la Figura 5. Para resaltar la fase de comunicación del entrenamiento, el entrenamiento se realiza en un clúster de cuatro nodos con un ancho de banda entre nodos bajo:

  • El paralelismo de modelos no tiene ninguna ventaja en este caso porque los modelos son más pequeños y el ancho de banda dentro del nodo es menor.
  • El tráfico paralelo de canalización es un orden de magnitud menor que los datos de configuración y los casos paralelos del modelo. Cuando el tamaño del lote es menor, la velocidad de entrenamiento es 7 veces más rápida.
  • El paralelismo de datos utiliza un tamaño de lote cada vez mayor mediante la acumulación de gradientes para amortizar de manera uniforme la sobrecarga de comunicación, pero en tamaños de lote más grandes, el rendimiento del paralelismo de canalización configurado sigue siendo el doble que el del paralelismo de datos.
  • La configuración híbrida de canalización y datos en paralelo evita el cuello de botella de la comunicación en gradiente al limitar el grupo de datos en paralelo a la GPU dentro del nodo, por lo que la comunicación en gradiente se beneficia de un ancho de banda más rápido dentro del nodo.

Figura 5: Rendimiento frente al tamaño del lote al entrenar GPT-2 (1,5 mil millones de parámetros) con una longitud de secuencia de 1024. Para el entrenamiento se utilizaron cuatro nodos, cada uno equipado con cuatro GPU V100 con 16 GB de memoria. Las GPU están conectadas entre sí con 50 Gbps de ancho de banda entre nodos y 4 Gbps de ancho de banda entre nodos. DP significa paralelismo de datos habilitado para ZeRO-1. Todos los métodos escalan el tamaño del lote aumentando el número de pasos para la acumulación de gradiente.

ZeRO-Offload: entrene un modelo 10 veces más grande en una sola GPU

ZeRO-Offload aumenta el tamaño máximo del modelo que se puede entrenar de manera eficiente con menos recursos de GPU al utilizar simultáneamente los recursos informáticos y de almacenamiento de la GPU y la CPU del host. Nos permite entrenar modelos con hasta 130 mil millones de parámetros en un solo V100, 10 veces el nivel más alto actual, mientras mantiene un alto rendimiento de entrenamiento de 30 Tflop por GPU.

Al permitir que una sola GPU entrene modelos con miles de millones de parámetros, ZeRO-Offload hace que el entrenamiento de modelos grandes sea accesible y permite que participen los profesionales del aprendizaje profundo con recursos de hardware limitados.

Histograma del tamaño de modelo más grande que se puede entrenar usando PyTorch y ZeRO-Offload predeterminados en una sola GPU.

Figura 6: Tamaño máximo del modelo que se puede entrenar en una sola GPU usando PyTorch y ZeRO-Offload predeterminados.

La tecnología principal detrás de ZeRO-Offload es   descargar el estado del optimizador y los gradientes a la memoria de la CPU basada en ZeRO-2 . Este método permite a ZeRO-Offload minimizar la pérdida de eficiencia informática causada por la copia a la CPU, mientras logra la misma eficiencia que ZeRO-2 o, a veces, incluso la supera. La siguiente figura muestra la arquitectura de Zero-OffLoad:

Figura 7: descripción general de ZeRO-Offload.

Descubra cómo ZeRO-Offload entrena miles de millones de modelos de parámetros en una sola GPU

Los modelos de entrenamiento con miles de millones de parámetros como GPT y T5 requieren múltiples GPU para almacenar el modelo y el estado. El entrenamiento de modelos grandes resuelve principalmente el problema de limitación de memoria mediante el paralelismo de modelos entre GPU. Recientemente, lanzamos ZeRO, un optimizador de memoria eficiente que distribuye el estado del modelo (estado del optimizador, gradientes y parámetros del modelo) a través de múltiples GPU paralelas, lo que permite procesar modelos con miles de millones de parámetros sin usar Los modelos se entrenan en paralelo. Sin embargo, ZeRO todavía requiere una gran cantidad de GPU con datos paralelos para guardar el estado del modelo dividido, por lo que solo unas pocas personas tienen las condiciones para entrenar este modelo.

ZeRO-Offload permite realizar entrenamiento de modelos grandes en una sola GPU, lo que hace que dicho entrenamiento sea civil. Para entrenar modelos con miles de millones de parámetros sin utilizar múltiples GPU, ZeRO-Offload hereda el método de ZeRO-2 para dividir las cantidades y gradientes del estado del optimizador. La diferencia con ZeRO-2 es que ZeRO-Offload no guarda una parte del estado y el gradiente del optimizador en cada GPU, sino que mueve ambos a la memoria local. El estado del optimizador se mantiene en la memoria durante todo el proceso de entrenamiento. El gradiente se calcula en la GPU durante el proceso de cálculo inverso y se promedia mediante reducción-dispersión. Después de eso, cada proceso paralelo de datos descarga su propia parte del gradiente promediado a la CPU (descarga g en la Figura 7) y descarta las partes que son no es tu responsabilidad.

Una vez que el gradiente llega a la CPU, la cantidad de estado de optimización dividida se actualizará en la CPU en paralelo (  p actualización en la Figura 7 ). Una vez completada la actualización, los parámetros divididos se trasladan nuevamente a la GPU y se actualizan mediante la operación de recopilación completa (  g swap en la Figura 7 ). Zero-Offload también utiliza diferentes flujos CUDA para superponer la comunicación (como  g offload  y  g swap ) y el cálculo (como backpropagation y  p update ) para mejorar la eficiencia del entrenamiento.

Vea las ventajas de ZeRO-Offload en términos de tamaño del modelo, velocidad de entrenamiento y escalabilidad

Expansión del modelo 10 veces : en una sola GPU V100 de 32 GB, la Figura 6 muestra que PyTorch puede entrenar un modelo con hasta 1,3 mil millones de parámetros, mientras que ZeRO-Offload puede entrenar un modelo con 13 mil millones de parámetros, que es 10 veces mayor que PyTorch. Esto se debe a que ZeRO-Offload mantiene el estado del optimizador, que consume la mayor parte de la memoria de la GPU, en la memoria nativa durante todo el proceso de entrenamiento, al mismo tiempo que mueve los gradientes calculados a la CPU durante la retropropagación. Por lo tanto, la memoria de la GPU guardada se puede utilizar para entrenar modelos más grandes.

Rendimiento de entrenamiento eficiente : como se muestra en la Figura 8, cuando se entrena un modelo de 10 mil millones de parámetros, incluso si solo se usa una GPU para el entrenamiento, el uso de ZeRO-Offload aún puede permitir que cada GPU tenga un rendimiento de más de 30 Tflops, y su El rendimiento crece de forma casi perfectamente lineal con el número de GPU.

ZeRO-Offload es el complemento perfecto para ZeRO-2, ya que permite un entrenamiento eficiente de modelos grandes en una pequeña cantidad de GPU. ZeRO-Offload hace posible entrenar modelos grandes en 1 a 16 GPU mediante el uso de memoria de CPU para reducir la memoria de GPU requerida por el modelo. En 32 GPU, el rendimiento de ZeRO-Offload es ligeramente superior al de ZeRO-2; la mejora de rendimiento proviene de la memoria de la GPU guardada por ZeRO-Offload, lo que nos permite entrenar el modelo en un lote más grande, por lo que a pesar de la existencia Sin copiar a la CPU, la eficiencia informática de la GPU aún se puede mejorar. Con más GPU (por ejemplo, 64 y 128), ZeRO-2 supera a ZeRO-Offload porque ahora ambos pueden ejecutar lotes de tamaño similar y ZeRO-2 no tiene la sobrecarga de mover datos a la CPU, y las actualizaciones del optimizador son mucho más rápidas en la GPU. que en la CPU. En definitiva, ZeRO-Offload es un complemento de ZeRO-2 y amplía el alcance de optimización de la familia ZeRO, desde un único dispositivo hasta miles de dispositivos, con soluciones de optimización para el entrenamiento de modelos grandes.

Histograma de rendimiento para entrenar un modelo GPT-2 de 10 mil millones de parámetros en 128 GPU utilizando ZeRO-Offload y ZeRO-2.

Figura 8: Comparación del rendimiento del entrenamiento entre ZeRO-Offload y ZeRO-2 utilizando 128 GPU para entrenar el modelo GPT-2 de 10 mil millones de parámetros.

Mecanismo de atención dispersa DeepSpeed: ejecute secuencias 10 veces más largas y 6 veces más rápido

Los modelos de aprendizaje profundo basados ​​en la atención (por ejemplo, Transformers) son muy eficaces para capturar relaciones entre tokens en una secuencia de entrada, incluso cuando la distancia entre ellos es larga. Por lo tanto, se utilizan a menudo con entradas de texto, imágenes y relacionadas con la voz. La longitud de la secuencia de estas entradas puede ser de miles de tokens. Sin embargo, aunque el módulo de atención captura eficazmente las dependencias dentro de secuencias largas, en aplicaciones prácticas, el soporte para entradas de secuencias largas está limitado por la cantidad de memoria de cálculo y de video. La cantidad de cálculo y requisitos de memoria aumentan cuadráticamente con respecto a la longitud de la secuencia \(n\).

Para abordar esta limitación, DeepSpeed ​​​​proporciona un núcleo de atención dispersa : una tecnología instrumental que reduce los requisitos computacionales y de memoria del cálculo de la atención en órdenes de magnitud a través del cálculo disperso en bloques. Este conjunto de herramientas no solo alivia el cuello de botella de la memoria del cálculo de la atención, sino que su cálculo escaso también es muy eficiente. Su API se puede integrar fácilmente en cualquier modelo basado en Transformer. Además de proporcionar varias estructuras dispersas, puede manejar de manera flexible cualquier estructura dispersa de bloques definida por el usuario.

Más específicamente, Sparse Attention (SA) se puede diseñar para calcular la atención local entre tokens adyacentes u obtener tokens resumidos mediante cálculos de atención local y luego obtener atención global. Además, SA admite tanto la atención aleatoria como cualquier combinación de atención local, global y aleatoria, como se muestra en los bloques azul, naranja y verde de la Figura 10. Esto permite a SA reducir la huella de memoria a \(O(wn)\), donde 1\(<w≤n \) es un parámetro cuyo valor depende de la estructura de atención.

Los pequeños cuadrados de colores muestran una estructura de escasez variable

Figura 10: Estructura dispersa variable

Implementación eficiente en GPU : aunque la implementación básica de atención escasa ahorrará memoria de video, puede ser computacionalmente peor que el cálculo denso. Esto se debe principalmente a la naturaleza dispersa del acceso a la memoria debido a la escasez de datos. Desarrollar núcleos dispersos eficientes suele ser un desafío, especialmente en GPU. DeepSpeed ​​​​proporciona   un núcleo de atención escasa eficiente desarrollado en Triton . Estos núcleos están estructurados en un paradigma disperso similar a un bloque, lo que permite un acceso alineado a la memoria, reduce la ramificación de subprocesos de la GPU y equilibra la carga de trabajo en el procesador.

Rendimiento del sistema : como se muestra en la Figura 11, SA admite  secuencias 10 veces más largas y cálculos hasta 6,3 veces más rápidos . El gráfico de la izquierda muestra las longitudes de secuencia más largas que se pueden ejecutar en BERT-Base y BERT-Large. Nuestros experimentos tienen las siguientes tres configuraciones: modo denso, modo denso con puntos de control de activación y modo disperso (SA) con puntos de control de activación. En comparación con los modelos densos de BERT-Base y BERT-Large, las secuencias de SA son 10 y 16 veces más largas, respectivamente. Además, en comparación con los modos densos, SA reduce el cálculo total y mejora la velocidad de entrenamiento: la eficiencia mejorada aumenta con la longitud de la secuencia, hasta 6,3 veces más rápido para BERT-Base y hasta 6,3 veces más rápido para BERT-Base. 5,3 veces.

Figura 11: Longitud máxima de secuencia admitida del modelo BERT (izquierda); tiempo para entrenar BERT-Base (centro) y BERT-Large (derecha) con diferentes longitudes de secuencia en una única GPU NVIDIA V100.

Descubra cómo SA puede lograr una precisión comparable o mejor que la atención plena y densa

Los trabajos relacionados que involucran atención escasa ( Sparse Transformer , Longformer , BigBird ) muestran una mayor precisión que la atención total, de acuerdo con nuestra experiencia. Además de una menor sobrecarga de memoria y un cálculo más rápido, también observamos una mayor precisión y una convergencia más rápida de SA en los modelos de producción. La siguiente figura ilustra la precisión del entrenamiento de un modelo de producción basado en BERT para la comprensión de textos largos (longitud de secuencia 2048). El experimento se lleva a cabo en las siguientes tres configuraciones: entrenamiento denso desde cero, entrenamiento de SA desde cero y entrenamiento de SA que continúa desde un punto de control denso usando una longitud de secuencia de 512. Hemos observado que para el entrenamiento previo desde cero, SA converge más rápido y con mayor precisión que las configuraciones densas. Además, en términos de tiempo y precisión, el efecto de continuar entrenando a los puntos de control previamente entrenados con SA es aún mejor.

Figura 12: Precisión de la aplicación de comprensión de textos largos

Vea cómo se compara SA con el último LongFormer

Comparamos SA con Longformer, una estructura escasa reciente y su implementación. En nuestros experimentos, SA utiliza escasez " fija ". La precisión de ambas implementaciones es comparable. En términos de rendimiento del sistema, SA supera a Longformer tanto en entrenamiento como en inferencia:

  • 1,5 veces más rápido ejecutando MLM previamente entrenado en Wikitext103
  • La velocidad de inferencia de BERT-Base aumenta 3 veces (tamaño de lote 1, longitud de secuencia 2048)

Flexibilidad para manejar cualquier estructura dispersa de bloques:  la suite DeepSpeed ​​​​Sparse Attention no se dirige a ninguna estructura dispersa específica, por lo que apoya eficazmente a los investigadores de modelos para explorar cualquier estructura dispersa de bloques. Actualmente, agregamos estructuras dispersas populares como  Fix (de OpenAI Sparse Transformer), [BigBird] ( https://arxiv.org/pdf/2007.14062.pdf  ) (de Google) y BSLongformer (  una implementación dispersa en bloques de AI2 Longformer También definimos una plantilla con una estructura "variable", como se muestra en la Figura 10, que se puede usar para personalizar simplemente la estructura dispersa de bloques de cualquier patrón de atención aleatorio, local o global.

1 bit Adam: reduce el volumen de comunicación 5 veces y aumenta la velocidad de entrenamiento 3,4 veces

La ampliación del entrenamiento de modelos grandes como BERT y GPT-3 requiere una optimización cuidadosa basada en el diseño del modelo, la arquitectura y la funcionalidad del sistema. Desde la perspectiva del sistema, la eficiencia de las comunicaciones se ha convertido en un importante cuello de botella, especialmente en los sistemas comerciales que utilizan TCP estándar y tienen un ancho de banda de red limitado.

La compresión de la comunicación es una técnica importante para reducir el tiempo de formación en dichos sistemas. Uno de los métodos más eficaces para comprimir comunicaciones es la compresión con compensación de errores, que proporciona una velocidad de convergencia estable incluso con una compresión de 1 bit. Sin embargo, las últimas técnicas de compensación de errores solo son adecuadas para algunos optimizadores simples que están linealmente relacionados con los gradientes, como el descenso de gradiente estocástico (SGD) y Momentum SGD. Estas técnicas no se pueden integrar con optimizadores no lineales como Adam, que conducen a la mejor tasa de convergencia y precisión en muchas tareas (incluido el entrenamiento de modelos tipo BERT).

Para un optimizador potente como Adam, es un desafío desarrollar técnicas de compresión basadas en compensación de errores debido a su dependencia del carácter no lineal del gradiente (en el término de varianza), lo que limita el valor práctico de la tecnología avanzada de compresión de comunicaciones.

Comprender los antecedentes de las técnicas de compresión clásicas.

Un método de compresión de comunicaciones es la compresión de 1 bit, que se puede expresar como:

En esta compresión, representamos cada número con 1 bit, reduciendo así los requisitos de memoria en un factor de 32. El problema es que este método directo reducirá en gran medida la velocidad de convergencia y tiene poco valor práctico. Investigaciones recientes muestran que al utilizar compresión con compensación de errores podemos esperar garantizar casi la misma tasa de convergencia bajo compresión de comunicación.

La idea de compensación de errores se puede resumir como: 1) realizar la compresión, 2) memorizar el error de compresión y luego 3) volver a agregar el error de compresión en la siguiente iteración. Para SGD, la compresión de errores equivale a:

Entre ellos \(C(⋅)\) es un operador de compresión de 1 bit. La ventaja de este tipo de compresión de errores es que los valores históricos del error de compresión \(e_t\) y \(e_t-1\) eventualmente se cancelarán entre sí, lo que hace que:

Se ha demostrado que esta estrategia funciona para todos los algoritmos de optimización que dependen linealmente de gradientes, como SGD y Momentum SGD.

Comprender los desafíos de aplicar la compensación de errores a Adam

A continuación proporcionamos una descripción general del algoritmo de Adam. Las reglas de actualización son las siguientes:

Como se muestra en la fórmula anterior, el término de varianza \(v_t\) y el gradiente \(g_t\) tienen una relación sin subprocesos. Si realizamos una compensación de error ordinaria en Adam, encontraremos (ver Figura 13) que Adam no convergerá.

Figura 13: La compresión de compensación de errores no funciona con Adam debido a la dependencia no lineal de los gradientes

Comprimir comunicación con Adam de 1 bit

Para comprimir la comunicación cuando se utiliza el optimizador Adam, desarrollamos  Adam de 1 bit , que resuelve el problema de las dependencias no lineales en gradientes mediante preprocesamiento. Observamos que la magnitud del cambio en la varianza del término no lineal (\(v_t\)) disminuye significativamente después de algunas épocas de entrenamiento, después de las cuales establecer \(v_t\) en una constante no cambia la velocidad de convergencia. Por lo tanto, el optimizador Adam de 1 bit propuesto consta de dos partes (como se muestra en la Figura 14): la fase de calentamiento, que es esencialmente el algoritmo Adam original. La etapa de compresión mantiene constante el término de varianza y comprime el término lineal restante (es decir, el impulso) en una representación de 1 bit.

La etapa de compresión del algoritmo está controlada por el parámetro de umbral (que se muestra en la Figura 14). Cuando detectamos que el cambio en la "varianza" ha caído por debajo de cierto umbral, pasamos a la etapa de compresión. Nuestra investigación muestra que la fase de calentamiento sólo requiere del 15 al 20% del total de pasos de entrenamiento.

Obtenga más información sobre el mecanismo subyacente de Adam de 1 bit

El peso de Adam de 1 bit se actualiza según la siguiente fórmula. Para el  i  -ésimo trabajador, durante la fase de compresión:

una captura de pantalla del texto

una captura de pantalla de un teléfono celular

Figura 14: Comparación de procesos de entrenamiento distribuido utilizando el algoritmo Adam clásico y el algoritmo Adam comprimido de 1 bit

Abordar el desafío del sistema de Adam de 1 bit

Además de los desafíos algorítmicos, existen dos desafíos sistémicos al aplicar Adam de 1 bit en sistemas de entrenamiento. Primero, necesitamos un núcleo eficiente capaz de convertir el impulso en una representación de 1 bit. En segundo lugar, necesitamos esquemas de comunicación eficientes para transferir el impulso comprimido entre diferentes GPU. El propósito de la compresión es reducir el tiempo total de entrenamiento para que los sistemas básicos con ancho de banda limitado puedan usarse para entrenar modelos grandes. Abordamos estos desafiantes problemas en DeepSpeed ​​y optimizamos completamente la implementación de Adam de 1 bit para el escenario de capacitación en sistemas con eficiencia de comunicación limitada.

Ventajas de Adam de 1 bit en sistemas con comunicación restringida

Adam de 1 bit proporciona la misma capacidad de convergencia que Adam y puede reducir  el volumen de comunicación hasta 5 veces . Cuando se usa para tareas de preentrenamiento BERT-Large, puede lograr hasta 3,5 veces el rendimiento cuando se usa para SQuAD fine- tareas de ajuste. , hasta  2,7 veces mayor rendimiento . La mejora del rendimiento de un extremo a otro proviene de las aceleraciones de 6,6x (Figura 15 izquierda) y 6,2x (Figura 15 derecha) observadas durante la fase de compresión. Vale la pena mencionar que nuestro optimizador Adam de 1 bit se escala muy bien en sistemas Ethernet de 40 Gb y su rendimiento es comparable a la escalabilidad de Adam en sistemas InfiniBand QDR de 40 Gb. Observamos que, según el punto de referencia iPerf, el ancho de banda efectivo en Ethernet de 40 Gb es de 4,1 Gbps, mientras que, según el micro punto de referencia más perfecto de InfiniBand, InfiniBand proporciona un ancho de banda casi máximo de 32 Gbps.

Figura 15: Escalabilidad Adam de 1 bit para preentrenamiento BERT-Large (izquierda) y ajuste fino SQuAD (derecha) en GPU NVIDIA V100. El tamaño del lote de preentrenamiento de BERT es 16/GPU, y el tamaño del lote de ajuste fino de SQuAD es 3/GPU.

Profundice en los resultados de la revisión de 1 Bit Adam

Misma convergencia que Adam : un problema importante con el uso de Adam de 1 bit es la velocidad de convergencia. Descubrimos que Adam de 1 bit puede lograr la misma velocidad de convergencia y un rendimiento comparable cuando se utiliza la misma cantidad de muestras de entrenamiento; consulte la Figura 16.

Figura 16: Usando la misma cantidad de muestras de entrenamiento, Adam de 1 bit puede converger tan bien como Adam.

La Tabla 1 muestra los resultados detallados de BERT-Base y BERT-Large. Vemos que tanto para el caso comprimido como sin comprimir, el rendimiento de Adam de 1 bit es comparable al del modelo original, y algunos son mejores que el modelo original.

Tabla 1: Verificación de la corrección de Adam de 1 bit en varias tareas de prueba

Hasta 5 veces menos comunicación:  Adam de 1 bit proporciona las mismas capacidades de convergencia que Adam y reduce la comunicación 16 veces durante la fase de compresión (para entrenamiento de 16 bits (FP16)). Para el modelo BERT previamente entrenado, la comunicación general se reduce 5 veces, ya que observamos que la fase de calentamiento es solo el 15% del tiempo de entrenamiento de un extremo a otro.

La fórmula para la relación del volumen de comunicación entre el Adam original y el Adam de 1 bit es la siguiente:

1 / (calentamiento + (1 – calentamiento)/16)

Adam de 1 bit hace que el entrenamiento de BERT-Large sea 3,5 veces más rápido:  proporcionamos resultados del entrenamiento de BERT-Large en dos sistemas con restricciones de ancho de banda limitadas: 1) Ethernet de 40 Gbps (Figura 17 izquierda) y 2) InfiniBand QDR de 40 Gbps (Figura 17 derecha). ). Durante la fase de compresión, vimos una mejora de 6,6 veces en el rendimiento del sistema usando Ethernet y una mejora de 2 veces en el rendimiento del sistema usando InfiniBand, con velocidades de extremo a extremo (incluidas las fases de calentamiento y compresión) que aumentaron 3,5 veces y 2,7 ​​veces respectivamente. . Adam de 1 bit se beneficia principalmente de la reducción en el volumen de comunicación (debido a la implementación de compresión de la comunicación de impulso) y de nuestra  operación allreduce personalizada, que se implementa a través de una eficiente  operación  de recopilación y recopilación sin bloqueo de 1 bit  .

Vale la pena señalar que también es posible utilizar LAMB en lugar del optimizador Adam para el entrenamiento previo de BERT para reducir el volumen de comunicación aumentando el tamaño total del lote. Sin embargo, Adam de 1 bit evita este exigente ajuste de hiperparámetros. Según nuestra experiencia, suele ser más difícil ajustar los parámetros en lotes grandes. Además, Adam de 1 bit también es muy adecuado para trabajar con lotes críticos pequeños (que no pueden converger bien con lotes grandes, como muchas tareas de ajuste fino).

Figura 17: Rendimiento del entrenamiento BERT-Large en Ethernet de 40 Gbps (izquierda) e InfiniBand (derecha) utilizando Adam de 1 bit durante la fase de compresión

Adam de 1 bit acelera las tareas de ajuste fino de SQuAD 2,7 veces:  Adam de 1 bit no solo proporciona escalabilidad en tareas de entrenamiento a gran escala, sino que también es eficaz en tareas como el ajuste fino de SQuAD. Como se muestra en la Figura 18, Adam de 1 bit se escala bien en sistemas basados ​​en Ethernet e InfiniBand y proporciona un rendimiento hasta 6,2 veces mayor (en la fase de compresión) en sistemas basados ​​en Ethernet, lo que resulta en una velocidad de extremo a extremo 2,7 veces mayor. -final (25% para calentamiento y 75% para compresión). Para el ajuste fino de SQuAD, observamos la puntuación F1 más alta cuando el tamaño total del lote es 96. Los tamaños de lote mayores que este valor reducirán la tasa de convergencia y requerirán un ajuste de hiperparámetros adicional. Por lo tanto, para escalar a 32 GPU, ejecutamos pequeños lotes de 3 o 4 en cada GPU. Esto hace que las tareas de ajuste de la comunicación sean intensivas y difíciles de escalar. Adam de 1 bit resuelve muy bien el problema de escalabilidad, reduciendo el volumen de comunicación 3,4 veces sin aumentar el tamaño del lote, logrando así una aceleración de un extremo a otro de 2,7 veces.

Figura 18: Rendimiento de la fase de compresión utilizando Adam de 1 bit en tareas de ajuste fino de SQuAD en Ethernet de 40 Gbps (izquierda) e InfiniBand (derecha).


Visite  el sitio web de DeepSpeed ​​y  el repositorio de Github para obtener códigos, tutoriales y documentación para estas nuevas tecnologías. También hemos integrado algunas tecnologías en  ONNX Runtime .

Acerca de nuestros increíbles colaboradores:

  • Nos gustaría agradecer a nuestro colaborador académico, Philippe Tillet de la Universidad de Harvard. Trabajó con nosotros para desarrollar el núcleo del algoritmo de atención dispersa a través  del compilador Triton  .
  • ZeRO-Offload fue desarrollado con Jie Ren, pasante de UC Merced. También agradecemos a Dong Li de UC Merced, y a Bharadwaj Pudipeddi y Maral Mesmakhouroshahi de Microsoft por el  trabajo L2L , por sus discusiones sobre este tema.
  • 1 Bit Adam fue desarrollado conjuntamente por el pasante Hanlin Tang de la Universidad de Rochester.
  • También agradecemos la fuerte cooperación de NVIDIA, especialmente el equipo Megatron-LM.

Acerca del equipo de DeepSpeed:

Somos un grupo de investigadores e ingenieros apasionados por la optimización del rendimiento de sistemas a gran escala: Samyam Rajbhandari, Jeff Rasley, Olatunji Ruwase, Reza Yazdani Aminabadi, Elton Zheng, Arash Ashari, Jing Zhao, Minjia Zhang, Niranjan Uma Naresh, Shaden Smith, Ammar. Ahmad Awan, Conglong Li, Yuxiong He (líder del equipo). Recientemente, nos hemos centrado en los sistemas de aprendizaje profundo, optimizando la velocidad de entrenamiento, la velocidad de convergencia y la velocidad de desarrollo de los sistemas de aprendizaje profundo.

Supongo que te gusta

Origin blog.csdn.net/chaishen10000/article/details/131304237
Recomendado
Clasificación