Precisão Mista
Aumente a eficiência do aprendizado profundo com o treinamento de precisão mista! Obtenha velocidades mais rápidas, uso de memória reduzido e economia de energia sem sacrificar a precisão.
A precisão mista é uma técnica de otimização poderosa em
aprendizagem profunda que estrategicamente
combina diferentes formatos numéricos - especificamente tipos de ponto flutuante de 16 bits (meia-precisão) e 32 bits (precisão única)
de 32 bits (precisão simples) - para acelerar o formação de modelos e reduzir
uso de memória. Ao efetuar operações computacionalmente intensivas em menor precisão, mantendo uma cópia principal de
pesos do modelo em precisão superior,
Esta abordagem permite aumentos de velocidade significativos no hardware moderno sem comprometer a
exatidão ou a estabilidade da rede final
rede final. Permite efetivamente aos investigadores e engenheiros treinarem redes maiores
redes neurais maiores ou aumentar a
tamanho do lote dentro das mesmas
limitações.
Como Funciona a Precisão Mista
O mecanismo central da precisão mista baseia-se na arquitetura dos aceleradores modernos, como os equipados com
NVIDIA Tensor Coresda NVIDIA, que podem efetuar multiplicações de matrizes em
meia-precisão (FP16) muito mais rapidamente
do que em precisão simples padrão (FP32). O processo envolve geralmente três passos fundamentais:
-
Fundição: Operações como
convoluções e multiplicação de matrizes
são convertidas para FP16. Isto reduz a largura de banda de memória necessária e acelera o cálculo.
-
Manutenção dos pesos principais: Uma cópia mestre dos parâmetros do modelo é mantida no FP32. Durante
retropropagaçãoos gradientes são calculados em FP16 mas são aplicados aos pesos principais em FP32. Isto preserva as pequenas actualizações de gradiente
que, de outra forma, poderiam ser perdidas devido ao alcance limitado do FP16, evitando problemas como
gradientes que desaparecem.
-
Escala de perdas: Para garantir ainda mais a estabilidade numérica, o valor da
função de perda é frequentemente multiplicado
por um fator de escala. Isto desloca os valores do gradiente para um intervalo que FP16 pode representar mais eficazmente, evitando erros de subfluxo antes de serem convertidos de volta para a atualização do peso.
erros de subfluxo antes de serem convertidos de volta para a atualização do peso.
Aplicações no Mundo Real
A precisão mista tornou-se uma prática comum em vários domínios da inteligência artificial devido à sua capacidade de
maximizar a eficiência do hardware.
-
Formação de modelos de visão de última geração: Desenvolvimento de modelos de visão de alto desempenho
visão computacional de alto desempenho
de alto desempenho, tais como Ultralytics YOLO11envolvem a formação em conjuntos de dados maciços como
COCO. A precisão mista permite que estes treinos sejam concluídos de forma significativamente mais rápida, permitindo mais iterações de
afinação de hiperparâmetros e
ciclos de implementação mais rápidos.
-
Grandes Modelos Linguísticos (LLMs): A criação de
modelos de base e
Grandes modelos linguísticos
requer o processamento de terabytes de dados de texto. A precisão mista é fundamental neste caso, uma vez que reduz para cerca de metade a memória
necessária para as activações, permitindo que modelos com milhares de milhões de parâmetros se ajustem a clusters de
GPUs.
Implementação de precisão mista com Ultralytics
O ultralytics simplifica a utilização da precisão mista automática (AMP). Por defeito, as rotinas de treino
verificam a existência de hardware compatível e activam o AMP para garantir um desempenho ótimo.
from ultralytics import YOLO
# Load the YOLO11 model for training
model = YOLO("yolo11n.pt")
# Train using Automatic Mixed Precision (AMP)
# 'amp=True' is the default setting, ensuring faster training on supported GPUs
results = model.train(data="coco8.yaml", epochs=5, imgsz=640, amp=True)
Precisão mista vs. termos relacionados
É útil distinguir a precisão mista de outros conceitos de otimização e representação de dados:
-
Vs. Meia precisão: A meia precisão pura
precisão (FP16) armazena e calcula tudo no formato de 16 bits. Embora isto maximize a velocidade, conduz frequentemente a
instabilidade numérica e fraca convergência durante o treino. A precisão mista atenua este facto mantendo uma cópia principal FP32
para actualizações de peso estáveis.
-
Vs. Quantização de modelos:
A quantização reduz ainda mais a precisão, convertendo normalmente os pesos em números inteiros (INT8) para otimizar
latência de inferência e o tamanho do modelo
e o tamanho do modelo para implantação em dispositivos de IA de ponta dispositivos.
A precisão mista é principalmente uma otimização do tempo de treino utilizando números de vírgula flutuante, enquanto a quantização é
frequentemente aplicada após o treino para inferência.
-
Vs. Bfloat16: Ponto flutuante cerebral
(Bfloat16) é um formato alternativo de 16 bits desenvolvido pela Google. Ao contrário do formato
IEEE 754 FP16, o Bfloat16 mantém a mesma gama de expoentes
expoente que o FP32, tornando-o mais robusto contra underflow sem escalonamento agressivo de perdas. É normalmente utilizado
na formação de precisão mista em
TPUs e GPUs mais recentes.
Suportado por estruturas como PyTorch AMPa precisão mista continua a ser uma das formas mais eficazes de democratizar o acesso à aprendizagem profunda de alto desempenho,
permitindo que os programadores treinem modelos complexos em hardware acessível.