Poda de modelos
Optimize os modelos de aprendizagem automática com a poda de modelos. Obtenha inferência mais rápida, uso reduzido de memória e eficiência energética para implantações com recursos limitados.
A poda de modelos é uma técnica de otimização de modelos que torna as redes neuronais mais pequenas e mais eficientes do ponto de vista computacional. A ideia central é identificar e remover parâmetros redundantes ou sem importância (pesos, neurónios ou canais) de um modelo treinado. Este processo reduz o tamanho do modelo e pode acelerar significativamente a inferência, tornando-o ideal para implantação em dispositivos de ponta com memória e poder de processamento limitados. O conceito baseia-se na observação de que muitos modelos grandes são excessivamente parametrizados, o que significa que contêm componentes que contribuem muito pouco para a previsão final. Artigos seminais como Optimal Brain Damage estabeleceram desde cedo que nem todos os parâmetros são iguais.
Tipos de poda de modelos
As técnicas de poda de modelos são normalmente categorizadas pela granularidade do que é removido da rede:
- Poda de pesos (não estruturada): Este é o método mais refinado, em que os pesos individuais do modelo com valores abaixo de um determinado limite são definidos como zero. Isso cria um modelo "esparso", que pode ser altamente compactado. No entanto, muitas vezes requer hardware especializado ou bibliotecas de software, como as ferramentas da NVIDIA para modelos esparsos, para obter acelerações significativas durante a inferência.
- Poda de neurónios: Nesta abordagem, neurónios inteiros e todas as suas ligações de entrada e saída são removidos se forem considerados sem importância. Esta é uma forma mais estruturada de poda do que a remoção de pesos individuais.
- Poda de filtro/canal (estruturada): Particularmente relevante para Redes Neurais Convolucionais (CNNs), este método remove filtros ou canais inteiros. Como ele preserva a estrutura densa e regular das camadas da rede, essa abordagem geralmente resulta em ganhos diretos de desempenho em hardware padrão sem a necessidade de bibliotecas especializadas. Ferramentas como o DeepSparse da Neural Magic são projetadas para acelerar esses modelos esparsos em CPUs.
Após a poda, os modelos são normalmente submetidos a um ajuste fino, que envolve o retreinamento da rede mais pequena durante algumas épocas para recuperar qualquer precisão perdida durante a remoção de parâmetros. A famosa Hipótese do Bilhete de Lotaria sugere que, dentro de uma grande rede, existe uma sub-rede mais pequena que pode atingir um desempenho semelhante quando treinada de raiz. Estruturas como o PyTorch oferecem ferramentas internas para implementação, conforme demonstrado no tutorial oficial do PyTorch Pruning.
Aplicações no mundo real
A poda de modelos é fundamental para a implementação de modelos de IA eficientes em vários cenários:
- Otimização da deteção de objetos em dispositivos de borda: Modelos como o Ultralytics YOLO podem ser podados para serem executados com eficiência para tarefas de deteção de objetos em hardware com recursos limitados, como um Raspberry Pi ou NVIDIA Jetson. Isso permite aplicações em tempo real, como gerenciamento de tráfego, vigilância inteligente e integração da visão computacional na robótica.
- Implementação local de grandes modelos de linguagem (LLMs): A poda é utilizada para reduzir modelos maciços baseados na arquitetura Transformer, permitindo-lhes funcionar em dispositivos como smartphones para tarefas de processamento de linguagem natural (PNL). Esta abordagem, por vezes combinada com outras técnicas como a quantização, permite a criação de assistentes de IA e aplicações de tradução poderosas no dispositivo, melhorando simultaneamente a privacidade dos dados e reduzindo a latência. A investigação e as ferramentas de organizações como a Hugging Face exploram a poda de LLM.
Poda vs. outras técnicas de otimização
A poda de modelos é uma das várias técnicas complementares de otimização de modelos:
- Quantização de modelos: Esta técnica reduz a precisão numérica dos pesos e activações do modelo (por exemplo, de números de vírgula flutuante de 32 bits para números inteiros de 8 bits). Ao contrário da poda, que remove parâmetros, a quantização torna os parâmetros existentes mais pequenos em tamanho. É frequentemente aplicada após a poda para otimização máxima, especialmente quando se visa hardware com suporte especializado como o TensorRT.
- Destilação do conhecimento: Este método envolve o treino de um modelo "aluno" mais pequeno para imitar o resultado de um modelo "professor" maior e pré-treinado. O objetivo é transferir os conhecimentos adquiridos pelo professor para uma arquitetura mais compacta. Isto difere da poda, que reduz um modelo já treinado em vez de treinar um novo.
Em última análise, estas técnicas podem ser utilizadas em combinação para criar modelos altamente eficientes. Uma vez otimizado, um modelo pode ser exportado para formatos padrão como ONNX usando as opções de exportação do Ultralytics para ampla implantação em diferentes mecanismos de inferência. Plataformas como o Ultralytics HUB fornecem as ferramentas para gerenciar todo o ciclo de vida dos modelos de visão computacional, desde o treinamento até a implantação otimizada.