Adapting floating-point precision to accelerate deep neural network training
Authors:   , Osorio Ríos John Haiber 
Published: March 2024

(English) Deep Neural Networks (DNNs) have become ubiquitous in a wide range of application domains. Despite their success, training DNNs is an expensive task which has motivated the use of reduced numerical precision formats to improve performance and reduce power consumption. Emulation techniques are a good fit for understanding the properties of new numerical formats on a particular workload. However, current state-of-the-art techniques cannot perform these tasks quickly and accurately on a wide variety of workloads.

The usage of Mixed Precision (MP) arithmetic with floating-point 32-bit (FP32) and 16-bit half-precision aims at improving memory and floating-point operations throughput, allowing faster training of bigger models. This is one of the most used techniques, and has been successfully applied to train DNNs. Despite its advantages in terms of reducing the need for key resources like memory bandwidth or register file size, it has a limited capacity for diminishing further computing costs, as it requires 32-bits to represent its output. On the other hand, full half-precision arithmetic fails to deliver state-of-the-art training accuracy.

Several hardware companies are proposing native Brain Float 16-bit (BF16) support for neural network training. Fused Multiply- Add (FMA) functional units constitute a fundamental hardware component to train DNNs. Its silicon area grows quadratically with the mantissa bit count of the computer number format, which has motivated the adoption of the BF16. BF16 features 1 sign, 8 exponent and 7 explicit mantissa bits. Some approaches to train DNNs achieve significant performance benefits by using the BF16 format. However, these approaches must combine BF16 with the standard IEEE 754 FP32 format to achieve state-of-the-art training accuracy, which limits the impact of adopting BF16.

To address all of the previous concerns with respect to different numerical formats, specific training techniques, and how to increase the use of reduced precision approaches, this Thesis proposes FASE, a Fast, Accurate, and Seamless Emulator that leverages dynamic binary translation to enable emulation of custom numerical formats. FASE is fast; allowing emulation of large unmodified workloads, accurate; emulating at instruction operand level, and seamless; as it does not require any code modifications and works on any application or DNN framework without any language, compiler or source code access restrictions. We evaluate FASE using a wide variety of DNN frameworks and large-scale workloads. Our evaluation demonstrates that FASE achieves better accuracy than coarser-grain state-of-the-art approaches, and shows that it is able to evaluate the fidelity of multiple numerical formats and extract conclusions on their applicability.

To show the advantages of FASE we test it in object classification, natural language processing and generative networks workloads. We use FASE to analyze BF16 usage in the training phase of a 3D Generative Adversarial Network (3DGAN) simulating High Energy Physics detectors.

We use FASE to characterize and analyze computer arithmetic to propose a seamless approach to dynamically adapt floating point arithmetic. Our dynamically adaptive methodology enables the use of full half-precision arithmetic for up to 96.4% of the computations when training state-of-the-art neural networks; while delivering comparable accuracy to 32-bit floating point arithmetic.

Finally, we propose an approach able to train complex DNNs entirely using the BF16 format. Using FASE we introduce a new class of FMA operators, FMABF16_nm, that entirely rely on BF16 FMA hardware instructions and deliver the same accuracy as FP32. FMABF16_nm operators achieve performance improvements within the 1.28x-1.35x range on ResNet101 with respect to FP32. FMABF16_nm enables training complex DNNs on simple low-end hardware devices without requiring expensive FP32 FMA functional units.

(Español) Las redes neuronales profundas (DNN) se han vuelto omnipresentes en una amplia gama de dominios de aplicación. A pesar de su éxito, entrenar DNN es una tarea costosa que ha motivado el uso de formatos de precisión numérica reducida para mejorar el rendimiento y reducir el consumo de energía. Las técnicas de emulación son una buena opción para comprender las propiedades de los nuevos formatos numéricos en una carga de trabajo particular. Sin embargo, las técnicas de vanguardia actuales no pueden realizar estas tareas de forma rápida y precisa en una amplia variedad de cargas de trabajo.

El uso de aritmética de precisión mixta (MP) con punto flotante de 32 bits (FP32) y precisión de 16 bits tiene como objetivo mejorar el rendimiento de las operaciones de memoria y punto flotante, lo que permite un entrenamiento más eficiente. Esta es una de las técnicas más utilizadas y se ha aplicado con éxito para entrenar DNN. A pesar de sus ventajas en cuanto a la reducción de la necesidad de recursos clave como el ancho de banda de la memoria o el tamaño del archivo de registro, tiene una capacidad limitada para disminuir los costos informáticos adicionales, ya que requiere 32 bits para representar su salida. Por otro lado, la aritmética de precisión de 16 bits no logra ofrecer la precisión requerida.

Varias compañías de hardware están proponiendo soporte nativo de Brain Float de 16 bits (BF16) para el entrenamiento de redes neuronales. Las unidades funcionales Fused Multiply-Add (FMA) constituyen un componente de hardware fundamental para entrenar las DNN. Su área de silicio crece cuadráticamente de acuerdo a los bits de mantisa usados, lo que ha motivado la adopción del BF16. BF16 presenta 1 bit de signo, 8 de exponente y 7 de mantisa. Algunos enfoques para entrenar DNN logran beneficios de rendimiento significativos mediante el uso del formato BF16. Sin embargo, estos enfoques deben combinar BF16 con el formato estándar IEEE 754 FP32 para lograr una precisión de entrenamiento en el estado del arte.

Para abordar todas las inquietudes anteriores con respecto a los diferentes formatos numéricos, técnicas de entrenamiento específicas y cómo aumentar el uso de enfoques de precisión reducida, esta tesis propone FASE, un emulador rápido, preciso y sencillo que aprovecha la traducción del binario dinámico para permitir la emulación de formatos numéricos personalizados.
FASE es rápido; permitiendo la emulación de grandes cargas de trabajo sin modificación, preciso; emulando a nivel de operando de instrucción y sin sencillo; ya que no requiere ninguna modificación de código y funciona en cualquier aplicación sin restricciones de lenguaje, compilador o código fuente. Evaluamos FASE utilizando una amplia variedad de DNN y cargas de trabajo a gran escala. Nuestra evaluación demuestra que FASE logra una mayor precisión que enfoques del estado del arte de grano grueso y muestra que es capaz de evaluar la confiabilidad de múltiples formatos numéricos y extraer conclusiones sobre su aplicabilidad.

Para mostrar las ventajas de FASE, lo probamos en clasificación de objetos, procesamiento de lenguaje natural y redes generativas. Usamos FASE para analizar el uso de BF16 en la fase de entrenamiento de una red adversa generativa 3D (3DGAN) que simula detectores de física de alta energía.

Utilizamos FASE para caracterizar y analizar la aritmética de cómputo para proponer un enfoque sencillo para adaptar dinámicamente la aritmética de punto flotante. Ésta metodología permite el uso de aritmética de precisión media para hasta el 96,4 % de los cálculos cuando se entrenan redes neuronales en el estado del arte; mientras ofrece una precisión similar a la aritmética de coma flotante de 32 bits.

Finalmente, proponemos un enfoque capaz de entrenar DNN completamente utilizando el formato BF16 a través de una nueva clase de operadores FMA. Estos operadores logran rendimientos en el rango de 1,28x-1,35x en ResNet con respecto a FP32.