# FP8, FP16, BF16 y FP32: comparación de la precisión numérica en GPU

La precisión numérica describe con qué exactitud una GPU puede representar y procesar valores numéricos. En el aprendizaje profundo, el formato de coma flotante utilizado (por ejemplo, FP32, FP16, BF16 o FP8) determina el equilibrio entre rendimiento de cálculo, uso de memoria y precisión del modelo. Por ello, desempeña un papel importante en el rendimiento y la eficiencia de las aplicaciones de IA.

### Resumen

Lo esencial sobre los formatos de coma flotante de un vistazo:

- Todo número en coma flotante se compone de signo, exponente y significando: el exponente determina el rango dinámico y el significando, la precisión.
- FP32 ofrece la mayor precisión y sigue siendo la referencia para la estabilidad numérica, pero es el formato que más memoria y capacidad de cálculo requiere.
- FP16 reduce a la mitad el uso de memoria frente a FP32, aunque es propenso al underflow y necesita técnicas como el loss scaling.
- BF16 ofrece prácticamente el rango dinámico de FP32 con la mitad de memoria y es, junto con FP16, uno de los formatos más habituales en los grandes modelos de lenguaje.
- FP8 reduce todavía más el uso de memoria y la latencia, pero exige hardware compatible y una gestión cuidadosa del escalado.
- Las GPU modernas de NVIDIA aceleran estos formatos mediante Tensor Cores: FP8 a partir de la generación Hopper y formatos de precisión aún menor desde Blackwell.
- En la práctica, los frameworks de IA combinan varios formatos dentro de un mismo proceso (precisión mixta) para equilibrar eficiencia y precisión.

## ¿Qué son los números en coma flotante?

Los números en coma flotante permiten **representar valores reales en un ordenador** mediante un sistema similar a la notación científica. En lugar de situar la coma en una posición fija, el valor se representa mediante tres componentes principales:

- Signo
- Exponente
- Significando

El bit de signo determina si un número es positivo o negativo. El exponente define el rango de valores, es decir, hasta qué magnitudes pueden representarse números muy grandes o muy pequeños. El significando, denominado también mantisa de forma habitual, determina en gran medida la precisión con la que se representa un valor. Cuantos más bits tenga el exponente, mayor será el rango dinámico. Cuantos más bits tenga el significando, mayor será la precisión con la que pueden distinguirse valores próximos entre sí.

Existe un compromiso entre precisión y eficiencia: una mayor precisión permite representar los valores con más detalle, pero también requiere más memoria y recursos de cálculo. Una precisión menor, en cambio, reduce el consumo de memoria y puede acelerar las operaciones, aunque aumenta el riesgo de errores de redondeo. Esto resulta especialmente relevante en los modelos de [aprendizaje profundo](https://www.ionos.es/digitalguide/online-marketing/marketing-para-motores-de-busqueda/deep-learning/), que pueden trabajar con **millones o miles de millones de parámetros**. Según el formato, también existen valores especiales como NaN (“Not a Number”) o ±Inf (infinito), que pueden aparecer como resultado de determinadas operaciones.

Cuando un valor es demasiado pequeño para representarse normalmente en un formato determinado, puede producirse un **underflow**. En ese caso, el valor puede perder precisión, representarse como un número subnormal o redondearse a cero. En sentido contrario, se produce un **overflow** cuando un número supera el valor máximo que puede representar el formato. Para combinar rendimiento y estabilidad, muchas cargas de trabajo de IA utilizan distintos formatos de coma flotante dentro de un mismo proceso. Este enfoque se denomina **precisión mixta (mixed precision)** y es habitual en el entrenamiento de modelos de gran tamaño, como los [LLM](https://www.ionos.es/digitalguide/servidores/know-how/modelo-de-lenguaje-extenso/).

## Comparación de los formatos

La elección del formato de coma flotante influye de forma decisiva en el rendimiento, el uso de memoria y la estabilidad numérica. Aunque FP32 fue durante mucho tiempo el formato habitual en el aprendizaje profundo, los sistemas actuales recurren cada vez más a formatos de menor precisión. En este ámbito se utilizan especialmente FP16, BF16 y, cada vez más, FP8.

### FP32 (precisión simple)

FP32 es el formato clásico de precisión simple para cálculos científicos y durante mucho tiempo fue también el estándar en el aprendizaje profundo. Ofrece una precisión elevada y un amplio rango dinámico.

Como su nombre indica, FP32 utiliza un total de 32 bits: 1 bit para el signo, 8 bits para el exponente y 23 bits para el significando. Esto permite representar valores con un amplio rango y una precisión considerable. Esta característica resulta especialmente importante en cálculos sensibles a los errores numéricos. Sin embargo, FP32 requiere más memoria y ancho de banda que los formatos de menor precisión y, en hardware optimizado para IA, puede ofrecer un rendimiento inferior.

En el aprendizaje profundo moderno, especialmente con modelos de gran tamaño, FP32 suele combinarse con formatos de menor precisión. Puede utilizarse, por ejemplo, para determinadas operaciones sensibles, acumulaciones o valores que requieren una mayor estabilidad numérica. Ejecutar todos los cálculos exclusivamente en FP32 suele requerir más memoria y capacidad de cálculo, por lo que sigue siendo una **referencia importante para evaluar la estabilidad numérica**, aunque ya no sea siempre la opción más eficiente.

<table>
  <thead>
    <tr>
      <th>Ventajas</th>
      <th>Desventajas</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Precisión muy alta</td>
      <td>Alto consumo de memoria</td>
    </tr>
    <tr>
      <td>Amplio rango dinámico</td>
      <td>Menor rendimiento que los formatos de precisión reducida en hardware optimizado</td>
    </tr>
    <tr>
      <td>Alta estabilidad numérica para entrenamiento y aplicaciones científicas</td>
      <td>Menor eficiencia para modelos de [IA](https://www.ionos.es/digitalguide/online-marketing/vender-en-internet/que-es-la-inteligencia-artificial/) de gran tamaño</td>
    </tr>
  </tbody>
</table>

### FP16 (media precisión)

FP16 permite aumentar el rendimiento y **reducir el uso de memoria** en comparación con FP32. Es uno de los formatos utilizados habitualmente en el entrenamiento con precisión mixta.

FP16 utiliza 16 bits: 1 bit de signo, 5 bits de exponente y 10 bits de significando. Por tanto, cada valor ocupa la mitad de memoria que en FP32. En GPU compatibles, las operaciones FP16 también pueden ejecutarse con un rendimiento muy elevado, especialmente mediante Tensor Cores. Sin embargo, su **rango dinámico es considerablemente menor** que el de FP32 o BF16.

Uno de los problemas de FP16 es el underflow con valores muy pequeños, algo especialmente relevante en los gradientes durante el entrenamiento. Por ello, suele emplearse una técnica denominada loss scaling, que escala temporalmente los valores para evitar que gradientes demasiado pequeños se redondeen a cero. FP16 resulta adecuado para muchas [redes neuronales](https://www.ionos.es/digitalguide/online-marketing/marketing-para-motores-de-busqueda/que-es-una-neural-network/), pero requiere una gestión cuidadosa de la precisión numérica.

<table>
  <thead>
    <tr>
      <th>Ventajas</th>
      <th>Desventajas</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Alto rendimiento en hardware compatible</td>
      <td>Más propenso al underflow</td>
    </tr>
    <tr>
      <td>Requiere la mitad de memoria que FP32 por valor</td>
      <td>Menor rango dinámico que BF16 y FP32</td>
    </tr>
    <tr>
      <td>Amplia compatibilidad con GPU modernas</td>
      <td>Puede requerir técnicas adicionales como loss scaling</td>
    </tr>
  </tbody>
</table>

### BF16 (Brain Floating Point)

El formato de coma flotante BF16 está especialmente orientado a cargas de trabajo de aprendizaje automático y combina algunas características de FP32 y FP16. Por ello, resulta especialmente relevante para modelos de gran tamaño, como los Transformer.

BF16 también utiliza 16 bits, pero los distribuye de otra forma: 1 bit de signo, 8 bits de exponente y 7 bits de significando. Gracias a sus 8 bits de exponente, ofrece prácticamente el mismo rango dinámico que FP32, pero con una menor precisión. Al mismo tiempo, cada valor ocupa la mitad de memoria que en FP32.

La principal ventaja es que BF16 reduce considerablemente el riesgo de underflow y overflow en comparación con FP16, lo que facilita su uso en el entrenamiento de modelos grandes. Por este motivo, está ampliamente disponible en frameworks y hardware moderno para IA. Su principal contrapartida es que el significando más corto proporciona menos precisión que FP16 y FP32.

<table>
  <thead>
    <tr>
      <th>Ventajas</th>
      <th>Desventajas</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Amplio rango dinámico, similar al de FP32</td>
      <td>Menor precisión que FP32</td>
    </tr>
    <tr>
      <td>Menos problemas de rango que FP16</td>
      <td>Menor precisión del significando que FP16</td>
    </tr>
    <tr>
      <td>Muy adecuado para modelos de gran tamaño, como los Transformer</td>
      <td>No está acelerado por hardware en GPU antiguas</td>
    </tr>
  </tbody>
</table>

### FP8 (precisión ultrabaja)

FP8 es un formato de precisión reducida que se utiliza tanto para inferencia como para determinadas estrategias de entrenamiento de IA. Su objetivo es reducir aún más el uso de memoria y aumentar el rendimiento en hardware compatible.

FP8 utiliza solo 8 bits y existe en distintas variantes, entre ellas E4M3 y E5M2, que **distribuyen de forma diferente los bits destinados al exponente y al significando**. E4M3 ofrece mayor precisión, mientras que E5M2 proporciona un rango dinámico más amplio. Las GPU modernas, como la [NVIDIA H100](https://www.ionos.es/digitalguide/servidores/know-how/nvidia-h100/), disponen de aceleración específica para operaciones FP8 mediante sus Tensor Cores.

FP8 puede proporcionar importantes mejoras de rendimiento y reducir el uso de memoria, especialmente en modelos de gran tamaño. Sin embargo, su menor precisión y rango hacen necesario gestionar cuidadosamente el escalado de los valores. Por ello, no todas las operaciones de un modelo se ejecutan necesariamente en FP8: durante el entrenamiento suele combinarse con formatos de mayor precisión. En sistemas actuales, FP8 se utiliza tanto para inferencia como para entrenamiento de baja precisión mediante técnicas específicas de escalado.

<table>
  <thead>
    <tr>
      <th>Ventajas</th>
      <th>Desventajas</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Rendimiento muy elevado en hardware compatible</td>
      <td>Precisión y rango numérico limitados</td>
    </tr>
    <tr>
      <td>Uso de memoria muy reducido</td>
      <td>Requiere hardware y software compatibles para aprovechar sus ventajas</td>
    </tr>
    <tr>
      <td>Adecuado para inferencia y entrenamiento eficiente de modelos grandes</td>
      <td>Requiere estrategias de escalado y una gestión cuidadosa de la precisión</td>
    </tr>
  </tbody>
</table>

### Comparativa directa de los formatos de coma flotante

FP32 y FP16 son formatos definidos por el estándar IEEE 754. BF16 y FP8 también utilizan el principio de representación en coma flotante, pero se definen por separado: BF16 es un formato derivado de FP32 y optimizado para cargas de trabajo de aprendizaje automático, mientras que FP8 se utiliza en variantes como E4M3 y E5M2, definidas, entre otras especificaciones, en OCP OFP8.

<table>
  <thead>
    <tr>
      <th><strong>Formato</strong></th>
      <th><strong>Bits totales</strong></th>
      <th><strong>Exponente</strong></th>
      <th><strong>Significando (bits almacenados)</strong></th>
      <th><strong>Rango de valores normales positivos (aprox.)</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>FP32</strong></td>
      <td>32</td>
      <td>8</td>
      <td>23</td>
      <td>1,18 × 10⁻³⁸ a 3,4 × 10³⁸</td>
    </tr>
    <tr>
      <td><strong>FP16</strong></td>
      <td>16</td>
      <td>5</td>
      <td>10</td>
      <td>6,10 × 10⁻⁵ a 65 504</td>
    </tr>
    <tr>
      <td><strong>BF16</strong></td>
      <td>16</td>
      <td>8</td>
      <td>7</td>
      <td>1,18 × 10⁻³⁸ a 3,39 × 10³⁸</td>
    </tr>
    <tr>
      <td><strong>FP8</strong></td>
      <td>8</td>
      <td>4 o 5</td>
      <td>3 o 2</td>
      <td>E4M3: 1,56 × 10⁻² a 448; E5M2: 6,10 × 10⁻⁵ a 57 344</td>
    </tr>
  </tbody>
</table>

## Compatibilidad de hardware

Las GPU modernas están diseñadas específicamente para trabajar de forma eficiente con formatos de precisión numérica reducida. La arquitectura NVIDIA Ampere amplió las capacidades de los Tensor Cores con formatos como BF16 y TF32; FP16 ya estaba disponible en generaciones anteriores. Esto contribuyó a extender el uso de la precisión mixta en el entrenamiento de modelos de IA.

La [generación NVIDIA Hopper](https://www.ionos.es/digitalguide/servidores/know-how/hopper-gpu/) incorporó soporte específico para FP8 mediante su Transformer Engine. Las GPU como la NVIDIA H100 pueden ejecutar operaciones FP8 con un alto rendimiento mediante sus Tensor Cores. La arquitectura Ada Lovelace también incorporó Tensor Cores de cuarta generación con soporte para FP8. Las generaciones posteriores basadas en Blackwell mantienen compatibilidad con FP8, FP16 y BF16 y añaden formatos de precisión aún menor, como FP6 y FP4.

Los Tensor Cores desempeñan aquí un papel fundamental. **Aceleran las operaciones matriciales** que se utilizan constantemente en las redes neuronales. En hardware y operaciones compatibles, los formatos de menor precisión permiten procesar más datos con menos memoria y ancho de banda y pueden aumentar considerablemente el rendimiento.

El grado en que estas ventajas se traducen en un mayor rendimiento práctico no depende solo del hardware, sino también del software. Los frameworks como [PyTorch](https://www.ionos.es/digitalguide/servidores/know-how/pytorch/) y [TensorFlow](https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/tensorflow/) ofrecen funciones de precisión mixta que, una vez configuradas, pueden seleccionar automáticamente una precisión adecuada para numerosas operaciones.

No todas las GPU admiten ni aceleran todos los formatos por igual. Los modelos más antiguos trabajan principalmente con FP32 o con un conjunto más limitado de formatos, mientras que los aceleradores de IA modernos están optimizados para FP16, BF16, FP8 y, en las generaciones más recientes, precisiones aún menores. En los grandes modelos de lenguaje, BF16 y FP16 son muy habituales. FP8 también se utiliza cada vez más en el entrenamiento: DeepSeek-V3, por ejemplo, emplea entrenamiento de precisión mixta con FP8, junto con escalado de grano fino y acumulaciones de mayor precisión para mantener la estabilidad numérica.

## Impacto en la práctica: cuantización y downcasting

En la práctica, los formatos de coma flotante de menor precisión tienen **un gran impacto en la velocidad, el uso de memoria y los costes operativos** de las aplicaciones de IA. Al pasar determinados cálculos de FP32 a FP16 o BF16, se reduce el espacio que ocupan los datos y, en muchos casos, también el ancho de banda necesario para transferirlos. Esto permite utilizar modelos más grandes o aumentar el tamaño de los lotes dentro de la memoria disponible de la GPU.

Además, el hardware optimizado puede procesar formatos de menor precisión con un rendimiento superior. Esto puede acortar considerablemente los tiempos de entrenamiento e inferencia, especialmente en redes neuronales con miles de millones de parámetros. Una técnica habitual es la **conversión a una precisión menor (downcasting)**, que consiste en convertir datos o parámetros de un formato como FP32 a otro más compacto, como FP16 o BF16. De este modo, pueden reducirse el uso de memoria y las necesidades de ancho de banda.

La **cuantización** va un paso más allá: los valores se representan mediante un conjunto más reducido de niveles utilizando formatos de menor precisión, como FP8, o tipos de datos enteros como INT8 o INT4. Este procedimiento puede reducir aún más los requisitos de memoria y mejorar la [latencia](https://www.ionos.es/digitalguide/servidores/know-how/latencia/), es decir, el tiempo que tarda un sistema de IA en responder. Por ello, la cuantización desempeña un papel especialmente importante en aplicaciones de IA en producción y en la [inferencia](https://www.ionos.es/digitalguide/servidores/know-how/inferencia-ia/) en tiempo real.

Sin embargo, siempre existe un equilibrio entre eficiencia y precisión. Si la precisión se reduce demasiado, pueden aumentar los errores de redondeo o cuantización y deteriorarse la calidad del modelo. Por este motivo, los frameworks de IA suelen combinar varios formatos dentro de un mismo proceso. Las operaciones más sensibles pueden mantenerse en una precisión mayor, mientras que otras se ejecutan en FP16, BF16 o FP8.


This is a markdown version of: [https://www.ionos.es/digitalguide/servidores/know-how/fp8-fp16-bf16-fp32/](https://www.ionos.es/digitalguide/servidores/know-how/fp8-fp16-bf16-fp32/) for AI/LLM consumption.