Los parámetros de los modelos de IA han cambiado drásticamente en los últimos años. You Yang señaló que de 2016 a enero de 2021, la cantidad de parámetros del modelo de IA aumentó 40 veces cada 18 meses; de enero de 2018 a enero de 2021, la cantidad de parámetros de IA fue grande. El modelo de lenguaje aumentó cada 18 meses 340 veces. Por el contrario, entre enero de 2016 y enero de 2021, la memoria de las GPU aumentará solo 1,7 veces cada 18 meses.
Se puede observar que el alto costo de capacitación y el ciclo largo son los problemas más difíciles de superar en el desarrollo de modelos grandes.
En respuesta a este problema, You Yang propuso el sistema Colossal-AI, a partir de los tres niveles del sistema de memoria de alta eficiencia, el sistema paralelo N-dimensional y la optimización a gran escala, para minimizar el movimiento de datos en las mismas condiciones del equipo y maximizar el rendimiento de la GPU ampliado hasta su punto más alto.
You Yang también señaló que el número de parámetros del modelo en esta etapa se ha ampliado 100.000 veces, pero el número de capas no ha aumentado mucho, lo que puede significar que el desarrollo de la IA hoy en día ya no es un aprendizaje profundo, sino que ha entrado la era del amplio aprendizaje. A medida que el modelo se vuelve más amplio, frente a tareas de entrenamiento de GPU a gran escala y a largo plazo, el núcleo del sistema de entrenamiento de modelos grandes será cómo implementar la computación paralela de GPU para lograr el objetivo de un modelo grande más rápido y rentable. capacitación.
El siguiente es el contenido del discurso en vivo de You Yang, que Leifeng.com ha editado y organizado sin cambiar la intención original:
Oportunidades y desafíos de los modelos grandes de IA
Primero muestra una imagen. La abscisa en el gráfico es el tiempo y la ordenada es la cantidad de parámetros del modelo de IA.
Desde 2016 hasta enero de 2021, el volumen de parámetros del modelo grande de IA aumentará aproximadamente 40 veces cada 18 meses; desde enero de 2018 hasta enero de 2021, el volumen de parámetros del modelo de IA aumentará 340 veces cada 18 meses.
En 2016, el mejor modelo del mundo en ese momento era ResNet-50, y el mejor modelo actual es GPT-4. Desde la perspectiva de la arquitectura, aunque OpenAI no ha anunciado la arquitectura de GPT-4, pero en comparación con la red neuronal de 50 capas de ResNet-50 y la arquitectura de GPT-3 que tiene menos de 100 capas, se puede decir que El número de capas del modelo de IA en los últimos años no ha producido demasiados cambios.
Desde ResNet-50 hasta GPT-4, aunque el número de parámetros ha aumentado aproximadamente 100.000 veces, cada capa en realidad se ha vuelto más ancha. Incluyendo la versión LLaMA-65B, también es una red con decenas de capas.
Por lo tanto, es posible que no estemos en un aprendizaje profundo, pero hemos entrado en una era de aprendizaje amplio.
Se puede ver que desde 2019, la arquitectura Transformer básicamente ha unificado la pista de modelos a gran escala de IA, y los modelos de IA a gran escala más eficientes actualmente son todos arquitecturas Transformer. Las dos líneas de puntos en la figura anterior no solo muestran la tendencia de cambio de los parámetros del modelo grande, sino también la tendencia de cambio de la GPU.
Aunque el precio de las acciones de Nvidia ha aumentado muchas veces, la tasa de crecimiento de la memoria GPU de los fabricantes, incluido Nvidia, está muy por detrás de la velocidad de desarrollo de los modelos grandes.
En comparación con la tasa de crecimiento de los parámetros del modelo en los últimos seis años, desde enero de 2016 hasta enero de 2021, la tasa de crecimiento informático de las GPU NVIDIA solo aumentó 1,7 veces cada 18 meses.
Tome el A100 80G como ejemplo para calcular la cantidad de memoria necesaria para el entrenamiento de GPT-3. GPT-3 tiene alrededor de 175 mil millones de parámetros. Para facilitar el cálculo, tome un número entero de 200 mil millones, que es igual a 200 por 10 a la novena potencia, y cada precisión ocupa 4 bytes, los parámetros por sí solos ocupan 800 G de memoria y el gradiente también ocupa 800 G de memoria. Según el método de optimización actual, información como el primer momento y el segundo momento se almacenan en 800G. En otras palabras, si entrenas un modelo grande que no hace nada, necesitarás al menos unos pocos terabytes de memoria. Una sola GPU A100 con sólo 80 G de memoria está lejos de ser suficiente. Además, cuanto mayor sea el tamaño del lote de los resultados intermedios , mayor será la sobrecarga de memoria.
Es por eso que, desde la perspectiva de la memoria, entrenar modelos grandes requiere primero miles de GPU.
Dé un ejemplo cuantificable. PaLM es un modelo grande de 540 mil millones. Según el precio actual del mercado de computación en la nube, para entrenar PaLM se necesitan al menos 1.000 GPU y el costo es de aproximadamente más de 9 millones de dólares estadounidenses. Meta ha mencionado claramente antes que LLaMA necesita usar 2000 GPU A100 y que se necesitan tres semanas para completar una sesión de capacitación. De este cálculo, se puede concluir que el costo de una sola sesión de capacitación de LLaMA es de 5 millones de dólares estadounidenses.
Sin embargo, dado que refinar un modelo grande no se limita a una sesión de capacitación, pueden ser necesarias al menos cinco o seis iteraciones de un buen producto de modelo grande, y la etapa inicial es todo prueba y error. Por lo tanto, según un análisis del canal público, el costo de una sola sesión de entrenamiento de GPT-4 es de alrededor de 60 millones de dólares estadounidenses, y el entrenamiento lleva al menos varios meses. Es por eso que incluso si ChatGPT se actualizó a la última versión, su capa inferior sigue siendo el modelo de la versión de septiembre de 2021. En otras palabras, desde septiembre de 2021 hasta la actualidad, OpenAI no ha actualizado sus productos en esencia, la razón fundamental es que el costo de la capacitación de cada modelo no solo es alto, sino que el ciclo de capacitación también es muy largo, por lo que el alto costo de El entrenamiento de modelos grandes es muy alto.
Imagine un problema. Hoy en día, existe un modelo grande con 1 billón de parámetros y 100 mil millones de parámetros. ¿Podemos usar algún método para detectar si el modelo grande con billones de parámetros es mejor que el modelo grande con 100 mil millones de parámetros? Es decir, ¿cuál es el alcance del aumento en el número de parámetros del modelo?
A día de hoy, creo que esta pregunta no puede responderse científicamente por el momento. Hay varias razones.
En primer lugar, existe el problema de la optimización no convexa en el entrenamiento de redes neuronales. En la actualidad, la mayoría de los puntos convergentes mediante el entrenamiento son soluciones óptimas locales en lugar de soluciones óptimas globales. Por lo tanto, necesitamos verificar hasta qué punto está entrenada la red neuronal, lo que no se puede verificar con los recursos informáticos existentes.
La segunda dificultad es que el entrenamiento de modelos grandes a menudo solo entrena una o dos épocas, mientras que en el modelo CNN anterior, el entrenamiento ResNet tiene 90 épocas, e incluso el entrenamiento de aprendizaje autosupervisado tiene 1000 épocas, por lo que el modelo grande solo entrena una o dos épocas. El método equivale a revisar el conjunto de datos solo una o dos veces, y la convergencia es aún más insuficiente. Por lo tanto, en el caso de un costo de capacitación tan alto, nos resulta difícil verificar si un modelo con 1 billón de parámetros o un modelo con 2 billones de parámetros es mejor, porque su potencial no se ha explotado completamente mediante experimentos. Por lo tanto, creo que el gran modelo de IA actual es un tema experimental. Cómo mejorar eficazmente la eficiencia de este experimento y reducir los costos desempeñará un papel fundamental en la popularización de toda la industria.
Volviendo a la realidad, ¿por qué hoy todo el mundo persigue grandes modelos? Desde la perspectiva de la lógica matemática, cuanto mayores sean los parámetros del modelo, mejor será el efecto, que es absoluto.
Al mismo tiempo, los costos han seguido aumentando. En la actualidad, se necesitan cientos, miles o incluso decenas de miles de GPU para entrenar modelos grandes, y cómo reducir aún más el costo de decenas de miles de GPU es un gran desafío.
Hace 20 años, debido a que dependía de la frecuencia principal en ese momento, todos los programas eran en serie. Suponiendo que la velocidad del hardware aumenta 10 veces, la velocidad de ejecución también se puede aumentar 10 veces sin cambiar una sola línea de código. Pero hoy, si desea acelerar su código 10 veces, asumiendo que el hardware ya es 10 veces más rápido, pero si no optimiza el código, probablemente será más lento. La razón es que en el caso de una máquina más grande, como dentro de la GPU, el movimiento de datos entre la memoria de la GPU y la CPU, o el movimiento de datos entre las GPU, más el movimiento de datos implementado por el servidor, ocupará la mayor parte. todo el sistema Tiempo, la mayor parte del tiempo se dedica al movimiento de datos y la escalabilidad del modelo se volverá deficiente.
Creo que en el futuro, un software bien distribuido y un software mal distribuido pueden tener una diferencia de velocidad de 10 veces en miles de GPU, o incluso 500 GPU.
**¿Cómo funciona Colossal-AI? **
Con base en los desafíos anteriores, proponemos un gran sistema de entrenamiento de modelos Colossal-AI, que proporciona métodos de optimización, reduce el costo del movimiento de datos y maximiza la eficiencia de la escalabilidad del modelo.
Un dato específico es que usar el PyTorch más simple para entrenar GPT-3 cuesta 10 millones de dólares estadounidenses. Una vez optimizada Nvidia, el costo se puede reducir a 3 millones de dólares estadounidenses con Megatron, y después de usar Colossal-AI, el costo se puede reducir. a 1,3 millones de dólares. Se puede ver que en las mismas condiciones de equipo, la minimización del movimiento de datos reduce la proporción del movimiento de datos al nivel más bajo y puede expandir el rendimiento de la GPU al punto más alto.
En respuesta a los problemas anteriores, Colossal-AI propone tres niveles. Otro software similar también incluye estos tres niveles.
La primera capa es optimizar la memoria. Primero, garantizar que la eficiencia de la memoria de una sola GPU y un solo servidor sea la más alta: esta es la base.
El segundo nivel es el paralelismo N-dimensional. Cuando actualmente utilizamos miles o decenas de miles de GPU, la tecnología central es la computación paralela (computación paralela). De 1 GPU a 10 GPU, debido a su escala relativamente pequeña, podemos obtener fácilmente una aceleración de 7x; de 10 a 100 GPU, es posible que solo obtengamos una aceleración de 4x, porque la escala paralela se hace más grande y su comunicación El precio ha bajado arriba. Y de 100 GPU a 1000 GPU, debido a que el costo de comunicación aumenta aún más, es probable que solo obtenga una aceleración del doble. Y al pasar de 1.000 GPU a 10.000 GPU, si el software funciona mal, es posible que no sólo no acelere, sino que incluso puede ser más lento porque el dispositivo pasa todo el tiempo en comunicaciones de mayor densidad.
El segundo es el problema de optimización. Creo que hay dos capas en la dirección del desarrollo de grandes modelos de IA en el futuro. La primera capa es hacer que el modelo sea más inteligente y diseñar una mejor estructura. Por ejemplo, de BERT a GPT, o de ResNet a BERT, etc. Intenta constantemente cambiar la estructura del modelo.
Además, hay mejoras en los métodos de optimización. Desde la transición de SGD a MOMENTUM, ADAGRAD y ADAM ahora, también es muy importante tener mejores métodos de optimización que puedan aumentar la eficiencia 10 veces en el futuro.
Específico para el problema paralelo de entrenar modelos grandes en la práctica.
El primero es el paralelismo de datos, que es el método paralelo más simple y eficiente. El paralelismo de datos significa que suponiendo que hay 10,000 imágenes, se procesan 1000 imágenes en cada ciclo. Si hay 10 máquinas, a cada máquina se le asignan 100 imágenes y todas las imágenes se pueden procesar en 10 ciclos.
En el proceso de paralelismo de datos, es necesario resumirlo. Cada máquina utiliza datos diferentes para obtener diferentes gradientes. La máquina aprende diferentes cambios en diferentes datos, actualiza el gradiente de parámetros y finalmente calcula el gradiente global. Actualmente, el método de suma y se utiliza el promedio, el efecto ha sido muy bueno. Anteriormente, el método LARS de Colossal-AI en paralelismo de datos acortó el tiempo de entrenamiento de ImageNet de una hora a un minuto para Google, Meta, Tencent, Sony y otras empresas.
El paralelismo de datos es el más básico y el más estable. Después de dividir los datos, suponiendo que habrá 10.000 GPU en el futuro, es fácil que cuatro o cinco GPU fallen cada pocas horas. Es difícil operar y mantener un grupo de 10.000 GPU, pero la estabilidad del paralelismo de datos. El punto es que incluso si hay 10,000 GPU fallando aproximadamente una docena, el resultado general no cambiará, porque es una suma y un promedio de gradientes.
Partiendo de esta consideración, creo que el paralelismo de datos es una infraestructura fundamental.
Por supuesto, el paralelismo de datos por sí solo no es suficiente, porque el paralelismo de datos supone que el modelo debe copiarse en cada GPU o servidor, y el servidor o GPU intercambiará gradientes. Sin embargo, si la GPU tiene solo 80G de memoria, un modelo con billones de parámetros requiere decenas de terabytes de memoria, que no se pueden almacenar en la GPU, por lo que es necesario cortar el modelo en diferentes GPU y luego resumir los resultados. Este enfoque se llama paralelismo de modelos. Hay dos tipos de paralelismo de modelos: el primero es el paralelismo tensorial, es decir, el paralelismo de modelos dentro de una capa. Por ejemplo, el número de capas de GPT-3 es de aproximadamente 80 o 90 capas. El modelo se corta una vez para cada capa y el cálculo en la capa se divide en varias partes. Después de calcular una capa, se calcula la siguiente capa. , y así sucesivamente. Esto es paralelismo tensorial.
Otra forma es el paralelismo de tuberías, un modelo de paralelismo entre el paralelismo de datos y el paralelismo tensorial. Al construir varias tuberías de datos (canalizaciones), los puntos de datos de cada tubería de datos son diferentes, lo que equivale a dividir un tamaño grande en varios tamaños pequeños, y el cálculo de la tubería se realiza de esta manera. Si hay 10 tuberías, 10 tuberías representan diez conjuntos diferentes de datos, la primera tubería calcula los datos de la primera capa y la segunda tubería calcula la segunda capa... paralelo de esta manera, similar a nuestro edificio De manera similar, 10 ingeniería Los equipos construyen 1000 pisos, cuando el primer equipo de ingenieros construye el primer piso del primer edificio, el segundo equipo de ingenieros construye el segundo piso del segundo edificio, y así sucesivamente.
Cuantos más edificios haya, mayor será la proporción entre edificios y equipos de ingeniería, y mayor será la eficiencia, lo que equivale a 10 equipos de ingeniería operando al mismo tiempo. Cada equipo de ingeniería es equivalente a una GPU, cada edificio es equivalente a una tubería y la cantidad de capas del edificio es equivalente a la cantidad de capas de la red neuronal, que es la lógica central del paralelismo de tuberías.
En la actualidad, la industria ha realizado trabajos relacionados: además de Colossal-AI, están TensorRT de NVIDIA y DeepSpeed de Microsoft, que también son las dos empresas con mayores barreras técnicas.
Pero lo que diferencia a Colossal-AI de él es que Colossal-AI se centra en la dirección de desarrollo de modelos grandes en el futuro. Se puede ver que el modelo actual aún se está volviendo más ancho, no más profundo, y el paralelismo del tensor será más importante, pero su mayor inconveniente es que debido a que corta toda la capa, la sobrecarga de comunicación es demasiado grande. Es por eso que el CEO de Nvidia explicó específicamente el problema de demasiada sobrecarga de comunicación cuando introdujo por primera vez el paralelismo 3D en la cumbre del GTC, y que solo se puede hacer en un servidor. Por lo tanto, Colossal-AI se centra en el paralelismo tensorial 2D y el paralelismo tensorial 2,5D, lo que reduce el costo computacional en un orden de magnitud.
Esto significa que con el paralelismo tensorial unidimensional, cada máquina necesita manejar 9999 máquinas entre 10,000 máquinas, mientras que el paralelismo tensorial 2D lo divide en subunidades, y cada máquina solo necesita manejar 96 máquinas. Su lógica central es utilizar cierta sincronización local (sincronización local) para reemplazar la sincronización global (sincronización global) y más comunicación local para reemplazar la comunicación global.En este proceso, la programación del diseño es la más difícil.
Lo mismo ocurre con el paralelismo tensorial 3D: cada vez que se aumenta una dimensión, su complejidad de diseño aumentará en un orden de magnitud y la complejidad de la comunicación eventualmente disminuirá.
En términos de optimización de la memoria, el entrenamiento actual de modelos grandes de IA requiere una gran sobrecarga de memoria. Incluso si no hace nada, aún necesita algunos terabytes de memoria. Si no realiza intervención manual, una vez que la use , es posible que necesite decenas o incluso cientos de terabytes de memoria.
Para mejorar el efecto de predicción del modelo, a menudo necesitamos datos de secuencia larga. La esencia del modelo grande actual es predecir la probabilidad de la siguiente palabra a través de la salida de una palabra, y los datos de secuencia larga son solo necesario. En este sentido, Colossal-AI también lanzó Sequence Parallelism (paralelismo de secuencia).
Específicamente, después de cortar la secuencia, enfrentará un problema grave: al realizar la puntuación de atención, cada token debe evaluarse con otros tokens en la secuencia global, y solo una parte de los tokens están en el servidor después de la división, y se generarán diferentes tokens. distribuirse en otros servidores, de modo que cada servidor necesita tratar con otros servidores para ejecutarse.
Es decir, suponiendo que 200 personas en la sala tomaron cada una un paquete de bocadillos hoy, espero que todos puedan probar los bocadillos de los demás, y se requieren al menos 200 intercambios cuadrados para permitir que todos prueben los bocadillos de otras personas. Entonces la forma más fácil es: todos forman un círculo, todos pasan los bocadillos que han comido a la persona de la derecha y obtienen los bocadillos de la izquierda, solo n-1 veces, es decir, 199 pases. Reduciendo así el coste general de comunicación.
En resumen, la pila de tecnología central actual para el entrenamiento de modelos grandes de IA es en realidad computación paralela, porque tenemos que procesar cientos de miles de núcleos de GPU y usar todas las GPU en paralelo. El paralelismo de datos, el paralelismo de tensores, el paralelismo de tuberías y el paralelismo de secuencia de datos son los módulos centrales del paralelismo.
En términos de optimización de la memoria, actualmente nos encontramos en un entorno donde no hay muchas opciones. La GPU Nvidia es la mejor y no parece que tengamos otras soluciones mejores para reemplazarla. Pero el problema es que la memoria de la GPU Nvidia es limitada. En este caso, ¿podemos pensar en cómo usar la memoria de la CPU y la memoria NVMe? La idea central es que si la memoria de la GPU no se puede almacenar, se moverá. a la CPU, y si la CPU no se puede almacenar, se colocará en NVMe. En general, cuando se construye un edificio, las materias primas necesarias no se pueden colocar en el sitio de construcción de abajo, por lo que las colocamos en la fábrica de al lado. . El núcleo de su tecnología también es minimizar el movimiento de datos, es decir, minimizar el movimiento de datos entre CPU y GPU, y fortalecer el movimiento de datos entre CPU y NVMe, aumentando así la velocidad de rendimiento al máximo.
Pasando al código abierto
Colossal-AI es un software de código abierto. Al mismo tiempo, también hemos creado una plataforma comercial. Para los usuarios sin GPU, pueden entrenar e implementar directamente sus propios modelos grandes en la plataforma. También ofrecemos varios modelos como LLaMA, PaLM y GPT, y solo lleva dos o tres días completar el ajuste de un modelo lo más rápido posible. En comparación con los usuarios anteriores que pueden necesitar semanas o incluso meses para lidiar con infraestructura como hardware y software, la eficiencia ha mejorado considerablemente. Al mismo tiempo, Colossal-AI también protege la privacidad de los usuarios. La plataforma no retendrá ni accederá a los datos del usuario. Esta es la diferencia esencial entre Colossal-AI y OpenAI ChatGPT. Cuando subimos datos a Google Cloud, Google no toca nuestros datos en muchos casos, pero OpenAI GPT los analizará, y riesgos como modelos de IA no interpretables y entrenamiento incompleto son comunes. Por lo tanto, en el futuro, muchas empresas entrenarán sus propios modelos grandes. Lo que hace Colossal-AI es maximizar la protección de la privacidad del usuario al tiempo que proporciona herramientas para el entrenamiento de modelos grandes.
En términos de rendimiento, Colossal-AI puede entrenar un modelo 24 veces más grande en el mismo hardware, que es 3 veces más rápido que DeepSpeed, e incluso un servidor de gama baja puede usar Colossal-AI para completar el entrenamiento del modelo correspondiente. Por ejemplo, para el entrenamiento de LLaMA-65B, usar el mismo código en Colossal-AI puede obtener directamente aproximadamente un 50% de eficiencia de aceleración.
Una analogía simple, por ejemplo, ahora el modelo grande es para excavar oro y Nvidia vende palas, luego nosotros vendemos guantes y ropa, y maximizamos la eficiencia de excavar oro.
Ver originales
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
You Yang, Universidad Nacional de Singapur: ¿Cómo puede abrirse paso la IA de alto rendimiento?
Fuente: Lei Feng Net
Autor: Huang Nan
Se puede observar que el alto costo de capacitación y el ciclo largo son los problemas más difíciles de superar en el desarrollo de modelos grandes.
En respuesta a este problema, You Yang propuso el sistema Colossal-AI, a partir de los tres niveles del sistema de memoria de alta eficiencia, el sistema paralelo N-dimensional y la optimización a gran escala, para minimizar el movimiento de datos en las mismas condiciones del equipo y maximizar el rendimiento de la GPU ampliado hasta su punto más alto.
You Yang también señaló que el número de parámetros del modelo en esta etapa se ha ampliado 100.000 veces, pero el número de capas no ha aumentado mucho, lo que puede significar que el desarrollo de la IA hoy en día ya no es un aprendizaje profundo, sino que ha entrado la era del amplio aprendizaje. A medida que el modelo se vuelve más amplio, frente a tareas de entrenamiento de GPU a gran escala y a largo plazo, el núcleo del sistema de entrenamiento de modelos grandes será cómo implementar la computación paralela de GPU para lograr el objetivo de un modelo grande más rápido y rentable. capacitación.
El siguiente es el contenido del discurso en vivo de You Yang, que Leifeng.com ha editado y organizado sin cambiar la intención original:
Oportunidades y desafíos de los modelos grandes de IA
Primero muestra una imagen. La abscisa en el gráfico es el tiempo y la ordenada es la cantidad de parámetros del modelo de IA.
En 2016, el mejor modelo del mundo en ese momento era ResNet-50, y el mejor modelo actual es GPT-4. Desde la perspectiva de la arquitectura, aunque OpenAI no ha anunciado la arquitectura de GPT-4, pero en comparación con la red neuronal de 50 capas de ResNet-50 y la arquitectura de GPT-3 que tiene menos de 100 capas, se puede decir que El número de capas del modelo de IA en los últimos años no ha producido demasiados cambios.
Desde ResNet-50 hasta GPT-4, aunque el número de parámetros ha aumentado aproximadamente 100.000 veces, cada capa en realidad se ha vuelto más ancha. Incluyendo la versión LLaMA-65B, también es una red con decenas de capas.
Por lo tanto, es posible que no estemos en un aprendizaje profundo, pero hemos entrado en una era de aprendizaje amplio.
Se puede ver que desde 2019, la arquitectura Transformer básicamente ha unificado la pista de modelos a gran escala de IA, y los modelos de IA a gran escala más eficientes actualmente son todos arquitecturas Transformer. Las dos líneas de puntos en la figura anterior no solo muestran la tendencia de cambio de los parámetros del modelo grande, sino también la tendencia de cambio de la GPU.
Aunque el precio de las acciones de Nvidia ha aumentado muchas veces, la tasa de crecimiento de la memoria GPU de los fabricantes, incluido Nvidia, está muy por detrás de la velocidad de desarrollo de los modelos grandes.
En comparación con la tasa de crecimiento de los parámetros del modelo en los últimos seis años, desde enero de 2016 hasta enero de 2021, la tasa de crecimiento informático de las GPU NVIDIA solo aumentó 1,7 veces cada 18 meses.
Tome el A100 80G como ejemplo para calcular la cantidad de memoria necesaria para el entrenamiento de GPT-3. GPT-3 tiene alrededor de 175 mil millones de parámetros. Para facilitar el cálculo, tome un número entero de 200 mil millones, que es igual a 200 por 10 a la novena potencia, y cada precisión ocupa 4 bytes, los parámetros por sí solos ocupan 800 G de memoria y el gradiente también ocupa 800 G de memoria. Según el método de optimización actual, información como el primer momento y el segundo momento se almacenan en 800G. En otras palabras, si entrenas un modelo grande que no hace nada, necesitarás al menos unos pocos terabytes de memoria. Una sola GPU A100 con sólo 80 G de memoria está lejos de ser suficiente. Además, cuanto mayor sea el tamaño del lote de los resultados intermedios , mayor será la sobrecarga de memoria.
Es por eso que, desde la perspectiva de la memoria, entrenar modelos grandes requiere primero miles de GPU.
Sin embargo, dado que refinar un modelo grande no se limita a una sesión de capacitación, pueden ser necesarias al menos cinco o seis iteraciones de un buen producto de modelo grande, y la etapa inicial es todo prueba y error. Por lo tanto, según un análisis del canal público, el costo de una sola sesión de entrenamiento de GPT-4 es de alrededor de 60 millones de dólares estadounidenses, y el entrenamiento lleva al menos varios meses. Es por eso que incluso si ChatGPT se actualizó a la última versión, su capa inferior sigue siendo el modelo de la versión de septiembre de 2021. En otras palabras, desde septiembre de 2021 hasta la actualidad, OpenAI no ha actualizado sus productos en esencia, la razón fundamental es que el costo de la capacitación de cada modelo no solo es alto, sino que el ciclo de capacitación también es muy largo, por lo que el alto costo de El entrenamiento de modelos grandes es muy alto.
A día de hoy, creo que esta pregunta no puede responderse científicamente por el momento. Hay varias razones.
En primer lugar, existe el problema de la optimización no convexa en el entrenamiento de redes neuronales. En la actualidad, la mayoría de los puntos convergentes mediante el entrenamiento son soluciones óptimas locales en lugar de soluciones óptimas globales. Por lo tanto, necesitamos verificar hasta qué punto está entrenada la red neuronal, lo que no se puede verificar con los recursos informáticos existentes.
La segunda dificultad es que el entrenamiento de modelos grandes a menudo solo entrena una o dos épocas, mientras que en el modelo CNN anterior, el entrenamiento ResNet tiene 90 épocas, e incluso el entrenamiento de aprendizaje autosupervisado tiene 1000 épocas, por lo que el modelo grande solo entrena una o dos épocas. El método equivale a revisar el conjunto de datos solo una o dos veces, y la convergencia es aún más insuficiente. Por lo tanto, en el caso de un costo de capacitación tan alto, nos resulta difícil verificar si un modelo con 1 billón de parámetros o un modelo con 2 billones de parámetros es mejor, porque su potencial no se ha explotado completamente mediante experimentos. Por lo tanto, creo que el gran modelo de IA actual es un tema experimental. Cómo mejorar eficazmente la eficiencia de este experimento y reducir los costos desempeñará un papel fundamental en la popularización de toda la industria.
Volviendo a la realidad, ¿por qué hoy todo el mundo persigue grandes modelos? Desde la perspectiva de la lógica matemática, cuanto mayores sean los parámetros del modelo, mejor será el efecto, que es absoluto.
Al mismo tiempo, los costos han seguido aumentando. En la actualidad, se necesitan cientos, miles o incluso decenas de miles de GPU para entrenar modelos grandes, y cómo reducir aún más el costo de decenas de miles de GPU es un gran desafío.
Hace 20 años, debido a que dependía de la frecuencia principal en ese momento, todos los programas eran en serie. Suponiendo que la velocidad del hardware aumenta 10 veces, la velocidad de ejecución también se puede aumentar 10 veces sin cambiar una sola línea de código. Pero hoy, si desea acelerar su código 10 veces, asumiendo que el hardware ya es 10 veces más rápido, pero si no optimiza el código, probablemente será más lento. La razón es que en el caso de una máquina más grande, como dentro de la GPU, el movimiento de datos entre la memoria de la GPU y la CPU, o el movimiento de datos entre las GPU, más el movimiento de datos implementado por el servidor, ocupará la mayor parte. todo el sistema Tiempo, la mayor parte del tiempo se dedica al movimiento de datos y la escalabilidad del modelo se volverá deficiente.
Creo que en el futuro, un software bien distribuido y un software mal distribuido pueden tener una diferencia de velocidad de 10 veces en miles de GPU, o incluso 500 GPU.
**¿Cómo funciona Colossal-AI? **
Con base en los desafíos anteriores, proponemos un gran sistema de entrenamiento de modelos Colossal-AI, que proporciona métodos de optimización, reduce el costo del movimiento de datos y maximiza la eficiencia de la escalabilidad del modelo.
Un dato específico es que usar el PyTorch más simple para entrenar GPT-3 cuesta 10 millones de dólares estadounidenses. Una vez optimizada Nvidia, el costo se puede reducir a 3 millones de dólares estadounidenses con Megatron, y después de usar Colossal-AI, el costo se puede reducir. a 1,3 millones de dólares. Se puede ver que en las mismas condiciones de equipo, la minimización del movimiento de datos reduce la proporción del movimiento de datos al nivel más bajo y puede expandir el rendimiento de la GPU al punto más alto.
La primera capa es optimizar la memoria. Primero, garantizar que la eficiencia de la memoria de una sola GPU y un solo servidor sea la más alta: esta es la base.
El segundo nivel es el paralelismo N-dimensional. Cuando actualmente utilizamos miles o decenas de miles de GPU, la tecnología central es la computación paralela (computación paralela). De 1 GPU a 10 GPU, debido a su escala relativamente pequeña, podemos obtener fácilmente una aceleración de 7x; de 10 a 100 GPU, es posible que solo obtengamos una aceleración de 4x, porque la escala paralela se hace más grande y su comunicación El precio ha bajado arriba. Y de 100 GPU a 1000 GPU, debido a que el costo de comunicación aumenta aún más, es probable que solo obtenga una aceleración del doble. Y al pasar de 1.000 GPU a 10.000 GPU, si el software funciona mal, es posible que no sólo no acelere, sino que incluso puede ser más lento porque el dispositivo pasa todo el tiempo en comunicaciones de mayor densidad.
El segundo es el problema de optimización. Creo que hay dos capas en la dirección del desarrollo de grandes modelos de IA en el futuro. La primera capa es hacer que el modelo sea más inteligente y diseñar una mejor estructura. Por ejemplo, de BERT a GPT, o de ResNet a BERT, etc. Intenta constantemente cambiar la estructura del modelo.
Además, hay mejoras en los métodos de optimización. Desde la transición de SGD a MOMENTUM, ADAGRAD y ADAM ahora, también es muy importante tener mejores métodos de optimización que puedan aumentar la eficiencia 10 veces en el futuro.
Específico para el problema paralelo de entrenar modelos grandes en la práctica.
El primero es el paralelismo de datos, que es el método paralelo más simple y eficiente. El paralelismo de datos significa que suponiendo que hay 10,000 imágenes, se procesan 1000 imágenes en cada ciclo. Si hay 10 máquinas, a cada máquina se le asignan 100 imágenes y todas las imágenes se pueden procesar en 10 ciclos.
En el proceso de paralelismo de datos, es necesario resumirlo. Cada máquina utiliza datos diferentes para obtener diferentes gradientes. La máquina aprende diferentes cambios en diferentes datos, actualiza el gradiente de parámetros y finalmente calcula el gradiente global. Actualmente, el método de suma y se utiliza el promedio, el efecto ha sido muy bueno. Anteriormente, el método LARS de Colossal-AI en paralelismo de datos acortó el tiempo de entrenamiento de ImageNet de una hora a un minuto para Google, Meta, Tencent, Sony y otras empresas.
Partiendo de esta consideración, creo que el paralelismo de datos es una infraestructura fundamental.
Por supuesto, el paralelismo de datos por sí solo no es suficiente, porque el paralelismo de datos supone que el modelo debe copiarse en cada GPU o servidor, y el servidor o GPU intercambiará gradientes. Sin embargo, si la GPU tiene solo 80G de memoria, un modelo con billones de parámetros requiere decenas de terabytes de memoria, que no se pueden almacenar en la GPU, por lo que es necesario cortar el modelo en diferentes GPU y luego resumir los resultados. Este enfoque se llama paralelismo de modelos. Hay dos tipos de paralelismo de modelos: el primero es el paralelismo tensorial, es decir, el paralelismo de modelos dentro de una capa. Por ejemplo, el número de capas de GPT-3 es de aproximadamente 80 o 90 capas. El modelo se corta una vez para cada capa y el cálculo en la capa se divide en varias partes. Después de calcular una capa, se calcula la siguiente capa. , y así sucesivamente. Esto es paralelismo tensorial.
Cuantos más edificios haya, mayor será la proporción entre edificios y equipos de ingeniería, y mayor será la eficiencia, lo que equivale a 10 equipos de ingeniería operando al mismo tiempo. Cada equipo de ingeniería es equivalente a una GPU, cada edificio es equivalente a una tubería y la cantidad de capas del edificio es equivalente a la cantidad de capas de la red neuronal, que es la lógica central del paralelismo de tuberías.
En la actualidad, la industria ha realizado trabajos relacionados: además de Colossal-AI, están TensorRT de NVIDIA y DeepSpeed de Microsoft, que también son las dos empresas con mayores barreras técnicas.
Pero lo que diferencia a Colossal-AI de él es que Colossal-AI se centra en la dirección de desarrollo de modelos grandes en el futuro. Se puede ver que el modelo actual aún se está volviendo más ancho, no más profundo, y el paralelismo del tensor será más importante, pero su mayor inconveniente es que debido a que corta toda la capa, la sobrecarga de comunicación es demasiado grande. Es por eso que el CEO de Nvidia explicó específicamente el problema de demasiada sobrecarga de comunicación cuando introdujo por primera vez el paralelismo 3D en la cumbre del GTC, y que solo se puede hacer en un servidor. Por lo tanto, Colossal-AI se centra en el paralelismo tensorial 2D y el paralelismo tensorial 2,5D, lo que reduce el costo computacional en un orden de magnitud.
Lo mismo ocurre con el paralelismo tensorial 3D: cada vez que se aumenta una dimensión, su complejidad de diseño aumentará en un orden de magnitud y la complejidad de la comunicación eventualmente disminuirá.
Para mejorar el efecto de predicción del modelo, a menudo necesitamos datos de secuencia larga. La esencia del modelo grande actual es predecir la probabilidad de la siguiente palabra a través de la salida de una palabra, y los datos de secuencia larga son solo necesario. En este sentido, Colossal-AI también lanzó Sequence Parallelism (paralelismo de secuencia).
Específicamente, después de cortar la secuencia, enfrentará un problema grave: al realizar la puntuación de atención, cada token debe evaluarse con otros tokens en la secuencia global, y solo una parte de los tokens están en el servidor después de la división, y se generarán diferentes tokens. distribuirse en otros servidores, de modo que cada servidor necesita tratar con otros servidores para ejecutarse.
Es decir, suponiendo que 200 personas en la sala tomaron cada una un paquete de bocadillos hoy, espero que todos puedan probar los bocadillos de los demás, y se requieren al menos 200 intercambios cuadrados para permitir que todos prueben los bocadillos de otras personas. Entonces la forma más fácil es: todos forman un círculo, todos pasan los bocadillos que han comido a la persona de la derecha y obtienen los bocadillos de la izquierda, solo n-1 veces, es decir, 199 pases. Reduciendo así el coste general de comunicación.
En términos de optimización de la memoria, actualmente nos encontramos en un entorno donde no hay muchas opciones. La GPU Nvidia es la mejor y no parece que tengamos otras soluciones mejores para reemplazarla. Pero el problema es que la memoria de la GPU Nvidia es limitada. En este caso, ¿podemos pensar en cómo usar la memoria de la CPU y la memoria NVMe? La idea central es que si la memoria de la GPU no se puede almacenar, se moverá. a la CPU, y si la CPU no se puede almacenar, se colocará en NVMe. En general, cuando se construye un edificio, las materias primas necesarias no se pueden colocar en el sitio de construcción de abajo, por lo que las colocamos en la fábrica de al lado. . El núcleo de su tecnología también es minimizar el movimiento de datos, es decir, minimizar el movimiento de datos entre CPU y GPU, y fortalecer el movimiento de datos entre CPU y NVMe, aumentando así la velocidad de rendimiento al máximo.
Pasando al código abierto
Colossal-AI es un software de código abierto. Al mismo tiempo, también hemos creado una plataforma comercial. Para los usuarios sin GPU, pueden entrenar e implementar directamente sus propios modelos grandes en la plataforma. También ofrecemos varios modelos como LLaMA, PaLM y GPT, y solo lleva dos o tres días completar el ajuste de un modelo lo más rápido posible. En comparación con los usuarios anteriores que pueden necesitar semanas o incluso meses para lidiar con infraestructura como hardware y software, la eficiencia ha mejorado considerablemente. Al mismo tiempo, Colossal-AI también protege la privacidad de los usuarios. La plataforma no retendrá ni accederá a los datos del usuario. Esta es la diferencia esencial entre Colossal-AI y OpenAI ChatGPT. Cuando subimos datos a Google Cloud, Google no toca nuestros datos en muchos casos, pero OpenAI GPT los analizará, y riesgos como modelos de IA no interpretables y entrenamiento incompleto son comunes. Por lo tanto, en el futuro, muchas empresas entrenarán sus propios modelos grandes. Lo que hace Colossal-AI es maximizar la protección de la privacidad del usuario al tiempo que proporciona herramientas para el entrenamiento de modelos grandes.
En términos de rendimiento, Colossal-AI puede entrenar un modelo 24 veces más grande en el mismo hardware, que es 3 veces más rápido que DeepSpeed, e incluso un servidor de gama baja puede usar Colossal-AI para completar el entrenamiento del modelo correspondiente. Por ejemplo, para el entrenamiento de LLaMA-65B, usar el mismo código en Colossal-AI puede obtener directamente aproximadamente un 50% de eficiencia de aceleración.
Una analogía simple, por ejemplo, ahora el modelo grande es para excavar oro y Nvidia vende palas, luego nosotros vendemos guantes y ropa, y maximizamos la eficiencia de excavar oro.