Mantenido por el equipo de optimización de modelos de TensorFlow
En este documento, se proporciona una descripción general sobre la reducción de modelos para que puedas determinar cómo se adapta a tu caso de uso.
- Si quieres conocer en detalle un ejemplo de extremo a extremo, consulta Reducción con Keras.
- Encontrarás rápidamente las API que necesitas para tu caso de uso en la guía completa de reducción.
- Para explorar los usos de la reducción durante la inferencia integrada en el dispositivo, consulta la guía sobre reducción para la inferencia integrada en el dispositivo con XNNPACK.
Descripción general
La reducción de pesos basada en la magnitud coloca gradualmente en cero los pesos del modelo durante el proceso de entrenamiento para lograr una dispersión del modelo. Los modelos dispersos son más fáciles de comprimir. Además, podemos omitir los ceros durante la inferencia para mejorar la latencia.
Esta técnica permite realizar mejoras mediante la compresión de modelos. En el futuro, la compatibilidad de esta técnica con el marco de trabajo mejorará la latencia. Hemos presenciado hasta 6 mejoras en la compresión de modelos con una pérdida de exactitud mínima.
La técnica se está evaluando en varias aplicaciones de voz, como por ejemplo, de reconocimiento de voz y de texto a voz, y se ha probado en varios modelos de visión y traducción.
Matriz de compatibilidad de API
Los usuarios pueden aplicar la reducción con las siguientes API:
- Compilación de modelos:
tf.keras
solo con modelos secuenciales y funcionales - Versiones de TensorFlow: TF 1.x para las versiones 2.x y las posteriores a 1.14.
tf.compat.v1
con un paquete TF 2.X ytf.compat.v2
con un paquete TF 1.X no son compatibles
- Modo de ejecución de TensorFlow: inmediata y por grafos
- Entrenamiento distribuido:
tf.distribute
solo con la ejecución por grafos
Nuestro objetivo es agregar compatibilidad en las siguientes áreas:
- Compatibilidad mínima con modelos subclasificados
- Compatibilidad de framework para la mejora en la latencia
Resultados
Clasificación de imágenes
Modelo | Exactitud máxima no dispersa | Exactitud dispersa | Dispersión |
---|---|---|---|
InceptionV3 | 78.1% | 78.0% | 50% |
76.1% | 75% | ||
74.6% | 87.5% | ||
MobilenetV1 224 | 71.04% | 70.84% | 50% |
Los modelos se probaron en ImageNet.
Traducción
Modelo | BLEU no disperso | BLEU disperso | Dispersión |
---|---|---|---|
GNMT EN-DE | 26.77 | 26.86 | 80% |
26.52 | 85% | ||
26.19 | 90% | ||
GNMT DE-EN | 29.47 | 29.50 | 80% |
29.24 | 85% | ||
28.81 | 90% |
Los modelos usan el conjunto de datos alemán e inglés WMT16 con news-test2013 como el conjunto de desarrollo y news-test2015 como el conjunto de prueba.
Ejemplos
Además del instructivo Reducción con Keras, consulta los siguientes ejemplos:
- Entrena con reducción un modelo de CNN en la tarea de clasificación de dígitos escritos a mano de MNIST: código
- Entrena con reducción una LSTM en la tarea de clasificación de opiniones de IMDB: código
Para obtener más información, consulta Reducir o no reducir: explora la eficacia de la reducción en la compresión de modelos [artículo].