Saiba como a poda de modelos reduz o tamanho e a complexidade da rede neural para IA de ponta. Explore estratégias para otimizar Ultralytics para uma inferência mais rápida em dispositivos móveis.
A poda de modelos é uma técnica de aprendizagem automática usada para reduzir o tamanho e a complexidade computacional de uma rede neural, removendo sistematicamente parâmetros desnecessários. Assim como um jardineiro poda galhos mortos ou crescidos demais para estimular o crescimento de uma árvore, os desenvolvedores podam redes artificiais para torná-las mais rápidas, menores e mais eficientes em termos de energia. Esse processo é essencial para a implantação de arquiteturas modernas de aprendizagem profunda em dispositivos com recursos limitados, como smartphones, sensores incorporados e hardware de computação de ponta.
A ideia central por trás da poda é que as redes neurais profundas são frequentemente "superparametrizadas", o que significa que contêm significativamente mais weights and biases do que o estritamente necessário para resolver um problema específico. Durante o processo de treino, o modelo aprende um grande número de conexões, mas nem todas contribuem igualmente para o resultado final. Os algoritmos de poda analisam o modelo treinado para identificar essas conexões redundantes ou não informativas — normalmente aquelas com pesos próximos de zero — e removê-las.
O ciclo de vida de um modelo podado geralmente segue estas etapas:
Essa metodologia é frequentemente associada à Hipótese do Bilhete de Loteria, que sugere que redes densas contêm sub-redes menores e isoladas (bilhetes premiados) que podem atingir precisão comparável ao modelo original se treinadas isoladamente.
Os métodos de poda são geralmente categorizados com base na estrutura dos componentes que estão a ser removidos.
A poda é um facilitador crítico para a IA de ponta, permitindo que modelos sofisticados sejam executados em ambientes onde a conectividade com a nuvem não está disponível ou é muito lenta.
Embora a poda de modelos seja uma ferramenta poderosa, ela é frequentemente confundida com outras técnicas de otimização de modelos ou usada em conjunto com elas.
Python a seguir demonstra como aplicar a poda não estruturada a uma camada convolucional usando PyTorch. Esta é uma etapa comum antes de exportar modelos para formatos otimizados como ONNX.
import torch
import torch.nn as nn
import torch.nn.utils.prune as prune
# Initialize a standard convolutional layer
module = nn.Conv2d(in_channels=1, out_channels=20, kernel_size=3)
# Apply unstructured pruning to remove 30% of the connections
# This sets the weights with the lowest L1-norm to zero
prune.l1_unstructured(module, name="weight", amount=0.3)
# Calculate and print the sparsity (percentage of zero elements)
sparsity = 100.0 * float(torch.sum(module.weight == 0)) / module.weight.nelement()
print(f"Layer Sparsity: {sparsity:.2f}%")
Para usuários que desejam gerenciar todo o ciclo de vida de seus conjuntos de dados e modelos — incluindo treinamento, avaliação e implantação —, a Ultralytics oferece uma interface simplificada. Ela simplifica o processo de criação de modelos altamente otimizados, como o YOLO26, e sua exportação para formatos compatíveis com hardware, como o TensorRT TensorRT ou CoreML.