Zubnet AIAprenderWiki › Treinamento com Precisão Mista
Treinamento

Treinamento com Precisão Mista

Também conhecido como: FP16, BF16, Meia Precisão
Treinar redes neurais usando formatos numéricos de menor precisão (16 bits em vez de 32 bits) para a maioria das computações, mantendo operações críticas em precisão total. Isso dobra a capacidade efetiva de memória e a velocidade de computação das GPUs com impacto mínimo na qualidade do modelo. BF16 (bfloat16) é o padrão para treinamento de LLMs; FP16 é usado para inferência.

Por que isso importa

Precisão mista é a razão pela qual conseguimos treinar modelos tão grandes quanto treinamos. Um modelo de 70B parâmetros em FP32 precisaria de 280 GB só para os pesos — impossível em qualquer GPU única. Em BF16, precisa de 140 GB, que cabe em algumas GPUs. Precisão mista efetivamente dobrou a capacidade de computação da indústria de IA de graça, apenas usando um formato numérico mais inteligente.

Em profundidade

O insight-chave: a maioria das computações de redes neurais não precisa de 32 bits de precisão. Os pesos, ativações e gradientes podem ser representados em 16 bits sem perda significativa de qualidade. Mas algumas operações (cálculo de loss, atualização de pesos) precisam de maior precisão para evitar instabilidade numérica. Precisão mista mantém uma cópia mestre dos pesos em FP32 para atualizações, enquanto usa FP16/BF16 para os passes forward e backward.

BF16 vs. FP16

FP16 (meia-precisão IEEE) tem 5 bits de expoente e 10 bits de mantissa. BF16 (Brain Float 16) tem 8 bits de expoente e 7 bits de mantissa. O alcance de expoente mais amplo do BF16 significa que ele pode representar o mesmo alcance de valores que FP32 (evitando overflow/underflow), enquanto o alcance mais estreito do FP16 requer loss scaling para evitar que gradientes sofram underflow para zero. Para treinamento, BF16 é mais simples e mais estável. Para inferência, FP16 às vezes oferece precisão ligeiramente melhor pelo mesmo custo de memória.

FP8 e Além

As GPUs mais recentes (NVIDIA H100, H200) suportam FP8 (ponto flutuante de 8 bits) para computação ainda mais rápida. FP8 reduz pela metade a memória e dobra o throughput em comparação com FP16, mas requer manuseio cuidadoso para evitar degradação de qualidade. A prática atual: treinar em BF16, servir em FP16 ou FP8, e quantizar para INT4/INT8 para deploy em edge. Cada degrau abaixo na precisão troca uma pequena quantidade de qualidade por ganhos significativos de velocidade e memória.

Conceitos relacionados

← Todos os termos
← Transformer Treinamento Distribuído →