Optimice los modelos de IA con la poda: reduzca la complejidad, aumente la eficiencia e implemente más rápido en dispositivos edge sin sacrificar el rendimiento.
La poda es una técnica fundamental aprendizaje automático para reducir el tamaño y la complejidad computacional de una computacional de una red neuronal (NN ) innecesarios. Al igual que se podan las ramas muertas de un árbol para que crezcan sanas, la poda de modelos identifica y identifica y elimina los pesos o conexiones que contribuyen mínimamente al resultado del sistema. El objetivo principal es crear un modelo disperso que mantenga una alta precisión, reduciendo significativamente el uso de memoria y la latencia de la inferencia. Este proceso es esencial para desplegar arquitecturas sofisticadas, como Ultralytics YOLO11en dispositivos con recursos limitados donde el almacenamiento y la capacidad de procesamiento son limitados.
El proceso suele comenzar con un modelo preentrenado. Los algoritmos analizan la red para encontrar parámetros -a menudo representados como tensores- que tengan valores cercanos a cero o un impacto limitado en la predicción final. representados como tensores- que tienen valores cercanos a cero o un impacto limitado en la predicción final. Estos parámetros se se eliminan o "reducen a cero". Dado que la eliminación de conexiones puede degradar temporalmente el rendimiento, el modelo suele someterse a un proceso denominado ajuste fino, en el que para que los pesos restantes se ajusten y recuperen el rendimiento perdido. restantes se ajusten y recuperen la precisión perdida.
Existen dos categorías principales de poda:
Es importante distinguir la poda de otras estrategias de optimización de modelos, aunque a menudo se utilizan conjuntamente:
La poda desempeña un papel vital en la habilitación de Edge AI en varios sectores:
En Ultralytics YOLO están altamente optimizados, los desarrolladores pueden experimentar con la poda utilizando las utilidades estándar PyTorch . El siguiente ejemplo muestra cómo aplicar la poda no estructurada a una capa convolucional estándar que se encuentra en los modelos de visión por ordenador.
import torch
import torch.nn.utils.prune as prune
from ultralytics.nn.modules import Conv
# Initialize a standard convolutional block used in YOLO models
layer = Conv(c1=64, c2=128)
# Apply L1 unstructured pruning to remove 30% of the lowest magnitude weights
prune.l1_unstructured(layer.conv, name="weight", amount=0.3)
# Verify the sparsity (percentage of zero weights)
sparsity = float(torch.sum(layer.conv.weight == 0)) / layer.conv.weight.nelement()
print(f"Layer sparsity achieved: {sparsity:.2%}")
Los futuros avances en arquitectura eficiente, como el próximo YOLO26, pretenden integrar estos principios de optimización de forma nativa, creando modelos más pequeños, más rápidos y más precisos por diseño. principios de optimización de forma nativa, creando modelos más pequeños, más rápidos y más precisos por diseño.