Optimice los modelos de aprendizaje automático con la poda de modelos. Logre una inferencia más rápida, un uso reducido de la memoria y eficiencia energética para implementaciones con recursos limitados.
La poda de modelos es una técnica de optimización de modelos diseñada para reducir el tamaño y la complejidad computacional de las computacionales de las redes neuronales innecesarios. A medida que los modelos de inteligencia artificial se hacen más grandes para lograr un mayor rendimiento, a menudo se vuelven a menudo se sobreparametrizan y contienen muchas conexiones o neuronas que contribuyen poco al resultado final. Al identificar y eliminando estos componentes redundantes, los desarrolladores pueden crear modelos más eficientes que requieren menos memoria y energía, al tiempo que ofrecen una inferencia en tiempo real más rápida. a la vez que ofrecen una inferencia en tiempo real más rápida. Este proceso es especialmente importante para implantar arquitecturas sofisticadas como YOLO11 en hardware cuyos recursos son escasos, como los teléfonos móviles o los sensores integrados. móviles o sensores integrados.
El proceso de poda suele constar de tres fases principales: formación, poda y ajuste fino. Inicialmente, se entrena un modelo grande hasta convergencia para captar características complejas. Durante la fase de poda, un algoritmo evalúa la importancia de determinados parámetros, normalmente ponderaciones y sesgos. parámetros específicos, normalmente ponderaciones y criterios como la magnitud o la sensibilidad. Los parámetros considerados insignificantes se reducen a cero o se eliminan por completo.
Sin embargo, el simple recorte de partes de una red puede degradar su precisión. Para contrarrestarlo, el modelo se somete a una de reentrenamiento, lo que se conoce como ajuste fino. Este paso permite que los parámetros restantes se ajusten y compensar las conexiones que faltan, lo que a menudo restablece el rendimiento del modelo a niveles cercanos a los originales. La eficacia de este método en La eficacia de este método se basa en la hipótesis del billete de lotería, que sugiere que las redes densas contienen subredes más pequeñas capaces de alcanzar una precisión comparable cuando se entrenan de forma aislada.
Las estrategias de poda suelen clasificarse en función de la estructura de los componentes que se eliminan:
Aunque ambas son técnicas de optimización populares, es importante distinguir la poda de la cuantificación de modelos. cuantificación de modelos. La poda se centra en reducir el número de parámetros (conexiones o neuronas), modificando así la arquitectura del modelo. En Por el contrario, la cuantización reduce la precisión de esos parámetros, por ejemplo, convirtiendo números de coma flotante de 32 bits en números de 8 bits. de 32 bits a enteros de 8 bits. Estos métodos suelen ser complementarios. para eliminar la redundancia y, a continuación, cuantizarlo para minimizar aún más su huella en la memoria para su despliegue.
La poda desempeña un papel fundamental para que la visión visión por ordenador en la práctica escenarios prácticos:
Frameworks como PyTorch proporcionan utilidades integradas para aplicar poda mediante programación. El siguiente ejemplo muestra cómo aplicar la poda no estructurada a una capa convolucional. una operación común antes de exportar un modelo a un formato optimizado como ONNX.
import torch
import torch.nn.utils.prune as prune
# Initialize a standard convolutional layer
layer = torch.nn.Conv2d(in_channels=3, out_channels=64, kernel_size=3)
# Apply L1 unstructured pruning to remove 30% of the connections
# This sets the smallest 30% of weights (by absolute value) to zero
prune.l1_unstructured(layer, name="weight", amount=0.3)
# Verify sparsity: calculate the percentage of zero parameters
sparsity = float(torch.sum(layer.weight == 0)) / layer.weight.nelement()
print(f"Layer sparsity: {sparsity:.2%}")