Un registro más detallado del uso de la compresión de poda del modelo NNI

Usando la herramienta Microsoft nni, según el resumen del registro de compresión del modelo pytorch, la conclusión final es un experimento hace mucho tiempo, puede haber algunos errores o la herramienta NNI se ha actualizado. Pero el proceso general de poda y compresión del modelo nni es así, aquí hay un breve registro.

1. Poda y entrenamiento de modelos.

NNI puede realizar la poda automática y el entrenamiento de varios algoritmos de poda. Por ejemplo: SlimPruner, L1FilterPruner, L2FilterPruner, FPGMPruner, LevelPruner, AGP_Pruner y otros algoritmos de poda.

1. Entrene el modelo de estructura de red normalmente en su propio conjunto de datos.

2. Después del entrenamiento, llame a la API de poda del modelo de NNI, seleccione el algoritmo de poda que se implementará y configure config_list, incluidos los parámetros sparsity, op_types y op_names, y configure los parámetros correctos.

 

   3. Según el modelo previamente entrenado y los parámetros configurados, realice un entrenamiento de ajuste del modelo podado.

  4. Una vez completado el entrenamiento de ajuste fino del modelo de poda, se obtienen dos archivos.

La lima podadora y la lima de máscara tienen el mismo tamaño que el modelo original.

Análisis de experimentos y conclusiones.

Los VGG19 y VGG16 proporcionados oficialmente por nni se entrenan en función del conjunto de datos cifar10 y se podan utilizando SlimPruner y L1FilterPruner. Tanto el entrenamiento como la poda Finetune se realizan durante solo 10 épocas, lo que puede lograr el mismo efecto, y la verificación del conjunto es del 80%.

Usando la red resnet y el entrenamiento basado en el conjunto de datos cifar10, el efecto antes de la poda también se puede lograr después de usar la poda anterior.

Utilizando la estructura de red CRNN y el algoritmo de poda L1FilterPruner, en el conjunto de datos digitales sintéticos, antes y después de la poda, el ACC durante el entrenamiento puede alcanzar el 98%.

2. Compresión del modelo y aceleración hacia adelante.

Para lograr realmente la compresión del tamaño del archivo del modelo y la aceleración de la inferencia directa, es necesario llamar a la API de aceleración del modelo de NNI para completarla. Actualmente, esta parte de NNI se encuentra en la versión de prueba y la cantidad de modelos admitidos, OP y poda Los algoritmos son limitados. Actualmente, solo se admiten los de grano grueso. Para obtener modelos pequeños y aceleración hacia adelante, se requiere la versión de Pytorch >=1.3.1.

1. El peso del modelo se multiplica por la Máscara.

2. Utilice la API de nni para reemplazar el módulo y obtener un modelo más pequeño y una velocidad de inferencia más rápida.

      Para PyTorch, actualmente solo se proporciona un módulo de reemplazo; si es una función en adelante, no es compatible actualmente. Una solución es convertir la función en un módulo PyTorch.

Al realizar la compresión y aceleración del modelo, Nni resolverá algunos conflictos de máscara, pero algunos conflictos no se pueden resolver, como algunos conflictos de BN.

 

3 . Guardar modelo pequeño con estructura de red.

    Usando la red resnet18, en el conjunto de datos Cifar10, use L1FilterPruner para podar. El tamaño del modelo cambió de 42,7 millones a 7,68 millones, la entrada fue (1, 3, 128,128) flops de 596,151 millones a 129,464 millones y los parámetros de 11,182 millones a 2,002 millones.

En términos de velocidad de inferencia, utilizando la entrada de tamaño 128 * 128, la medida real de resnet18, la aceleración de 32 iteraciones no es obvia. Cuando se usa una pequeña cantidad de iteraciones, el efecto de aceleración es 0.009 y 0.004 después de 2 iteraciones ( Prueba de plataforma de entrenamiento de algoritmos, a veces rápida y a veces lenta). La entrada oficial ( 64, 3, 32, 32) se mide de la siguiente manera y la aceleración de 32 iteraciones no es obvia.

Usando la estructura de red CRNN, aunque se puede realizar el entrenamiento del modelo podado, cuando el modelo se comprime, algunos OP no pueden admitirlo por el momento, como la transformación de dimensiones.

Supongo que te gusta

Origin blog.csdn.net/qq_36276587/article/details/113126527
Recomendado
Clasificación