O que é a otimização de modelos? Um guia rápido
Saiba como técnicas de otimização de modelos, como ajuste de hiperparâmetros, poda de modelos e quantização de modelos, podem ajudar os modelos de visão computacional a funcionar com mais eficiência.

A otimização de modelos é um processo que visa melhorar a eficiência e o desempenho dos modelos de aprendizagem automática. Ao aperfeiçoar a estrutura e o funcionamento de um modelo, a otimização permite que os modelos produzam melhores resultados com o mínimo de recursos computacionais e reduzam o tempo de treino e avaliação.
Este processo é especialmente importante em áreas como a visão computacional, onde os modelos frequentemente necessitam de recursos substanciais para analisar imagens complexas. Em ambientes com recursos limitados, como dispositivos móveis ou sistemas edge, os modelos otimizados podem funcionar bem com recursos limitados, mantendo a precisão.
São normalmente utilizadas várias técnicas para otimizar modelos, incluindo o ajuste de hiperparâmetros, a poda de modelos, a quantização de modelos e a precisão mista. Neste artigo, vamos explorar estas técnicas e os benefícios que trazem para as aplicações de visão computacional. Vamos começar!
Compreender a otimização de modelos#
Os modelos de visão computacional normalmente têm camadas profundas e estruturas complexas, excelentes para reconhecer padrões intrincados em imagens, mas também podem exigir bastante poder de processamento. Quando estes modelos são implementados em dispositivos com hardware limitado, como telemóveis ou dispositivos edge, podem enfrentar determinados desafios ou limitações.
O poder de processamento, a memória e a energia limitados destes dispositivos podem causar reduções percetíveis no desempenho, uma vez que os modelos têm dificuldade em acompanhar o ritmo. As técnicas de otimização de modelos são fundamentais para lidar com estas questões. Ajudam a simplificar o modelo, reduzem as suas necessidades computacionais e garantem que continua a funcionar eficazmente, mesmo com recursos limitados. A otimização de modelos pode ser feita simplificando a arquitetura do modelo, reduzindo a precisão dos cálculos ou removendo componentes desnecessários para tornar o modelo mais leve e rápido.

Fig. 1. Razões para otimizar os seus modelos. Imagem do autor.
Eis algumas das técnicas de otimização de modelos mais comuns, que iremos explorar com mais detalhe nas secções seguintes:
- Ajuste de hiperparâmetros: envolve o ajuste sistemático de hiperparâmetros, como a taxa de aprendizagem e o tamanho do lote, para melhorar o desempenho do modelo.
- Poda de modelos: esta técnica remove pesos e ligações desnecessários da rede neuronal, reduzindo a sua complexidade e o custo computacional.
- Quantização de modelos: a quantização consiste em reduzir a precisão dos pesos e das ativações do modelo, normalmente de 32 bits para 16 ou 8 bits, reduzindo significativamente a ocupação de memória e os requisitos computacionais.
- Ajustes de precisão: também conhecida como treino de precisão mista, esta técnica utiliza diferentes formatos de precisão para diferentes partes do modelo e otimiza a utilização dos recursos sem comprometer a precisão.
Explicação: hiperparâmetros em modelos de aprendizagem automática#
Podes ajudar um modelo a aprender e a ter um melhor desempenho ajustando os seus hiperparâmetros — definições que determinam como o modelo aprende com os dados. O ajuste de hiperparâmetros é uma técnica para otimizar estas definições, melhorando a eficiência e a precisão do modelo. Ao contrário dos parâmetros que o modelo aprende durante o treino, os hiperparâmetros são valores predefinidos que orientam o processo de treino.
Vejamos alguns exemplos de hiperparâmetros que podem ser ajustados:
- Taxa de aprendizagem: este parâmetro controla o tamanho do passo que o modelo dá para ajustar os seus pesos internos. Uma taxa de aprendizagem mais elevada pode acelerar a aprendizagem, mas aumenta o risco de não encontrar a solução ideal, enquanto uma taxa mais baixa pode ser mais precisa, mas também mais lenta.
- Tamanho do lote: define quantas amostras de dados são processadas em cada passo do treino. Lotes maiores proporcionam uma aprendizagem mais estável, mas necessitam de mais memória. Lotes menores treinam mais rapidamente, mas podem ser menos estáveis.
- Épocas: podes determinar quantas vezes o modelo vê o conjunto de dados completo utilizando este parâmetro. Mais épocas podem melhorar a precisão, mas aumentam o risco de sobreajuste.
- Tamanho do kernel: define o tamanho do filtro nas redes neuronais convolucionais (CNNs). Kernels maiores captam padrões mais amplos, mas necessitam de mais processamento; kernels menores concentram-se em detalhes mais finos.
Como funciona o ajuste de hiperparâmetros#
O ajuste de hiperparâmetros começa geralmente por definir um intervalo de valores possíveis para cada hiperparâmetro. De seguida, um algoritmo de pesquisa explora diferentes combinações dentro desses intervalos para identificar as definições que produzem o melhor desempenho.
Os métodos de ajuste comuns incluem a pesquisa em grelha, a pesquisa aleatória e a otimização bayesiana. A pesquisa em grelha testa todas as combinações possíveis de valores dentro dos intervalos especificados. A pesquisa aleatória seleciona combinações ao acaso, encontrando frequentemente definições eficazes mais rapidamente. A otimização bayesiana utiliza um modelo probabilístico para prever valores de hiperparâmetros promissores com base nos resultados anteriores. Normalmente, esta abordagem reduz o número de tentativas necessárias.
Em última análise, o desempenho do modelo é avaliado para cada combinação de hiperparâmetros. O processo é repetido até serem obtidos os resultados pretendidos.
Hiperparâmetros vs. parâmetros do modelo#
Ao trabalhar no ajuste de hiperparâmetros, podes perguntar-te qual é a diferença entre hiperparâmetros e parâmetros do modelo.
Os hiperparâmetros são valores definidos antes do treino que controlam a forma como o modelo aprende, como a taxa de aprendizagem ou o tamanho do lote. Estas definições permanecem fixas durante o treino e influenciam diretamente o processo de aprendizagem. Já os parâmetros do modelo são aprendidos pelo próprio modelo durante o treino. Incluem pesos e enviesamentos, que se ajustam à medida que o modelo treina e, em última análise, orientam as suas previsões. Essencialmente, os hiperparâmetros moldam o percurso de aprendizagem, enquanto os parâmetros do modelo são o resultado desse processo de aprendizagem.

Fig. 2. Comparação entre parâmetros e hiperparâmetros.
Porque é importante podar modelos na aprendizagem profunda#
A poda de modelos é uma técnica de redução de tamanho que remove pesos e parâmetros desnecessários de um modelo, tornando-o mais eficiente. Na visão computacional, especialmente com redes neuronais profundas, um grande número de parâmetros, como pesos e ativações (saídas intermédias que ajudam a calcular a saída final), pode aumentar tanto a complexidade como as exigências computacionais. A poda ajuda a simplificar o modelo, identificando e removendo parâmetros que contribuem minimamente para o desempenho, resultando num modelo mais leve e eficiente.

Fig. 3. Antes e depois da poda do modelo.
Depois de o modelo ser treinado, técnicas como a poda baseada na magnitude ou a análise de sensibilidade podem avaliar a importância de cada parâmetro. Os parâmetros de baixa importância são então podados, utilizando uma de três técnicas principais: poda de pesos, poda de neurónios ou poda estruturada.
A poda de pesos remove ligações individuais com impacto mínimo na saída. A poda de neurónios remove neurónios inteiros cujas saídas contribuem pouco para o funcionamento do modelo. A poda estruturada elimina secções maiores, como filtros convolucionais ou neurónios em camadas totalmente ligadas, otimizando a eficiência do modelo. Após a conclusão da poda, o modelo é novamente treinado para ajustar os parâmetros restantes, garantindo que mantém uma elevada precisão numa forma reduzida.
Reduzir a latência dos modelos de IA com quantização#
A quantização de modelos reduz o número de bits utilizados para representar os pesos e as ativações de um modelo. Normalmente, converte valores de vírgula flutuante de 32 bits e alta precisão para uma precisão inferior, como inteiros de 16 ou 8 bits. Ao reduzir a precisão em bits, a quantização diminui significativamente o tamanho do modelo, a ocupação de memória e o custo computacional.
Na visão computacional, os valores de vírgula flutuante de 32 bits são padrão, mas a conversão para 16 ou 8 bits pode melhorar a eficiência. Existem dois tipos principais de quantização: quantização de pesos e quantização de ativações. A quantização de pesos reduz a precisão dos pesos do modelo, equilibrando a redução de tamanho com a precisão. A quantização de ativações reduz a precisão das ativações, diminuindo ainda mais as exigências de memória e computação.

Fig. 4. Um exemplo de quantização de vírgula flutuante de 32 bits para inteiro de 8 bits.
Como a precisão mista acelera as inferências de IA#
A precisão mista é uma técnica que utiliza diferentes precisões numéricas para várias partes de uma rede neuronal. Ao combinar valores de maior precisão, como números de vírgula flutuante de 32 bits, com valores de menor precisão, como números de vírgula flutuante de 16 ou 8 bits, a precisão mista permite que os modelos de visão computacional acelerem o treino e reduzam a utilização de memória sem sacrificar a precisão.
Durante o treino, a precisão mista é obtida utilizando uma precisão inferior em camadas específicas, mantendo uma precisão superior onde for necessário na rede. Isto é feito através de conversão de tipos e escalonamento da perda. A conversão de tipos altera os tipos de dados entre diferentes precisões conforme exigido pelo modelo. O escalonamento da perda ajusta a precisão reduzida para evitar o underflow numérico, garantindo um treino estável. A precisão mista é especialmente útil para modelos grandes e tamanhos de lote grandes.

Fig. 5. O treino de precisão mista utiliza tipos de vírgula flutuante de 16 bits (FP16) e 32 bits (FP32).
Equilibrar a precisão e a eficiência do modelo#
Agora que abordámos várias técnicas de otimização de modelos, vamos discutir como decidir qual utilizar com base nas tuas necessidades específicas. A escolha depende de fatores como o hardware disponível, as restrições computacionais e de memória do ambiente de implementação, e o nível de precisão necessário.
Por exemplo, modelos mais pequenos e rápidos são mais adequados para dispositivos móveis com recursos limitados, enquanto modelos maiores e mais precisos podem ser utilizados em sistemas de alto desempenho. Vê como cada técnica se alinha com diferentes objetivos:
- Poda: é ideal para reduzir o tamanho do modelo sem afetar significativamente a precisão, sendo perfeita para dispositivos com recursos limitados, como telemóveis ou dispositivos da Internet das Coisas (IoT).
- Quantização: é uma excelente opção para reduzir o tamanho do modelo e acelerar a inferência, especialmente em dispositivos móveis e sistemas incorporados com memória e poder de processamento limitados. Funciona bem em aplicações nas quais são aceitáveis ligeiras reduções de precisão.
- Precisão mista: concebida para modelos de grande escala, esta técnica reduz a utilização de memória e acelera o treino em hardware como GPUs e TPUs que suportam operações de precisão mista. É frequentemente utilizada em tarefas de alto desempenho nas quais a eficiência é importante.
- Ajuste de hiperparâmetros: embora seja computacionalmente intensivo, é essencial para aplicações que exigem elevada precisão, como imagiologia médica ou condução autónoma.
Principais conclusões#
A otimização de modelos é uma parte vital da aprendizagem automática, especialmente para implementar IA em aplicações do mundo real. Técnicas como o ajuste de hiperparâmetros, a poda de modelos, a quantização e a precisão mista ajudam a melhorar o desempenho, a eficiência e a utilização de recursos dos modelos de visão computacional. Estas otimizações tornam os modelos mais rápidos e menos exigentes em recursos, o que é ideal para dispositivos com memória e poder de processamento limitados. Os modelos otimizados também são mais fáceis de dimensionar e implementar em diferentes plataformas, permitindo soluções de IA eficazes e adaptáveis a uma ampla variedade de utilizações.
Visita o repositório do GitHub da Ultralytics e junta-te à nossa comunidade para saberes mais sobre aplicações de IA na indústria e na agricultura.









