Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Entrenamiento consciente de cuantificación

Mantenido por la optimización del modelo de TensorFlow

Hay dos formas de cuantificación: cuantificación posterior al entrenamiento y entrenamiento consciente de 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 encaja con su caso de uso.

Visió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 flotación de 32 bits), lo que genera beneficios durante la implementación.

Implementar con cuantizació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, por lo general, vemos entre 1,5 y 4 veces más mejoras 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 la producción de casos de uso de habla, visión, texto y traducción. Actualmente, el código admite un subconjunto de estos modelos .

Experimente con cuantificación y hardware asociado

Los usuarios pueden configurar los parámetros de cuantificación (por ejemplo, el número de bits) y, hasta cierto punto, los algoritmos subyacentes. Con estos cambios de los valores predeterminados de la API, no hay una ruta admitida para la implementación.

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:

  • Construcción de modelos: tf.keras con solo modelos Secuencial y Funcional.
  • Versiones de TensorFlow: TF 2.x para tf-nightly.
  • Modo de ejecución de TensorFlow: ejecución ansiosa

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

  • Construcción de modelos: aclare cómo los modelos subclasificados se han limitado a ningún soporte
  • Entrenamiento distribuido: tf.distribute

Matriz de soporte general

El soporte está disponible en las siguientes áreas:

  • Cobertura del modelo: modelos que utilizan capas permitidas , BatchNormalization cuando sigue las capas Conv2D y DepthwiseConv2D y, en casos limitados, Concat .
  • Aceleración de hardware: nuestras API predeterminadas son compatibles con la aceleración en los backends de EdgeTPU, NNAPI y TFLite, entre otros. Consulte la advertencia en la hoja de ruta.
  • Implementar con cuantificación: actualmente solo se admite la cuantificación por eje para capas convolucionales, no la cuantificación por tensor.

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

  • Cobertura del modelo: ampliada para incluir RNN / LSTM y soporte general de Concat.
  • Aceleración de hardware: asegúrese de que el convertidor TFLite pueda producir modelos enteros completos. Consulte este número para obtener más detalles.
  • Experimente con casos de uso de cuantificación:
    • Experimente con algoritmos de cuantificación que abarquen capas de Keras o requieran el paso de entrenamiento.
    • Estabilice las API.

Resultados

Clasificación de imágenes con herramientas

Modelo Precisión Top-1 no cuantificada Precisión cuantificada de 8 bits
MobilenetV1 224 71,03% 71,06%
Resnet v1 50 76,3% 76,1%
MobilenetV2 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-Mobile 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:

  • Modelo CNN en la tarea de clasificación de dígitos manuscritos del MNIST con cuantificación: código

Para el fondo en algo similar, véase la cuantización y el entrenamiento de redes neuronales para la eficiente Entero-aritmética de sólo Inferencia de papel . Este documento presenta algunos conceptos que utiliza esta herramienta. La implementación no es exactamente la misma y hay conceptos adicionales utilizados en esta herramienta (por ejemplo, cuantificación por eje).