Path: blob/master/site/es-419/model_optimization/guide/combine/cqat_example.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
Ejemplo de Keras para el entrenamiento con reconocimiento de la cuantización que preserva los grupos (CQAT)
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 los grupos (CQAT), 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 agrupación y comprobar la precisión.
Aplicar el QAT y observar la pérdida de grupos.
Aplicar el CQAT y observar que se conserva la agrupación aplicada anteriormente.
Generar un modelo de TFLite y observar los efectos de la aplicación de CQAT.
Comparar la precisión que obtiene el modelo de CQAT 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 agrupación
Evaluar el modelo previsto y guardarlo para usarlo después
Agrupar y ajustar el modelo con 8 grupos
Aplique la API cluster_weights()
para agrupar 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 agrupación en clústeres .
Definir el modelo y aplicar la API de agrupación
El modelo debe preentrenarse antes de usar la API de agrupación.
Ajustar el modelo y evaluar la precisión con respecto a la línea de base
Ajuste el modelo con agrupación durante 3 épocas.
Defina funciones ayudantes para calcular e imprimir el número de agrupaciones en cada núcleo del modelo.
Verifique que los núcleos del modelo estén agrupados correctamente. Primero debemos eliminar el contenedor de agrupación.
Para este ejemplo, hay una pérdida mínima en la precisión de la prueba después de la agrupación, en comparación con la línea de base.
Aplicar el QAT y el CQAT y verificar el efecto en los grupos de modelos en ambos casos
A continuación, aplicamos tanto el QAT como el QAT que preserva los grupos (CQAT) en el modelo agrupado y observamos que el CQAT preserva los grupos de peso en su modelo agrupado. Tenga en cuenta que eliminamos los contenedores de agrupación del modelo con tfmot.clustering.keras.strip_clustering
antes de aplicar la API de CQAT.
Vea los beneficios de compresión del modelo CQAT
Defina la función ayudante para obtener el archivo del modelo comprimido.
Tenga en cuenta que este es un modelo pequeño. La aplicación de agrupación y el CQAT a un modelo de producción más grande tendrí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 agrupado 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 CQAT
A continuación, usamos la cuantización posentrenamiento (sin ajuste) en el modelo agrupado y verificamos su precisión en comparación con el modelo de CQAT. Esto demuestra por qué debería usar el CQAT para mejorar la precisión del modelo cuantizado. Es posible que la diferencia no sea muy visible, porque el modelo MNIST es bastante pequeño y está sobreparametrizado.
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 CQAT 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, agruparlo con la API cluster_weights()
y aplicar el entrenamiento con reconocimiento de la cuantización que preserva los grupos (CQAT) para preservar los grupos al usar el QAT. El modelo de CQAT final se comparó con el de QAT para mostrar que los grupos se conservan en el primero y se pierden en el segundo. Luego, los modelos se convirtieron a TFLite para mostrar los beneficios de compresión del encadenamiento de agrupaciones y las técnicas de optimización del modelo de CQAT y se evaluó el modelo de TFLite para garantizar que la precisión persista en el backend de TFLite. Finalmente, el modelo de CQAT se comparó con un modelo agrupado cuantizado que se obtuvo con la API de cuantización posentrenamiento para demostrar la ventaja de CQAT en la recuperación de la pérdida de precisión de la cuantización normal.