Path: blob/master/site/es-419/model_optimization/guide/quantization/training.md
25118 views
Entrenamiento con reconocimiento de la cuantización
Actualizado por TensorFlow Model Optimization
Hay dos formas de cuantización: cuantización posentrenamiento y entrenamiento con reconocimiento de la cuantización. Comience con la cuantización posentrenamiento, ya que es más fácil de usar, aunque el entrenamiento con reconocimiento de la cuantización suele ser mejor para la precisión del modelo.
Esta página proporciona una descripción general sobre el entrenamiento con reconocimiento de la cuantización para ayudarlo a determinar cómo se adapta a su caso de uso.
Para profundizar en un ejemplo de principio a fin, consulte el ejemplo de entrenamiento con reconocimiento de cuantización.
Para encontrar rápidamente las API que necesita para su caso de uso, consulte la guía completa de entrenamiento con reconocimiento de la cuantización.
Descripción general
El entrenamiento con reconocimiento de la cuantización emula la cuantización del tiempo de inferencia y crea un modelo que las herramientas posteriores usarán para producir modelos realmente cuantizados. Los modelos cuantizados usan 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 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 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 la latencia en aceleradores de aprendizaje automático compatibles, como EdgeTPU y NNAPI.
La técnica se usa 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 cuantizació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 a TFLite y las implementaciones del núcleo solo admiten la cuantizació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 con las API
Los usuarios pueden aplicar la cuantización con las siguientes API:
Compilación de modelos:
tf.keras
solo con modelos secuenciales y funcionales.Versiones de TensorFlow: TF 2.x para tf-nightly.
No se admite
tf.compat.v1
con un paquete de TF 2.X.
Modo de ejecución de TensorFlow: ejecución eager
Tenemos planeado agregar compatibilidad en las siguientes áreas:
Compilación de modelos: aclarar cómo los modelos subclasificados tienen compatibilidad limitada o nula
Entrenamiento distribuido:
tf.distribute
Matriz de compatibilidad general
Hay compatibilidad en las siguientes áreas:
Cobertura del modelo: modelos que usan capas incluidas en la lista de permitidos, BatchNormalization cuando le sigue a las capas Conv2D y DepthwiseConv2D y, en casos limitados,
Concat
.Aceleración de hardware: nuestros valores predeterminados de la API son compatibles con la aceleración en backends EdgeTPU, NNAPI y TFLite, entre otros. Vea la advertencia en la hoja de ruta.
Implementación con cuantización: actualmente solo se admite la cuantización por eje para capas convolucionales, no la cuantización por tensor.
Tenemos planeado agregar compatibilidad en las siguientes áreas:
Cobertura del modelo: se amplió para incluir RNN/LSTM y compatibilidad general de Concat.
Aceleración de hardware: asegúrese de que el convertidor TFLite pueda producir modelos enteros. Consulte este artículo para obtener más detalles.
Experimente con casos de uso de cuantización:
Experimente con algoritmos de cuantización que abarquen capas de Keras o requieran el paso de entrenamiento.
Estabilice las API.
Resultados
Clasificación de imágenes con herramientas
Model | Non-quantized Top-1 Accuracy | 8-bit Quantized Accuracy |
---|---|---|
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
Model | Non-quantized Top-1 Accuracy | 8-Bit Quantized Accuracy |
---|---|---|
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 cuantización, consulte los siguientes ejemplos:
Modelo de red neuronal convolucional (CNN) en la tarea de clasificación de dígitos escritos a mano de MNIST con cuantización: código
Para obtener información sobre algo similar, consulte el artículo Cuantización y entrenamiento de redes neuronales para una inferencia aritmética entera eficiente. Este artículo presenta algunos conceptos que usa esta herramienta. La implementación no es exactamente la misma y se usan más conceptos en esta herramienta (por ejemplo, cuantización por eje).