Entrenamiento consciente de la cuantificación (original) (raw)

Entrenamiento consciente de la cuantificación

Organízate con las colecciones Guarda y clasifica el contenido según tus preferencias.

Mantenido por la optimización del modelo TensorFlow

Hay dos formas de cuantificación: cuantificación posterior al entrenamiento y entrenamiento consciente de la cuantificación. Comience con la cuantificación posterior al entrenamiento , ya que es más fácil de usar, aunque el entrenamiento consciente de la cuantificación suele ser mejor para la precisión del modelo.

Esta página proporciona una descripción general sobre la capacitación consciente de la cuantificación para ayudarlo a determinar cómo se adapta a su caso de uso.

Descripción general

El entrenamiento consciente de la cuantificación emula la cuantificación del tiempo de inferencia, creando un modelo que las herramientas posteriores utilizarán para producir modelos realmente cuantificados. Los modelos cuantificados utilizan una precisión más baja (por ejemplo, 8 bits en lugar de 32 bits flotantes), lo que genera beneficios durante la implementación.

Implementar con cuantificación

La cuantización aporta mejoras mediante la compresión del modelo y la reducción de la latencia. Con los valores predeterminados de la API, el tamaño del modelo se reduce 4 veces y normalmente vemos mejoras de entre 1,5 y 4 veces en la latencia de la CPU en los backends probados. Con el tiempo, se pueden ver mejoras de latencia en aceleradores de aprendizaje automático compatibles, como EdgeTPU y NNAPI.

La técnica se utiliza en producción en casos de uso de voz, visión, texto y traducción. El código actualmente admite un subconjunto de estos modelos .

Experimente con la cuantización y el hardware asociado.

Los usuarios pueden configurar los parámetros de cuantificación (por ejemplo, número de bits) y, hasta cierto punto, los algoritmos subyacentes. Tenga en cuenta que con estos cambios de los valores predeterminados de la API, actualmente no existe ninguna ruta compatible para la implementación en un backend. Por ejemplo, la conversión TFLite y las implementaciones del kernel solo admiten la cuantificación de 8 bits.

Las API específicas de esta configuración son experimentales y no están sujetas a compatibilidad con versiones anteriores.

Compatibilidad API

Los usuarios pueden aplicar la cuantificación con las siguientes API:

Está en nuestra hoja de ruta agregar soporte en las siguientes áreas:

Matriz de apoyo general

El soporte está disponible en las siguientes áreas:

Está en nuestra hoja de ruta agregar soporte en las siguientes áreas:

Resultados

Clasificación de imágenes con herramientas.

Modelo Precisión Top-1 no cuantificada Precisión cuantificada de 8 bits
MóvilnetV1 224 71,03% 71,06%
resnet v1 50 76,3% 76,1%
MóvilnetV2 224 70,77% 70,01%

Los modelos se probaron en Imagenet y se evaluaron tanto en TensorFlow como en TFLite.

Clasificación de imágenes por técnica.

Modelo Precisión Top-1 no cuantificada Precisión cuantificada de 8 bits
Nasnet-Móvil 74% 73%
Resnet-v2 50 75,6% 75%

Los modelos se probaron en Imagenet y se evaluaron tanto en TensorFlow como en TFLite.

Ejemplos

Además del ejemplo de entrenamiento con reconocimiento de cuantificación , consulte los siguientes ejemplos:

Para obtener información sobre algo similar, consulte el artículo Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference . Este artículo presenta algunos conceptos que utiliza esta herramienta. La implementación no es exactamente la misma y se utilizan conceptos adicionales en esta herramienta (por ejemplo, cuantificación por eje).