Path: blob/master/site/es-419/model_optimization/guide/combine/pqat_example.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
Ejemplo de Keras de entrenamiento con reconocimiento de la cuantización que preserva la dispersión (PQAT)
Descripción general
Este es un ejemplo de principio a fin que muestra el uso de la API de entrenamiento con reconocimiento de la cuantización que preserva la poda (PQAT), parte del proceso de optimización colaborativa del kit de herramientas de optimización de modelos de TensorFlow.
Otras paginas
Para ver una introducción a la canalización y otras técnicas disponibles, consulte la página de descripción general de optimización colaborativa.
Contenido
En este tutorial podrá:
Entrenar un modelo
tf.keras
para el conjunto de datos MNIST desde cero.Ajustar el modelo con poda, usando la API de dispersión, y comprobar la precisión.
Aplicar el QAT y observar la pérdida de dispersión.
Aplicar el PQAT y observar que se ha conservado la dispersión que se aplicó anteriormente.
Generar un modelo de TFLite y observar los efectos de la aplicación de PQAT.
Comparar la precisión que obtiene el modelo de PQAT con un modelo cuantizado mediante la cuantización posentrenamiento.
Preparación
Puede ejecutar este cuaderno Jupyter en su virtualenv o colab local. Para obtener detalles sobre la configuración de dependencias, consulte la guía de instalación.
Entrenar un modelo tf.keras para MNIST sin podar
Evaluar el modelo previsto y guardarlo para usarlo después
Podar y ajustar el modelo hasta un 50 % de dispersión
Aplique la API prune_low_magnitude()
para podar todo el modelo preentrenado para demostrar y observar su efectividad en la reducción del tamaño del modelo al comprimirlo, mientras se mantiene la precisión. Para saber cuál es la mejor manera de usar la API para lograr la mejor tasa de compresión y al mismo tiempo mantener la precisión prevista, consulte la guía completa de poda.
Definir el modelo y aplicar la API de dispersión
El modelo debe preentrenarse antes de usar la API de dispersión.
Ajustar el modelo y evaluar la precisión con respecto a la línea de base
Ajuste el modelo con poda durante 3 épocas.
Defina funciones ayudantes para calcular e imprimir la dispersión del modelo.
Verifique que se haya podado el modelo correctamente. Primero debemos quitar el contenedor de la poda.
Para este ejemplo, hay una pérdida mínima en la precisión de la prueba después de la poda, en comparación con la línea de base.
Aplicar el QAT y el PQAT y verificar el efecto sobre la dispersión del modelo en ambos casos
A continuación, aplicamos el QAT y el QAT que preserva la poda (PQAT) en el modelo podado y observamos que el PQAT preserva la dispersión en su modelo podado. Tenga en cuenta que eliminamos los contenedores de poda de su modelo podado con tfmot.sparsity.keras.strip_pruning
antes de aplicar la API de PQAT.
Ver los beneficios de compresión del modelo de PQAT
Defina la función ayudante para obtener el archivo del modelo comprimido.
Al tratarse de un modelo pequeño, la diferencia entre ambos modelos no se nota mucho. Aplicar la poda y el PQAT a un modelo de producción más grande produciría una compresión más significativa.
Ver la persistencia de la precisión desde TF a TFLite
Defina una función ayudante para evaluar el modelo de TFLite en el conjunto de datos de prueba.
Evalúe el modelo, que ha sido podado y cuantizado, y verá que la precisión de TensorFlow persiste hasta el backend de TFLite.
Aplicar la cuantización posentrenamiento y comparar con el modelo de PQAT
A continuación, usamos la cuantización normal posentrenamiento (sin ajuste) en el modelo podado y verificamos su precisión en comparación con el modelo de PQAT. Esto demuestra por qué debería usar el PQAT para mejorar la precisión del modelo cuantizado.
Primero, defina un generador para el conjunto de datos de calibración a partir de las primeras 1000 imágenes de entrenamiento.
Cuantice el modelo y compare la precisión con el modelo de PQAT adquirido previamente. Tenga en cuenta que el modelo cuantizado con ajuste logra una mayor precisión.
Conclusión
En este tutorial, aprendió cómo crear un modelo, podarlo con la API de dispersión y aplicar el entrenamiento con reconocimiento de la cuantización que preserva la dispersión (PQAT) para preservar la dispersión al usar el QAT. El modelo de PQAT final se comparó con el de QAT para mostrar que la dispersión se conserva en el primero y se pierde en el segundo. Luego, los modelos se convirtieron a TFLite para mostrar los beneficios de compresión del encadenamiento de la poda y las técnicas de optimización del modelo de PQAT y se evaluó el modelo de TFLite para garantizar que la precisión persista en el backend de TFLite. Finalmente, el modelo de PQAT se comparó con un modelo podado cuantizado que se obtuvo con la API de cuantización posentrenamiento para demostrar la ventaja de PQAT en la recuperación de la pérdida de precisión de la cuantización normal.