¿De qué se trata FP16, FP32 en Python? Mi socio comercial potencial y yo estamos creando una configuración de aprendizaje profundo para trabajar con series de tiempo. Se le ocurrió «FP16 y FP32» mientras buscaba una GPU. Parece que está hablando de valores de coma flotante en 16 frente a 32 bits. (Nuestros puntos de datos se ven así: «5989.12345», así que estoy bastante seguro de que 16 bits no son suficientes).

¿Es FP16? ¿Es una técnica especial que usan las GPU para mejorar el rendimiento o es solo un término elegante para usar valores flotantes de 16 bits en lugar de 32 flotantes estándar?

Comentarios

  • Sí, FP16 significa 16 bits en el contexto de GPU.

Respuesta

FP32 y FP16 significan 32- punto flotante de bits y punto flotante de 16 bits. Las GPU se centraron originalmente en FP32 porque estos son los cálculos necesarios para los juegos 3D. Hoy en día, muchas GPU tienen soporte nativo de FP16 para acelerar el cálculo de redes neuronales. Si observa algunos puntos de referencia ( https://blog.slavv.com/titan-rtx-quality-time-with-the-top-turing-gpu-fe110232a28e ) verá que las GPU que admiten FP16 calculan FP16 casi dos veces más rápido que FP32. Teniendo en cuenta Tenga en cuenta que las tarjetas más nuevas que admiten FP16 (como la serie NVidia 2080) también ut 20% más rápido para FP32 en comparación con su predecesor (1080), obtienes un aumento del 140% para entrenar redes neuronales FP16 en comparación con FP32 en tarjetas anteriores.

Pero hay una advertencia. Su red neuronal debe escribirse con FP16 y también debe tener la misma precisión. Los FP16 tienen una precisión más baja por diseño, porque tienen muchos menos bits para representar el mismo número. Algunos optan por utilizar modelos de precisión mixtos para ser rápidos y precisos ( https://hackernoon.com/rtx-2080ti-vs-gtx-1080ti-fastai-mixed-precision-training-comparisons-on-cifar-100-761d8f615d7f ). Pero ves en el último enlace que la velocidad es más rápida para una precisión mixta, pero no es 2 veces más rápida que cuando usas FP16 puro. En teoría, también podría usar pesos FP32 y convertir algunos de ellos en pesos FP16, pero la precisión podría disminuir.

Entonces, al final, debe comprender si puede reescribir su red neuronal para usar FP16 total o parcialmente . Si no puede, no obtendrá ningún beneficio adicional de las tarjetas compatibles con FP16.

El valor máximo para FP16 es 65504 y el mínimo es 5,96 × 10−8. La mejor precisión para 5989.12345 probablemente será 5988.0 (reproducida con bits en https://www.h-schmidt.net/FloatConverter/IEEE754.html ) si esta precisión y magnitud es no es suficiente para usted, entonces podría escalar sus datos antes de entrenar para adaptarse a FP16 y luego entrenar con el doble de velocidad. O use modelos de precisión mixtos donde tenga FP32 como entrada y luego reduzca la precisión en capas posteriores.

Comentarios

  • contenido de blog altamente informativo, gracias por eso 🙂
  • También incluí una representación probable de su número en FP16. Si está satisfecho con la respuesta, sería bueno si pudiera marcar la respuesta como la respuesta aceptada y también votar a favor si lo desea.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *