BitSparse reduce la memoria al guardar activaciones feed-forward dispersas
En palabras sencillas
Para entrenar un modelo de lenguaje, hay que conservar algunos valores de la pasada hacia delante para que el sistema pueda calcular las actualizaciones después. Las capas feed-forward de la familia ReLU suelen producir ceros exactos, que también ocupan espacio cuando se almacenan de la forma habitual.
BitSparse guarda los valores distintos de cero y un mapa de sus posiciones, y luego los reconstruye cuando hacen falta. En las cargas de trabajo evaluadas redujo el uso de memoria, también en dos modelos de lenguaje; las mediciones no abarcan todos los componentes de una ejecución completa de entrenamiento.
La investigación
Los sistemas de entrenamiento deben conservar las activaciones feed-forward para la retropropagación, y la memoria que requieren depende de cuántos tokens se procesan juntos.
¿Se pueden aprovechar los ceros exactos de las activaciones de la familia ReLU para reducir ese almacenamiento sin volver a calcular los valores ni modificarlos?
BitSparse guarda las activaciones feed-forward distintas de cero con un mapa de posiciones y las reconstruye para la retropropagación, reduciendo la memoria de su caché.
El artículo pregunta si los ceros exactos de las activaciones guardadas de la familia ReLU pueden reducir la memoria de entrenamiento sin volver a calcular ni aproximar los valores. La cantidad de activaciones guardadas aumenta con el número de tokens procesados a la vez.
BitSparse guarda los valores distintos de cero y sus posiciones, y luego los reconstruye para la retropropagación. En las ejecuciones evaluadas de modelos de lenguaje con pasadas hacia delante y hacia atrás, la memoria ajustada por token bajó un 31% en Modded-NanoGPT y un 30% en Nemotron-H frente al almacenamiento denso de activaciones. En esas ejecuciones no se actualizaron los parámetros ni se conservó el estado del optimizador.
Las mediciones de memoria abarcan capas feed-forward seleccionadas de la familia ReLU y determinadas cargas de trabajo. La comparación del entrenamiento completo también usó TensorBuffer, y la fuente no especifica si las dos ejecuciones partieron del mismo estado.
Análisis
Detalles
- Autores del paper original
- Max Zhu, Bohang Sun, Pietro Lio, Jialin Yu
- Enviado a arXiv
- Licencia
- CC BY 4.0