Descubra cómo la poda optimiza redes neuronales como Ultralytics al eliminar parámetros redundantes. Explore métodos estructurados y no estructurados para Edge AI.
La poda es una técnica estratégica de optimización de modelos que se utiliza para reducir el tamaño y la complejidad computacional de las redes neuronales mediante la eliminación de parámetros innecesarios. Al igual que un jardinero poda las ramas muertas o demasiado crecidas para ayudar a que un árbol prospere, los algoritmos de poda identifican y eliminan weights and biases que contribuyen poco al poder predictivo de un modelo. El objetivo principal es crear un modelo comprimido y «escaso» que mantenga una alta precisión y, al mismo tiempo, consuma mucho menos memoria y energía. Esta reducción es esencial para mejorar la latencia de la inferencia, lo que permite que las arquitecturas avanzadas funcionen de manera eficiente en hardware con recursos limitados, como teléfonos móviles y dispositivos integrados.
Los modelos modernos de aprendizaje profundo suelen estar sobreparametrizados, lo que significa que contienen muchas más conexiones de las necesarias para resolver una tarea específica. La poda aprovecha esto eliminando las conexiones que tienen valores cercanos a cero, bajo el supuesto de que tienen un impacto insignificante en el resultado. Después de eliminar los parámetros, el modelo suele someterse a un proceso de ajuste fino, en el que se vuelve a entrenar brevemente para ajustar los pesos restantes y recuperar cualquier pérdida de rendimiento. Este concepto está estrechamente relacionado con la hipótesis del billete de lotería, que sugiere que las redes grandes contienen subredes más pequeñas y altamente eficientes capaces de alcanzar una precisión similar.
Existen dos categorías principales de estrategias de poda:
La poda es indispensable para habilitar la IA periférica en diversas industrias donde los recursos de hardware son limitados:
Aunque los modelos de última generación como YOLO26 están diseñados para ser eficientes, los desarrolladores pueden aplicar la poda para optimizar aún más las capas utilizando bibliotecas como PyTorch. El siguiente ejemplo muestra cómo aplicar una poda no estructurada a una capa convolucional.
import torch
import torch.nn.utils.prune as prune
# Initialize a standard convolutional layer
layer = torch.nn.Conv2d(in_channels=3, out_channels=32, kernel_size=3)
# Apply L1 unstructured pruning to remove 30% of weights with the lowest magnitude
prune.l1_unstructured(layer, name="weight", amount=0.3)
# Verify sparsity (percentage of zero parameters)
sparsity = 100.0 * float(torch.sum(layer.weight == 0)) / layer.weight.nelement()
print(f"Sparsity achieved: {sparsity:.2f}%")
Para optimizar eficazmente un modelo para su implementación, es útil distinguir la poda de otras estrategias:
Para una gestión integral del ciclo de vida, que incluye la formación, la anotación y la implementación de modelos optimizados, los usuarios pueden aprovechar la Ultralytics . Esto simplifica el flujo de trabajo, desde la gestión de conjuntos de datos hasta la exportación de modelos en formatos compatibles con el hardware, como ONNX o TensorRT.