Glossário

Meia precisão

Descubra como a meia-precisão (FP16) acelera a IA com computação mais rápida, uso reduzido de memória e implantação eficiente de modelos.

A meia-precisão, também conhecida como FP16, é um formato de número de ponto flutuante que utiliza 16 bits de memória para representar um número, em contraste com os formatos mais comuns de 32 bits de precisão simples (FP32) ou 64 bits de precisão dupla (FP64). No contexto da aprendizagem profunda, a utilização de meia-precisão reduz significativamente o espaço de memória e os requisitos computacionais de um modelo. Esta solução de compromisso tem o custo de uma redução do intervalo numérico e da precisão. No entanto, as técnicas modernas, em particular a formação de precisão mista, fizeram do FP16 uma pedra angular da aprendizagem automática (ML) eficiente, permitindo uma formação e inferência mais rápidas com um impacto mínimo na precisão do modelo.

Como funciona a meia precisão

A mudança de FP32 para FP16 reduz para metade a memória necessária para armazenar pesos e activações do modelo. Isso permite modelos maiores, tamanhos de lote maiores ou treinamento em GPUs com menos memória. Além disso, as GPUs modernas, como as que possuem NVIDIA Tensor Cores, são projetadas especificamente para executar operações de matriz de 16 bits em velocidades muito mais altas do que as operações de 32 bits.

O principal desafio do FP16 é a sua gama numérica limitada, que pode levar a problemas como o desaparecimento de gradientes durante o treino. Para contrariar este facto, a meia-precisão é quase sempre implementada utilizando uma abordagem de precisão mista. Esta estratégia envolve a realização da maioria dos cálculos em FP16 para velocidade, mas estrategicamente usando FP32 para operações críticas, como actualizações de peso e certos cálculos de função de perda, para manter a estabilidade numérica. As estruturas de aprendizagem profunda, como o PyTorch e o TensorFlow, oferecem suporte integrado para formação automática de precisão mista.

Aplicações e exemplos

A meia-precisão, principalmente através de técnicas de precisão mista, é amplamente utilizada:

  1. Acelerar o treinamento de modelos: O treinamento de grandes modelos de aprendizado profundo, como aqueles para classificação de imagens ou processamento de linguagem natural (PNL), pode ser significativamente acelerado usando precisão mista, reduzindo o tempo e os custos de treinamento. Plataformas como o Ultralytics HUB frequentemente utilizam essas otimizações durante as sessões de treinamento na nuvem.
  2. Otimização da inferência de deteção de objectos: Modelos como o Ultralytics YOLO11 podem ser exportados para formatos como ONNX ou TensorRT com precisão FP16 para uma inferência mais rápida em tempo real. Isto é crucial para aplicações que necessitam de um elevado rendimento, como um sistema de segurança que analisa vários feeds de vídeo ou o controlo de qualidade numa linha de produção de alta velocidade.
  3. Implementação em dispositivos com recursos limitados: O reduzido espaço de memória e o custo computacional dos modelos FP16 tornam-nos adequados para a implementação em plataformas de IA de ponta, como o NVIDIA Jetson, ou em dispositivos móveis que utilizam estruturas como o TensorFlow Lite ou o Core ML da Apple.
  4. Treinar grandes modelos de linguagem (LLMs): O enorme tamanho de modelos como o GPT-3 e outros modelos de fundação requerem a utilização de formatos de 16 bits para encaixar os modelos na memória e completar o treino em prazos razoáveis.

Meia precisão vs. outros formatos

  • Bfloat16 (BF16): Um formato alternativo de 16 bits desenvolvido pela Google, o Bfloat16 atribui mais bits ao expoente e menos à mantissa em comparação com o FP16. Isto dá-lhe o mesmo alcance dinâmico que o FP32, tornando-o mais resistente a underflow e overflow, mas à custa de uma menor precisão. É muito utilizado nas TPUs da Google. Pode ler mais sobre o assunto no blogue do Google Cloud AI.
  • Quantização de modelos: Embora ambas sejam técnicas de otimização de modelos, a quantização de modelos converte normalmente os pesos de vírgula flutuante (FP32 ou FP16) em formatos inteiros de bits inferiores, mais frequentemente inteiros de 8 bits (INT8). Isso pode proporcionar acelerações ainda maiores, especialmente em CPUs e certos aceleradores, mas geralmente requer um processo de calibração mais cuidadoso, como o treinamento com reconhecimento de quantização (QAT), para evitar uma queda significativa no desempenho do modelo.
  • Precisão simples (FP32): Este é o formato predefinido na maioria das estruturas de aprendizagem profunda. Ele oferece alta precisão e uma ampla faixa dinâmica, tornando-o robusto para treinamento. No entanto, é mais lento e consome mais memória do que a meia-precisão, o que o torna menos ideal para a implementação de modelos grandes ou para aplicações que exigem velocidade máxima. Os compromissos entre estes formatos são uma consideração fundamental, conforme demonstrado em várias comparações de modelos.

Junte-se à comunidade Ultralytics

Junte-se ao futuro da IA. Ligue-se, colabore e cresça com inovadores globais

Aderir agora
Ligação copiada para a área de transferência