Cuantificación de un modelo de NLP de humor DistilBERT

Dec 13 2022
Pasar de FP32 a INT8 para una inferencia más rápida con Optimum Intel e Intel Neural Compressor
La cuantización es una técnica de compresión de modelos que ayuda a reducir el tiempo de inferencia. La cuantificación del tipo de coma flotante de 32 bits (FP32) al tipo entero de 8 bits (INT8) mejora el rendimiento con solo una ligera caída en la precisión.
Foto de Tengyart en Unsplash

La cuantización es una técnica de compresión de modelos que ayuda a reducir el tiempo de inferencia. La cuantificación del tipo de coma flotante de 32 bits (FP32) al tipo entero de 8 bits (INT8) mejora el rendimiento con solo una ligera caída en la precisión. En general, el tamaño del modelo puede reducirse entre 4 y 5 veces, y el tiempo de inferencia puede reducirse más de 3 veces ( fuente ).

Primero debemos importar algunas bibliotecas más para la cuantificación, incluidas neural_compressory optimum.intel:

Estoy configurando el torchdispositivo para cpu:

Ahora podemos aplicar la cuantización. Eche un vistazo a los ejemplos de clasificación de texto en el optimum.intel repositorio de GitHub para obtener más información. Carguemos un modelo previamente entrenado:

Configuré el entrenador para usar la IncTrainerclase Intel® Neural Compressor Trainer:

Ahora todo está en su lugar para ejecutar la cuantificación. Tenga en cuenta que estoy usando un archivo de configuración llamado quantization.yml descargado del repositorio de optimum.intel GitHub . Puede cambiar los parámetros de configuración en este archivo para ajustar cómo se cuantifica el modelo. Aquí, estoy aplicando la cuantificación dinámica posterior al entrenamiento, una técnica que no requiere reentrenamiento, pero que por lo general sacrifica un poco de precisión:

Luego podemos continuar y ejecutar la cuantificación con optimizer.fit():

Ahora que tenemos un modelo optimizado, podemos compararlo con el modelo de referencia:

Podemos guardar el modelo cuantificado en el disco y tener disponibles tanto el FP32 como el modelo INT8 recién cuantificado:

Modelo INT8 guardado en disco

Ejecutando la evaluación con el modelo FP32, obtenemos:

Y para INT8:

La precisión es aproximadamente la misma, pero el modelo INT8 es 1,5 veces más rápido que el modelo FP32. El código completo se puede encontrar en GitHub aquí .

Puede instalar Intel Neural Compressor de forma independiente o como parte del Intel AI Analytics Toolkit . Para obtener más información sobre las soluciones de hardware y software de IA de Intel, visite aquí .