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 performance de modelos de machine learning. Ao refinar a estrutura e a função de um modelo, a otimização torna possível que os modelos entreguem melhores resultados com computational resources mínimos e tempo reduzido de training e evaluation.
Este processo é especialmente importante em áreas como computer vision, onde models muitas vezes exigem recursos substanciais para analisar complex images. Em ambientes com recursos limitados, como mobile devices 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 (pruning), quantização de modelos e precisão mista. Neste artigo, vamos explorar essas técnicas e os benefícios que elas trazem para computer vision applications. Vamos começar!
Link to this sectionEntendendo a otimização de modelos#
Computer vision models geralmente possuem deep layers e estruturas complexas que são ótimas para reconhecer padrões intrincados em imagens, mas também podem ser bastante exigentes em termos de processing power. Quando esses modelos são deployed em dispositivos com hardware limitado, como mobile phones ou edge devices, 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 na performance, já que os modelos lutam para acompanhar. As técnicas de otimização de modelos são fundamentais para lidar com essas preocupações. Elas ajudam a otimizar o modelo, reduzir suas computational needs e garantir que ele ainda possa funcionar de forma eficaz, mesmo com recursos limitados. A otimização de modelos pode ser feita simplificando a model architecture, reduzindo a precision 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 optimization de modelos mais comuns, que exploraremos em mais detalhes nas seções a seguir:
- Hyperparameter tuning: Envolve o ajuste sistemático de hiperparâmetros, como taxa de aprendizado e tamanho de lote (batch size), para melhorar o desempenho do modelo.
- Model pruning: Esta técnica remove pesos e conexões desnecessárias da rede neural, reduzindo sua complexidade e custo computacional.
- Model quantization: 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 o uso de memória e os requisitos computacionais.
- Precision adjustments: 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.
Link to this sectionExplicado: Hiperparâmetros em modelos de machine learning#
Tu podes ajudar um modelo a aprender e a ter um desempenho melhor ajustando seus hiperparâmetros - configurações que moldam como o modelo aprende com os dados. Hyperparameter tuning é uma técnica para otimizar essas configurações, melhorando a eficiência e a accuracy do modelo. Diferente dos parâmetros que o modelo aprende durante o training, os hiperparâmetros são valores predefinidos que orientam o processo de treinamento.
Vamos percorrer alguns exemplos de hiperparâmetros que podem ser ajustados:
- Learning rate: 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, porém mais lenta.
- Batch size: Define quantas amostras de dados são processadas em cada etapa de treinamento. Tamanhos de lote 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.
- Epochs: Tu podes determinar quantas vezes o modelo vê o dataset completo usando este parâmetro. Mais épocas podem melhorar a precisão, mas aumentam o risco de overfitting.
- Tamanho do kernel: Define o tamanho do filtro em Convolutional Neural Networks (CNNs). Kernels maiores capturam padrões mais amplos, mas precisam de mais processamento; kernels menores focam em detalhes mais finos.
Link to this sectionComo 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. Um algoritmo de busca então explora diferentes combinações dentro desses intervalos para identificar as configurações que produzem o best performance.
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 é evaluated. O processo é repetido até que os resultados desejados sejam alcançados.
Link to this sectionHiperparâmetros vs. parâmetros do modelo#
Enquanto trabalhas no ajuste de hiperparâmetros, podes te perguntar qual é a diferença entre hiperparâmetros e model parameters.
Hiperparâmetros são valores definidos antes do training que controlam como o model 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 aprendizagem. Parâmetros do modelo, por outro lado, são aprendidos pelo próprio modelo durante o treinamento. Eles incluem pesos e biases, que se ajustam à medida que o modelo treina e, finalmente, orientam suas predictions. Em essência, os hiperparâmetros moldam a jornada de aprendizado, enquanto os parâmetros do modelo são os resultados desse processo de aprendizagem.

Fig 2. Comparando Parâmetros e Hiperparâmetros.
Link to this sectionPor que a poda de modelos (pruning) é importante em deep learning#
Model pruning é uma técnica de redução de tamanho que remove pesos e parâmetros desnecessários de um modelo, tornando-o mais eficiente. Em computer vision, especialmente com neural networks 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 otimizar o modelo identificando e removendo parâmetros que contribuem minimamente para o desempenho, resultando em um modelo mais leve e eficiente.

Fig3. Antes e depois da poda de modelos.
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 convolucionais ou neurônios em camadas totalmente conectadas, otimizando a eficiência do modelo. Uma vez concluída a poda, o modelo é retreinado para fine-tune os parâmetros restantes, garantindo que ele retenha alta precisão em uma forma reduzida.
Link to this sectionReduzindo a latência em modelos de IA com quantização#
Model quantization reduz o número de bits usados para representar os pesos e ativações de um modelo. Normalmente, converte valores de ponto flutuante de 32 bits de alta precisão para precisão menor, como inteiros de 16 bits ou 8 bits. Ao reduzir a precisão dos bits, a quantização diminui significativamente o model's size, o uso de memória e o custo computacional.
Em computer vision, 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 pesos e quantização de ativação. 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çã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.
Link to this sectionComo a precisão mista acelera as inferências de IA#
Mixed precision é uma técnica que usa diferentes precisões numéricas para várias partes de uma neural network. Ao combinar valores de maior precisão, como floats de 32 bits, com valores de menor precisão, como floats de 16 bits ou 8 bits, a precisão mista torna possível que computer vision models 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 tipos de ponto flutuante de 16 bits (FP16) e 32 bits (FP32).
Link to this sectionEquilibrando 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 em tuas necessidades específicas. A escolha depende de fatores como o hardware disponível, as restrições computacionais e de memória do deployment environment, e o nível necessário de precisão.
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. Veja como cada técnica se alinha com different goals:
- 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 inference, particularmente em dispositivos móveis e embedded systems 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 de grande escala, essa técnica reduz o uso de memória e acelera o treinamento em hardware 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 exija muito poder computacional, é essencial para aplicações que exigem alta precisão, como medical imaging ou autonomous driving.
Link to this sectionPrincipais 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 GitHub repository da Ultralytics e junta-te à nossa comunidade para aprender mais sobre aplicações de IA em manufacturing e agriculture.






