Verificação verde
Link copiado para a área de transferência

O que é a otimização de modelos? Um guia rápido

Aprende como as técnicas de otimização de modelos, como a afinação de hiperparâmetros, a poda de modelos e a quantização de modelos, podem ajudar os modelos de visão por computador a funcionar de forma mais eficiente.

A otimização de modelos é um processo que visa melhorar a eficiência e o desempenho dos modelos de aprendizagem automática. Ao refinar a estrutura e a função de um modelo, a otimização permite que os modelos forneçam melhores resultados com o mínimo de recursos computacionais e um tempo de formação e avaliação reduzido.

Esse processo é especialmente importante em campos como a visão computacional, onde os modelos geralmente exigem recursos substanciais para analisar imagens complexas. Em ambientes com recursos limitados, como dispositivos móveis ou sistemas de ponta, os modelos optimizados podem funcionar bem com recursos limitados, mantendo a precisão.

Várias técnicas são normalmente 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, vamos explorar essas técnicas e os benefícios que elas trazem para as aplicações de visão computacional. Vamos começar!

Compreender a otimização de modelos

Os modelos de visão por computador têm normalmente camadas profundas e estruturas complexas que são óptimas para reconhecer padrões intrincados nas imagens, mas também podem ser bastante exigentes em termos de capacidade de processamento. Quando estes modelos são implementados em dispositivos com hardware limitado, como telemóveis ou dispositivos de ponta, podem enfrentar certos desafios ou limitações. 

O poder de processamento, a memória e a energia limitados destes dispositivos podem levar a quedas notá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 resolver estes problemas. Ajudam a simplificar o modelo, a reduzir as suas necessidades computacionais e a garantir que continua a funcionar eficazmente, mesmo com recursos limitados. A otimização do modelo 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 mais rápido.

Figura 1. Razões para otimizar os teus modelos (Imagem do autor).

Seguem-se algumas das técnicas de otimização de modelos mais comuns, que serão exploradas em maior detalhe nas secções seguintes:

  • Afinação de hiperparâmetros: Envolve o ajuste sistemático dos 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 neural, reduzindo a sua complexidade e custo computacional.
  • Quantização do modelo: A quantização envolve a redução da precisão dos pesos e activações do modelo, normalmente de 32 bits para 16 bits ou 8 bits, reduzindo significativamente o espaço de memória e os requisitos computacionais.
  • Ajustes de precisão: Também conhecido como treino de precisão mista, envolve a utilização de diferentes formatos de precisão para diferentes partes do modelo e a otimização da utilização de recursos sem comprometer a precisão.

Explica: 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 moldam a forma 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 treinamento, os hiperparâmetros são valores predefinidos que orientam o processo de treinamento.

Vamos ver 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 corre o risco de não atingir a solução óptima, 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 treino. Os lotes maiores permitem uma aprendizagem mais estável, mas necessitam de mais memória. Os lotes mais pequenos 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. Um maior número de épocas pode melhorar a precisão, mas corre o risco de sobreajuste.
  • Tamanho do kernel: Define o tamanho do filtro em Redes Neurais Convolucionais (CNNs). Os núcleos maiores captam padrões mais amplos mas necessitam de mais processamento; os núcleos mais pequenos concentram-se em detalhes mais finos.

Como funciona a afinação de hiperparâmetros

A afinação de hiperparâmetros começa geralmente com a definição de um intervalo de valores possíveis para cada hiperparâmetro. Em seguida, um algoritmo de pesquisa explora diferentes combinações dentro desses intervalos para identificar as configurações que produzem o melhor desempenho

Os métodos de afinação mais 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 aleatoriamente, geralmente encontrando configurações eficazes mais rapidamente. A otimização Bayesiana utiliza um modelo probabilístico para prever valores de hiperparâmetros promissores com base em resultados anteriores. Esta abordagem reduz normalmente o número de tentativas necessárias. 

Por fim, para cada combinação de hiperparâmetros, avalia o desempenho do modelo. O processo repete-se até obteres os resultados desejados.

Hiperparâmetros vs. Parâmetros do modelo

Enquanto trabalhas na afinação 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 são fixas durante o treino e influenciam diretamente o processo de aprendizagem. Os parâmetros do modelo, por outro lado, são aprendidos pelo próprio modelo durante o treinamento. Estes 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 os resultados desse processo de aprendizagem.

Figura 2. Comparação de parâmetros e hiperparâmetros. 

Por que a poda de modelos é importante 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 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 minimamente para o desempenho, resultando em um modelo mais leve e eficiente.

Fig3. 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 das três técnicas principais: poda de pesos, poda de neurónios ou poda estruturada. 

A poda de peso 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 secções maiores, como filtros convolucionais ou neurónios em camadas totalmente ligadas, optimizando a eficiência do modelo. Uma vez concluída a poda, o modelo é treinado novamente para ajustar os parâmetros restantes, garantindo que ele mantenha a alta precisão em uma forma reduzida.

Reduzir a latência em modelos de IA com quantização

A quantização do modelo reduz o número de bits utilizados para representar os pesos e as activações de um modelo. Normalmente, converte valores de ponto flutuante de 32 bits de alta precisão em valores de menor precisão, como números inteiros de 16 ou 8 bits. Ao reduzir a precisão dos bits, a quantização diminui significativamente o tamanho do modelo, o espaço de memória e o custo computacional.

Na visão por computador, os valores flutuantes de 32 bits são a norma, mas a conversão para 16 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 pesos reduz a precisão dos pesos do modelo, equilibrando a redução do tamanho com a precisão. A quantização da ativação reduz a precisão das activações, diminuindo ainda mais a memória e as exigências computacionais.

Fig. 4. Um exemplo de quantização de um float de 32 bits para um inteiro de 8 bits.

Como a precisão mista acelera as inferências da IA

A precisão mista é uma técnica que utiliza diferentes precisões numéricas para várias partes de uma rede neural. Ao combinar valores de maior precisão, como os floats de 32 bits, com valores de menor precisão, como os floats de 16 ou 8 bits, a precisão mista permite que os modelos de visão por computador acelerem o treino e reduzam a utilização de memória sem sacrificar a exatidão.

Durante o treino, a precisão mista é obtida através da utilização de uma precisão mais baixa em camadas específicas, mantendo uma precisão mais elevada quando necessário em toda a rede. Isto é feito através de casting e escalonamento de perdas. A conversão converte os tipos de dados entre diferentes precisões, conforme exigido pelo modelo. O escalonamento de perdas ajusta a precisão reduzida para evitar o underflow numérico, garantindo um treinamento estável. A precisão mista é especialmente útil para modelos grandes e tamanhos de lote grandes.

Figura 5. A formação de precisão mista utiliza tipos de vírgula flutuante de 16 bits (FP16) e de 32 bits (FP32).

Equilibrar a precisão e a eficiência do modelo

Agora que já abordámos várias técnicas de otimização de modelos, vamos discutir como decidir qual delas utilizar com base nas tuas necessidades específicas. A escolha depende de factores 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, os modelos mais pequenos e mais rápidos são mais adequados para dispositivos móveis com recursos limitados, enquanto os modelos maiores e mais precisos podem ser utilizados em sistemas de elevado desempenho. Vê aqui como cada técnica se alinha com diferentes objectivos:

  • Poda: É ideal para reduzir o tamanho do modelo sem afetar significativamente a precisão, o que o torna perfeito para dispositivos com recursos limitados, como telemóveis ou dispositivos da Internet das Coisas (IoT).
  • Quantização: Uma óptima opção para reduzir o tamanho do modelo e acelerar a inferência, particularmente em dispositivos móveis e sistemas incorporados com memória e poder de processamento limitados. Funciona bem para aplicações em que 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 elevado desempenho em que a eficiência é importante.
  • Afinação de hiperparâmetros: Embora seja computacionalmente intensivo, é essencial para aplicações que requerem elevada precisão, como a imagiologia médica ou a condução autónoma.

Principais conclusões

A otimização de modelos é uma parte vital da aprendizagem automática, especialmente para a implementação da IA em aplicações do mundo real. Técnicas como a afinação 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 por computador. 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. Os modelos optimizados são também mais fáceis de escalar e implementar em diferentes plataformas, permitindo soluções de IA que são eficazes e adaptáveis a uma vasta gama de utilizações.

Visita orepositório GitHub Ultralytics e junta-te à nossa comunidade para saberes mais sobre as aplicações de IA no fabrico e na agricultura.

Logótipo do FacebookLogótipo do TwitterLogótipo do LinkedInSímbolo de ligação de cópia

Ler mais nesta categoria

Vamos construir juntos o futuro
da IA!

Começa a tua viagem com o futuro da aprendizagem automática