- 4 factores que hicieron posible que Nvidia aumentara 1000 veces el rendimiento de las GPU en 10 años
- El Chief Scientist Bill Dally lo explicó en una sola diapositiva durante la keynote de IEEE Hot Chips 2023
Representación numérica: 16x
- "En general, la mayor ventaja que obtuvimos fue mejorar la representación numérica"
- Estos números se refieren a los principales parámetros de las redes neuronales
- Uno de estos parámetros son los pesos (
Weights) y otro son las activaciones (Activations)
- Pesos: la fuerza de conexión entre las neuronas del modelo
- Activaciones: determinan si una neurona se activa al multiplicar la suma de las entradas ponderadas y propagar la información a la siguiente capa
- Antes de la P100, las GPU de Nvidia representaban estos pesos usando números de punto flotante de precisión simple (
single precision floating-point)
- Definidos por el estándar IEEE 754, estos números tienen una longitud de 32 bits: 23 bits representan la fracción, 8 bits actúan como exponente aplicado a la fracción y 1 bit se usa para el signo del número
- Pero los investigadores de machine learning descubrieron que en muchos cálculos era posible usar números menos precisos y aun así la red neuronal podía seguir dando respuestas correctas
- Al procesar menos bits, se puede hacer más pequeña y eficiente la lógica que realiza los cálculos principales del machine learning (multiplicación y acumulación)
- La energía necesaria para la multiplicación es proporcional al cuadrado del número de bits
- Por eso Nvidia redujo ese número a la mitad usando FP16 en la P100. Google también lanzó su propia versión llamada
bfloat16
- La diferencia entre ambos está en la proporción relativa entre los bits de fracción, que aportan precisión, y los bits de exponente, que aportan rango
bfloat16 tiene la misma cantidad de bits de exponente que FP32, por lo que es fácil convertir entre ambos formatos
- La GPU más reciente de hoy, la H100, puede usar números de 8 bits para ejecutar ciertas partes de grandes redes neuronales transformer como ChatGPT y otros LLM
- Pero Nvidia descubrió que esto no es una solución universal de talla única para todos los casos
- Por ejemplo, la arquitectura de GPU Hopper de Nvidia en realidad usa dos formatos FP8 distintos para hacer cálculos
- Uno tiene una precisión ligeramente mayor y el otro un rango ligeramente más amplio
- La fuente especial de Nvidia es saber cuándo usar cada formato
- Dally y su equipo tienen todo tipo de ideas interesantes para exprimir más IA con menos bits
- Y está claro que el sistema de punto flotante no es ideal
- Uno de los principales problemas es que la precisión del punto flotante es bastante consistente sin importar si el número es grande o pequeño
- Pero los parámetros de las redes neuronales no usan números grandes y se concentran alrededor de 0
- Por eso el enfoque de I+D de Nvidia es encontrar métodos eficientes para representar los números con más precisión cerca de 0
Instrucciones complejas: 12.5x
- "El overhead de traer y decodificar instrucciones es varias veces mayor que el de realizar una operación aritmética simple"
- Por ejemplo, una de las multiplicaciones consume un overhead equivalente a 20 veces la energía de la operación en sí, que es de 1.5 picojoules
- Nvidia obtuvo grandes beneficios al diseñar la GPU para realizar cálculos grandes con una sola instrucción, en lugar de una secuencia de instrucciones
- El overhead sigue existiendo, pero con instrucciones complejas se puede amortizar el costo con más matemáticas
- Por ejemplo, en IMMA (
integer matrix multiply and accumulate, multiplicación y acumulación de matrices enteras), una instrucción compleja, el overhead representa solo el 16% del costo energético de las operaciones matemáticas
Ley de Moore: 2.5x
- Mantener el avance de la ley de Moore implica inversiones de miles de millones de dólares, ingeniería extremadamente compleja y numerosas inestabilidades internacionales
- Sin embargo, eso también es parte del aumento de rendimiento de las GPU de Nvidia
- Nvidia ha seguido aprovechando de forma constante las tecnologías de fabricación más avanzadas
- La H100 está fabricada con el proceso N5 (5 nanómetros) de TSMC, y la fundición de chips apenas comenzó la producción inicial del N3 de próxima generación a finales de 2022
Dispersión: 2x
- Después del entrenamiento, quedan muchas neuronas en la red neuronal que en realidad nunca debieron estar ahí desde el principio
- En algunas redes neuronales, "puede ser posible eliminar más de la mitad de las neuronas sin perder precisión"
- Como los valores de peso de estas neuronas son 0 o casi 0, no contribuyen a la salida, y meterlos en el cálculo solo desperdicia tiempo y energía
- Hacer que estas redes sean "dispersas" (
Sparse) para reducir la carga computacional es una tarea complicada
- Sin embargo, con la A100, predecesora de la H100, Nvidia introdujo una función que llama dispersión estructurada (
Structured Sparsity)
- Este hardware fuerza que ocurran 2 de 4 posibles eventos de depuración, lo que puede llevar a un nuevo cálculo de matriz más pequeño
- "El problema de la dispersión todavía no termina" "Tenemos que hacer algo con las activaciones y también podemos tener una dispersión aún mayor en los pesos"
6 comentarios
¡Wow, gracias por el buen artículo!
Lo leí con gusto.
Vaya, entonces hay que seguir comprando acciones..
Tengo algunas acciones de Nvidia que compré en 2018 como una especie de exploración, y ahora van en 1100%. Debí haber comprado un montón en ese entonces. T_T
Guau..!
16 x 12.5 x 2.5 x 2 da exactamente 1000.