Reduce pesos insignificantes

Este documento proporciona una descripción general sobre la reducción de modelos para que puedas determinar cómo se adapta a tu caso práctico. Para trabajar directamente en el código, consulta el instructivo de reducción con Keras y los documentos de la API. Para obtener detalles adicionales sobre cómo usar la API de Keras, un análisis profundo de la reducción y la documentación sobre los patrones de uso más avanzados, consulta la guía Entrena modelos dispersos.

Resumen

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 y tf.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:

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 22471.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.5285%
26.1990%
GNMT DE-EN 29.47 29.50 80%
29.2485%
28.8190%

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

Sugerencias

  1. Comienza con modelos o pesos previamente entrenados si es posible. De no ser así, crea un modelo sin reducción y comienza a partir de ahí.
  2. No realices la reducción con frecuencia para darle tiempo al modelo de recuperarse. El kit de herramientas proporciona una frecuencia predeterminada.
  3. Intenta ejecutar un experimento en el que reduzcas un modelo previamente entrenado hasta la dispersión final a partir del paso 0.
  4. Asegura una tasa de aprendizaje que no sea demasiado alta o demasiado baja cuando se reduzca el modelo. Ten en cuenta que el programa de reducción es un hiperparámetro.

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].