stringtranslate.com

Aritmética de precisión mixta

La aritmética de precisión mixta es una forma de aritmética de punto flotante que utiliza números con anchos variables en una sola operación.

Descripción general

Un uso común de la aritmética de precisión mixta es operar con números inexactos con un ancho pequeño y expandirlos a una representación más grande y más precisa. Por ejemplo, dos números de punto flotante de media precisión o bfloat16 (16 bits) se pueden multiplicar entre sí para dar como resultado un número flotante de precisión simple (32 bits) más preciso. [1] De esta manera, la aritmética de precisión mixta se aproxima a la aritmética de precisión arbitraria , aunque con un número bajo de posibles precisiones.

Los algoritmos iterativos (como el de descenso de gradiente ) son buenos candidatos para la aritmética de precisión mixta. En un algoritmo iterativo como el de raíz cuadrada , se puede hacer una estimación integral aproximada y refinarla a lo largo de muchas iteraciones hasta que el error de precisión haga que la suma o resta más pequeña a la estimación sea demasiado aproximada para ser una respuesta aceptable. Cuando esto sucede, la precisión se puede aumentar a algo más preciso, lo que permite utilizar incrementos más pequeños para la aproximación.

Las supercomputadoras como Summit utilizan aritmética de precisión mixta para ser más eficientes en lo que respecta a la memoria y el tiempo de procesamiento, así como al consumo de energía. [1] [2] [3]

Formato de punto flotante

Un número de punto flotante se empaqueta normalmente en una única cadena de bits, como el bit de signo, el campo de exponente y la mantisa, de izquierda a derecha. A modo de ejemplo, un número flotante de 32 bits del estándar IEEE 754 ("FP32", "float32" o "binary32") se empaqueta de la siguiente manera:

Los flotantes binarios IEEE 754 son:

Aprendizaje automático

La aritmética de precisión mixta se utiliza en el campo del aprendizaje automático , ya que los algoritmos de descenso de gradiente pueden utilizar puntos flotantes de precisión media gruesos y eficientes para ciertas tareas, pero pueden ser más precisos si utilizan puntos flotantes de precisión simple más precisos pero más lentos. Algunas plataformas, incluidas las CPU y GPU de Nvidia , Intel y AMD , proporcionan aritmética de precisión mixta para este propósito, utilizando puntos flotantes gruesos cuando es posible, pero ampliándolos a una precisión mayor cuando es necesario. [1] [2]

[4] [5]

Precisión mixta automática

PyTorch implementa precisión mixta automática (AMP), que realiza conversión automática, escala de gradiente y escala de pérdida. [6] [7]

PyTorch AMP utiliza una reducción exponencial para ajustar automáticamente el factor de escala para el escalamiento de pérdidas. Es decir, aumenta periódicamente el factor de escala. Siempre que los gradientes contienen un NaN (que indica un desbordamiento), se omite la actualización del peso y se reduce el factor de escala.

Referencias

  1. ^ abc «Diferencia entre precisión simple, doble, múltiple y mixta». Blog de NVIDIA . 15 de noviembre de 2019. Consultado el 30 de diciembre de 2020 .
  2. ^ ab Abdelfattah, Ahmad; Anzt, Hartwig; Boman, Erik G.; Carson, Erin; Cojean, Terry; Dongarra, Jack; Gates, Mark; Grützmacher, Thomas; Higham, Nicholas J.; Li, Sherry; Lindquist, Neil; Liu, Yang; Loe, Jennifer; Luszczek, Piotr; Nayak, Pratik; Pranesh, Sri; Rajamanickam, Siva; Ribizel, Tobias; Smith, Barry; Swirydowicz, Kasia; Thomas, Stephen; Tomov, Stanimire; Tsai, Yaohung M.; Yamazaki, Ichitaro; Urike Meier Yang (2020). "Un estudio de métodos numéricos que utilizan aritmética de precisión mixta". arXiv : 2007.06674 [cs.MS].
  3. ^ Holt, Kris (8 de junio de 2018). «Estados Unidos vuelve a tener la supercomputadora más potente del mundo». Engadget . Consultado el 20 de julio de 2018 .
  4. ^ Micikevicius, Paulius; Narang, Sharan; Alben, Jonah; Diamos, Gregory; Elsen, Erich; Garcia, David; Ginsburg, Boris; Houston, Michael; Kuchaiev, Oleksii (15 de febrero de 2018). "Entrenamiento de precisión mixto". arXiv : 1710.03740 [cs.AI].
  5. ^ "Entrenamiento de precisión mixta de redes neuronales profundas". Blog técnico de NVIDIA . 2017-10-11 . Consultado el 2024-09-10 .
  6. ^ "Mixed Precision — PyTorch Training Performance Guide" (Guía de rendimiento de entrenamiento de precisión mixta de PyTorch). residentmario.github.io . Consultado el 10 de septiembre de 2024 .
  7. ^ "Lo que todo usuario debe saber sobre el entrenamiento de precisión mixta en PyTorch". PyTorch . Consultado el 10 de septiembre de 2024 .