Yolo Vision Shenzhen
Shenzhen
Únete ahora
Glosario

Poda

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.

Mecanismos y metodología

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:

  • Poda no estructurada: Este método elimina pesos individuales en función de su magnitud, independientemente de su ubicación. Si bien reduce eficazmente el recuento total de parámetros, crea matrices dispersas irregulares que las CPU y GPU estándar pueden tener dificultades para procesar de manera 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 preservar la estructura de la matriz, la poda estructurada es altamente compatible con los aceleradores de hardware estándar, lo que a menudo da como resultado aceleraciones inmediatas para la inferencia en tiempo real.

Aplicaciones en el mundo real

La poda es indispensable para habilitar la IA periférica en diversas industrias donde los recursos de hardware son limitados:

  1. Drones autónomos: los vehículos aéreos no tripulados utilizados para la búsqueda y el rescate se basan en la visión por ordenador para navegar por entornos complejos . Los modelos de detección de objetos podados permiten a estos dispositivos procesar las señales de vídeo localmente en tiempo real, evitando los problemas de latencia asociados a la comunicación en la nube .
  2. Atención sanitaria móvil: los dispositivos médicos portátiles para el análisis por ultrasonidos utilizan modelos podados para detect 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 aplicación

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}%")

Poda frente a técnicas de optimización relacionadas

Para optimizar eficazmente un modelo para su implementación, es útil distinguir la poda de otras estrategias:

  • Cuantificación del modelo: A diferencia de la poda, que elimina conexiones, la cuantificación reduce la precisión de los pesos (por ejemplo, convirtiendo números de punto flotante de 32 bits en enteros de 8 bits). Ambas técnicas pueden utilizarse conjuntamente para maximizar la eficiencia en sistemas integrados.
  • Destilación del conocimiento: Implica entrenar un modelo «alumno» más pequeño para que imite el comportamiento de un modelo «profesor» más grande . La poda modifica el modelo original directamente, mientras que la destilación entrena una arquitectura nueva y compacta.

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.

Únase a la comunidad Ultralytics

Únete al futuro de la IA. Conecta, colabora y crece con innovadores de todo el mundo

Únete ahora