Pruning
Aprende cómo la poda optimiza redes neuronales como Ultralytics YOLO26 eliminando parámetros redundantes. Explora 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 un árbol a prosperar, los algoritmos de poda identifican y eliminan pesos y sesgos redundantes que contribuyen poco a la capacidad predictiva de un modelo. El objetivo principal es crear un modelo comprimido y «disperso» que mantenga una precisión elevada, a la vez que consume mucha menos memoria y energía. Esta reducción es esencial para mejorar la latencia de inferencia, lo que permite que arquitecturas avanzadas se ejecuten de forma eficiente en hardware con recursos limitados, como teléfonos móviles y dispositivos integrados.
Mecanismos y metodología#
Los modelos modernos de aprendizaje profundo suelen estar sobredimensionados en cuanto a parámetros, 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 cuyos valores están próximos a cero, bajo el supuesto de que tienen un impacto insignificante en la salida. 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 rendimiento perdido. 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.
Hay dos categorías principales de estrategias de poda:
- Poda no estructurada: este método elimina pesos individuales en función de su magnitud, independientemente de su ubicación. Aunque reduce eficazmente el número total de parámetros, crea matrices dispersas irregulares que las CPUs y GPUs estándar pueden tener dificultades para procesar de forma eficiente sin software especializado.
- Poda estructurada: este enfoque elimina estructuras geométricas completas, como neuronas, canales o capas dentro de una red neuronal convolucional (CNN). Al conservar la estructura de la matriz, la poda estructurada es altamente compatible con los aceleradores de hardware estándar y suele generar mejoras inmediatas de velocidad para la inferencia en tiempo real.
Aplicaciones en el mundo real#
La poda es indispensable para habilitar la IA perimetral en diversos sectores en los que los recursos de hardware son limitados:
-
Drones autónomos: los vehículos aéreos no tripulados utilizados en operaciones de búsqueda y rescate dependen de la visión por ordenador para navegar por entornos complejos. Los modelos podados de detección de objetos permiten que estos dispositivos procesen localmente secuencias de vídeo en tiempo real, evitando los problemas de latencia asociados a la comunicación con la nube.
-
Asistencia sanitaria móvil: los dispositivos médicos portátiles para el análisis de ecografías utilizan modelos podados para detectar anomalías directamente en el dispositivo. Esto garantiza la privacidad de los datos de los pacientes y permite realizar diagnósticos sofisticados en zonas remotas sin acceso a Internet.
Ejemplo de implementación#
Aunque los modelos de última generación, como YOLO26, están diseñados para ofrecer eficiencia, los desarrolladores pueden aplicar la poda para optimizar aún más las capas mediante bibliotecas como PyTorch. El siguiente ejemplo muestra cómo aplicar la 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}%")Poda frente a técnicas de optimización relacionadas#
Para optimizar eficazmente un modelo para su despliegue, resulta útil distinguir la poda de otras estrategias:
- Cuantización de modelos: a diferencia de la poda, que elimina conexiones, la cuantización reduce la precisión de los pesos (por ejemplo, convierte números de coma flotante de 32 bits en enteros de 8 bits). Ambas técnicas pueden utilizarse conjuntamente para maximizar la eficiencia en sistemas integrados.
- Destilación de conocimiento: consiste en entrenar un modelo «alumno» más pequeño para que imite el comportamiento de un modelo «profesor» más grande. La poda modifica directamente el modelo original, mientras que la destilación entrena una arquitectura nueva y compacta.
Para gestionar de forma integral el ciclo de vida, incluido el entrenamiento, la anotación y el despliegue de modelos optimizados, puedes utilizar la Ultralytics Platform. 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.









