BF16, FP16 ou FP8: em que formato devo treinar?

Tradução automática

Este artigo foi traduzido automaticamente a partir da versão original em inglês.

Comece com BF16 quando a GPU e o ambiente de treino o suportarem. Use FP16 com escalamento da perda quando BF16 não estiver disponível ou as medições da carga de trabalho favorecerem FP16. Teste FP8 através de uma implementação suportada de precisão mista quando o débito do treino justificar as verificações numéricas adicionais.

A precisão mista utiliza formatos diferentes para operações e estados diferentes. Escolher BF16 ou FP8 não significa que todos os tensores utilizem esse formato.

O intervalo e a precisão resolvem problemas diferentes

O expoente determina o intervalo de valores. Os bits da fração determinam quão próximos podem estar os valores representáveis. BF16 mantém o mesmo número de bits do expoente que FP32, mas tem menos bits de fração. FP16 oferece uma precisão mais fina do que BF16 dentro do seu intervalo mais estreito.

FormatoBits do expoente / da fraçãoConsideração prática
BF168 / 7Intervalo amplo; geralmente dispensa o escalamento da perda
FP165 / 10Os gradientes pequenos podem sofrer subfluxo; use escalamento da perda
FP8 E4M34 / 3Mais precisão do que E5M2, menor intervalo
FP8 E5M25 / 2Intervalo mais amplo para tensores como os gradientes

Com FP16, o escalamento da perda multiplica a perda antes do cálculo para trás e reverte o escalamento dos gradientes antes da atualização do otimizador. Isto ajuda a manter representáveis os gradientes pequenos. Continua a ser necessário tratar os transbordamentos.

A documentação do Transformer Engine da NVIDIA descreve uma configuração híbrida convencional de FP8: E4M3 para os tensores do cálculo para a frente e E5M2 para os do cálculo para trás, com escalamento escolhido para os tensores. Os formatos de Blackwell com escalamento por blocos acrescentam outras configurações; o suporte do hardware, por si só, não escolhe uma para o seu modelo.

Estabeleça uma referência numérica

Execute um segmento representativo de treino com a mesma ordem dos dados e as mesmas definições do otimizador. Compare o pico de utilização de memória, o tempo por passo, o comportamento da perda, os valores não finitos e a qualidade nos dados reservados para avaliação. Mantenha as operações numericamente sensíveis e os estados do otimizador na precisão exigida pela implementação.

Uma execução mais rápida que diverge ou não cumpre o requisito de qualidade não reduz o custo do treino. Por outro lado, uma referência estável em BF16 pode ser suficiente sem acrescentar trabalho com FP8.

A secção sobre treino com precisão mista do LLM Engineering Guide inclui os intervalos dos formatos e resultados de treino publicados.