Otimize modelos de machine learning com a poda de modelo. Alcance uma inferência mais rápida, uso de memória reduzido e eficiência energética para implementações com recursos limitados.
A poda de modelos é uma técnica de otimização de modelos concebida para reduzir o tamanho e a complexidade computacional das redes neurais, removendo parâmetros parâmetros desnecessários. À medida que os modelos de inteligência artificial aumentam de tamanho para atingir um desempenho mais alto, eles geralmente se tornam sobre-parametrizados, contendo muitas ligações ou neurónios que pouco contribuem para o resultado final. Ao identificar e eliminando esses componentes redundantes, os desenvolvedores podem criar modelos mais enxutos que requerem menos memória e energia e energia, ao mesmo tempo que proporcionam uma inferência mais rápida em tempo real. Este processo é particularmente vital para a implementação de arquitecturas sofisticadas como YOLO11 em hardware onde os recursos são escassos, como telemóveis ou sensores incorporados.
O processo de poda envolve normalmente três fases principais: formação, poda e ajuste fino. Inicialmente, um modelo grande é treinado para convergência para captar caraterísticas complexas. Durante a fase de poda, um algoritmo avalia a importância de parâmetros específicos parâmetros específicos - geralmente weights and biases-baseados em critérios como a magnitude ou a sensibilidade. Os parâmetros considerados insignificantes são definidos como zero ou totalmente eliminados.
No entanto, o simples corte de partes de uma rede pode degradar a sua precisão. Para contrariar este facto, o modelo é submetido a uma subsequente de reciclagem, conhecida como ajuste fino. Esta etapa permite que os parâmetros restantes se ajustem e compensar as ligações em falta, restaurando frequentemente o desempenho do modelo para níveis próximos dos originais. A A eficácia desta abordagem é apoiada pela A eficácia desta abordagem é apoiada pela Hipótese do Bilhete de Lotaria, que sugere que as redes densas contêm que sugere que as redes densas contêm sub-redes mais pequenas capazes de atingir uma precisão comparável quando treinadas isoladamente.
As estratégias de poda são geralmente classificadas de acordo com a estrutura dos componentes que estão a ser removidos:
Embora ambas sejam técnicas de otimização populares, é importante distinguir a poda da quantização de modelos. A poda centra-se na redução o número de parâmetros (ligações ou neurónios), alterando efetivamente a arquitetura do modelo. Em Em contraste, a quantização reduz a precisão desses parâmetros, por exemplo, convertendo números de por exemplo, convertendo números de ponto flutuante de 32 bits em números inteiros de 8 bits. Estes métodos são frequentemente complementares; um programador pode começar por podar um modelo para remover a redundância e, em seguida, quantizá-lo para minimizar ainda mais o espaço de memória para implantação.
A poda desempenha um papel fundamental para tornar a visão computacional avançada visão computacional avançada acessível em cenários práticos:
Frameworks como PyTorch fornecem utilitários incorporados para aplicar poda de forma programática. O exemplo a seguir demonstra como aplicar a poda não estruturada a uma camada convolucional uma operação comum antes de exportar um modelo para um formato otimizado como o ONNX.
import torch
import torch.nn.utils.prune as prune
# Initialize a standard convolutional layer
layer = torch.nn.Conv2d(in_channels=3, out_channels=64, kernel_size=3)
# Apply L1 unstructured pruning to remove 30% of the connections
# This sets the smallest 30% of weights (by absolute value) to zero
prune.l1_unstructured(layer, name="weight", amount=0.3)
# Verify sparsity: calculate the percentage of zero parameters
sparsity = float(torch.sum(layer.weight == 0)) / layer.weight.nelement()
print(f"Layer sparsity: {sparsity:.2%}")