O que é a otimização de modelos? Um guia rápido
Aprende 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 serem mais eficientes.

A otimização de modelos é um processo que visa melhorar a eficiência e o desempenho de modelos de aprendizado de máquina. Ao refinar a estrutura e a função de um modelo, a otimização torna possível que os modelos entreguem melhores resultados com recursos computacionais mínimos e tempo reduzido de treinamento e avaliação.
Esse processo é especialmente importante em áreas como visão computacional, onde modelos frequentemente exigem recursos substanciais para analisar imagens complexas. Em ambientes com recursos limitados, como dispositivos móveis ou sistemas de borda, modelos otimizados podem funcionar bem com recursos limitados, mantendo a precisão.
Várias técnicas são comumente usadas para alcançar a otimização de modelos, incluindo ajuste de hiperparâmetros, poda de modelos, quantização de modelos e precisão mista. Neste artigo, exploraremos essas técnicas e os benefícios que elas trazem para aplicações de visão computacional. Vamos começar!
Entendendo a otimização de modelos#
Modelos de visão computacional geralmente possuem camadas profundas e estruturas complexas que são ótimas para reconhecer padrões complexos em imagens, mas também podem ser bastante exigentes em termos de poder de processamento. Quando esses modelos são implantados em dispositivos com hardware limitado, como telefones celulares ou dispositivos de borda, eles podem enfrentar certos desafios ou limitações.
O poder de processamento, a memória e a energia limitados nesses dispositivos podem levar a quedas perceptíveis no desempenho, à medida que os modelos lutam para acompanhar. As técnicas de otimização de modelos são fundamentais para enfrentar essas preocupações. Elas ajudam a simplificar o modelo, reduzir suas necessidades computacionais e garantir que ele ainda possa funcionar de forma eficaz, 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 seus modelos. Imagem do autor.
Aqui estão algumas das técnicas de otimização de modelos mais comuns, que exploraremos com mais detalhes nas seções a seguir:
- Ajuste de hiperparâmetros: envolve o ajuste sistemático de hiperparâmetros, como taxa de aprendizado e tamanho do lote, para melhorar o desempenho do modelo.
- Poda de modelos: esta técnica remove pesos e conexões desnecessárias da rede neural, reduzindo sua complexidade e custo computacional.
- Quantização de modelos: a quantização envolve a redução da precisão dos pesos e ativações do modelo, normalmente de 32 bits para 16 bits ou 8 bits, reduzindo significativamente a pegada de memória e os requisitos computacionais.
- Ajustes de precisão: também conhecido como treinamento de precisão mista, envolve o uso de diferentes formatos de precisão para diferentes partes do modelo e a otimização do uso de recursos sem comprometer a precisão.
Explicado: Hiperparâmetros em modelos de machine learning#
Podes ajudar um modelo a aprender e ter um desempenho melhor ajustando seus hiperparâmetros — configurações que moldam a forma como o modelo aprende com os dados. O ajuste de hiperparâmetros é uma técnica para otimizar essas configurações, melhorando a eficiência e a precisão do modelo. Ao contrário dos parâmetros que o modelo aprende durante o treinamento, os hiperparâmetros são valores predefinidos que orientam o processo de treinamento.
Vamos percorrer alguns exemplos de hiperparâmetros que podem ser ajustados:
- Taxa de aprendizado: este parâmetro controla o tamanho do passo que o modelo dá para ajustar seus pesos internos. Uma taxa de aprendizado mais alta pode acelerar o aprendizado, mas corre o risco de perder a solução ideal, enquanto uma taxa mais baixa pode ser mais precisa, mas mais lenta.
- Tamanho do lote: define quantas amostras de dados são processadas em cada etapa de treinamento. Lotes maiores oferecem um aprendizado mais estável, mas precisam de mais memória. Lotes menores treinam mais rápido, mas podem ser menos estáveis.
- Épocas: podes determinar quantas vezes o modelo vê o conjunto de dados completo usando este parâmetro. Mais épocas podem melhorar a precisão, mas correm o risco de sobreajuste (overfitting).
- Tamanho do kernel: define o tamanho do filtro em Redes Neurais Convolucionais (CNNs). Kernels maiores capturam padrões mais amplos, mas precisam de mais processamento; kernels menores focam em detalhes mais finos.
Como funciona o ajuste de hiperparâmetros#
O ajuste de hiperparâmetros geralmente começa com a definição de um intervalo de valores possíveis para cada hiperparâmetro. Em seguida, um algoritmo de busca explora diferentes combinações dentro desses intervalos para identificar as configurações que produzem o melhor desempenho.
Métodos de ajuste comuns incluem busca em grade (grid search), busca aleatória (random search) e otimização bayesiana. A busca em grade testa todas as combinações possíveis de valores dentro dos intervalos especificados. A busca aleatória seleciona combinações aleatoriamente, muitas vezes encontrando configurações eficazes mais rapidamente. A otimização bayesiana usa um modelo probabilístico para prever valores de hiperparâmetros promissores com base em resultados anteriores. Essa abordagem normalmente reduz o número de tentativas necessárias.
Por fim, para cada combinação de hiperparâmetros, o desempenho do modelo é avaliado. O processo é repetido até que os resultados desejados sejam alcançados.
Hiperparâmetros vs. parâmetros do modelo#
Ao trabalhar no ajuste de hiperparâmetros, podes te perguntar qual é a diferença entre hiperparâmetros e parâmetros do modelo.
Hiperparâmetros são valores definidos antes do treinamento que controlam como o modelo aprende, como a taxa de aprendizado ou o tamanho do lote. Essas configurações são fixas durante o treinamento e influenciam diretamente o processo de aprendizado. Os parâmetros do modelo, por outro lado, são aprendidos pelo próprio modelo durante o treinamento. Eles incluem pesos e vieses, que se ajustam à medida que o modelo é treinado e, finalmente, orientam suas previsões. Em essência, os hiperparâmetros moldam a jornada de aprendizado, enquanto os parâmetros do modelo são os resultados desse processo de aprendizado.

Fig. 2 Comparação de parâmetros e hiperparâmetros.
Por que a poda de modelos (pruning) é importante em deep learning#
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. Em visão computacional, especialmente com redes neurais profundas, um grande número de parâmetros, como pesos e ativações (saídas intermediárias que ajudam a calcular a saída final), pode aumentar tanto a complexidade quanto as demandas computacionais. A poda ajuda a simplificar o modelo, identificando e removendo parâmetros que contribuem pouco para o desempenho, resultando em um modelo mais leve e eficiente.

Fig. 3 Antes e depois da poda do modelo.
Após o modelo ser treinado, técnicas como poda baseada em magnitude ou análise de sensibilidade podem avaliar a importância de cada parâmetro. Parâmetros de baixa importância são então podados, usando uma das três técnicas principais: poda de pesos, poda de neurônios ou poda estruturada.
A poda de pesos remove conexões individuais com impacto mínimo na saída. A poda de neurônios remove neurônios inteiros cujas saídas contribuem pouco para a função do modelo. A poda estruturada elimina seções maiores, como filtros de convolução ou neurônios em camadas totalmente conectadas, otimizando a eficiência do modelo. Uma vez concluída a poda, o modelo é retreinado para ajustar finamente os parâmetros restantes, garantindo que ele retenha alta precisão em uma forma reduzida.
Reduzindo a latência em modelos de IA com quantização#
A quantização de modelos reduz o número de bits usados para representar os pesos e ativações de um modelo. Ela normalmente converte valores de ponto flutuante de alta precisão de 32 bits em precisão inferior, como inteiros de 16 bits ou 8 bits. Ao reduzir a precisão de bits, a quantização diminui significativamente o tamanho do modelo, a pegada de memória e o custo computacional.
Em visão computacional, floats de 32 bits são padrão, mas a conversão para 16 bits ou 8 bits pode melhorar a eficiência. Existem dois tipos principais de quantização: quantização de peso e quantização de ativação. A quantização de peso reduz a precisão dos pesos do modelo, equilibrando a redução de tamanho com a precisão. A quantização de ativação reduz a precisão das ativações, diminuindo ainda mais as demandas de memória e computação.

Fig. 4 Um exemplo de quantização de ponto 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 usa diferentes precisões numéricas para várias partes de uma rede neural. Ao combinar valores de precisão mais alta, como floats de 32 bits, com valores de precisão mais baixa, como floats de 16 bits ou 8 bits, a precisão mista torna possível que modelos de visão computacional acelerem o treinamento e reduzam o uso de memória sem sacrificar a precisão.
Durante o treinamento, a precisão mista é alcançada usando menor precisão em camadas específicas enquanto se mantém maior precisão onde necessário em toda a rede. Isso é feito por meio de casting e escalonamento de perda (loss scaling). O casting converte tipos de dados entre diferentes precisões conforme exigido pelo modelo. O escalonamento de perda ajusta a precisão reduzida para evitar underflow numérico, garantindo um treinamento estável. A precisão mista é especialmente útil para modelos grandes e tamanhos de lote grandes.

Fig. 5 O treinamento de precisão mista usa os tipos de ponto flutuante de 16 bits (FP16) e 32 bits (FP32).
Equilibrando a precisão e a eficiência do modelo#
Agora que cobrimos várias técnicas de otimização de modelos, vamos discutir como decidir qual usar 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 implantação e o nível de precisão necessário.
Por exemplo, modelos menores e mais rápidos são mais adequados para dispositivos móveis com recursos limitados, enquanto modelos maiores e mais precisos podem ser usados em sistemas de alto desempenho. Eis como cada técnica se alinha a diferentes objetivos:
- Poda (Pruning): É ideal para reduzir o tamanho do modelo sem afetar significativamente a precisão, tornando-a perfeita para dispositivos com recursos limitados, como telefones celulares ou dispositivos de Internet das Coisas (IoT).
- Quantização: uma ótima opção para reduzir o tamanho do modelo e acelerar a inferência, particularmente em dispositivos móveis e sistemas embarcados com memória e poder de processamento limitados. Funciona bem para aplicações onde pequenas reduções de precisão são aceitáveis.
- Precisão mista: projetada para modelos em grande escala, esta técnica reduz o uso de memória e acelera o treinamento em hardwares como GPUs e TPUs que suportam operações de precisão mista. É frequentemente usada em tarefas de alto desempenho onde a eficiência importa.
- Ajuste de hiperparâmetros: embora seja computacionalmente intensivo, é essencial para aplicações que exigem alta precisão, como imagens médicas ou condução autônoma.
Principais pontos#
A otimização de modelos é uma parte vital do machine learning, especialmente para implantar IA em aplicações do mundo real. Técnicas como ajuste de hiperparâmetros, poda de modelos, quantização e precisão mista ajudam a melhorar o desempenho, a eficiência e o uso de recursos dos modelos de visão computacional. Essas otimizações tornam os modelos mais rápidos e menos intensivos em recursos, o que é ideal para dispositivos com memória e poder de processamento limitados. Modelos otimizados também são mais fáceis de escalar e implantar em diferentes plataformas, permitindo soluções de IA que são eficazes e adaptáveis a uma ampla gama de usos.
Visita o repositório do GitHub da Ultralytics e junta-te à nossa comunidade para saberes mais sobre aplicações de IA na manufatura e na agricultura.






