A poda de modelos é uma técnica de aprendizagem automática (ML) utilizada para otimizar modelos treinados, reduzindo o seu tamanho e complexidade. Isto envolve a identificação e remoção de parâmetros menos importantes, tais como pesos de modelos ou ligações dentro de uma rede neural (NN), que contribuem minimamente para o desempenho global do modelo. O objetivo principal é criar modelos mais pequenos e mais rápidos que exijam menos potência computacional e memória, muitas vezes sem uma diminuição significativa da precisão. Este processo é uma aplicação específica do conceito mais amplo de poda aplicado diretamente aos modelos de ML, tornando-os mais eficientes para a implementação.
Porquê utilizar a poda de modelos?
O principal fator para a poda de modelos é a eficiência. Os modelos modernos de aprendizagem profunda (DL), especialmente em domínios como a visão computacional (CV), podem ser extremamente grandes e computacionalmente intensivos. Isto coloca desafios à implementação de modelos, especialmente em dispositivos com recursos limitados, como smartphones, sistemas incorporados ou em cenários de computação de ponta. A poda de modelos ajuda a resolver esses problemas ao:
- Reduz o tamanho do modelo: Os modelos mais pequenos requerem menos espaço de armazenamento, o que é crucial para dispositivos com capacidade de memória limitada, como os utilizados na IA do Edge.
- Aumenta a velocidade de inferência: Menos parâmetros significam menos cálculos, o que leva a uma menor latência de inferência e permite capacidades de inferência em tempo real, essenciais para aplicações como veículos autónomos. A aplicaçãoUltralytics HUB beneficia de tais optimizações para a implementação móvel.
- Diminui o consumo de energia: A redução da carga computacional traduz-se numa menor utilização de energia, contribuindo para práticas de IA mais sustentáveis e para uma maior duração da bateria em dispositivos móveis.
- Melhora a generalização: Por vezes, a poda pode ajudar a reduzir o sobreajuste através da remoção de parâmetros redundantes, melhorando potencialmente o desempenho do modelo em dados não vistos.
Tipos de poda de modelos
As técnicas de poda de modelos variam, mas geralmente dividem-se em categorias baseadas na granularidade do que é removido:
- Poda de pesos (não estruturada): Os pesos individuais abaixo de um determinado limite de importância (geralmente baseado em magnitude) são removidos (definidos como zero). Isso pode levar a modelos esparsos, mas pode exigir hardware ou software especializado, como as ferramentas daNVIDIA para modelos esparsos, para uma aceleração ideal.
- Poda de neurônios: Neurónios inteiros (e suas conexões) considerados sem importância são removidos da rede.
- Poda de filtro/canal (estruturada): Remove filtros ou canais inteiros em Redes Neurais Convolucionais (CNNs). Essa abordagem de poda estruturada geralmente leva a acelerações mais diretas em hardware padrão sem a necessidade de bibliotecas especializadas. Ferramentas como o DeepSparse daNeural Magic aproveitam a esparsidade para aceleração CPU , muitas vezes combinada com a podaYOLOv5 tutorialYOLOv5 com Neural Magic ).
A poda pode ocorrer depois de o modelo estar totalmente treinado ou ser integrada no processo de treino. Após a poda, os modelos são normalmente submetidos a um ajuste fino (mais treino na arquitetura mais pequena) para recuperar qualquer desempenho perdido durante a remoção de parâmetros. Estruturas como PyTorch fornecem utilitários para implementar vários métodos de poda, como mostrado no Tutorial de podaPyTorch .
Aplicações no mundo real
A poda de modelos é útil em muitos domínios da IA:
- Otimização da deteção de objectos em dispositivos de borda: Modelos como Ultralytics YOLO utilizados para a deteção de objectos podem ser reduzidos para serem executados de forma eficiente em hardware com recursos limitados, como um Raspberry Pi, o Edge TPU daGoogle ou oNVIDIA Jetson. Isto permite aplicações como vigilância no dispositivo, monitorização do tráfego(blogue otimização da gestão do tráfego) ou navegação robótica(blogue integração da CV na robótica).
- Implantação local de grandes modelos de linguagem (LLMs): As técnicas de poda podem reduzir significativamente o tamanho de modelos grandes, como os baseados na arquitetura Transformer, permitindo que sejam executados diretamente nos dispositivos do utilizador (por exemplo, smartphones) para tarefas como o processamento de linguagem natural (PNL) sem conetividade constante à nuvem. Isto aumenta a privacidade dos dados e reduz a latência para aplicações como a tradução no dispositivo ou assistentes inteligentes.
Poda vs. outras técnicas de otimização
A poda de modelos é uma das várias técnicas utilizadas para a otimização de modelos. É diferente de, mas muitas vezes complementar a:
- Quantização do modelo: Reduz a precisão numérica dos pesos e ativações do modelo (por exemplo, de floats de 32 bits para inteiros de 8 bits), diminuindo o tamanho do modelo e acelerando a computação, especialmente em hardware com suporte especializado, como o TensorRT.
- Destilação de conhecimento: Treina um modelo "aluno" menor para imitar o comportamento de um modelo "professor" maior e pré-treinado. O objetivo é transferir o conhecimento do modelo grande para um modelo mais compacto.
Estas técnicas podem ser combinadas; por exemplo, um modelo pode ser podado primeiro e depois quantizado para obter a máxima eficiência. Os modelos optimizados são frequentemente exportados para formatos padrão como ONNXUltralytics opções de exportaçãoUltralytics ) para ampla compatibilidade de implantação. Plataformas como o Ultralytics HUB fornecem ambientes para gerenciar modelos, conjuntos de dados(como COCO) e simplificar o caminho para a implantação otimizada.