Path: blob/master/site/es-419/model_optimization/guide/combine/pcqat_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 y los grupos (PCQAT)
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 dispersión y los grupos (PCQAT), 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, ver la precisión y observar que el modelo se poda con éxito.
Aplicar la dispersión que preserva la agrupación en el modelo podado y observar que la dispersión aplicada anteriormente se ha conservado.
Aplicar el QAT y observar la pérdida de dispersión y grupos.
Aplicar el PCQAT y observar que tanto la dispersión como la agrupación aplicada anteriormente se han conservado.
Generar un modelo de TFLite y observar los efectos de la aplicación de PCQAT.
Comparar los tamaños de los diferentes modelos para observar los beneficios de la compresión al aplicar la dispersión seguida de las técnicas de optimización colaborativa de la agrupación que preserva la dispersión y el PCQAT.
Comparar la precisión del modelo totalmente optimizado con la precisión del modelo de referencia no optimizado.
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 que MNIST pueda podarse y agruparse
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 obtenere el modelo podado que se agrupará en el siguiente paso. Consulte la guía completa de poda para obtener más información sobre la API de poda.
Definir el modelo y aplicar la API de dispersión
Tenga en cuenta que se usa el modelo preentrenado.
Ajustar el modelo, verificar la dispersión 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 y los grupos del modelo.
Primero quitemos el contenedor de poda y luego verifiquemos que los núcleos del modelo se podaron correctamente.
Aplicar la dispersión que preserva la agrupación y comprobar su efecto en la dispersión del modelo en ambos casos
A continuación, aplique la dispersión que preserva la agrupación en el modelo podado y observe la cantidad de grupos y que se preserve la dispersión.
Primero, quite el contenedor de agrupación y luego verifique que se haya podado y agrupado el modelo correctamente.
Aplicar el QAT y el PCQAT y verificar el efecto en los grupos y la dispersión del modelo
A continuación, aplique el QAT y el PCQAT en el modelo agrupado y disperso y observe que el PCQAT preserva la dispersión de pesos y los grupos en su modelo. Tenga en cuenta que el modelo eliminado se pasa a la API de QAT y PCQAT.
Ver los beneficios de compresión del modelo de PCQAT
Defina la función ayudante para obtener el archivo del modelo comprimido.
Observe cómo la aplicación de dispersión, agrupación y PCQAT a un modelo produce importantes beneficios de compresión.
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, agrupado y cuantizado, y verá que la precisión de TensorFlow persiste hasta el backend de TFLite.
Conclusión
En este tutorial, aprendió cómo crear un modelo, podarlo con la API prune_low_magnitude()
y aplicar la agrupación que preserva la dispersión con la API cluster_weights()
para preservar la dispersión mientras se agrupan los pesos.
Luego, se aplicó el entrenamiento con reconocimiento de la cuantización para preservar la dispersión y los grupos (PCQAT) para preservar la dispersión del modelo y los grupos al usar el QAT. El modelo de PCQAT final se comparó con el de QAT para mostrar que la dispersión y los grupos se conservan en el primero y se pierden en el segundo.
Después, los modelos se convirtieron a TFLite para mostrar los beneficios de compresión del encadenamiento de dispersión, agrupación y técnicas de optimización de modelos de PCQAT y se evaluó el modelo de TFLite para garantizar que la precisión persista en el backend de TFLite.
Por último, se comparó la precisión del modelo de PCQAT de TFLite con la precisión del modelo de referencia previo a la optimización para mostrar que las técnicas de optimización colaborativa pudieron lograr los beneficios de la compresión y mantener una precisión similar en comparación con el modelo original.