A poda de modelos é uma técnica utilizada na aprendizagem automática para otimizar os modelos treinados, reduzindo o seu tamanho e complexidade. Isto é conseguido através da identificação e remoção de parâmetros menos importantes, como pesos ou ligações dentro de uma rede neural (NN), que contribuem minimamente para o desempenho geral do modelo. O objetivo é criar modelos mais pequenos e mais rápidos que exijam menos potência computacional e memória, tornando-os mais eficientes sem uma diminuição significativa da precisão. Este processo é um tipo específico de poda aplicado diretamente aos modelos de aprendizagem automática.
Porquê utilizar a poda de modelos?
A principal motivação para a poda de modelos é a eficiência. Os modelos modernos de aprendizagem profunda, embora poderosos, podem ser muito grandes e exigentes do ponto de vista computacional. Isto apresenta desafios para a implementação de modelos, especialmente em dispositivos com recursos limitados, como smartphones ou sistemas de computação de ponta. A poda de modelos aborda esses problemas ao:
- Reduz o tamanho do modelo: Os modelos mais pequenos requerem menos espaço de armazenamento, o que facilita a sua implementação em dispositivos como os que executam a aplicaçãoUltralytics HUB.
- Aumenta a velocidade de inferência: Com menos parâmetros, os modelos podados realizam cálculos mais rapidamente, reduzindo a latência da inferência. Isso é crucial para aplicações de inferência em tempo real.
- Diminui o consumo de energia: Menos cálculos significam menos consumo de energia, o que é importante para dispositivos alimentados por bateria e para promover práticas de IA sustentáveis.
- Minimiza o sobreajuste: A remoção de parâmetros redundantes pode, por vezes, ajudar os modelos a generalizar melhor para novos dados, reduzindo potencialmente o sobreajuste.
Tipos de poda de modelos
As técnicas de poda de modelos variam, mas geralmente dividem-se em categorias baseadas no que é removido:
- Poda de pesos (não estruturada): Os pesos individuais ou conexões dentro da rede que têm baixa magnitude ou importância são definidos como zero. Isso geralmente resulta em modelos esparsos, mas pode exigir hardware ou software especializado para otimizar a velocidade.
- Poda de neurônio/filtro (estruturada): Neurônios inteiros, filtros (em Redes Neurais Convolucionais (CNNs)) ou outros componentes estruturais são removidos. Isso normalmente leva a modelos mais regulares, menores e densos que são mais fáceis de acelerar em hardware padrão usando ferramentas como NVIDIA TensorRT.
A poda pode ser aplicada após a formação ou integrada no processo de formação. Muitas vezes, um modelo podado requer algum ajuste fino (treinamento adicional) para recuperar qualquer precisão perdida. Podes explorar várias estratégias de poda em recursos como o Tutorial de podaPyTorch .
Aplicações no mundo real
A poda de modelos é valiosa em muitos domínios:
- Visão computacional móvel: Ultralytics YOLO Os modelos de visão computacional utilizados para a deteção de objectos em dispositivos móveis podem ser reduzidos para serem executados de forma eficiente, permitindo a análise em tempo real diretamente no dispositivo sem necessitar de conetividade constante à nuvem. Isto é vital para aplicações implementadas em plataformas como o Raspberry Pi ou que utilizam aceleradores como o Edge TPU daGoogle.
- Sistemas autónomos: Em carros de condução autónoma ou drones, os modelos precisam de processar dados de sensores instantaneamente. A poda de modelos de perceção complexos ajuda a alcançar a baixa latência necessária para a navegação segura e a tomada de decisões, muitas vezes implantadas em hardware como o NVIDIA Jetson.
Model Pruning vs. Outras Técnicas de Otimização
A poda de modelos é uma das várias técnicas de otimização de modelos. É importante distingui-la de:
- Quantização do modelo: Reduz a precisão dos pesos e ativações do modelo (por exemplo, de floats de 32 bits para inteiros de 8 bits). Isso também reduz o tamanho e acelera a computação, mas funciona alterando o tipo de dados, não removendo parâmetros. Consulte OtimizaçãoTensorFlow Lite para obter exemplos.
- Destilação de conhecimento: Envolve o treinamento de um modelo "aluno" menor para imitar a saída de um modelo "professor" maior e pré-treinado. O objetivo é transferir conhecimentos, criando um modelo compacto sem modificar diretamente o professor. Lê o documento original sobre Destilação de Conhecimento para obteres mais detalhes.
Estas técnicas não são mutuamente exclusivas e são frequentemente combinadas com a poda para obter o máximo de benefícios de otimização. Por exemplo, um modelo pode ser podado primeiro e depois quantizado antes da implantação final. Podes encontrar orientações sobre otimização na documentaçãoUltralytics .