Una guía para el aprendizaje profundo paralelo con Colossal-AI

Estás leyendo la publicación: Una guía para el aprendizaje profundo paralelo con Colossal-AI

Colossal-AI es un modelo de aprendizaje profundo a gran escala diseñado para entrenar datos en paralelo. Combina diferentes estándares de técnicas de paralelización, como el paralelismo de tuberías, el paralelismo de datos, el paralelismo de tensores, el paralelismo de secuencias. Permite a los desarrolladores crear modelos para computación paralela a medida que crean modelos para computación normal. Con la ayuda de esta herramienta, los desarrolladores pueden concentrarse más en el desarrollo del modelo de aprendizaje profundo y sin estrés de la capacitación distribuida. En este artículo, comprenderemos los conceptos de aprendizaje distribuido y paralelo y cómo se pueden lograr en el aprendizaje profundo. Los puntos principales que se tratarán en este artículo se enumeran a continuación.

Tabla de contenido

  1. ¿Qué es el entrenamiento distribuido y el paralelismo?
  2. Introducción a Colosal-IA
  3. El motivo detrás de la creación de Colossal-AI
  4. Funcionamiento de Colossal-AI


¿Qué es Sistema Distribuido y Paralelismo?

Un sistema distribuido compuesto por múltiples componentes de software que se pueden ejecutar en múltiples máquinas de hardware se realiza para lograr un alto rendimiento y una baja tasa de latencia. Una sola máquina no puede lograr lo que puede lograr un sistema distribuido. La escalabilidad es una métrica que evalúa el rendimiento de un sistema distribuido. Por ejemplo, si ejecutamos un modelo en 4 máquinas, esperamos que el modelo se ejecute 4 veces más rápido que el sistema único. Sin embargo, existen desafíos para lograr una aceleración lineal, como escribir un algoritmo para un buen diseño, diferentes tipos de hardware que generan latencia. Consulte la figura a continuación para sistemas distribuidos, software diferente conectado con hardware diferente.

🔥 Recomendado:  7 modelos de código abierto de OpenAI

Paralelismo significa ejecutar procesos simultáneamente. En el aprendizaje automático, existen diferentes paradigmas de paralelismo, como el paralelismo de datos, el paralelismo de modelos, el paralelismo de tensores, el paralelismo de tuberías.

Introducción a Colosal-IA

Colossal-AI fue creado por Zhengda Bian, Hongxin Liu. Se basa en el popular marco de aprendizaje profundo llamado PyTorch. Es un sistema tan poderoso que puede realizar un entrenamiento distribuido complicado y brinda una manera fácil de configurar todo el paralelismo, como el paralelismo de datos, el paralelismo de modelos, el paralelismo de tensores, el paralelismo de tuberías. También proporciona la optimización para el paralelismo tensorial con multiplicación multidimensional de matriz a matriz. El flujo de trabajo de Colossal-AI es tan fluido que es muy fácil de usar.

Colosal-IA

(Fuente de imagen)

El motivo detrás de la creación de Colossal-AI

A medida que avanzamos en el campo del aprendizaje profundo, obtenemos una gran cantidad de datos. El aprendizaje profundo muestra su rendimiento espectacular en muchas aplicaciones. Las redes neuronales, como BERT, pueden aprender y predecir con un alto nivel de inteligencia entrenándose con grandes cantidades de datos. Entonces, si las redes neuronales obtienen más recursos de memoria y poder computacional, entonces pueden volverse poderosas, pero se convertirán en un modelo costoso, lo que significa que necesitará más poder de GPU para ejecutarse.

La tendencia de que los modelos se vuelvan significativamente más y más grandes cada día está en constante aumento. Solo tomó 3 meses obtener el nuevo modelo más grande de BERT-large a GPT-2 (Radford -2019) y ahora, más recientemente, se presentó GLM con 1.75 billones de números ridículamente altos de parámetros. Entonces, para ejecutar estos grandes modelos, se debe requerir capacitación distribuida, es por eso que surgió este sistema.

🔥 Recomendado:  Batalla de motores de juego: Godot vs Unity

Funcionamiento de Colossal-AI

Colossal-AI proporciona una forma muy sencilla de crear una combinación de paralelismo de datos, paralelismo de modelos, paralelismo de tensores y paralelismo de tuberías. Con la ayuda de la API, los usuarios pueden crear un modelo de aprendizaje profundo distribuido utilizando el paralelismo de tensores. Ahora comprendamos los diferentes enfoques de paralelismo que se pueden usar al construir modelos paralelos de aprendizaje profundo.

Paralelismo tensorial: Tiene herramientas para el paralelismo de tensores como 2D, 2.5D y 3D, los investigadores mencionaron que agregarán paralelismo de tensores 1D en el futuro.

Colosal-IA

(Fuente de imagen)

Paralelismo tensorial 2D: Este paralelismo se basa en SUMMA (algoritmo de multiplicación de matriz universal escalable) que divide los datos de entrada y los pesos y las salidas de capas en dos dimensiones. Estos tensores luego se distribuyen sobre una malla 2D de N2 dispositivos, donde N son los fragmentos de tensor. Sea X la entrada y W el peso. Hemos dividido tanto X como W.

<math xmlns="http://www.w3.org/1998/Math/MathML"><mfenced open="[" close="]"><mtable><mtr><mtd><mi>X</mi><mn>10</mn></mtd><mtd><mi>X</mi><mn>11</mn> </mtd></mtr><mtr><mtd><mi>X</mi><mn>00</mn></mtd><mtd><mi>X</mi><mn>01< /mn></mtd></mtr></mtable></mfenced></math>‘ width=”132″ height=”66″ title=”abrir corchetes tabla fila celda X 10 final celda celda X 11 final celda fila celda X 00 final celda celda X 01 final celda final tabla cerrar corchetes”></figure>
<p>y</p>
<figure class="wp-block-image is-resized"><img decoding="async" loading="lazy" src="https://lh3.googleusercontent.com/OHKmnMUf62CZINVua_neG_o2MQw97XNosJoLuTRFNMefIuylC3xF-3NODt1ae1cO1V9aSPxe2KaIza5iYq1T2lNhWDWVuBCJDv-_3rzEuejeZE52-xy1BOnWbdUEZS1wTyZGGGBg" alt=W10W11 W00W01< /mn>‘ width=”143″ height=”66″ title=”abrir corchetes tabla fila celda W 10 final celda celda W 11 final celda fila celda W 00 final celda celda W 01 final celda final tabla cerrar corchetes”>

Paralelismo tensorial 2.5D: Basado en el algoritmo de multiplicación de matrices 2.5D, el paralelismo 2D reduce el costo de la memoria pero introduce más comunicación, por eso se introdujo un 2.5D para reducir la comunicación mediante el uso de más dispositivos.

Procesador P = q * q * d y q = d = 2, dividimos X en d*q filas y q columnas.

<math xmlns="http://www.w3.org/1998/Math/MathML"><mfenced open="[" close="]"><mtable><mtr><mtd><mi>X</mi><mn>30</mn></mtd><mtd><mi>X</mi><mn>31</mn> </mtd></mtr><mtr><mtd><mi>X</mi><mn>20</mn></mtd><mtd><mi>X</mi><mn>21< /mn></mtd></mtr><mtr><mtd><mi>X</mi><mn>10</mn></mtd><mtd><mi>X</mi><mn >11</mn></mtd></mtr><mtr><mtd><mi>X</mi><mn>00</mn></mtd><mtd><mi>X</mi ><mn>01</mn></mtd></mtr></mtable></mfenced></math>‘ width=”132″ height=”154″ title=”corchetes abiertos tabla fila celda X 30 celda final celda X 31 celda final fila celda X 20 celda final celda X 21 celda final fila celda X 10 celda final celda X 11 celda final fila celda X 00 celda final celda X 01 celda final tabla final cerrar corchetes”></figure>
<p>Nuevamente se puede remodelar en d capas,</p>
<figure class="wp-block-image is-resized"><img decoding="async" loading="lazy" src="https://lh6.googleusercontent.com/NFgUiStoiLxxuRlOT8SxCMwj7FaR0URHDDELTD7luhNQvMTg4dVZMsRWhCLOGXPELn4VlywPrVQ2oxx9bvlPMqaYJGtmH0BwSlryRPEt2J4C2kVwaaSN4kYogcyRvfQG9lS_IQC7" alt=X10X11 X00X01< /mn>‘ width=”132″ height=”66″ title=”abrir corchetes tabla fila celda X 10 final celda celda X 11 final celda fila celda X 00 final celda celda X 01 final celda final tabla cerrar corchetes”>

y

y pesos W,

<math xmlns="http://www.w3.org/1998/Math/MathML"><mfenced open="[" close="]"><mtable><mtr><mtd><mi>W</mi><mn>10</mn></mtd><mtd><mi>W</mi><mn>11</mn> </mtd></mtr><mtr><mtd><mi>W</mi><mn>00</mn></mtd><mtd><mi>W</mi><mn>01< /mn></mtd></mtr></mtable></mfenced></math>‘ width=”143″ height=”66″ title=”abrir corchetes tabla fila celda W 10 final celda celda W 11 final celda fila celda W 00 final celda celda W 01 final celda final tabla cerrar corchetes”></figure>
<p><strong>Paralelismo Tensor 3D:</strong> Paraleliza el cómputo de modelos de aprendizaje profundo a un costo óptimo.</p>
<p>Nuevamente dividimos la entrada X y el peso W como,</p>
<figure class="wp-block-image size-full is-resized"><img decoding="async" loading="lazy"  alt=""  width="128" height="126" data-src="https://pctg.net/wp-content/uploads/2023/07/1688977519_373_Una-guia-para-el-aprendizaje-profundo-paralelo-con-Colossal-AI.png" class="wp-image-10063159 lazyload" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="><noscript><img decoding="async" loading="lazy" src="https://pctg.net/wp-content/uploads/2023/07/1688977519_373_Una-guia-para-el-aprendizaje-profundo-paralelo-con-Colossal-AI.png" alt="" class="wp-image-10063159" width="128" height="126"></noscript></figure>
<div class=

y

Donde cada X y W se almacena en el procesador (i, j, l).

Colosal-IA

(Fuente de imagen)

(NOTA: – En la figura, “A” es el peso que mencionamos anteriormente como “W”)

Paralelismo de secuencias: En una secuencia muy larga de modelos de lenguaje, como la comprensión de texto a nivel de documento. Dado que el tamaño de una dimensión de secuencia es grande, es ineficiente en términos de memoria porque la activación de la capa consume grandes cantidades de memoria. A través del paralelismo de secuencias, las secuencias largas se dividen. en subsecuencias más cortas que pueden ser procesadas simultáneamente por una variedad de dispositivos, lo que permite entrenar el modelo en secuencias más largas de las que podría manejar una sola GPU.

Ultimas palabras

A través de este artículo, aprendimos qué es el modelo Colossal-AI, entendimos qué es un sistema distribuido y diferentes tipos de paralelismo. También llegamos a saber por qué este modelo es necesario. También repasamos qué es el paralelismo tensorial y qué se usa el paralelismo de secuencia para lograr el paralelismo en el aprendizaje profundo.

Referencias:

  1. Colosal-IA
  2. Colossal-AI: Documento de investigación oficial

Tabla de Contenido