Model Pruning
Saiba como a poda de modelos reduz o tamanho e a complexidade das redes neurais para Edge AI. Explore estratégias para otimizar o Ultralytics YOLO26 para uma inferência móvel mais rápida.
A poda de modelos é uma técnica de machine learning utilizada para reduzir o tamanho e a complexidade computacional de uma rede neural, removendo sistematicamente parâmetros desnecessários. Tal como um jardineiro poda ramos mortos ou crescidos em excesso para ajudar uma árvore a prosperar, os programadores podam redes artificiais para as tornar mais rápidas, menores e energeticamente mais eficientes. Este processo é essencial para implementar arquiteturas modernas de deep learning em dispositivos com recursos limitados, como smartphones, sensores incorporados e hardware de computação de borda.
Como funciona a poda de modelos#
A ideia central da poda é que as redes neurais profundas são frequentemente "sobreparametrizadas", o que significa que contêm significativamente mais pesos e vieses do que o estritamente necessário para resolver um problema específico. Durante o processo de treino, o modelo aprende um vasto número de ligações, mas nem todas contribuem igualmente para o resultado final. Os algoritmos de poda analisam o modelo treinado para identificar estas ligações redundantes ou não informativas — normalmente aquelas cujos pesos estão próximos de zero — e removê-las.
O ciclo de vida de um modelo podado geralmente segue estas etapas:
-
Treino: Um modelo grande é treinado até à convergência para captar características complexas.
-
Poda: Os parâmetros de baixa importância são definidos como zero ou removidos fisicamente da estrutura da rede.
-
Ajuste fino: O modelo passa por uma segunda ronda de ajuste fino para permitir que os parâmetros restantes se ajustem e recuperem qualquer precisão perdida durante a fase de poda.
Esta metodologia é frequentemente associada à Hipótese do Bilhete de Loteria, que sugere que as redes densas contêm sub-redes mais pequenas e isoladas (bilhetes vencedores) capazes de alcançar uma precisão comparável à do modelo original quando treinadas isoladamente.
Tipos de estratégias de poda#
Os métodos de poda são geralmente categorizados com base na estrutura dos componentes removidos.
- Poda não estruturada: Esta abordagem remove pesos individuais em qualquer ponto do modelo com base num limiar (por exemplo, a magnitude). Embora reduza efetivamente o número de parâmetros, resulta em matrizes esparsas que podem ser difíceis de processar eficientemente pelo hardware convencional. Sem software especializado ou aceleradores de hardware, a poda não estruturada pode não proporcionar melhorias significativas de velocidade.
- Poda estruturada: Este método remove estruturas geométricas completas, como canais, filtros ou camadas, dentro de uma rede neural convolucional (CNN). Ao preservar a estrutura de matriz densa, o modelo podado mantém-se compatível com hardware convencional GPU e CPU, proporcionando melhorias diretas na latência de inferência e no débito.
Aplicações no mundo real#
A poda é um facilitador essencial para a IA de borda, permitindo que modelos sofisticados sejam executados em ambientes onde a conectividade à nuvem não está disponível ou é demasiado lenta.
- Deteção de objetos em dispositivos móveis: As aplicações em dispositivos móveis, como a tradução de idiomas em tempo real ou a realidade aumentada, utilizam modelos podados para preservar a autonomia da bateria e reduzir a utilização de memória. Arquiteturas otimizadas como YOLO26 são frequentemente escolhidas como base para estas tarefas devido à sua eficiência inerente.
- Segurança automóvel: Os carros autónomos e os veículos autónomos exigem tomadas de decisão em frações de segundo. Os modelos podados permitem que os computadores de bordo processem imagens de câmaras de alta resolução para detetar peões, sem a latência causada pela transmissão de dados para um servidor.
- IoT industrial: Na indústria transformadora, os sistemas de inspeção visual nas linhas de montagem utilizam modelos leves para detetar defeitos. A poda garante que estes sistemas possam ser executados em microcontroladores económicos, em vez de dispendiosas racks de servidores.
Poda vs. técnicas de otimização relacionadas#
Embora a poda de modelos seja uma ferramenta poderosa, é frequentemente confundida com outras técnicas de otimização de modelos ou utilizada em conjunto com elas.
- Poda vs. quantização: A poda reduz o número de parâmetros (ligações) do modelo. Em contrapartida, a quantização de modelos reduz a precisão desses parâmetros, por exemplo, convertendo números de ponto flutuante de 32 bits em inteiros de 8 bits. Ambas são frequentemente combinadas para maximizar a eficiência na implementação de modelos.
- Poda vs. destilação de conhecimento: A poda modifica o modelo original, removendo partes. A destilação de conhecimento envolve treinar um modelo "aluno" completamente novo e mais pequeno para imitar o comportamento de um modelo "professor" maior.
Exemplo de Implementação#
O exemplo seguinte em Python demonstra como aplicar poda não estruturada a uma camada convolucional utilizando PyTorch. Este é um passo 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 os utilizadores que pretendem gerir todo o ciclo de vida dos seus conjuntos de dados e modelos — incluindo treino, avaliação e implementação — a Ultralytics Platform disponibiliza uma interface simplificada. Esta facilita o processo de criação de modelos altamente otimizados, como YOLO26, e da sua exportação para formatos compatíveis com hardware, como TensorRT ou CoreML.









